Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Материалы по ЭСВТ.doc
Скачиваний:
53
Добавлен:
11.03.2015
Размер:
1.53 Mб
Скачать

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

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

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

Надежность программного обеспечения (или просто программы) определяется его (ее) безотказностью и восстанавливаемостью. Безотказность программы или программного обеспечения есть ее (его) свойство сохранять работоспособность при использовании в процессе обработки информации на ЭВМ.

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

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

Безотказность программного средства можно также характеризовать средним временем между возникновениями отказов в функционировании программы. При этом предполагается, что аппаратура ЭВМ находится полностью в работоспособном состоянии.

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

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

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

Вернемся к рисунку, на котором показаны типичные зависимости, отражающие изменение во времени надежности аппаратуры (кривая 1) и программы (кривая 2).

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

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

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

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