Скачиваний:
46
Добавлен:
29.01.2021
Размер:
5.08 Mб
Скачать

Перечень таблиц

Табл. 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 приводятся темы для самостоятельных исследований и курсовых работ, предлагавшиеся в разное время студентам по курсу «Технология программирования».

Приложения содержат шаблоны некоторых основных документов, создаваемых в ходе промышленной разработки программного продукта и используемых для его сертификации.