DO-178C
DO-178C (полное наименование — «Software Considerations in Airborne Systems and Equipment Certification») — это руководящий документ (стандарт), разработанный комитетом RTCA (Radio Technical Commission for Aeronautics) совместно с EUROCAE (European Organisation for Civil Aviation Equipment), который определяет требования к разработке, верификации и сертификации программного обеспечения для бортовых авиационных систем. Стандарт является основным нормативным документом, используемым авиационными властями (FAA, EASA, МАК) для оценки безопасности программного обеспечения, входящего в состав систем, критически важных для полёта.
История и предпосылки создания
Разработка стандартов для программного обеспечения в авиации началась в 1980-х годах, когда стало очевидно, что отказы программного обеспечения могут приводить к катастрофическим последствиям. Первым значимым документом стал DO-178A (1982 год), который заложил базовые принципы, но не содержал детальных критериев. В 1992 году была выпущена версия DO-178B, которая стала мировым стандартом на два десятилетия. Однако с развитием технологий, появлением сложных алгоритмов (например, в системах автоматического управления) и увеличением объёмов кода возникла необходимость в уточнении требований, особенно в области объектно-ориентированного программирования и формальных методов.
В 2011 году был опубликован DO-178C, который заменил DO-178B. Основные изменения коснулись:
- Уточнения критериев для использования инструментов автоматизации (компиляторов, симуляторов).
- Введения рекомендаций по применению формальных методов верификации.
- Более строгого регулирования модификаций программного обеспечения (конфигурационное управление).
- Учета современных языков программирования (например, Ada, C, C++) и их особенностей.
Структура и ключевые понятия
DO-178C не является законом, но признаётся авиационными властями как «приемлемый способ соответствия» требованиям сертификации. Стандарт делит программное обеспечение на пять уровней критичности (Level A — E), в зависимости от последствий отказа:
Уровни критичности (DAL — Design Assurance Level)
| Уровень | Последствия отказа | Примеры систем |
|---|---|---|
| A | Катастрофические (гибель экипажа и пассажиров) | Система управления полётом (fly-by-wire), автопилот |
| B | Опасные/тяжёлые (травмы, потеря самолёта) | Система предупреждения столкновений (TCAS) |
| C | Существенные (ухудшение характеристик, задержка) | Система управления топливом |
| D | Незначительные (дискомфорт, но не нарушение безопасности) | Система освещения салона |
| E | Без влияния на безопасность | Развлекательные системы (IFE) |
Для каждого уровня устанавливаются строгие требования к процессам разработки, верификации и документированию. Чем выше уровень (A — самый строгий), тем больше объём подтверждающих материалов (артефактов) требуется.
Процессы жизненного цикла по DO-178C
Стандарт описывает три группы процессов, которые должны быть интегрированы в проект:
1. Планирование
На этом этапе разрабатываются планы:
- План разработки ПО (Software Development Plan) — определяет методы, языки, инструменты.
- План верификации (Software Verification Plan) — описывает стратегию тестирования и анализа.
- План управления конфигурацией (Software Configuration Management Plan) — регламентирует контроль версий и изменений.
- План обеспечения качества (Software Quality Assurance Plan) — устанавливает процедуры аудита.
2. Разработка
Включает:
- Определение требований (Software Requirements) — формализация функциональных и интерфейсных требований к ПО.
- Проектирование (Design) — архитектура, модули, интерфейсы.
- Кодирование (Coding) — написание исходного кода.
- Интеграция (Integration) — сборка системы.
3. Верификация и валидация
Это самый объёмный этап. Для уровня A требуется:
- Покрытие кода (Code Coverage) — 100% покрытие по условиям, решениям и модифицированным условиям/решениям (MC/DC).
- Тестирование — на уровне модулей, интеграции и системы.
- Анализ — статический анализ кода, формальные проверки.
- Документирование — каждый тест, каждый анализ должен быть задокументирован.
Инструменты и их квалификация
DO-178C вводит понятие «квалифицированного инструмента». Если инструмент (например, компилятор, симулятор, генератор кода) используется в процессе разработки или верификации, он должен быть сертифицирован на соответствие определённому уровню критичности. Различают:
- Инструменты разработки (Development Tools) — влияют на выходной код (например, автогенерация кода из моделей).
- Инструменты верификации (Verification Tools) — проверяют корректность (например, статические анализаторы).
Для каждого инструмента требуется доказательство его надёжности, что часто достигается через его собственное тестирование или использование в предыдущих сертифицированных проектах.
Применение в России и СНГ
В Российской Федерации и странах СНГ DO-178C не является обязательным государственным стандартом, но широко применяется при сертификации авиационной техники, особенно при разработке бортового оборудования для самолётов (например, МС-21, SSJ-100). Авиационные власти (Межгосударственный авиационный комитет — МАК) признают DO-178C как «приемлемый метод» при условии адаптации к национальным нормам (например, АП-25, АП-29). В России также существует ГОСТ Р 56035-2014, который частично гармонизирован с DO-178C, но не является полным аналогом.
Критика и ограничения
Несмотря на широкое признание, DO-178C имеет ряд критических замечаний:
- Высокая стоимость — сертификация ПО уровня A может занимать до 50% бюджета проекта.
- Бюрократизация — большое количество документов (артефактов) часто приводит к формальному подходу, а не к реальному повышению безопасности.
- Сложность адаптации — стандарт ориентирован на традиционные императивные языки (C, Ada) и плохо применим к новым парадигмам (функциональное программирование, машинное обучение). В 2020-х годах началась работа над дополнением DO-178C для систем с искусственным интеллектом (DO-178C/AMC 20-193).
- Отсутствие гибкости — жёсткие требования к процессам затрудняют использование agile-методологий.
Влияние на другие отрасли
Принципы DO-178C (особенно уровни DAL и требования к покрытию кода) были заимствованы другими отраслями:
- Автомобилестроение — стандарт ISO 26262 (функциональная безопасность автомобилей).
- Медицина — IEC 62304 (программное обеспечение медицинских устройств).
- Железнодорожный транспорт — EN 50128 (программное обеспечение систем управления).
Заключительные положения
DO-178C остаётся «золотым стандартом» для разработки критически важного программного обеспечения в авиации. Его применение обязательно для всех коммерческих и транспортных самолётов, сертифицируемых по нормам FAA и EASA. Несмотря на критику, альтернатив на данный момент не существует, и все новые проекты (включая беспилотные летательные аппараты) ориентируются на его требования.
Источники
- RTCA DO-178C: «Software Considerations in Airborne Systems and Equipment Certification» (2011).
- EUROCAE ED-12C: европейский аналог DO-178C.
- FAA Advisory Circular AC 20-115C: руководство по применению DO-178C.
- ГОСТ Р 56035-2014: «Программное обеспечение бортовых систем. Требования к разработке и верификации».
- Leveson, N. G. «Engineering a Safer World: Systems Thinking Applied to Safety» (MIT Press, 2011).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →