Повышение надежности программного обеспечения
Повышение надежности программ
Программное обеспечение состоит из большого числа программ, подпрограмм и модулей, находящихся под управлением операционной системы или программы-диспетчера. Выполнение этих программ осуществляется последовательно во времени на одном и том же процессоре ЭВМ. Если выполняемые программы предназначены для получения одного результата y (или выполнения одной функции АСУ), то в надежностном отношении программный комплекс представляет собой простую систему без избыточности и вероятность его безотказной работы равна произведению вероятностей безотказного функционирования каждой программы Пi
,
где m – число программ в ПО (рис. 4.10)
Рис. 4.10 – Схема решения задачи с помощью ПО на однопроцессорной ЭВМ
Надежность такого ПО определяется интенсивностью отказов самой ненадежной программы с наименьшей функцией Рi(t) или с наибольшим значением , . Отсюда следует последовательность действий по повышению надежности ПО:
- определяются самые «ненадежные» программы ПО, имеющие наименьшие оценки , где - наработки до отказа i- й программы на этапе динамического тестирования,
- «ненадежные» программы подвергаются дополнительному, более жесткому тестированию (реже – статическому, чаще - динамическому), где используются другие тесты и, в том числе, те задачи, для решения которых создается ПО;
- если при дополнительном тестировании выявлено и удалено достаточно много ошибок и значения стали близки к аналогичным величинам для более «надежных» программ, то все m программ стали почти равнонадежными и надежность всего ПО возможно стала удовлетворять предъявляемым к нему требованиям;
- если при дополнительном тестировании выявлено мало ошибок и соответствующие значения не возросли, то такие «ненадежные» программы переписываются заново. При этом может быть принят другой алгоритм решения задачи, использован более структурированный язык программирования высокого уровня, в программы включены хорошо изученные программные модули и библиотечные подпрограммы, наконец, привлечен более квалифицированный программист.