Орлов С.А. Программная инженерия. Учебник для вузов. 5-е издание обновленное и дополненное. Стандарт третьего поколения. — СПб.: Питер, 2018. — 640 c.: ил. — (Серия «Учебник для вузов»), ISBN 978-5-496-01917-0
Учебник посвящен систематическому изложению принципов, моделей, методов и метрик, используемых в инженерном цикле создания сложных программных систем. Изложены основы как классических. так и гибких методов разработки, вопросы менеджмента классических и гибких программных проектов. Показаны последние научные и практические достижения, характеризующие динамику развития этой области. Например, значительное внимание уделяется самым «звонким»» темам: сервисно-ориентированной архитектуре и облачным технологиям, предметно-ориентированному подходу и новейшей методологии DevOps. разработке через поведение. Описан комплексный подход к решению наиболее важных вопросов, возникающих в программных проектах.
Допущено Министерством образования и науки Российской Федерации в качестве учебника для студентов высших учебных заведений, обучающихся но специальности «Программное обеспечение вычислительной техники и автоматизированных систем» направлений подготовки дипломированных специалистов «Информатика и вычислительная техника».
Оглавление
Предисловие к пятому изданию..............................13
Введение.................................................15
Благодарности...........................................................19
От издательства..........................................................19
Глава 1. Организация процесса разработки.....................20
Основные понятия программной инженерии.................................20
Официальная классификация процессов программной инженерии..............23
Процессы соглашения..................................................23
Процессы организационного обеспечения проекта........................24
Процессы проекта.....................................................24
Технические процессы.................................................25
Базис процессов разработки ПО............................................26
Модель «классический жизненный цикл».....................................29
Макетирование...........................................................31
Стратегии разработки ПО..................................................33
Инкрементная модель.....................................................34
Спиральная модель.......................................................35
Компонентно-ориентированная модель.....................................36
Тяжеловесные и облегченные процессы.....................................37
Манифест гибкой разработки программного обеспечения.....................38
ХР-процесс..............................................................40
Бережливая разработка программного обеспечения..........................45
Принцип 1. Ликвидация потерь..........................................46
Принцип 2. Встраивание качества.......................................46
Принцип 3. Формирование новых знаний.................................46
Принцип 4. Откладывание необратимых решений .........................46
Принцип 5. Быстрая доставка заказчику..................................47
Принцип 6. Уважение к людям...........................................47
Принцип 7. Оптимизация целого.........................................47
Модели качества процессов разработки.....................................48
Контрольные вопросы и упражнения........................................50
Глава 2. Руководство программным проектом...................52
Основные понятия руководства проектом....................................52
Начало проекта........................................................54
Измерения, меры и метрики............................................54
Процесс оценки.......................................................55
Анализ риска..........................................................55
Планирование.........................................................55
Трассировка и контроль................................................55
Планирование программного проекта.......................................56
Структура плана управления программным проектом......................57
Иерархическая структура работ.........................................59
Структура графика работ программного проекта...........................60
Контроль хода программного проекта — метод освоенного объема.............66
Управление риском.......................................................69
Идентификация риска..................................................70
Анализ риска..........................................................71
Ранжирование риска...................................................71
Планирование управления риском.......................................72
Разрешение и наблюдение риска........................................73
Управление персоналом...................................................73
Подбор членов команды................................................74
Взаимодействия в команде.............................................75
Состав группы.........................................................76
Управление документацией................................................77
Стандарты и полнота документации......................................77
Согласованность документации.........................................79
Управление конфигурацией................................................79
Идентификация объектов в конфигурации ПО.............................81
Контроль версий.......................................................82
Контроль изменений...................................................82
План управления конфигурацией........................................83
Scrum-процесс менеджмента гибкой разработки ПО..........................83
Scrum-команда........................................................85
Владелец продукта....................................................86
Scrum-мастер.........................................................86
Команда разработчиков................................................87
Спринт...............................................................88
Планирование спринта.................................................89
Формат журнала спринта...............................................93
Обзор спринта........................................................95
Ретроспектива спринта.................................................95
Канбан-процесс бережливого менеджмента.................................96
Контрольные вопросы и упражнения.......................................100
Глава 3. Оценка при планировании программного проекта.......102
Размерно-ориентированные метрики......................................102
Функционально-ориентированные метрики.................................103
Выполнение оценки в ходе планирования проекта...........................110
Выполнение оценки проекта на основе LOC- и FP-метрик.....................110
Конструктивная модель стоимости.........................................112
Модель композиции приложения.......................................113
Модель раннего этапа проектирования..................................115
Модель этапа пост-архитектуры........................................118
Предварительная оценка программного проекта............................121
Анализ чувствительности программного проекта............................125
Сценарий понижения зарплаты.........................................126
Сценарий наращивания памяти.........................................126
Сценарий использования нового микропроцессора.......................127
Сценарий уменьшения средств на завершение проекта....................127
Контрольные вопросы и упражнения.......................................129
Глава 4. Формирование и анализ требований..................131
Виды требований к программному обеспечению.............................131
Формирование требований...............................................135
Анализ требований......................................................137
Желаемые характеристики детального требования..........................141
Спецификация требований...............................................144
Управление требованиями................................................146
Контрольные вопросы и упражнения.......................................147
Глава 5. Классические методы анализа.............www.piter.com
Структурный анализ.............................................www.piter.com
Диаграммы потоков данных...................................www.piter.com
Описание потоков данных и процессов.........................www.piter.com
Расширения для систем реального времени.....................www.piter.com
Расширение возможностей управления........................www.piter.com
Модель системы регулирования давления космического корабля .. www.piter.com
Методы анализа, ориентированные на структуры данных............www.piter.com
Метод анализа Джексона........................................www.piter.com
Методика Джексона..........................................www.piter.com
Шаг объект-действие........................................www.piter.com
Шаг объект-структура........................................www.piter.com
Шаг начального моделирования...............................www.piter.com
Контрольные вопросы и упражнения..............................www.piter.com
Глава 6. Основы проектирования программных систем..........149
Особенности процесса синтеза программных систем........................149
Особенности архитектурного этапа проектирования.........................151
Структурирование системы...............................................153
Архитектура с хранилищем данных......................................156
Клиент-серверная архитектура.........................................157
Многоуровневая архитектура...........................................159
Архитектура канала и фильтра..........................................161
Моделирование управления..............................................163
Паттерны централизованного управления................................163
Паттерны событийного управления.....................................165
Декомпозиция подсистем на модули.......................................167
Разделение понятий.....................................................168
Модульность............................................................168
Информационная закрытость.............................................169
Связность модуля.......................................................170
Функциональная связность............................................172
Информационная связность............................................172
Коммуникативная связность...........................................173
Процедурная связность................................................173
Временная связность.................................................174
Логическая связность.................................................175
Связность по совпадению..............................................175
Определение связности модуля........................................176
Сцепление модулей......................................................177
Сложность программной системы.........................................178
Характеристики иерархической структуры программной системы..............179
Пошаговая детализация..................................................182
Аспекты................................................................182
Рефакторинг............................................................183
Контрольные вопросы и упражнения.......................................183
Глава 7. Классические методы проектирования......www.piter.com
Метод структурного проектирования..............................www.piter.com
Типы информационных потоков................................www.piter.com
Проектирование для потока данных типа «преобразование».......www.piter.com
Проектирование для потока данных типа «запрос»...............www.piter.com
Метод проектирования Джексона.................................www.piter.com
Доопределение функций.....................................www.piter.com
Учет системного времени.....................................www.piter.com
Контрольные вопросы и упражнения..............................www.piter.com
Глава 8. Основы объектно-ориентированного представления программных систем.........................186
Принципы объектно-ориентированного представления программных систем ... 186
Абстрагирование.....................................................187
Инкапсуляция........................................................188
Модульность.........................................................189
Иерархическая организация...........................................190
Объекты................................................................192
Общая характеристика объектов........................................193
Виды отношений между объектами.....................................195
Связи...............................................................195
Видимость объектов..................................................198
Агрегация............................................................199
Классы.................................................................200
Общая характеристика классов.........................................200
Виды отношений между классами.......................................201
Ассоциации классов..................................................202
Наследование........................................................203
Агрегация............................................................206
Зависимость.........................................................208
Конкретизация.......................................................208
Базис языка визуального моделирования...................................210
Унифицированный язык моделирования.................................210
Механизмы расширения в UML.........................................212
Контрольные вопросы и упражнения.......................................214
Глава 9. Объектно-ориентированная разработка требований.....216
Формирование требований с помощью диаграммы Use Case..................216
Актеры и элементы Use Case...........................................216
Отношения в диаграммах Use Case......................................217
Работа с элементами Use Case.........................................219
Спецификация элементов Use Case.....................................220
Банкомат — пример диаграммы Use Case................................222
Аспекты банкомата....................................................225
Построение модели требований........................................226
Оценка программного проекта на основе диаграммы Use Case.............231
Формирование требований с помощью диаграммы деятельности..............237
Анализ требований с помощью диаграмм взаимодействия....................240
Объекты и роли.......................................................241
Диаграммы взаимодействия...........................................242
Диаграммы коммуникации.............................................242
Диаграммы последовательности.......................................246
Моделирование поведения с помощью диаграмм конечных автоматов.........252
Диаграмма конечного автомата........................................252
Действия в состояниях................................................254
Условные переходы...................................................255
Композитные состояния...............................................256
Псевдосостояния управления..........................................258
Применение диаграмм конечных автоматов..............................261
Контрольные вопросы и упражнения.......................................262
Глава 10. Объектно-ориентированное проектирование и реализация.................264
Архитектурное проектирование............................................264
Диаграммы пакетов...................................................265
Диаграммы компонентов..............................................269
Детальное проектирование...............................................276
Диаграммы классов...................................................276
Основные принципы детального проектирования.........................289
Принципы упаковки классов в архитектурные подсистемы.................292
Документирование процесса проектирования............................293
Принципы построения паттернов..........................................295
Кооперации и паттерны..................................................301
Паттерн Наблюдатель.................................................304
Паттерн Компоновщик.................................................307
Паттерн Команда.....................................................308
Мышление в терминах паттернов.......................................311
Шаги паттерн-ориентированного проектирования........................312
Проектирование пользовательского интерфейса............................313
Сущностная эффективность............................................314
Согласованность задач................................................315
Наблюдаемость задач.................................................317
Единообразие компоновки.............................................320
Визуальная связность.................................................321
Аспектно-ориентированное проектирование и программирование.............322
Разделение понятий..................................................323
Основные термины аспектов...........................................325
Основы компонентной объектной модели...................................328
Организация интерфейса СОМ.........................................329
lUnknown — базовый интерфейс СОМ...................................332
Серверы СОМ-объектов...............................................333
Преимущества СОМ...................................................334
Работа с СОМ-объектами..............................................334
Маршалинг..........................................................337
IDL-описание и библиотека типа........................................338
Развертывание программной системы на аппаратных средствах...............339
Артефакты...........................................................340
Узлы................................................................341
Диаграммы развертывания............................................342
Разработка на основе предметно-ориентированного проектирования..........344
DevOps — методология интеграции шагов жизненного цикла ПО...............345
Контрольные вопросы и упражнения.......................................346
Глава 11. Особенности разработки баз данных.......www.piter.com
Основные понятия баз данных: модели данных.....................www.piter.com
Организация реляционной базы данных...........................www.piter.com
Отношение «один-к-одному»..................................www.piter.com
Отношение «один-ко-многим».................................www.piter.com
Отношение «многие-ко-многим»...............................www.piter.com
Нормализация реляционных баз данных...........................www.piter.com
Расширение UML для моделирования баз данных...................www.piter.com
Типы моделей данных........................................www.piter.com
Таблицы, сущности, представления и отношения................www.piter.com
Ключи, ограничения, триггеры и хранимые процедуры............www.piter.com
Особенности отображения атрибутов объектов и классов
в реляционную базу данных...................................www.piter.com
Теневая (скрытая) информация................................www.piter.com
Метаданные отображения....................................www.piter.com
Отображение атрибутов уровня класса.........................www.piter.com
Отображение деревьев наследования в реляционную базу данных.... www.piter.com
Отображение дерева наследования в единственную таблицу......www.piter.com
Отображение каждого конкретного класса в отдельную таблицу ... www.piter.com
Отображение каждого класса в отдельную таблицу...............www.piter.com
Отображение классов в универсальную табличную структуру......www.piter.com
Отображение множественного наследования...................www.piter.com
Объекты и базы данных: классификация и реализация отношений .... www.piter.com
Реализация отношений между объектами.......................www.piter.com
Реализация отношений в реляционных базах данных.............www.piter.com
Отображение отношений объектов в реляционную базу данных.......www.piter.com
Отображение отношений «один-к-одному»......................www.piter.com
Отображение отношений «один-ко-многим».....................www.piter.com
Отображение отношений «многие-ко-многим»..................www.piter.com
Отображение отношений композиции.............................www.piter.com
Отображение рекурсивных отношений............................www.piter.com
Настройка быстродействия базы данных..........................www.piter.com
Контрольные вопросы и упражнения..............................www.piter.com
Глава 12. Метрики объектно-ориентированных программных систем....................350
Метрические особенности объектно-ориентированных программных систем ... 350
Локализация.........................................................351
Инкапсуляция........................................................351
Информационная закрытость..........................................351
Наследование........................................................351
Абстракция .......................................................... 352
Эволюция мер связи для объектно-ориентированных программных систем.....352
Связность объектов...................................................352
Сцепление объектов..................................................359
Набор метрик Чидамбера и Кемерера......................................361
Использование метрик Чидамбера—Кемерера..............................370
Метрики Лоренца и Кидда................................................371
Метрики, ориентированные на классы...................................371
Операционно-ориентированные метрики................................372
Метрики для ОО-проектов.............................................374
Набор метрик Фернандо Абреу............................................375
Аспектно-ориентированные метрики.......................................380
Метрики для объектно-ориентированного тестирования......................381
Метрики инкапсуляции................................................381
Метрики наследования................................................382
Метрики полиморфизма...............................................383
Контрольные вопросы и упражнения.......................................383
Глава 13. Примеры объектно-ориентированных
процессов разработки.....................................386
Основные понятия унифицированного процесса разработки..................386
Этапы и итерации.....................................................388
Рабочие потоки процесса..............................................388
Модели..............................................................389
Технические артефакты................................................389
Этапы унифицированного процесса разработки.............................390
Этап НАЧАЛО (Inception)...............................................390
Этап РАЗВИТИЕ (Elaboration)...........................................391
Этап КОНСТРУИРОВАНИЕ (Construction).................................393
Этап ПЕРЕХОД (Transition).............................................393
Оценка качества проектирования.......................................394
Разработка простого интерфейса пользователя для встроенной системы.......395
Этап НАЧАЛО.........................................................395
Этап РАЗВИТИЕ......................................................396
Этап КОНСТРУИРОВАНИЕ.............................................405
Разработка системы управления торговым автоматом........................413
Этап НАЧАЛО.........................................................413
Этап РАЗВИТИЕ......................................................416
Этап КОНСТРУИРОВАНИЕ.............................................423
Разработка в стиле экстремального программирования......................428
ХР-реализация.......................................................428
ХР-итерация.........................................................430
Элемент ХР-разработки...............................................431
Коллективное владение кодом..........................................432
Взаимодействие с заказчиком..........................................433
Стоимость изменения и проектирование................................434
Планирование в ХР-разработке системы обслуживания банковских карт........437
Спецификация заказчика..............................................437
Формирование пользовательских историй...............................438
Планирование реализации.............................................439
Планирование итерации...............................................440
Контрольные вопросы и упражнения.......................................440
Глава 14. Структурное тестирование программного обеспечения .......442
Основные понятия и принципы тестирования ПО............................442
Тестирование «черного ящика».........................................444
Тестирование «белого ящика»..........................................444
Особенности тестирования «белого ящика».................................445
Способ тестирования базового пути.......................................446
Потоковый граф......................................................446
Цикломатическая сложность...........................................447
Шаги способа тестирования базового пути...............................449
Способы тестирования условий...........................................455
Тестирование ветвей и операций отношений.............................456
Способ тестирования потоков данных......................................462
Тестирование циклов.....................................................468
Простые циклы.......................................................469
Вложенные циклы.....................................................469
Объединенные циклы.................................................470
Неструктурированные циклы...........................................470
Контрольные вопросы и упражнения.......................................471
Глава 15. Функциональное тестирование
программного обеспечения.................................473
Особенности тестирования «черного ящика»................................473
Способ разбиения по эквивалентности.....................................474
Способ анализа граничных значений.......................................476
Способ диаграмм причин-следствий.......................................481
Контрольные вопросы и упражнения.......................................486
Глава 16. Организация процесса тестирования
программного обеспечения.................................489
Методика тестирования программных систем...............................489
Тестирование элементов.................................................491
Тестирование интеграции.................................................494
Нисходящее тестирование интеграции..................................494
Восходящее тестирование интеграции..................................496
Сравнение нисходящего и восходящего тестирования интеграции..........497
Тестирование правильности..............................................498
Системное тестирование.................................................499
Тестирование восстановления..........................................499
Тестирование безопасности............................................500
Стрессовое тестирование.............................................500
Тестирование производительности.....................................501
Искусство отладки.......................................................501
Контрольные вопросы....................................................503
Глава 17. Объектно-ориентированное тестирование............505
Расширение области применения объектно-ориентированного тестирования ... 505
Изменение методики при объектно-ориентированном тестировании...........507
Особенности тестирования
объектно-ориентированных «модулей»...............................507
Тестирование объектно-ориентированной интеграции....................508
Объектно-ориентированное тестирование правильности..................508
Проектирование объектно-ориентированных тестовых вариантов..............509
Тестирование, основанное на ошибках..................................510
Тестирование, основанное на сценариях.................................511
Тестирование поверхностной и глубинной структуры......................513
Способы тестирования содержания класса.................................513
Стохастическое тестирование класса...................................513
Тестирование разбиений на уровне классов..............................514
Способы тестирования взаимодействия классов............................515
Стохастическое тестирование..........................................516
Тестирование разбиений..............................................517
Тестирование на основе состояний.....................................518
Способы тестирования взаимодействия классов............................515
Стохастическое тестирование..........................................516
Тестирование разбиений..............................................517
Тестирование на основе состояний.....................................518
Разработка через тестирование...........................................519
Среда тестирования JUnit................................................536
Разработка через поведение..............................................539
Контрольные вопросы и упражнения.......................................541
Глава 18. Сервисно-ориентированная архитектура..............543
Основные понятия сервисно-ориентированной архитектуры..................543
XML-стандарты для веб-служб.............................................547
Определение интерфейса веб-службы.....................................551
Веб-службы и REST-подход...............................................557
Разработка служб........................................................559
Композиция служб.......................................................568
Контрольные вопросы и упражнения.......................................575
Глава 19. Облачные технологии .............................576
Предпосылки облачных технологий........................................576
Основные понятия облачных технологий....................................582
Модели предоставления облачных технологий..............................585
Архитектура облачного SaaS-приложения..................................589
Сервер приложения для облачного SaaS-cama..............................595
Контрольные вопросы и упражнения.......................................602
Глава 20. Обеспечение качества программных систем...........603
Определение качества программного обеспечения..........................603
Определение и цели обеспечения качества ПО..............................604
Факторы качества ПО....................................................606
Деятельность по обеспечению качества ПО.................................610
Технические проверки и аудиты...........................................611
Инспектирование........................................................612
Верификация и валидация................................................614
План обеспечения качества ПО............................................617
Контрольные вопросы и упражнения.......................................618
Глава 21. Автоматизация разработки визуальной
модели программной системы....................www.piter.com
Общая характеристика системы IBM Rational Software Architect.......www.piter.com
Создание диаграммы Use Case...................................www.piter.com
Создание диаграммы последовательности.........................www.piter.com
Создание диаграммы классов....................................www.piter.com
Генерация программного кода....................................www.piter.com
Трансформация программного кода в модель UML..................www.piter.com
Заключение..............................................620
Приложение А. Факторы затрат пост-архитектурной
модели СОСОМО II........................................622
Приложение Б. Внутренние и внешние метрики
качества.......................................www.piter.com
Приложение В. Терминология языка UML
и унифицированного процесса....................www.piter.com
Создание диаграммы последовательности.........................www.piter.com
Создание диаграммы классов....................................www.piter.com
Генерация программного кода....................................www.piter.com
Трансформация программного кода в модель UML..................www.piter.com
Заключение..............................................620
Приложение А. Факторы затрат пост-архитектурной
модели СОСОМО II........................................622
Приложение Б. Внутренние и внешние метрики
качества.......................................www.piter.com
Приложение В. Терминология языка UML
и унифицированного процесса....................www.piter.com
Словарь терминов..............................................www.piter.com
Список литературы........................................629
Алфавитный указатель.....................................634
Информатика и ВТ / Информатика и вычислительная техника для студентов и специалистов / Программирование