Материал: DO178 Учебное пособие_в183

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Разработка и сертификация ПО для авиационных бортовых систем и оборудования, в.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

1.13. Задания для самопроверки 59

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

1.17. Задания для самопроверки 88

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

1.19. Задания для самопроверки 108

5. Стандарты качества ISO в применении к ПО 109

1.20. Структура и принципы семейства стандартов ISO 9000 109

1.21. Модели ISO 9000 на базе процессов 112

1.22. Самооценивание по ключевым элементам ISO 9000 114

1.23. Задания для самопроверки 116

6. Формальные методы в разработке ПО 117

1.24. Инструменты формализации и верификации 117

1.25. Взаимодействие функциональностей 120

1.26. Интегрированная технология анализа и верификации 123

1.27. Задания для самопроверки 125

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

1.37. Задания для самопроверки 144

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

1.48. Задания для самопроверки 159

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 г.

Источник: https://studfile.net/preview/16431019/