Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Практическая программная инженерия на основе учебного примера

Покупка
Артикул: 629850.02.99
Рассмотрены вопросы современных методов создания сложного программного обеспечения, использующего информацию, хранимую в базе данных. Подчеркнуты особенности создания такого программного обеспечения коллективом разработчиков: итеративный характер разработки, использование стандартных средств создания программ (стандартные компоненты, паттерны, Bean-компоненты и т. д.). Большое внимание уделено разработке структуры программного обеспечения, позволяющей наиболее просто организовать все стадии его жизненного цикла. Весь материал проиллюстрирован на одном достаточно сложном примере. Для разработчиков сложного программного обеспечения, а также для студентов вузов, специализирующихся в вопросах создания современного ПО.
Мацяшек, Л. А. Практическая программная инженерия на основе учебного примера : монография / Л. А. Мацяшек, Б. Л. Лионг. - 4-е изд. - Москва : Лаборатория знаний, 2020. - 959 с. - (Программисту). - ISBN 978-5-00101-783-7. - Текст : электронный. - URL: https://znanium.ru/catalog/product/1201955 (дата обращения: 22.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
ПРАКТИЧЕСКАЯ
программная инженерия

на основе учебного примера

PRACTICAL
software 
engineering
A Case Study Approach

Harlow, England • London • New York • Boston • San Francisco • Toronto • Sydney • Singapore • Hong Kong
Tokyo • Seoul • Taipei • New Delhi • Cape Town • Madrid • Mexico City • Amsterdam • Munich • Paris • Milan

Leszek A. Maciaszek, Bruc Lee Liong
With contributions from Stephen Bills

Л. А. Мацяшек, Б. Л. Лионг
Л. А. 
, 
Мацяшек Б. Л. Лионг

ПРАКТИЧЕСКАЯ
программная
инженерия

на основе учебного примера

Перевод с английского
А. М. Епанешникова и В. А. Епанешникова

4-е издание (электронное)

Москва
Лаборатория знаний
2020

П Р О Г Р А М М И С Т У
....................................

УДК 681.1.06
ББК 32.973-018.2

М36

С е р и я о с н о в а н а в 2005 г.

Мацяшек Л. А.

М36
Практическая программная инженерия на основе
учебного
примера
/
Л. А. Мацяшек,
Б. Л. Лионг
;
пер. с англ. — 4-е изд., электрон. — М. : Лаборатория
знаний,
2020. — 959 с. — (Программисту). — Систем.
требования:
Adobe
Reader
XI
;
экран 10". — Загл.
с титул. экрана. — Текст : электронный.
ISBN 978-5-00101-783-7
Рассмотрены
вопросы
современных
методов
создания
сложного программного обеспечения, использующего информацию, хранимую в базе данных. Подчеркнуты особенности
создания
такого
программного
обеспечения
коллективом
разработчиков: итеративный характер разработки, использование стандартных средств создания программ (стандартные
компоненты, паттерны, Bean-компоненты и т. д.). Большое
внимание уделено разработке структуры программного обеспечения, позволяющей наиболее просто организовать все стадии его жизненного цикла. Весь материал проиллюстрирован
на одном достаточно сложном примере.
Для разработчиков сложного программного обеспечения,
а также для студентов вузов, специализирующихся в вопросах создания современного ПО.
УДК 681.1.06
ББК 32.973-018.2

Деривативное издание на основе печатного аналога: Практическая программная инженерия на основе учебного примера /
Л. А. Мацяшек, Б. Л. Лионг ; пер. с англ. — М. : БИНОМ. Лаборатория знаний, 2009. — 956 с. : ил. — (Программисту). —
ISBN 978-5-94774-488-0.

В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений,
установленных
техническими
средствами
защиты
авторских
прав,
правообладатель вправе требовать от нарушителя возмещения убытков или
выплаты компенсации

ISBN 978-5-00101-783-7

c○
Copyright
Pearson Education Limited 2005.
This translation of PRACTICAL
SOFTWARE ENGINEERING:
A CASE-STUDY APPROACH,
First Edition is published
by arrangement with Pearson
Education Limited.

c○ Лаборатория знаний, 2015

4

ДЕВИЗ

Делайте все настолько просто, насколько возможно, но не проще.

Альберт Эйнштейн

ПОСВЯЩЕНИЯ

Диане, Доминике и Томашу

Лешек А. Мацяшек

Моим родителям, Эдисону и Тине

Брюс Ли Лионг

Экскурс в структуру книги. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Благодарности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

Часть 1. Проектирование программного обеспечения .
.
.
.
.
.
.
.
33

Глава 1. Жизненный цикл разработки программного обеспечения. . . . . . . . . 36

