Инженерия надежности программных систем

Целью инженерии надежности программных систем (Software Reliability Engineering, SRE) является прогнозирование надежности программного обеспечения на основе статистических методов.

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

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

Большинство прикладных программ основаны на предположении, что программная ошибка может быть описана негомогенным процессом Пуассона. Это означает, что программные ошибки происходят в статистически независимые моменты времени. Наработки подчиняются экспоненциальному распределению, а интенсивность отказов изменяется во времени. Обычно используют убывающую интенсивность отказов. Это означает, что ошибки, как только они выявлены, эффективно устраняются без введения новых ошибок. Главная цель SRE заключается в том, чтобы определить форму функции интенсивности отказов и оценить ее параметры по наблюдаемым данным. Как только функция интенсивности отказов определена, могут быть найдены такие показатели надеж­ности как:

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

Другие подходы принимают во внимание архитектуру программного обеспечения, его функциональные модули, модель их взаимодействия и т.п. (например, марковский анализ). Затем данные отбирают и определяют оценки для модулей.

Ключевые элементы

  • определение показателей надежности и целей;
  • определение используемой модели надежности программного обеспечения;
  • отбор данных об отказах;
  • валидация модели;
  • прогноз показателей надежности по данным.

Достоинства

  • программное обеспечение может быть рассмотрено при прогнозировании надежности;
  • цели и критерии испытаний могут быть определены и проконтролированы.

Ограничения

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