На главную | Где купить | Авторам и заказчикам | Вакансии | Реклама | Издательство | Каталог | Статьи наших авторов | Контакты | Прайс листы

Основы инженерии программного обеспечения. 2-е изд.

Автор Джазайери М, Гецци К, Мандриоли Д
Название Основы инженерии программного обеспечения. 2-е изд.
Серия Внесерийные книги
ISBN 5-94157-403-7
Формат 70*1001/16
Объем 832
Тематика
Оптовая цена
    Вернуться к описанию книги

Полное содержание

Предисловие ко второму изданию 1
Роль объектного ориентирования 3
Назначение примеров 3
Ресурсы для преподавателей 4
Предисловие к первому изданию 5
Кому предназначена книга 6
Предварительные требования 7
Структура и содержание 7
Упражнения 8
Примеры 8
Лабораторный курс 9
Схема прочтения 9
Благодарности 10

Глава 1. Инженерия программного обеспечения: введение

11
1.1. Роль инженерии программного обеспечения в проектировании систем 13
1.2. История инженерии программного обеспечения: краткий курс 14
1.3. Роль программного инженера 17
1.4. Жизненный цикл программного обеспечения 18
1.5. Отношение инженерии программного обеспечения к другим областям компьютерной науки 21
1.5.1. Языки программирования 21
1.5.2. Операционные системы 23
1.5.3. Базы данных 23
1.5.4. Искусственный интеллект 24
1.5.5. Теоретические модели 25
1.6. Отношение инженерии программного обеспечения к другим дисциплинам 26
1.6.1. Наука об управлении 27
1.6.2. Системное проектирование 27
1.7. Заключительные замечания 28
Библиографические примечания 28

Глава 2. Программное обеспечение: природа и качества

31
2.1. Классификация качеств программного обеспечения 32
2.1.1. Соотношение между внутренними и внешними качествами 33
2.1.2. Качества продукта и процесса 33
2.2. Показательные качества 34
2.2.1. Корректность, надежность и устойчивость 34
2.2.2. Производительность 38
2.2.3. Удобство 40
2.2.4. Верифицируемость 41
2.2.5. Сопровождаемость 42
2.2.6. Повторная применимость 47
2.2.7. Переносимость 48
2.2.8. Понятность 49
2.2.9. Интероперабельность 49
2.2.10. Продуктивность 51
2.2.11. Своевременность 52
2.2.12. Видимость 54
2.3. Требования к качеству в различных прикладных областях 56
2.3.2. Информационные системы 56
2.3.2. Системы реального времени 57
2.3.3. Распределенные системы 59
2.3.4. Встроенные системы 60
2.4. Измерение качества 61
2.5. Заключительные замечания 62
Дополнительные упражнения 62
Советы и наброски решений 63
Библиографические примечания 63

Глава 3. Принципы инженерии программного обеспечения

65
3.1. Строгость и формальность 67
3.2. Разделение задач 70
3.3. Модульность 73
3.4. Абстракция 76
3.5. Предусмотрение изменений 78
3.6. Общность 80
3.7. Инкрементность 82
3.8. Два практических примера, поясняющие принципы инженерии программного обеспечения 84
3.8.1. Исследование на примере разработки компилятора 84
3.8.2. Пример системного проектирования 90
Заключительные замечания 95
Дополнительные упражнения 96
Советы и наброски решений 97
Библиографические примечания 98

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

101
4.1. Проектирование программного обеспечения и его цели 106
4.1.1. Проектирование с учетом изменений 108
4.1.2. Семейства программных продуктов 114
4.2. Способы модуляризации 117
4.2.1. Модульная структура и ее представление 117
4.2.2. Интерфейс, реализация и сокрытие информации 127
4.2.3. Типы представлений проекта 137
4.2.4. Категории модулей 146
4.2.5. Некоторые специфические методы проектирования с учетом изменений 157
4.2.6. Пошаговая детализация 160
4.2.7. Сравнение нисходящего и восходящего методов проектирования 169
4.3. Обработка аномалий 170
4.4. Конкретный пример проектирования 174
4.5. Параллельное программное обеспечение 178
4.5.1. Совместно используемые данные 179
4.5.2. Программное обеспечение реального времени 188
4.5.3. Распределенные программные средства 191
4.6. Объектно-ориентированное проектирование 199
4.6.1. Обобщение и специализация 200
4.6.2. Ассоциации 204
4.6.3. Агрегирование 206
4.6.4. Дополнительная информация о диаграммах классов UML 207
4.7. Архитектура и компоненты 208
4.7.1. Стандартные архитектуры 209
4.7.2. Компоненты программного обеспечения 212
4.7.3. Архитектура как оболочка для интегрирования компонентов 215
4.7.4. Архитектуры для распределенных систем 217
4.8. Заключительные замечания 219
Дополнительные упражнения 221
Советы и наброски решений 224
Библиографические примечания 225

