Технология разработки программного обеспечения 9785947236637, 594723663X

220 66 11MB

Russian Pages 657 Year 2004

Report DMCA / Copyright

DOWNLOAD FILE

Технология разработки программного обеспечения
 9785947236637, 594723663X

Table of contents :
Обложка ......Page 1
Титульная страница оригинала ......Page 3
Титульная страница перевода ......Page 4
Аннотация ......Page 5
Краткое содержание ......Page 6
Содержание ......Page 7
Предисловие ......Page 17
Структура книги ......Page 18
Как пользоваться книгой ......Page 19
Упражнения ......Page 20
От издательства ......Page 21
0.1. Контекст разработки программного продукта ......Page 22
0.2. Этапы разработки программного обеспечения ......Page 23
0.3. Процесс ......Page 24
0.4. Проект ......Page 25
0.5. Персонал ......Page 26
0.7. Качество ......Page 27
0.8. Проект для студенческой команды ......Page 29
0.8.1. Общение в группе ......Page 30
0.9. Обзор учебного проекта ......Page 31
0.9.1. Компьютерная игра Встреча: введение ......Page 32
0.9.2. Требования к игре Встреча ......Page 33
0.9.3. Проектирование игры Встреча ......Page 34
Упражнения ......Page 35
Подсказки ......Page 36
Глава 1. Процесс ......Page 38
1.1. Введение в процесс разработки программного обеспечения ......Page 39
1.1.1. Типичная схема разработки программного обеспечения ......Page 40
1.2.2. Влияние структурного и объектно-ориентированного программирования ......Page 42
1.2.3. Повторное использование компонентов ......Page 44
1.2.4 Формальные методы ......Page 45
1.3. Требования к процессу, проекту, продукту и персоналу ......Page 46
1.4. Разновидности процесса разработки ......Page 47
1.4.1. Водопадная модель процесса ......Page 48
1.4.2. Спиральная модель процесса ......Page 50
1.4.3. Инкрементальная модель процесса ......Page 51
1.4.4. Унифицированный процесс разработки программного обеспечения (USDP) ......Page 53
1.4.5. Сравнение процессов разработки ......Page 56
1.5.1. Введение в документирование ......Page 57
1.5.2. Стандарты документации ......Page 59
1.6. Качество ......Page 64
1.6.1. Метрики ......Page 65
1.6.3. Методы » и ......Page 66
1.6.4. Введение в инспектирование ......Page 67
1.6.5. План контроля качества (SQAP): стандарт IEEE ......Page 73
1.6.6. Верификация и валидация ......Page 74
1.7.2. Согласованность и целостность документации ......Page 78
1.7.3. Управление конфигурациями ......Page 80
1.8.1. Индивидуальный процесс разработки программного обеспечения (PSP) ......Page 85
1.8.2. Командный процесс разработки программного обеспечения (TSP) ......Page 87
1.8.3. Модель зрелости возможностей (СММ) ......Page 88
1.8.4. Связь между PSP, TSP и СММ ......Page 90
1.9. Подведение итогов ......Page 91
Вопросы для проверки ......Page 92
Упражнения в команде ......Page 93
Ответы ......Page 94
Пример 1. План управления конфигурациями (SCMP) ......Page 95
Пример 2. План контроля качества (SQAP), часть 1 ......Page 101
Глава 2. Управление проектом ......Page 108
2.1.2. Составляющие управления проектом ......Page 109
2.1.3. Основные параметры: стоимость, функциональность, качество и расписание ......Page 110
2.1.4. Типичная схема процесса управления проектом ......Page 111
2.2.1. Профессионализм ......Page 112
2.2.2. Важность управления персоналом ......Page 113
2.2.4. Управленческие аспекты ......Page 114
2.3. Варианты организации персонала ......Page 116
2.3.1. Управление взаимодействием ......Page 117
2.3.2. Варианты структуры ответственности ......Page 118
2.3.3. Подбор участников проекта ......Page 121
2.4.2. Обзор управления рисками ......Page 122
2.4.3. Выявление рисков ......Page 123
2.4.4. Предупреждение рисков ......Page 124
2.5.1. Модели процесса ......Page 127
2.5.3. Разрабатывать новые или покупать готовые решения? ......Page 128
2.5.4. Выбор языка программирования ......Page 129
2.6. Подготовка плана-графика: планирование верхнего уровня ......Page 130
2.7. Интеграция унаследованных приложений ......Page 133
2.8.1. Введение ......Page 135
2.8.2. Оценка количества строк кода без учета функционального размера ......Page 138
2.8.3. Функциональный размер и количество строк кода ......Page 139
2.8.5. Пример ......Page 144
2.8.6. Библиография ......Page 145
2.9. Оценка трудозатрат и длительности проекта по количеству строк кода ......Page 146
2.10. Командный процесс разработки программного обеспечения (TSP) ......Page 148
2.11. План управления программным проектом (SPMP) ......Page 150
2.12.1. Метрики процесса ......Page 153
2.12.2. IEEE 739-1989 SQAP: часть 2 ......Page 155
2.13. Улучшение процесса и модель зрелости возможностей ......Page 157
2.13.2. Улучшение процесса для текущего проекта ......Page 158
2.14.2. Экстремальное программирование ......Page 160
2.15. Подведение итогов ......Page 162
Этап 1. Подготовка к совещанию по планированию проекта ......Page 163
Этап 2. Начальное совещание по планированию проекта ......Page 164
Этап 3. Завершение составления SPMP ......Page 165
Упражнения в команде ......Page 166
Ответы ......Page 167
Пример 1. План управления программным проектом (SPMP) для видеоигры Встреча ......Page 169
Пример 2. План контроля качества (SQAP), часть 2 ......Page 179
3.1. Введение в анализ требований ......Page 184
3.1.1. Значение анализа требований ......Page 185
3.1.2. С-требования и D-требования ......Page 186
3.1.3. Почему требования следует написать ......Page 187
3.1.4. Типичная схема процесса анализа требований ......Page 188
3.1.5. Преимущества анализа требований и проблемы, связанные с ним ......Page 189
3.2.2. Определение заинтересованных лиц ......Page 191
3.2.3. Примеры пожеланий заказчиков ......Page 193
3.2.4. Проведение опроса и документирование ......Page 194
3.3.1. Концепция работы ......Page 195
3.3.2. Варианты использования ......Page 196
3.3.3. Диаграммы потоков данных для общения с заказчиком ......Page 199
3.3.4. Диаграммы переходов состояний ......Page 200
3.3.5. Черновик пользовательского интерфейса и других интерфейсов ......Page 203
3.3.6. Подведение итогов и руководство для формулирования С-требований ......Page 212
3.5. Быстрое прототипирование, исследование осуществимости и проверка концепции ......Page 214
3.5.1. Быстрое прототипирование ......Page 215
3.5.2. Исследование осуществимости ......Page 219
3.6.2. Влияние анализа С-требований на план проекта ......Page 220
3.7.1. Будущие направления ......Page 223
Этап 1. Подготовка ......Page 224
Этап 2. Интервью с заказчиком ......Page 226
Этап 3. Написание Спецификации требований к программному обеспечению (SRS) ......Page 227
Этап 4. Завершение ......Page 228
Этап 5. Метрики и итоги ......Page 229
Общие упражнения ......Page 230
Ответы ......Page 231
Пример. Спецификация требований к программному обеспечению (SRS) для видеоигры Встреча, часть 1 ......Page 232
Глава 4. Анализ требований. Завершение SRS: добавление детальных требований ......Page 240
4.1.1. Значение детальных требований ......Page 241
4.1.2. Типичная схема процесса анализа D-требований ......Page 242
4.2.1. Функциональные требования ......Page 243
4.2.4. Нефункциональные требования: обработка ошибок ......Page 244
4.2.6. Нефункциональные требования: ограничения ......Page 245
4.3. Желательные свойства D-требований ......Page 246
4.3.1. Прослеживание ......Page 247
4.3.2. Пригодность к тестированию и однозначность ......Page 251
4.3.3. Приоритет ......Page 252
4.3.4. Полнота ......Page 254
4.3.6. Согласованность ......Page 255
4.3.7. Подведение итогов процесса написания детальных требований ......Page 256
4.4. Диаграммы последовательности ......Page 257
4.5.1. Почему так важно организовать детальные требования ......Page 260
4.5.2. Способы организации детальных требований ......Page 261
4.5.3. Организация детальных требований по вариантам использования ......Page 264
4.5.4. Организация требований по классам ......Page 265
4.5.5. Определение классов ......Page 267
4.5.7. Классификация объектов ......Page 273
4.5.8. Связь с документацией тестов ......Page 274
4.6.1. Роль контроля качества в анализе D-требований ......Page 275
4.6.2. Метрики для анализа D-требований ......Page 276
4.6.3. Инспектирование анализа D-требований ......Page 277
4.7. Использование инструментов для анализа требований ......Page 281
4.8.1. Введение в формальные спецификации ......Page 282
4.8.2. Примеры формальных спецификаций ......Page 284
4.8.3. Когда следует использовать формальную спецификацию ......Page 288
4.8.4. Предусловия и постусловия ......Page 289
4.9.1. Влияние на SPMP ......Page 290
4.9.2. Влияние размера на D-требования ......Page 291
Этап 1. Подготовка ......Page 292
Этап 2. Классификация D-требований ......Page 293
Этап 3. Написание D-требований ......Page 294
Вопросы для проверки ......Page 295
Упражнения в команде ......Page 296
Пример. Спецификация требований к программному обеспечению {SRS) для видеоигры Встреча, часть 2 ......Page 297
5.1. Введение в архитектуру программ ......Page 317
5 1.1. Обзор технологии разработки ......Page 318
5.1.3. Цели выбора архитектуры ......Page 320
5.1.4. Декомпозиция ......Page 321
5.2. Модели, каркасы и образцы проектирования ......Page 324
5.2.1. Использование моделей ......Page 325
5.2.2. Унифицированный язык моделирования (UML) ......Page 327
5.2.3. Каркасы ......Page 328
5.2.4. Классификация архитектур ......Page 331
5.2.5 Образцы проектирования: введение ......Page 332
5.2.6. Компоненты ......Page 333
5.3. Типы архитектур и их модели ......Page 334
5.3.1. Архитектуры, основанные на потоках данных ......Page 335
5 3.2. Независимые компоненты ......Page 339
5.3.3. Виртуальные машины ......Page 347
5.3.4. Репозиторные архитектуры ......Page 351
5.3.5. Уровневые архитектуры ......Page 353
5.3.7. Подведение итогов: процедура выбора архитектуры ......Page 356
5.4.2. Инструментальные средства ......Page 357
5.4.3. Стандарт IEEE/ANSI для описания проекта ......Page 359
5.5.1. Качество и выбор архитектуры ......Page 360
5.5.2. Выбор из альтернативных архитектур ......Page 362
5.5.3. Проверка архитектуры с помощью вариантов использования ......Page 365
5.5.5. Влияние выбора архитектуры на SPMP ......Page 366
5.6. Подведение итогов ......Page 367
Руководство по учебному проекту. Архитектура проекта Встреча ......Page 368
Этап 2. Выбор архитектуры ......Page 369
Этап 4. Усовершенствование архитектуры ......Page 371
Общие упражнения ......Page 372
Упражнения в команде ......Page 373
Пример 1. Каркас архитектуры ролевой игры ......Page 374
Пример 2. Архитектура ролевой игры Встреча. SDD, часть 1 ......Page 377
Глава 6. Детальное проектирование ......Page 384
6.1.2. Соотношение вариантов использования, архитектуры и детального проектирования ......Page 385
6.1.3. Типичная схема процесса детального проектирования ......Page 386
6.1.4. Проектирование по схеме USDP ......Page 388
6.1.5. Проектирование и интерфейсы ......Page 389
6.1.6. Повторно используемые компоненты ......Page 390
6.2.1. Детальные диаграммы последовательности ......Page 392
6.2.2. Детальные диаграммы потоков данных ......Page 394
6.3. Спецификация классов и функций ......Page 395
6.3.1. Инварианты класса ......Page 396
6.3.2. Инварианты, предусловия и постусловия функций ......Page 397
6.4.1. Блок-схемы ......Page 398
6.4.2. Псевдокод ......Page 400
6.4.3. Когда следует использовать блок-схемы и псевдокод ......Page 401
6.5. Образцы проектирования: приемы детального проектирования ......Page 402
6.5.1. Креационные образцы проектирования ......Page 403
6.5.2. Структурные образцы проектирования ......Page 409
6.5.3. Образцы проектирования, основанные на поведении приложения ......Page 415
6.6. Библиотека стандартных шаблонов (STL) C++ ......Page 418
6.7.1. Стандарт IEEE 890 ......Page 419
6.7.3. Инструменты, использующие исходный код: Javadoc ......Page 420
6.8. Влияние детального проектирования на проект ......Page 423
6.8.1. Оценка объема работ с помощью детального проектирования ......Page 424
6.9. Детальное проектирование и качество ......Page 426
6.9.2. Инспектирование детального проектирования ......Page 428
Вопросы для проверки ......Page 431
Упражнения в команде ......Page 432
Пример 1. Каркас ролевой видеоигры. Детальное проектирование (оставшиеся части SDD) ......Page 433
Пример 2. Ролевая видеоигра Встреча. Детальное проектирование (оставшиеся части SDD) ......Page 435
Глава 7. Реализация модулей ......Page 446
7.1.3. Типичная схема процесса реализации модулей ......Page 447
7.1.4. Реализация в USDP ......Page 449
7.1.5. Языки программирования ......Page 451
7.2. Программирование и стиль ......Page 452
7.2.1. Общие принципы надежной реализации ......Page 453
7.2.2. Указатели и ссылки ......Page 454
7.2.4. Исключения ......Page 455
7.2.5. Обработка ошибок ......Page 456
7.3.1. Соглашения об именах: примеры на языке Java ......Page 460
7.3.3. Константы ......Page 462
7.3.4. Инициализация атрибутов ......Page 463
7.4. Доказуемо корректные программы ......Page 464
7.5. Инструменты и среды программирования ......Page 468
7.6. Качество в реализации ......Page 469
7.6.1. Стандартные метрики для исходного кода ......Page 471
7.6.2. Индивидуальные метрики для исходного кода ......Page 472
7.6.3. Инспектирование кода ......Page 473
7.6.4. Индивидуальная программная документация (PSD) ......Page 475
Вопросы для проверки ......Page 476
Ответы ......Page 477
Пример 1. Обновление Плана контроля качества (SQAP) ......Page 478
Пример 3. Индивидуальная программная документация (PSD), часть 1 ......Page 479
Пример 4. Исходный код (без тестового кода): класс EncounterCharacter ......Page 481
8.1.1. Цели тестирования ......Page 488
8.1.2. Значение модульного тестирования ......Page 490
8.1.3. Типичный план модульного тестирования ......Page 491
8.2. Типы тестов ......Page 492
8.2.1. Тестирование , » и » ......Page 493
8.2.2. Разбиение равнозначности для тестирования ......Page 494
8.2.3. Анализ граничных значений для тестирования ......Page 495
8.2.5. Рассмотрение решений для тестирования » ......Page 496
8.2.6. Тестирование на основе инвариантов ......Page 498
8.2.7. Использование случайных величин в тестировании ......Page 501
8.3. Планирование модульных тестов ......Page 502
8.4.1. Модульное тестирование методов ......Page 504
8.4.2. Пример теста метода ......Page 506
8.5.1. Пример теста комбинации методов ......Page 514
8.5.3. Тестирование инвариантов класса ......Page 516
8.5.4. Тесты на основе состояний ......Page 517
Вопросы для проверки ......Page 518
Общие упражнения ......Page 519
Ответы ......Page 520
Пример. Индивидуальная программная документация (PSD) на Java для класса ЕпсоитегСпагас1ег(ПерсонажВстречи), часть 2 ......Page 521
Глава 9. Интеграция, верификация и валидация системы ......Page 532
9.1.1. Значение фазы интеграции ......Page 533
9.1.2. Верификация, валидация и системное тестирование ......Page 534
9.2.1. Описание интеграции ......Page 538
9.2.2. Типичная схема процессов интегрального и системного тестирования ......Page 542
9.3.1. Интегральное тестирование ......Page 544
9.3.3. Тестирование интерфейсов ......Page 548
9.3.4. Системное тестирование ......Page 551
9.3.5. Тестирование удобства и простоты использования ......Page 552
9.3.7. Приемосдаточное тестирование ......Page 554
9.4.1. Стандарты документации по тестированию ......Page 555
9.4.2. Организация документации по интеграции и тестированию ......Page 557
9.5.1. Альфа-и бета-версии ......Page 559
9.5.2. План итераций перехода ......Page 560
9.6.1. Качество, к которому следует стремиться ......Page 561
9.6.2. Метрики интегрального и системного тестирования ......Page 562
9.6.4. Привлечение группы контроля качества к интегральному и системному тестированию ......Page 564
9.6.5. Системная интеграция и модель СММ ......Page 565
9.7. Инструментальные средства интегрального и системного тестирования ......Page 566
Упражнения в команде ......Page 569
Ответы ......Page 570
Приложение А: План создания базиса интеграции ......Page 571
Пример 2. Документация по тестированию программного обеспечения (STD) для видеоигры Встреча ......Page 575
Глава 10. Сопровождение ......Page 589
10.1.1. Сопровождение программ ......Page 590
10.1.2. Вопросы сопровождения программ ......Page 591
10.2. Виды работ по сопровождению ......Page 593
10.3.1. Анализ влияния факторов ......Page 596
10.3.2. Обратное проектирование ......Page 597
10.3.3. Реинжиниринг ......Page 598
10.3.4. Унаследованные приложения ......Page 600
10.3.5. Обновление документации ......Page 601
10.4. Стандарт IEEE 1219-1992 ......Page 602
10.4.1. Определение задачи сопровождения ......Page 603
10.4.2. Анализ задачи ......Page 604
10.4.3. Проектирование запроса на сопровождение ......Page 605
10.4.4. Реализация запроса на сопровождение ......Page 607
10.5. Управление сопровождением ......Page 609
10.6.1. Метрики сопровождения ......Page 612
10.6.2. Применение метрик сопровождения ......Page 614
10.6.3. Удобство сопровождения ......Page 616
10.7. Подведение итогов ......Page 617
Общие упражнения ......Page 618
Ответы ......Page 619
Пример. Сопровождение игры Встреча ......Page 620
Сокращения ......Page 627
Словарь терминов ......Page 630
Литература ......Page 637
Алфавитный указатель ......Page 643

Polecaj historie