Рынок ПО сегодня затоварен. Даже самый притязательный потребитель не уйдет из магазина с пустыми руками. Но все ли продукты можно считать достаточно надежными для использования в областях, связанных с безопасностью жизни? Поставим вопрос шире: каким должно быть программное обеспечение или что необходимо сделать, чтобы его можно было использовать в критических областях? Давно замечено, что от культуры производителя зависит качество выпускаемого им продукта. То есть ответ лучше всего искать там, где производители лоб в лоб сталкиваются с задачами обеспечения надежности и безопасности своих продуктов. Авиационная индустрия является одной из таких областей.
ОБ
АВТОРЕ
Анатолий
Титов - профессиональный разработчик ПО,
семнадцать лет работающий в
аэрокосмической индустрии. Участвовал во
многих проектах, в том числе был ведущим
разработчиком технологии TCL/MC3 -
кроссплатформного стандарта векторных
электронных карт, сертифицированного для
использования в бортовых
летно-информационных системах. Также
принимал участие в работе над REDSHIFT 3
и 4.
Авиаиженеры постоянно занимаются проблемами обеспечения безопасности, поэтому свой опыт они успешно переносят и на ПО. Компании, производящие авиационное ПО, имеют богатую историю проектирования больших критических систем, и репутация их программных продуктов очень высока. Примером использования ПО в авиации можно назвать устанавливаемые практически на все современные самолеты электронные летно-информационные системы (Electronic Flight Information System, EFIS). На дисплеях этих систем ПО отображает информацию (крен, курс, тангаж, скорость, высоту, скольжение и пр.), которую раньше предоставляли механические приборы, а также многое другое, включая полетные и погодные карты. О требованиях, предъявляемых к ПО в авиации, и рассказывает эта статья.
Какой же подход у авиационной индустрии к надежности ПО? Надежность любой программы должна быть доказана, иначе она не может считаться ни надежной, ни безопасной. Поскольку доказать правильность выполнения программы на практике в общем случае невозможно, авиаторы ограничиваются сертификацией согласно установленному стандарту. Без этого ни один прибор, ни одна система не могут быть смонтированы на летательном аппарате. В США сертификаты выдает FAA (Federal Aviation Administration), в Канаде - Transport Canada, в Европе - JAA (Joint Aviation Authorities). Все эти организации главным стандартом для сертификации бортового авиационного ПО полагают RTCA DO-178B (или его европейский аналог EUROCAE ED-12B). Этот стандарт начал разрабатываться в начале 80-х годов, первая редакция появилась в 1982 году, актуальная версия была выпущена десять лет спустя. Специальный стандарт для сертификации бортового ПО понадобился потому, что подход к сертификации ПО существенно отличается от подхода к сертификации любого агрегата самолета, поскольку методы проверки надежности оборудования неприменимы для ПО. Например, мы можем, взяв на тестирование крыло самолета, приложить к нему нагрузку. На тысячный раз под воздействием нагрузки крыло сломается, и мы сумеем определить параметры безопасности нагрузки и интенсивности ее применения, при которых крыло остается недеформированным. С программами такое не проходит. Поэтому для сертификации ПО предлагается другой подход: необходимо определить жизненный цикл ПО, входящие в него процессы, установить их цели, виды деятельности, условия переходов между ними, доказать сертификационной власти, что все они соответствуют стандарту и что авиаторы следуют им на всем протяжении жизненного цикла ПО. Стандарт DO-178B и содержит всю эту информацию.