Глава 5. Спецификация

229
5.1. Использование спецификаций 231
5.2. Качества спецификации 234
5.3. Классификация типов спецификаций 237
5.4. Верификация спецификаций 241
5.5. Операционные спецификации 242
5.5.1. Диаграммы потока данных: определение функций информационных систем 242
5.5.2. Диаграммы UML для определения поведений 249
5.5.3. Конечные автоматы: описание потока управления 252
5.5.4. Сети Петри: спецификации асинхронных систем 260
5.6. Описательные спецификации 289
5.6.1. Диаграммы "объект-отношение" 289
5.6.2. Логические спецификации 293
5.6.3. Алгебраические спецификации 314
5.7. Построение и использование спецификаций на практике 323
5.7.1. Требования к представлениям спецификаций 324
5.7.2. Создание модульных спецификаций 329
5.7.3. Спецификации для конечного пользователя 351
5.8. Заключительные замечания 352
Дополнительные упражнения 354
Советы и наброски решений 358
Библиографические примечания 363

Глава 6. Верификация

367
6.1. Цели и требования верификации 369
6.1.1. Верифицировать необходимо все 369
6.1.2. Результаты верификации могут не быть бинарными 370
6.1.3. Верификация может быть объективной или субъективной 371
6.1.4. Верифицировать нужно даже неявные качества 373
6.2. Подходы к проблеме верификации 374
6.3. Тестирование 375
6.3.1. Цели тестирования 376
6.3.2. Теоретические основы тестирования 379
6.3.3. Эмпирические принципы тестирования 382
6.3.4. Локальное тестирование 385
6.3.5. Общее тестирование 411
6.3.6. Разделение задач при тестировании 423
6.3.7. Тестирование параллельных систем и систем реального времени 425
6.4. Анализ 429
6.4.1. Неформальные методы анализа 430
6.4.2. Доказательство корректности 434
6.5. Символическое выполнение 457
6.5.1. Основные понятия символического выполнения 459
6.5.2. Программы с массивами 463
6.5.3. Применение символического выполнения в тестировании 467
6.6. Проверка моделей 468
6.7. Сопоставление способов верификации 472
6.8. Отладка 474
6.9. Верификация других свойств программного обеспечения 480
6.9.1. Верификация производительности 480
6.9.2. Верификация надежности 481
6.9.3. Верификация субъективных качеств 486
6.10. Заключительные замечания 500
Дополнительные упражнения 501
Советы и наброски решений 510
Библиографические примечания 514

Глава 7. Процесс производства программного обеспечения

519
7.1. Понятие модели процесса создания ПО 521
7.2. Важность моделей процесса создания ПО 524
7.3. Основные этапы создания программного обеспечения 528
7.3.1. Анализ осуществимости 528
7.3.2. Выявление, понимание и спецификация требований 529
7.3.3. Определение архитектуры программного обеспечения и рабочий проект 539
7.3.4. Кодирование и тестирование модулей 539
7.3.5. Сборка и системное тестирование 540
7.3.6. Поставка, развертывание и сопровождение ПО 540
7.3.7. Прочие виды деятельности 542
7.4. Обзор моделей процесса производства программного обеспечения 543
7.4.1. Каскадные модели 543
7.4.2. Эволюционные модели 553
7.4.3. Модель, основанная на преобразовании 557
7.4.4. Спиральная модель 560
7.4.5. Оценка моделей процесса 562
7.5. Работа с действующим программным обеспечением 566
7.6. Практические примеры 567
7.6.1. Практический пример: система коммутации телефонной станции 568
7.6.2. Практический пример: система управления финансами 574
7.6.3. Практический пример: процесс синхронизации и стабилизации в корпорации Microsoft 580
7.6.4. Практический пример: открытый подход к разработке 581
7.7. Организация процесса 583
7.7.1. Структурный анализ/структурное проектирование 584
7.7.2. Система разработки и структурное программирование, по Джексону 589
7.7.3. Унифицированный процесс разработки программного обеспечения 594
7.8. Организационные артефакты: управление конфигурацией 599
7.9. Стандарты программного обеспечения 603
7.10. Заключительные замечания 604
Дополнительные упражнения 605
Советы и наброски решений 607
Библиографические примечания 607

