"Валерий Аджиев "Мифы о безопасном ПО: уроки знаменитых катастроф" [V]" - читать интересную книгу автора

Бытует мнение, что стоимость программно-аппаратных систем обычно
меньше, чем аналоговых или электромеханических, выполняющих ту же задачу.
Однако, это миф, если, конечно, не говорить о "голом" hardware и однажды
оплаченном ПО, сработанном "на коленке". Стоимость написания и
сертификации действительно надежного ПО очень высока; к тому же необходимо
принимать во внимание затраты на сопровождение опять же такое, которое не
подрывает надежности и безопасности. Показательный пример: только
сопровождение относительно простого и не очень большого по объему (около
400 тыс. слов) программного обеспечения для бортового компьютера,
установленного на американском космическом корабле типа Shuttle, стоит
NASA 100 млн. долл. год.

Следующий миф заключается в том, что ПО при необходимости достаточно
просто модифицировать. Однако, и это верно только на поверхностный взгляд.
Изменения в программных модулях легко выполнить технически, однако
трудно сделать это без внесения новых ошибок. еобходимые для гарантий
безопасности верификация и сертификация означают новые большие затраты. К
тому же, чем длиннее время жизни программы, тем более возрастает опасность
вместе с изменениями внести ошибки например, потому, что некоторые
разработчики с течением времени перестают быть таковыми, а документация
редко является исчерпывающей. Оба примера что с Ariane 5, что с Therac-25
вполне подтверждают эту точку зрения. Между тем, масштабы изменений в ПО
могут быть весьма велики. апример, ПО для космических кораблей типа
Shuttle [8] за 10 лет сопровождения, начиная с 1980 г., подверглось 14-ти
модификациям, приведшим к изменению 152 тысяч слов кода (полный объем ПО
400 тысяч слов).
Необходимость модернизации ПО диктовалась периодическим обновлением
аппаратной базы, добавлением функциональности, а также происходило по
причине необходимости исправления выявленных дефектов. По оценке
независимых экспертов, эти модификации поначалу не сопровождались должными
процедурами по поддержке безопасности, однако, случившаяся в 1986 г.
авария с кораблем Challenger, которая хотя и произошла по причинам, не
связанным с ПО, послужила толчком к пересмотру всей политики NASA в
области безопасности, затронув и область ПО.

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

Мысль о том, что использование имеющего длительную историю и уже
зарекомендовавшего себя с положительной стороны модуля, равно как и
"коробочного" продукта, дает гарантии отсутствия в нем ошибок, весьма
естественна с точки зрения "здравого смысла" и способна притупить
бдительность. а самом деле повторное использование программных модулей
может и понизить безопасность по той простой причине, что данные модули
изначально разрабатывались и отлаживались для использования в ином
контексте, а спецификация обычно не дает исчерпывающего отчета о всех
видах возможного поведения модуля (произошедшая с Ariane 5 авария имеет
основной причиной именно повторное использование модуля с некорректной для
изменившегося контекста спецификацией).