- •Содержание
- •1.13. Задания для самопроверки 59
- •1.17. Задания для самопроверки 88
- •1.19. Задания для самопроверки 108
- •1.23. Задания для самопроверки 116
- •1.27. Задания для самопроверки 125
- •1.37. Задания для самопроверки 144
- •1.48. Задания для самопроверки 159
- •Перечень рисунков
- •Перечень таблиц
- •Введение
- •Принятые сокращения
- •1.Жизненный цикл разработки по
- •Программные проект и его атрибуты
- •Ролевые модели в программном проекте
- •Размер и сложность программного проекта
- •Характеристики программного проекта
- •Качество программного продукта
- •Экран проекта и сводка о подходе
- •Критерий smart для формулирования целей
- •Критерии успешности программного проекта
- •Модели жизненного цикла
- •Водопадная модель
- •Модель быстрой разработки приложения
- •Пошаговая модель
- •Спиральная модель Боэма
- •Прототипная модель
- •Выбор модели жизненного цикла
- •Задания для самопроверки
- •2.Типовой каркас для разработки по
- •Программная разработка
- •Планирование проекта
- •Модель cocomo для оценки трудозатрат в проекте
- •Модель slim для оценки трудозатрат в проекте
- •Разработка спецификации требований
- •Отслеживание и контроль
- •Верификация и валидация
- •Обеспечение качества
- •Конфигурационное управление
- •Метрики
- •Повышение квалификации
- •Задания для самопроверки
- •3. Модели зрелости способностей cmm/cmmi
- •Ключевые области процесса в модели cmm
- •Характеристика уровней зрелости в модели cmm
- •Интегрированная модель зрелости способностей cmmi
- •История возникновения
- •Уровни зрелости и области процесса
- •Уровни способностей процесса в модели cmmi
- •Специальные и общие цели и практики процессных областей
- •Характеристики уровней зрелости в модели cmmi
- •Задания для самопроверки
- •4.Управление рисками в программном проекте
- •Модели esi и pmi управления рисками
- •Выявление рисков
- •Анализ рисков
- •Расстановка приоритетов для рисков
- •Планирование рисков
- •Исполнение ответных стратегий
- •Оценивание результатов исполнение ответных стратегий
- •Документирование действий по рискам
- •Заключительное оценивание рисков
- •Задания для самопроверки
- •5.Стандарты качества iso в применении к по
- •Структура и принципы семейства стандартов iso 9000
- •Модели iso 9000 на базе процессов
- •Самооценивание по ключевым элементам iso 9000
- •Задания для самопроверки
- •6.Формальные методы в разработке по
- •Инструменты формализации и верификации
- •Взаимодействие функциональностей
- •Интегрированная технология анализа и верификации
- •Задания для самопроверки
- •7.Некоторые общие технологические приемы
- •Инспекции по Фейгану
- •Диаграммы Исикавы («рыбий скелет»)
- •Инструменты
- •Swot-анализ
- •Сбалансированный экран результативности
- •Технологическая дорожная карта
- •Метод Дельфи
- •Деревья решений
- •Сравнительное ранжирование
- •Методология подвижного программирования
- •Принципы подвижного программирования
- •Рабочий цикл и роли участников
- •Рабочие документы и обстановка
- •Задания для самопроверки
- •8.Сертификация программного обеспечения в авиации
- •История создания серии документов do-178 и ed-12
- •Уровни программного обеспечения
- •Процессы жизненного цикла по авиационных систем
- •Цели процессных деятельностей
- •Рабочие документы и категории их контроля
- •Процесс планирования по
- •Процессы разработки по
- •Определение требований
- •Проектирование
- •Кодирование
- •Верификация
- •Конфигурационное управление
- •Обеспечение качества
- •Контакт с органом сертификации
- •Выводы и рекомендации
- •Задания для самопроверки
- •9.Задания для самостоятельной работы
- •Темы, связанные с единым каркасом для разработки по
- •Перечень тем
- •Краткое описание каждой темы
- •Тема 2. Программная архитектура базового инструмента для распределенного управления программными проектами
- •Тема 3. Профили типовых рабочих компонентов для разработки приложений
- •Тема 1. Прототип метрической базы данных для управления разработкой приложений
- •Тема 5. Репозиторий повторно используемых компонентов
- •Тема 6. Сквозной пример для единого каркаса разработки приложений
- •Темы, связанные применением формальных методов перечень тем
- •Тема 1. Сравнительный анализ систем верификации
- •Тема 2. Формализация протоколов связи краткое описание каждой темы
- •Тема 1. Сравнительный анализ систем верификации
- •Тема 2. Формализация протоколов связи
- •10.Литература
- •11.Приложения
- •Шаблон для одностраничного экрана проекта
- •Примерная структура положения о работе и тз
- •Примерная форма еженедельного отчета
- •Примерная форма презентации на ежемесячном операционном обзоре
- •12.Указатель
Перечень таблиц
Табл. 1. Пересчет KLOC в KAELOC 14
Табл. 2. Метрики сложности программы по Холстеду 15
Табл. 3. Уровни сигма и оценка числа остаточных дефектов 21
Табл. 4. Матрица выбора модели ЖЦ 34
Табл. 5. Комбинация моделей ЖЦ в разработке MS-DOS, версии 6.0 35
Табл. 6. Коэффициенты базовой модели COCOMO 40
Табл. 7. Стоимостные атрибуты разработки в модели COCOMO II 41
Табл. 8. Верификационная матрица для функциональных требований 46
Табл. 9. Шаблон таблицы описания атрибутов требования 47
Табл. 10. Шаблон карточки на кандидата в требования 47
Табл. 11. Некоторые слова – красные флажки в формулировке требований 49
Табл. 12. Форма для заполнения ежедневных трудозатрат участником проекта 52
Табл. 13. Эталонные данные по промышленности США 58
Табл. 14. Общие цели и практики в модели CMMI 77
Табл. 15. Специальные цели и практики процессных областей 79
Табл. 16. Соединение качественной и количественной оценки риска 95
Табл. 17. Риски, контролируемые разработчиками 106
Табл. 18. Самые распространенные общие риски в ПО 107
Табл. 19. Вопросы для самооценивания по ключевым элементам ISO 9000 114
Табл. 20. Оптимальный темп инспекций 127
Табл. 21. Типичная структура затрат на поиск дефектов тестированием 129
Табл. 22. Сравнение массового производства с разработкой нового продукта 140
Табл. 23. Уровни безопасности программных компонентов 146
Табл. 24. Количество целей для процессных деятельностей в DO-178С 149
Табл. 25. Распределение целей по видам деятельностей 150
Табл. 26. Цели процессов планирования 152
Табл. 27. Цели процессов разработки 153
Табл. 28. Цели процессов определения требований к ПО 153
Табл. 29. Цели процессов проектирования ПО 154
Табл. 30. Цели процессов кодирования 155
Табл. 31. Цели процессов тестирования и сборки 155
Табл. 32. Цели процессов верификации 156
Табл. 33. Цели процессов конфигурационного управления 157
Табл. 34. Цели процессов обеспечения качества 157
Табл. 35. Цели процессов по контактам с органом сертификации 158
Введение
Создание программного обеспечения (ПО) в современную эпоху информационных технологий давно стало одним из важных и существенных высокотехнологичных производств в развитых и развивающихся странах. Всевозможные устройства, от электронного замка и «умной» кофеварки до космического корабля, уже немыслимы без программного компонента, создание которого представляет особую трудность из-за его чрезвычайной сложности как технического объекта, по сравнению с механизмами и техническими средствами предшествующих технологических эпох. Эта сложность является следствием огромного количества состояний, в которых может находиться программная система (под состоянием такой системы обычно понимается совокупность единовременных значений всех ее переменных, изменяющихся с течением времени).
Любое конкретное поведение программной системы рассматривается как некоторый путь в дискретном пространстве состояний; перебрать все такие пути невозможно практически. Например, если в программе имеется всего N независимых 16-разрядных переменных, то нижняя оценка для общего числа ее состояний S равна 216×N, а число путей длины L в этом пространстве из какого-либо начального состояния задается «экспоненциальной башней» высоты L из значений S. Это явление в литературе часто обозначается метафорой «экспоненциальный взрыв» (exponential explosion).
Вместе с тем, неправильное поведение программы на каком-либо конкретном пути из множества всех допустимых путей (которое является подмножеством всех возможных путей в данном пространстве состояний), как правило, приводит к неправильному срабатыванию того устройства, в котором она установлена и может привести даже к катастрофическим последствиям.
Данное учебное пособие построено на базе лекций автора по технологии разработки программного обеспечения, читавшихся автором в университетах Санкт-Петербурга, и практического опыта работы в промышленности по разработке программных продуктов в компаниях ЗАО «Информационные деловые услуги», ЗАО «Моторола ЗАО» и ООО «Моторола Мобилити», начиная с 1993 г.
Изложение материала строится на основе классической модели зрелости способностей CMM/CMMI Института технологии программирования (Software Engineering Institute), описывающей процесс разработки программных продуктов. В конце каждого раздела приводятся вопросы и задания для самоконтроля за усвоением материала, предлагавшиеся студентам как контрольные задания.
Раздел 1 описывает жизненный цикл разработки в форме программного проекта для ролевой модели «Заказчик-Исполнитель», типичные деятельности, которые должны при этом исполняться в свете сложившихся в промышленности лучших практик, положенных в основу моделей CMM/CMMI зрелости способностей разработчика.
Раздел 2 рассматривает обобщенный каркас производственного технологического процесса по разработке программного продукта с акцентом на его фазы планирования и сбора и анализа требований.
Раздел 3 дает краткое введение в модели зрелости способностей CMM/CMMI Института технологии программирования. Описываются 18 ключевых областей процесса разработки для CMM и 22 области процесса для CMMI и дается их сравнительный анализ.
Раздел 4 рассматривает настолько важный аспект в разработке программного продукта – анализ рисков и управление рисками в программном проекте, что в модели CMMI он даже выделен в отдельную процессную область.
Раздел 5 посвящен требованиям стандартов качества ISO 9000 применительно к разработке программного обеспечения. Рассматривается модель процессов ISO и связанные с этим методики самооценивания разработчиком степени своего соответствия этим стандартам ISO.
Раздел 6 рассматривает современных подходы к применению формальных математических методов в промышленной разработке программного продукта, включая создание и верификацию его формальной модели и автоматизированного порождения тестового набора для исчерпывающего тестирования его реализации с заданным критерием тестового покрытия.
Раздел 7 рассматривает некоторые общие технологические приемы, полезные не только в программных проектах, но и других видах инженерной деятельности.
Раздел 8 посвящен специфическим для авиации требованиям к сертификации программного обеспечения и базовое для этого ПО понятие уровня безопасности компонентов ПО. Там рассматриваются те же базовые процессы (с добавлением процесса контакта с государственным органом сертификации, которого нет в моделях CMM/CMMI) с позиций сертификации ПО, как она определена в стандартах DO-178B, ED-12B и КТ-178В, и даются практические рекомендации по организации процесса создания ПО для авиационных систем и оборудования в расчете на его последующую сертификацию по требованиями упомянутых стандартов.
В разделе 9 приводятся темы для самостоятельных исследований и курсовых работ, предлагавшиеся в разное время студентам по курсу «Технология программирования».
Приложения содержат шаблоны некоторых основных документов, создаваемых в ходе промышленной разработки программного продукта и используемых для его сертификации.