Глава 8. Управление программной инженерией

613
8.1. Функции управления 616
8.2. Планирование проекта 617
8.2.1. Производительность программного обеспечения 619
8.2.2. Люди и производительность 629
8.2.3. Оценка затрат 630
8.3. Управление проектом 640
8.3.1. Декомпозиция работ 641
8.3.2. Графики Ганта 642
8.3.3. Графики PERT 644
8.3.4. Обработка отклонений от плана 647
8.4. Организация управления 649
8.4.1. Организация коллектива с централизованным управлением 652
8.4.2. Организация коллектива с децентрализованным управлением 654
8.4.3. Организация со смешанным типом управления 655
8.4.4. Оценка типов организации коллектива 656
8.5. Управление рисками 658
8.5.1. Типичное управление рисками в программной инженерии 659
8.6. Модель развития функциональных возможностей 661
8.7. Заключительные замечания 664
Дополнительные упражнения 667
Советы и наброски решений 669
Библиографические примечания 669

Глава 9. Инструментальные средства поддержки разработки и программные среды

673
9.1. Историческая эволюция инструментальных средств и программных сред 674
9.2. Сравнение инструментальных средств 675
9.3. Репрезентативные инструментальные средства 680
9.3.1. Редакторы 680
9.3.2. Компоновщики 682
9.3.3. Интерпретаторы 682
9.3.4. Генераторы кодов 684
9.3.5. Отладчики 685
9.3.6. Инструменты, используемые при тестировании 686
9.3.7. Статические анализаторы 687
9.3.8. Инструменты графического пользовательского интерфейса 690
9.3.9. Инструменты управления конфигурацией 692
9.3.10. Инструменты слежения 697
9.3.11. Инструменты обратного проектирования и перепроектирования 698
9.3.12. Инструменты поддержки процесса 699
9.3.13. Инструменты управления 700
9.4. Интеграция инструментальных средств 701
9.5. Факторы, влияющие на эволюцию инструментальных средств 702
9.6. Заключительные замечания 703
Дополнительные упражнения 704
Советы и наброски решений 705
Библиографические примечания 706

Глава 10. Эпилог

709
10.1. Будущее 710
10.2. Этика и социальная ответственность 713
10.3. Моральный кодекс разработчика программного обеспечения 715
10.4. Заключительные замечания 716
Библиографические примечания 716
   
ПРИЛОЖЕНИЯ 719
Приложения. Практические примеры 721
Автоматизация работы юридической компании 722
А.1. Экономическое и финансовое планирование 723
А.2. Техническое планирование и управление 724
А.3. Мониторинг проекта 726
А.4. Начальная поставка 727
А.5. Частичное восстановление 727
Практический пример В: Построение семейства компиляторов 728
B.1. Первичное планирование продукта 728
B.2. Экономическое и финансовое планирование 729
B.3. Техническое планирование и управление 729
B.4. Начальные фазы разработки 730
B.5. Мониторинг проекта 731
возобновление и постановка целей 731
B.7. Распределение ответственности 734
B.8. Устойчивый прогресс и выпуск продукта 734
B.9. Распределение продуктов 735
B.10. Примечания 735
Практический пример С: Поэтапная поставка продукта 738
в промышленности 740
D.1. Образование и обучение 742
D.2. Спецификация требований 742
D.3. Аттестация требований и планирование верификации 744
D.4. Проектирование, реализация и верификация 746
D.5. Общие оценки 747
D.6. Влияние проекта на стратегию компании 749
Заключительные замечания 751
Библиографические примечания 751
Библиография 753
Предметный указатель 797


На главную | Где купить | Авторам | Вакансии | Реклама | Издательство | Каталог | Статьи наших авторов | Контакты
© 2001–2018 Издательство «БХВ-Петербург».
Все права защищены. Частичное или полное копирование текстов, слоганов и фотоизображений без письменного согласия Правообладателя запрещено.