Введение | 11 |
|
Глава 1. Организация процесса конструирования | 15 |
|
Определение технологии конструирования программного обеспечения | 15 |
Классический жизненный цикл | 16 |
Макетирование | 18 |
Стратегии конструирования ПО | 20 |
Инкрементная модель | 20 |
Быстрая разработка приложений | 21 |
Спиральная модель | 23 |
Компонентно-ориентированная модель | 24 |
Тяжеловесные и облегчённые процессы | 25 |
ХР-процесс | 26 |
Модели качества процессов конструирования | 31 |
Контрольные вопросы | 33 |
|
Глава 2. Руководство программным проектом | 36 |
|
Процесс руководства проектом | 36 |
Начало проекта | 37 |
Измерения, меры и метрики | 37 |
Процесс оценки | 37 |
Анализ риска | 37 |
Планирование | 38 |
Трассировка и контроль | 38 |
Планирование проектных задач | 38 |
Размерно-ориентированные метрики | 40 |
Функционально-ориентированные метрики | 41 |
Выполнение оценки в ходе руководства проектом | 48 |
Выполнение оценки проекта на основе LOC- и FP-метрик | 48 |
Конструктивная модель стоимости | 50 |
Модель композиции приложения | 51 |
Модель раннего этапа проектирования | 53 |
Модель этапа постархитектуры | 56 |
Предварительная оценка программного проекта | 59 |
Анализ чувствительности программного проекта | 63 |
Сценарий понижения зарплаты | 64 |
Сценарий наращивания памяти | 65 |
Сценарий использования нового микропроцессора | 65 |
Сценарий уменьшения средств на завершение проекта | 65 |
Контрольные вопросы | 67 |
|
Глава 3. Классические методы анализа | 69 |
|
Структурный анализ | 69 |
Диаграммы потоков данных | 69 |
Описание потоков данных и процессов | 70 |
Расширения для систем реального времени | 71 |
Расширение возможностей управления | 73 |
Модель системы регулирования давления космического корабля | 74 |
Методы анализа, ориентированные на структуры данных | 77 |
Метод анализа Джексона | 78 |
Методика Джексона | 78 |
Шаг объект-действие | 79 |
Шаг объект-структура | 79 |
Шаг начального моделирования | 81 |
Контрольные вопросы | 83 |
|
Глава 4. Основы проектирования программных систем | 85 |
|
Особенности процесса синтеза программных систем | 85 |
Особенности этапа проектирования | 86 |
Структурирование системы | 87 |
Моделирование управления | 89 |
Декомпозиция подсистем на модули | 91 |
Модульность | 91 |
Информационная закрытость | 92 |
Связность модуля | 93 |
Функциональная связность | 94 |
Информационная связность | 95 |
Коммуникативная связность | 95 |
Процедурная связность | 96 |
Временная связность | 97 |
Логическая связность | 97 |
Связность по совпадению | 98 |
Определение связности модуля | 99 |
Сцепление модулей | 99 |
Сложность программной системы | 101 |
Характеристики иерархической структуры программной системы | 102 |
Контрольные вопросы | 104 |
|
Глава 5. Классические методы проектирования | 106 |
|
Метод структурного проектирования | 106 |
Типы информационных потоков | 106 |
Проектирование для потока данных типа «преобразование» | 107 |
Проектирование для потока данных типа «запрос» | 109 |
Метод проектирования Джексона | 111 |
Доопределение функций | 111 |
Учёт системного времени | 114 |
Контрольные вопросы | 115 |
|
Глава 6. Структурное тестирование программного |
обеспечения | 116 |
|
Основные понятия и принципы тестирования ПО | 116 |
Тестирование «чёрного ящика» | 118 |
Тестирование «белого ящика» | 118 |
Особенности тестирования «белого ящика» | 119 |
Способ тестирования базового пути | 120 |
Потоковый граф | 120 |
Цикломатическая сложность | 122 |
Шаги способа тестирования базового пути | 123 |
Способы тестирования условий | 126 |
Тестирование ветвей и операторов отношений | 127 |
Способ тестирования потоков данных | 130 |
Тестирование циклов | 133 |
Простые циклы | 133 |
Вложенные циклы | 134 |
Объединённые циклы | 134 |
Неструктурированные циклы | 135 |
Контрольные вопросы | 135 |
|
Глава 7. Функциональное тестирование программного |
обеспечения | 137 |
|
Особенности тестирования «чёрного ящика» | 137 |
Способ разбиения по эквивалентности | 138 |
Способ анализа граничных значений | 140 |
Способ диаграмм причин-следствий | 143 |
Контрольные вопросы | 148 |
|
Глава 8. Организация процесса тестирования |
программного обеспечения | 150 |
|
Методика тестирования программных систем | 150 |
Тестирование элементов | 152 |
Тестирование интеграции | 155 |
Нисходящее тестирование интеграции | 155 |
Восходящее тестирование интеграции | 157 |
Сравнение нисходящего и восходящего тестирования интеграции | 158 |
Тестирование правильности | 159 |
Системное тестирование | 160 |
Тестирование восстановления | 161 |
Тестирование безопасности | 161 |
Стрессовое тестирование | 161 |
Тестирование производительности | 162 |
Искусство отладки | 162 |
Контрольные вопросы | 164 |
|
Глава 9. Основы объектно-ориентированного |
представления программных систем | 166 |
|
Принципы объектно-ориентированного представления программных систем | 166 |
Абстрагирование | 167 |
Инкапсуляция | 168 |
Модульность | 169 |
Иерархическая организация | 169 |
Объекты | 172 |
Общая характеристика объектов | 172 |
Виды отношений между объектами | 174 |
Связи | 174 |
Видимость объектов | 177 |
Агрегация | 178 |
Классы | 179 |
Общая характеристика классов | 179 |
Виды отношений между классами | 180 |
Ассоциации классов | 181 |
Наследование | 182 |
Агрегация | 184 |
Зависимость | 186 |
Конкретизация | 187 |
Контрольные вопросы | 188 |
|
Глава 10. Базис языка визуального моделирования | 190 |
|
Унифицированный язык моделирования | 190 |
Предметы в UML | 191 |
Отношения в UML | 195 |
Диаграммы в UML | 196 |
Механизмы расширения в UML | 197 |
Контрольные вопросы | 199 |
|
Глава 11. Статические модели объектно-ориентированных |
программных систем | 201 |
|
Вершины в диаграммах классов | 201 |
Свойства | 202 |
Операции | 203 |
Организация свойств и операций | 203 |
Множественность | 204 |
Отношения в диаграммах классов | 205 |
Деревья наследования | 210 |
Примеры диаграмм классов | 211 |
Контрольные вопросы | 213 |
|
Глава 12. Динамические модели объектно-ориентированных |
программных систем | 215 |
|
Моделирование поведения программной системы | 215 |
Диаграммы схем состояний | 216 |
Действия в состояниях | 218 |
Условные переходы | 218 |
Вложенные состояния | 219 |
Диаграммы деятельности | 220 |
Диаграммы взаимодействия | 222 |
Диаграммы сотрудничества | 223 |
Диаграммы последовательности | 227 |
Диаграммы Use Case | 229 |
Актёры и элементы Use Case | 229 |
Отношения в диаграммах Use Case | 230 |
Работа с элементами Use Case | 233 |
Спецификация элементов Use Case | 233 |
Главный поток | 234 |
Подпотоки | 234 |
Альтернативные потоки | 234 |
Пример диаграммы Use Case | 235 |
Построение модели требований | 238 |
Кооперации и паттерны | 244 |
Паттерн Наблюдатель | 246 |
Паттерн Компоновщик | 249 |
Паттерн Команда | 251 |
Бизнес-модели | 253 |
Контрольные вопросы | 255 |
|
Глава 13. Модели реализации объектно-ориентированных |
программных систем | 257 |
|
Компонентные диаграммы | 257 |
Компоненты | 257 |
Интерфейсы | 259 |
Компоновка системы | 260 |
Разновидности компонентов | 261 |
Использование компонентных диаграмм | 262 |
Моделирование программного текста системы | 262 |
Моделирование реализации системы | 264 |
Основы компонентной объектной модели | 265 |
Организация интерфейса СОМ | 267 |
lUnknown — базовый интерфейс СОМ | 270 |
Серверы СОМ-объектов | 271 |
Преимущества СОМ | 272 |
Работа с СОМ-объектами | 272 |
Создание СОМ-объектов | 272 |
Повторное использование СОМ-объектов | 274 |
Маршалинг | 275 |
IDL-описание и библиотека типа | 276 |
Диаграммы размещения | 277 |
Узлы | 278 |
Использование диаграмм размещения | 279 |
Контрольные вопросы | 282 |
|
Глава 14. Метрики объектно-ориентированных |
программных систем | 284 |
|
Метрические особенности объектно-ориентированных программных систем | 284 |
Локализация | 285 |
Инкапсуляция | 285 |
Информационная закрытость | 285 |
Наследование | 286 |
Абстракция | 286 |
Эволюция мер связи для объектно-ориентированных программных систем | 286 |
Связность объектов | 286 |
Сцепление объектов | 293 |
Набор метрик Чидамбера и Кемерера | 295 |
Использование метрик Чидамбера-Кемерера | 301 |
Метрики Лоренца и Кидца | 302 |
Метрики, ориентированные на классы | 302 |
Операционно-ориентированные метрики | 304 |
Метрики для 00 проектов | 305 |
Набор метрик Фернандо Абреу | 306 |
Метрики для объектно-ориентированного тестирования | 311 |
Метрики инкапсуляции | 311 |
Метрики наследования | 312 |
Метрики полиморфизма | 313 |
Контрольные вопросы | 313 |
|
Глава 15. Унифицированный процесс разработки |
объектно-ориентированных ПС | 315 |
|
Эволюционно-инкрементная организация жизненного цикла разработки | 315 |
Этапы и итерации | 317 |
Рабочие потоки процесса | 317 |
Модели | 318 |
Технические артефакты | 318 |
Управление риском | 319 |
Идентификация риска | 319 |
Анализ риска | 321 |
Ранжирование риска | 321 |
Планирование управления риском | 321 |
Разрешение и наблюдение риска | 322 |
Этапы унифицированного процесса разработки | 323 |
Этап НАЧАЛО (Inception) | 323 |
Этап РАЗВИТИЕ (Elaboration) | 324 |
Этап КОНСТРУИРОВАНИЕ (Construction) | 326 |
Этап ПЕРЕХОД (Transition) | 327 |
Оценка качества проектирования | 327 |
Пример объектно-ориентированной разработки | 328 |
Этап НАЧАЛО | 329 |
Этап РАЗВИТИЕ | 330 |
Этап КОНСТРУИРОВАНИЕ | 335 |
Разработка в стиле экстремального программирования | 343 |
ХР-реализация | 343 |
ХР-итерация | 345 |
Элемент ХР-разработки | 346 |
Коллективное владение кодом | 347 |
Взаимодействие с заказчиком | 349 |
Стоимость изменения и проектирование | 349 |
Контрольные вопросы | 352 |
|
Глава 16. Объектно-ориентированное тестирование | 354 |
|
Расширение области применения объектно-ориентированного тестирования | 354 |
Изменение методики при объектно-ориентированном тестировании | 356 |
Особенности тестирования объектно-ориентированных «модулей» | 356 |
Тестирование объектно-ориентированной интеграции | 357 |
Объектно-ориентированное тестирование правильности | 358 |
Проектирование объектно-ориентированных тестовых вариантов | 358 |
Тестирование, основанное на ошибках | 360 |
Тестирование, основанное на сценариях | 361 |
Тестирование поверхностной и глубинной структуры | 362 |
Способы тестирования содержания класса | 363 |
Стохастическое тестирование класса | 363 |
Тестирование разбиений на уровне классов | 364 |
Способы тестирования взаимодействия классов | 365 |
Стохастическое тестирование | 366 |
Тестирование разбиений | 367 |
Тестирование на основе состояний | 367 |
Предваряющее тестирование при экстремальной разработке | 369 |
Контрольные вопросы | 385 |
|
Глава 17. Автоматизация конструирования |
визуальной модели программной системы | 387 |
|
Общая характеристика CASE-системы Rational Rose | 387 |
Создание диаграммы Use Case | 390 |
Создание диаграммы последовательности | 393 |
Создание диаграммы классов | 399 |
Создание компонентной диаграммы | 409 |
Генерация программного кода | 411 |
|
Заключение | 421 |
|
Приложение А. Факторы затрат |
постархитектурной модели СОСОМО II | 423 |
|
Приложение Б. Терминология языка UML |
и унифицированного процесса | 431 |
|
Приложение В. Основные средства языка |
программирования Ada 95 | 439 |
|
Список литературы | 454 |
|
Алфавитный указатель | 459 |