К вероятностной оценке надёжности программного обеспечения

Ещё про надёжность программного обеспечения

вероятность надежности программного обеспечения

В моем предыдущем статье о надёжности программного обеспечения я не углублялся в различные подходы к надёжности программного обеспечения. Моя главная мысль состояла в том, чтобы показать, что моделирование надёжности программного обеспечения — это важно. Что инженеры по надёжности и функциональной безопасности должны стремиться понять этот процесс и использовать его.

Сегодня хочу поговорить о применимости/неприменимости вероятностной оценки надёжности программного обеспечения. Статья в значительной степени опирается на работу доктора Бева Литтлвуд, которая является одним из пионеров надёжности программного обеспечения.

IEC 61508 даёт нам варианты

Инженеры по функциональной безопасности знают, что стандарт IEC 61508 (и его дочерние стандарты IEC 61511 и ISO 26262) не требуют от вас количественной оценки так называемых систематических отказов, включая отказы программного обеспечения. А вот что большинство не знает, так это то, что IEC 61508 дает нам возможность количественно оценить отказы программного обеспечения в части 7 Приложения D. По моему опыту, это почти никто не делает.

Методы, описанные в Приложении D, довольно просты, хотя предварительные требования для оценки и анализа могут быть труднодостижимыми. Надёжность программного обеспечения моделируется либо по схеме испытаний Бернулли (для информационно-управляющих систем (ИУС) с низким количеством к ним запросов), либо как однородный процесс Пуассона (для ИУС с высоким количеством к ним запросов или ИУС непрерывного действия).
Одна из статей, на которую ссылается Литтлвуд, — это статья 1991 года, демонстрирующая невозможность количественной оценки надежности критически важного программного обеспечения традиционными методами. Статья доктора Литтлвуда убедительно доказывает, что проверка надёжности систем сверхвысокой надежности является крайне нетривиальной проблемой.

Выхода нет

Если подход, описанный в IEC 61508, неосуществим для большинства приложений, что нам делать? Мы можем вернуться к более ранним работам доктора Литтлвуда, чтобы почерпнуть некоторые идеи.
Одной из основополагающих работ в области надёжности программного обеспечения является статья Литтлвуда 1993 года "Валидация сверхвысокой надёжности программного обеспечения". Ключевым наблюдением из этой статьи является:

…достоверность наших результатов зависит от достоверности допущений моделирования. Всегда есть шанс, что реальность нарушит некоторые из этих предположений: нам нужно сформировать представление о вероятности этого события. Примерами таких предположений являются:

• в моделировании роста надёжности: регулярность процесса роста и, в частности, реалистичность тестовых данных по отношению к предполагаемой операционной среде.;
• в статистических аргументах, основанных на процессе: репрезентативность нового наблюдения по отношению к известной выборке, из которой производятся статистические экстраполяции.;
• в моделировании структурной надёжности: корректность параметров, полнота модели (например, допущения независимости, переходы в марковской модели, ветви в дереве отказов);
• в доказательствах правильности: соответствие спецификации неформальной инженерной модели.

Ещё более краткое и смелое резюме можно найти в аннотации (выделено курсивом):

Инженерная практика должна учитывать тот факт, что в настоящее время не существует решения для валидации сверхвысокой надёжности систем, опирающихся на сложное программное обеспечение.

Короче говоря, никакого решения не существовало, но мы все равно пытались это сделать, даже если методов было недостаточно. Это было в 1993 году. Стали ли мы лучше за 25 лет?
Важное примечание: рассмотренные системы сверхвысокой надёжности, имели цели по ВБР (вероятности безотказной работы) в диапазоне от 10E-7 до 10E-9, эквивалентные IEC 61508 "SIL 6" или лучше (стандарт останавливается на SIL 4). Для систем с менее чем сверхвысокой надёжностью результат, вероятно, изменится от «нет решения» до «очень трудно достичь».

От невозможного к возможному

Чтобы помочь ответить на этот вопрос, мы можем вернуться к Литтлвуду. Кто-то задал ему вышеупомянутый вопрос, и результатом стала статья 2011 года «Валидация сверхвысокой надёжности...» – 20 лет спустя.
После обобщения оригинальной статьи в ней отражается прогресс, достигнутый за последние двадцать лет, включая некоторые области, в которых, по мнению автора, был достигнут незначительный прогресс.
IEC 61508 не существовал в 1993 году, поэтому неудивительно, что в документе содержится стандарт DO-178B (1992), заключающийся в использовании «передовой практики» для качественного обоснования целевых показателей эффективности, которые никогда не проверяются количественно.

В статье также выражается сожаление по поводу того, что до сих пор существуют разногласия относительно использования вероятностных подходов для обеспечения надёжности программного обеспечения. Критики утверждают, что вероятностные методы могут быть «опасным искушением для самообмана». Эта аргументация приводит к одному из ключевых утверждений статьи:

Строгая и формальная трактовка этой «эпистемической» неопределенности представляется необходимой, а использование вероятностей дает преимущества единого подхода к различным источникам неопределенности. Такой вероятностный аргумент может иногда показать, что у нас есть ограниченные основания для уверенности в системе до начала эксплуатации (например, уверенность в том, что эта система управления полётом имеет частоту отказов меньше, чем 10-9 в час). Это преимущество, а не недостаток вероятностного подхода, если мы хотим чтобы практика оценки рисков была полезной для инженерной деятельности и общественности.

Строго относиться к эпистемической неопределенности?

Вы поняли: байесовский подход. Действительно, когда мы смотрим на другую работу Литтлвуда, мы можем обнаружить, что байесовский вывод используется для построения «многоногих» аргументов надёжности, которые количественно объединяют различные типы доказательств из разных источников. После долгого обсуждения всех проблем это дает надежду на практические решения.

"Измерьте то, что можно измерить, и сделайте измеримым то, что нельзя измерить". – Галилей

Резюме

В этом посте речь шла не только о надёжности программного обеспечения, но и о некоторых проблемах, с которыми инженеры сталкивались в прошлом, пытаясь количественно оценить и предсказать надёжность программного обеспечения.
Этот пост получился длинным по проблемам и коротким по решениям. В следующий раз мы рассмотрим подход «многоногих» аргументов и посмотрим, как байесовский вывод помогает в решении.


Эпистемоло́гия (от др.-греч. ἐπιστήμη «научное знание, наука», «достоверное знание» + λόγος «слово», «речь») — философско-методологическая дисциплина, исследующая знание как таковое, его строение, структуру, функционирование и развитие. Нередко (особенно в английском языке) слово выступает как синоним гносеологии.
Гносеоло́гия (от др.-греч. γνῶσις «познание», «знание» + λόγος «слово», «речь») — философская дисциплина, занимающаяся исследованиями, критикой и теориями познания.
Тенденция к разграничению этих двух понятий характерна для неклассической (современной) философии, и при таком подходе:
• гносеология изучает отношение «субъект-объект»;
• эпистемология изучает отношение «объект-знание».

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован.