Практическая программная инженерия на основе учебного примера
Покупка
Тематика:
Программирование и алгоритмизация
Издательство:
Лаборатория знаний
Год издания: 2020
Кол-во страниц: 959
Дополнительно
Вид издания:
Монография
Уровень образования:
ВО - Магистратура
ISBN: 978-5-00101-783-7
Артикул: 629850.02.99
Рассмотрены вопросы современных методов создания сложного программного обеспечения, использующего информацию, хранимую в базе данных. Подчеркнуты особенности создания такого программного обеспечения коллективом разработчиков: итеративный характер разработки, использование стандартных средств создания программ (стандартные компоненты, паттерны, Bean-компоненты и т. д.). Большое внимание уделено разработке структуры программного обеспечения, позволяющей наиболее просто организовать все стадии его жизненного цикла. Весь материал проиллюстрирован на одном достаточно сложном примере.
Для разработчиков сложного программного обеспечения, а также для студентов вузов, специализирующихся в вопросах создания современного ПО.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
ПРАКТИЧЕСКАЯ программная инженерия на основе учебного примера
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 Оглавление