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

 

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

Целесообразно выделить две стороны ПО объекта:

1) программную надежность объекта – свойство объекта выполнять заданные функции, обусловленные качеством ПО;

2) надежность ПО – свойство ПО выполнять предписанные ему требования.

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

Надежность программного обеспечения характеризует качественное состояние программы. Ее иногда называют правильностью программы, корректностью программы, надежностью программы.

С точки зрения прикладной науки надежность ПО – это способность ПО сохранять свои свойства, преобразовывать исходные данные в результаты в течение определенного промежутка времени при определенных условиях эксплуатации. Снижение надежности ПО происходит из-за ошибок в требованиях, проектировании и выполнении. Отказы и ошибки зависят от способа производства продукта и появляются в программах при их исполнении на некотором промежутке времени. Таким образом, надежность ПО зависит от числа оставшихся и не устраненных ошибок в программах. В ходе эксплуатации ПО ошибки обнаруживаются и устраняются, и если при исправлении ошибок не вносятся новые или, по крайней мере, новых ошибок вносится меньше, чем устраняется, то в ходе эксплуатации надежность ПО возрастает. Программная надежность объекта - это то, что интересует его потребителя. Для ее обеспечения необходимо, чтобы программа была «правильной», «корректной», «надежной», т.е. чтобы она не содержала ошибок. Может оказаться, что некоторые из ошибок совсем не проявятся при работе объекта или, наоборот, при работе объекта обнаружатся дополнительные несовершенства («ошибки») программы. Однако очевидно, что необходимым условием надежной работы объекта является «корректность» программ, т.е. отсутствие в них ошибок.

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

Рассмотренные выше аспекты надежности ПО полезно иметь в виду при исследовании надежности аппаратно-программных средств (АПС).