1.1. Сущность программной инженерии . . . . . . . . . . . . . . . . . . . . . . 37

1.1.1. Система ПО меньше, чем информационная система предприятия . . . . . . 38
1.1.2. Процесс создания и эксплуатации ПО является частью бизнес-процесса . . 39
1.1.3. Программная инженерия отличается от традиционной инженерии . . . . . 41
1.1.4. Программная инженерия больше, чем программирование . . . . . . . . . . 43
1.1.5. Программная инженерия напоминает моделирование . . . . . . . . . . . . 44
1.1.6. Система ПО сложна . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

1.2. Стадии жизненного цикла . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

1.2.1. Анализ требований . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
1.2.2. Проектирование системы . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
1.2.3. Реализация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
1.2.4. Интеграция и внедрение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
1.2.5. Процесс функционирования и сопровождения. . . . . . . . . . . . . . . . . 54

1.3. Модели жизненного цикла . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

1.3.1. Жизненный цикл «водопад с обратной связью»
. . . . . . . . . . . . . . . 56

1.3.2. Итеративный пошаговый жизненный цикл. . . . . . . . . . . . . . . . . . . 59

Спиральная модель . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
60

Rational Unified Process (RUP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Model Driven Architecture (MDA) . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Быстрая разработка ПО с короткими итерациями . . . . . . . . . . . . . . . . . 65

Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Ключевые термины . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Обзорные вопросы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

Глава 2. Язык моделирования программного обеспечения . . . . . . . . . . . . . 72

2.1. Язык структурного моделирования . . . . . . . . . . . . . . . . . . . . . . 73

2.1.1. Моделирование потока данных . . . . . . . . . . . . . . . . . . . . . . . . . 74
2.1.2. Моделирование сущностей и отношений. . . . . . . . . . . . . . . . . . . . 77

2.2. Язык объектно-ориентированного моделирования . . . . . . . . . . . . . . 79

2.2.1. Диаграммы классов. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
2.2.2. Диаграммы сценариев использования . . . . . . . . . . . . . . . . . . . . . 83
2.2.3. Диаграммы взаимодействия . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

Диаграммы последовательности действий . . . . . . . . . . . . . . . . . . . . . 88

Оглавление

Диаграммы сотрудничества (связей) . . . . . . . . . . . . . . . . . . . . . . . . 90

2.2.4. Диаграммы состояний . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
2.2.5. Диаграммы деятельности . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
2.2.6. Диаграммы выполнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

Диаграммы компонентов. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Диаграммы размещения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Ключевые термины . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Обзорные вопросы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Примеры задач . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

Глава 3. Инструментальные средства программной инженерии. . . . . . . . . . 103

3.1. Инструментальные средства управления проектом . . . . . . . . . . . . . 104

3.1.1. Планирование и управление проектом . . . . . . . . . . . . . . . . . . . . 105
3.1.2. Управление проектированием и реализацией с учетом основных
показателей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

3.1.3. Унификация управления проектом с организацией совместной работы
и информационного обеспечения на основе Web-технологии. . . . . . . . 107

3.1.4. Унификация управления проектом на основе портфельной
Web-технологии . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

3.1.5. Интеграция управления проектом с метриками . . . . . . . . . . . . . . . 111
3.1.6. Интеграция управления проектом с управлением рисками . . . . . . . . . 113

3.2. Инструментальные средства моделирования систем . . . . . . . . . . . . . 114

3.2.1. Управление требованиями . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
3.2.2. Визуальное UML-моделирование . . . . . . . . . . . . . . . . . . . . . . . 119
3.2.3. Формирование отчетов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
3.2.4. Моделирование БД . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

3.3. Интегрированные среды разработки . . . . . . . . . . . . . . . . . . . . . 126

3.3.1. Задачи стандартного программирования . . . . . . . . . . . . . . . . . . . 127

Написание программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Выполнение программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Отладка программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
131

3.3.2. Интеграция с моделированием ПО . . . . . . . . . . . . . . . . . . . . . . 134
3.3.3. Разработка приложения предприятия . . . . . . . . . . . . . . . . . . . . . 135
3.3.4. Интеграция с бизнес-компонентами. . . . . . . . . . . . . . . . . . . . . . 137
3.3.5. Интеграция с управлением изменениями и конфигурацией . . . . . . . . . 138

3.4. Инструментальные средства управления изменениями и конфигурацией . . 140

3.4.1. Поддержка изменений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
3.4.2. Поддержка версий. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
3.4.3. Поддержка формирования системы . . . . . . . . . . . . . . . . . . . . . . 144
3.4.4. Поддержка реинжиниринга. . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Ключевые термины . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Обзорные вопросы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Примеры задач . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152

Глава 4. Планирование и отслеживание проекта программного обеспечения . . 155

4.1. Разработка плана проекта. . . . . . . . . . . . . . . . . . . . . . . . . . . 155
4.2. Планирование проекта . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

4.2.1. Задачи, контрольные точки и подлежащие сдаче продукты. . . . . . . . . 160
4.2.2. Планирование задач в виде ленточной диаграммы. . . . . . . . . . . . . . 162

Оглавление
7

4.2.3. Ресурсы и календари ресурсов . . . . . . . . . . . . . . . . . . . . . . . . . 165
4.2.4. Планирование, определяемое трудозатратами, в виде ленточной
диаграммы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

4.2.5. Неполное и избыточное распределение ресурсов . . . . . . . . . . . . . . 168

4.3. Оценка бюджета проекта . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

4.3.1. Оценка бюджета на основе графика выполнения. . . . . . . . . . . . . . . 172
4.3.2. Алгоритмическая оценка бюджета . . . . . . . . . . . . . . . . . . . . . . 176

Принципы алгоритмических моделей . . . . . . . . . . . . . . . . . . . . . . . 177
COCOMO 81 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
178

COCOMO II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
180

4.4. Отслеживание выполнения проекта . . . . . . . . . . . . . . . . . . . . . 184

4.4.1. Отслеживание графика . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
4.4.2. Отслеживание бюджета. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188

Фактические затраты, полученные из графика выполнения . . . . . . . . . . . 188
Фактические затраты, полученные из бухгалтерского учета. . . . . . . . . . . 189
Выполненная стоимость . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190

Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Ключевые термины . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Обзорные вопросы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Примеры задач . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

Глава 5. Управление процессом создания и отслеживания программного
обеспечения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200

5.1. Управление людьми
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202

5.1.1. Привлечение и мотивация людей . . . . . . . . . . . . . . . . . . . . . . . 202

Формирование коллектива . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Теории мотивации. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
204

5.1.2. Организация связи в проекте. . . . . . . . . . . . . . . . . . . . . . . . . . 206

Формы связи. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
206

Линии связи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
207

Показатели связи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
208

Связь в разрешении конфликтов . . . . . . . . . . . . . . . . . . . . . . . . . . 209

5.1.3. Создание коллектива . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210

5.2. Управление рисками . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

5.2.1. Идентификация рисков . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
5.2.2. Оценка рисков. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
5.2.3. Обработка рисков . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216

5.3. Управление качеством . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

5.3.1. Показатели качества программного обеспечения . . . . . . . . . . . . . . 218
5.3.2. Контроль качества. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221

Тестирование ПО . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
221

Технологии тестирования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
Планирование испытаний . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227

5.3.3. Гарантия качества. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229

Контрольные списки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
229

Обзоры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
230

Ревизии. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
231

5.4. Управление изменениями и конфигурацией . . . . . . . . . . . . . . . . . 232

5.4.1. Изменения требований . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
5.4.2. Версии продуктов разработки . . . . . . . . . . . . . . . . . . . . . . . . . 235
5.4.3. Дефекты и усовершенствования . . . . . . . . . . . . . . . . . . . . . . . . 237

8
Оглавление

5.4.4. Метрики . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Ключевые термины . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
Обзорные вопросы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247

Часть 2. От требований через структурное проектирование к готовому
программному обеспечению.
.
.
.
.
.
.
.
.
.
.
.
.
.
249

Глава 6. Модель бизнес-объектов. . . . . . . . . . . . . . . . . . . . . . . . . . . 252

6.1. Advertising Expenditure Measurement, ее бизнес . . . . . . . . . . . . . . . 253
6.2. Диаграмма бизнес-контекста . . . . . . . . . . . . . . . . . . . . . . . . . 254
6.3. Модель бизнес-сценария использования . . . . . . . . . . . . . . . . . . . 255

6.3.1. Бизнес-сценарий использования и бизнес-акторы . . . . . . . . . . . . . . 255
6.3.2. Модель бизнес-сценариев использования для AEM . . . . . . . . . . . . . 256
6.3.3. Альтернативная модель бизнес-сценариев использования для AEM . . . . 258

6.4. Бизнес-глоссарий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261

6.4.1. Бизнес-глоссарий для AEM . . . . . . . . . . . . . . . . . . . . . . . . . . 261

6.5. Модель бизнес-классов . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262

6.5.1. Бизнес-сущности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
6.5.2. Модель бизнес-классов для AEM . . . . . . . . . . . . . . . . . . . . . . . 262
6.5.3. Альтернативная модель бизнес-классов для AEM . . . . . . . . . . . . . . 264
Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
Ключевые термины . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Обзорные вопросы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266

Вопросы для обсуждения. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Вопросы учебного примера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

Примеры задач . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

Упражнения учебного примера . . . . . . . . . . . . . . . . . . . . . . . . . . 267
Небольшой проект — оценка расходов на рекламу . . . . . . . . . . . . . . . 267
Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269

Глава 7. Объектная модель предметной области . . . . . . . . . . . . . . . . . . 271

7.1. Управление деловыми партнерами — предметная область . . . . . . . . . 272
7.2. Модель сценариев использования предметной области . . . . . . . . . . . 273

7.2.1. Сценарии использования и акторы . . . . . . . . . . . . . . . . . . . . . . 273
7.2.2. Отношения сценариев использования . . . . . . . . . . . . . . . . . . . . . 274
7.2.3. Модель сценариев использования для управления деловыми партнерами . 275
7.2.4. Альтернативная модель сценариев использования для управления
деловыми партнерами . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

7.3. Глоссарий предметной области. . . . . . . . . . . . . . . . . . . . . . . . 279

7.3.1. Глоссарий предметной области для управления деловыми партнерами . . 279

7.4. Модель классов предметной области . . . . . . . . . . . . . . . . . . . . . 281

7.4.1. Классы и атрибуты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
7.4.2. Отношения классов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
7.4.3. Модель классов для управления деловыми партнерами . . . . . . . . . . . 285
7.4.4. Альтернативная модель классов для управления деловыми партнерами. . 286
Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Ключевые термины . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
Обзорные вопросы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289

Вопросы для обсуждения. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289

Оглавление
9

Вопросы учебного примера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290

Примеры задач . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290

Упражнения учебного примера . . . . . . . . . . . . . . . . . . . . . . . . . . 290
Небольшой проект — временной протокол. . . . . . . . . . . . . . . . . . . . 291

Глава 8. Итерация 1. Требования и объектная модель . . . . . . . . . . . . . . . 294

8.1. Модель сценариев использования . . . . . . . . . . . . . . . . . . . . . . 295
8.2. Документ сценария использования . . . . . . . . . . . . . . . . . . . . . . 296

8.2.1. Краткое описание, предусловия и постусловия. . . . . . . . . . . . . . . . 297
8.2.2. Основной поток . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
8.2.3. Подпотоки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
8.2.4. Потоки исключений. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302

8.3. Концептуальные классы . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
8.4. Дополнительная спецификация . . . . . . . . . . . . . . . . . . . . . . . . 304

Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
Ключевые термины . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
Обзорные вопросы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307

Вопросы для обсуждения. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
Вопросы учебного примера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308

Примеры задач . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308

Упражнения учебного примера . . . . . . . . . . . . . . . . . . . . . . . . . . 308
Небольшой проект — временной протокол. . . . . . . . . . . . . . . . . . . . 309

Глава 9. Структурный проект . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310

9.1. Структурные уровни и управление зависимостями . . . . . . . . . . . . . 311

9.1.1. Структурные модули . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311

Классы проекта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
312

Пакеты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
312

9.1.2. Зависимости пакетов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
9.1.3. Зависимости между уровнями . . . . . . . . . . . . . . . . . . . . . . . . . 314
9.1.4. Зависимости классов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
9.1.5. Наследование зависимостей . . . . . . . . . . . . . . . . . . . . . . . . . . 318

Наследование без полиморфизма . . . . . . . . . . . . . . . . . . . . . . . . . 321
Расширяющее и ограничивающее наследование . . . . . . . . . . . . . . . . . 321
Вызовы методов подкласса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
Вызовы методов суперкласса. . . . . . . . . . . . . . . . . . . . . . . . . . . . 323

9.1.6. Зависимости методов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323

Зависимости методов при наличии делегирования . . . . . . . . . . . . . . . . 325
Зависимости методов в присутствии наследования реализации. . . . . . . . . 326

9.1.7. Интерфейсы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329

Зависимость реализации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
Зависимость использования . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
Устранение циклических зависимостей с интерфейсами . . . . . . . . . . . . 331

9.1.8. Обработка событий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333

Обработка событий и зависимости уровней. . . . . . . . . . . . . . . . . . . . 335
Обработка событий и интерфейсы . . . . . . . . . . . . . . . . . . . . . . . . . 336

9.1.9. Знакомство. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338

Зависимости знакомства и интерфейсы . . . . . . . . . . . . . . . . . . . . . . 339
Пакет знакомств . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
340

9.2. Структурные шаблоны . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343

9.2.1. Model-View-Controller (MVC) . . . . . . . . . . . . . . . . . . . . . . . . . 343
9.2.2. Presentation-Control-Mediator-Entity-Foundation. . . . . . . . . . . . . . . . 345

10
Оглавление