Разработка и сертификация ПО для авиационных бортовых систем и оборудования, в.1.83
Санкт-Петербургский институт информатики и автоматизации Российской академии наук |
Санкт-Петербургский государственный университет аэрокосмического приборостроения Министерства образования и науки РФ |
|
|
Научно-образовательный центр СПИИРАН-ГУАП
С.Н.Баранов
Разработка и сертификация
программного обеспечения для
авиационных бортовых систем и оборудования
Учебное пособие
Версия 1.83
Санкт-Петербург
2017
АННОТАЦИЯ
Учебное пособие построено на базе лекций автора по технологии разработки программного обеспечения, читавшихся автором в течение ряда лет и его практического опыта работы в промышленности по разработке программных продуктов.
Описывается базовая структура процесса разработки программного обеспечения для авиационных бортовых систем и оборудования в свете международных и отечественных требований и стандартов по его сертификации. Изложение строится на основе классической модели зрелости способностей CMM/CMMI, описывающей процесс разработки программных продуктов, с учетом стандартов DO-178C и КТ-178В, определяющих процесс сертификации такого программного обеспечения для авиационных бортовых систем и оборудования.
Учебное пособие предназначено для подготовки бакалавров и магистров по направлениям «Информатика и вычислительная техника», а также как справочник для специалистов, занимающихся разработкой и сертификаций авиационного программного обеспечения.
Copyright © 2017 Баранов С.Н.
Введение 8
Принятые сокращения 10
1. Жизненный цикл разработки ПО 13
1.1. Программные проект и его атрибуты 13
1.1.1 Ролевые модели в программном проекте 13
1.1.2 Размер и сложность программного проекта 13
1.1.3 Характеристики программного проекта 16
1.1.4 Качество программного продукта 18
1.1.5 Экран проекта и сводка о подходе 22
1.2. Критерий SMART для формулирования целей 23
1.3. Критерии успешности программного проекта 23
1.4. Модели жизненного цикла 24
1.4.1 Водопадная модель 26
1.4.2 Модель быстрой разработки приложения 28
1.4.3 V-образная модель 29
1.4.4 Пошаговая модель 30
1.4.5 Спиральная модель Боэма 31
1.4.6 Прототипная модель 32
1.4.7 Выбор модели жизненного цикла 33
1.5. Задания для самопроверки 36
2. Типовой каркас для разработки ПО 37
1.6. Программная разработка 37
1.6.1 Планирование проекта 39
1.6.2 Модель COCOMO для оценки трудозатрат в проекте 40
1.6.3 Модель SLIM для оценки трудозатрат в проекте 43
1.6.4 Разработка спецификации требований 45
1.7. Отслеживание и контроль 52
1.8. Верификация и валидация 53
1.9. Обеспечение качества 53
1.10. Конфигурационное управление 55
1.11. Метрики 56
1.12. Повышение квалификации 58
3. Модели зрелости способностей CMM/CMMI 62
1.14. Ключевые области процесса в модели CMM 63
1.15. Характеристика уровней зрелости в модели CMM 68
1.16. Интегрированная модель зрелости способностей CMMI 70
1.16.1 История возникновения 70
1.16.2 Уровни зрелости и области процесса 72
1.16.3 Уровни способностей процесса в модели CMMI 75
1.16.4 Специальные и общие цели и практики процессных областей 76
1.16.5 Характеристики уровней зрелости в модели CMMI 87
4. Управление рисками в программном проекте 89
1.18. Модели ESI и PMI управления рисками 91
1.18.1 Выявление рисков 92
1.18.2 Анализ рисков 94
1.18.3 Расстановка приоритетов для рисков 97
1.18.4 Планирование рисков 99
1.18.5 Исполнение ответных стратегий 101
1.18.6 Оценивание результатов исполнение ответных стратегий 102
1.18.7 Документирование действий по рискам 104
1.18.8 Заключительное оценивание рисков 105
5. Стандарты качества ISO в применении к ПО 109
1.20. Структура и принципы семейства стандартов ISO 9000 109
1.21. Модели ISO 9000 на базе процессов 112
1.22. Самооценивание по ключевым элементам ISO 9000 114
6. Формальные методы в разработке ПО 117
1.24. Инструменты формализации и верификации 117
1.25. Взаимодействие функциональностей 120
1.26. Интегрированная технология анализа и верификации 123
7. Некоторые общие технологические приемы 126
1.28. Инспекции по Фейгану 126
1.29. Диаграммы Исикавы («рыбий скелет») 130
1.30. SWOT-анализ 131
1.31. Сбалансированный экран результативности 132
1.32. Технологическая дорожная карта 133
1.33. Метод Дельфи 136
1.34. Деревья решений 136
1.35. Сравнительное ранжирование 138
1.36. Методология подвижного программирования 139
1.36.1 Принципы подвижного программирования 139
1.36.2 Рабочий цикл и роли участников 140
1.36.3 Рабочие документы и обстановка 141
8. Сертификация программного обеспечения в авиации 145
1.38. История создания серии документов DO-178 и ED-12 145
1.39. Уровни программного обеспечения 146
1.40. Процессы жизненного цикла ПО авиационных систем 147
1.41. Цели процессных деятельностей 149
1.42. Рабочие документы и категории их контроля 150
1.43. Процесс планирования ПО 151
1.44. Процессы разработки ПО 153
1.44.1 Определение требований 153
1.44.2 Проектирование 154
1.44.3 Кодирование 155
1.44.4 Сборка 155
1.45. Верификация 156
1.46. Конфигурационное управление 157
1.46.1 Обеспечение качества 157
1.46.2 Контакт с органом сертификации 158
1.47. Выводы и рекомендации 158
9. Задания для самостоятельной работы 160
1.49. Темы, связанные с единым каркасом для разработки ПО 160
1.50. Темы, связанные применением формальных методов 163
10. Литература 165
11. Приложения 167
1.51. Шаблон для одностраничного экрана проекта 167
1.52. Примерная структура положения о работе и ТЗ 167
1.53. Примерная форма еженедельного отчета 169
1.54. Примерная форма презентации на ежемесячном операционном обзоре 171
12. Указатель 173
Рис. 1. Атрибуты и ограничения программного проекта 17
Рис. 2. Кривая Боэма – рост затрат на поиск и устранение причин дефектов 19
Рис. 3. Измерение качества программного продукта 20
Рис. 4. Распределение вероятности присутствия дефектов на строках кода 21
Рис. 5. Пример формы для одностраничной сводки о подходе (решении) 22
Рис. 6. Обобщенная схема повторяемого процесса разработки 24
Рис. 7. Водопадная модель 27
Рис. 8. Модель быстрой разработки приложения 28
Рис. 9. V-образная модель 29
Рис. 10. Пошаговая модель 31
Рис. 11. Спиральная модель Боэма 32
Рис. 12. Прототипная модель 33
Рис. 13. Пример каркаса для процесса разработки ПО 37
Рис. 14. Типичный верхний уровень структуры разбиения работ 38
Рис. 15. Дорожная карта для планирования проекта 39
Рис. 16. Пример расчета трудоемкости по модели COCOMO II 42
Рис. 17. Пример потребности проекта в разработчиках в модели COCOMO II 43
Рис. 18. Экспоненциальная зависимость между сроком и трудоемкостью 44
Рис. 19. Укрупненная структура системы конфигурационного управления 55
Рис. 20. Мета-модель деятельностей 63
Рис. 21. Уровни и ключевые области процесса в модели CMM 64
Рис. 22. Характеристика уровней зрелости в модели CMM 69
Рис. 23. Спутанный клубок разных моделей зрелости 71
Рис. 24. История создания модели CMMI 72
Рис. 25. Мета-модель целей и практик в модели CMMI 73
Рис. 26. Группировка процессных областей в модели CMMI 74
Рис. 27. Восхождение по уровням зрелости 75
Рис. 28. Пример процессного профиля организации в модели CMMI 76
Рис. 29. Риск – функция его составляющих 89
Рис. 30. Модели и управления рисками в программном проекте 91
Рис. 31. Пример таксономии программных рисков 92
Рис. 32. Примерная форма для анализа рисков 96
Рис. 33. Пример фильтрации программных рисков 97
Рис. 34. Сочетание фильтрации и сравнительного ранжирования в анализе рисков 98
Рис. 35. Пример таблицы ответных стратегий на риск в программном проекте 100
Рис. 36. Пример матрицы воздействий ответных стратегий 101
Рис. 37. Структура семейства стандартов ISO 9000 110
Рис. 38. Модели ISO 9001 и 9004 на базе процессов 113
Рис. 39. Пример результата самооценивания на соответствие стандартам ISO 9000 116
Рис. 40. Задача о железнодорожном переезде 117
Рис. 41. Формализация установления соединения между телефонами m и n 120
Рис. 42. Простая телефонная система с дополнительными функциями 121
Рис. 43. Формализация отдельных шагов 3WayPhone и CallWaiting 122
Рис. 44. Пример незапланированного взаимодействия функциональностей 122
Рис. 45. Пример UCM-нотации для протокола CDMA 125
Рис. 46. Схема процесса инспекций по Фейгану 126
Рис. 47. Общая схема диаграммы Исикавы 130
Рис. 48. Исследование причин отсутствия инспекций диаграммой Исикавы 131
Рис. 49. Пример SWOT-анализа проблемы 132
Рис. 50. Примерный формат сбалансированного экрана производительности 132
Рис. 51. Пример дорожной карты для программного продукта на 1 год вперед 134
Рис. 52. Пример дорожной карты лаборатории НИИ на 5 лет 135
Рис. 53. Общая схема метода Дельфи 136
Рис. 54. Деревья решений для задач о ресторане (а) и тестировании (б) 137
Рис. 55. Размеченное дерево решений для задачи о тестировании 138
Рис. 56. Сравнительное ранжирование 5-ти рисков 4-мя экспертами 139
Рис. 57. Примеры рабочих документов в технологии SCRUM 142
Рис. 58. Пример экрана завершенности рабочего цикла 143
Рис. 59. Размещение рабочих мест в общей комнате 144
Рис. 60. Информационные потоки в ЖЦ бортовой системы и ЖЦ разработки ПО 147
Рис. 61. Процессы разработки в модели ISO 9001 149
Рис. 62. Обобщенная схема процессных деятельностей 150
Рис. 63. Пример одностраничного ежемесячного отчета о ходе проекта 171
Рис. 64. Пример регулярного метрического отчета о ходе проекта 172
Табл. 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 г.