Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций ДиНАС.doc
Скачиваний:
124
Добавлен:
21.04.2019
Размер:
10.17 Mб
Скачать

Раздел 11 Анализ надежности программного обеспечения

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

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

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

Сопоставим кривые интенсивности отказов технического объекта (ТО) (см. рис.2.3) и ПО. Интенсивность отказов ПО значительно отличается от интенсивность отказов ТО. А именно ПО не под­вержено износу, редко встречаются ошибки произ­водства. Ненадежность ПО целиком определяется ошибками разработки. Интенсивность отказов ПО изменяется в соответствии с кривой (рис. 1.1, б). Причём, в данном случае, ошибки исправляются по мере обнаружения и не вносятся новые ошибки.

, t -1

а

б

Время, t

а – кривая интенсивности отказов ТО

б – кривая интенсивности отказов ПО

Рис. 11.1 Сравнительная оценка интенсивности отказов ТО и ПО

Из рис. 11.1 можно сделать вывод: Надежность ТО определяется в основном случайными отказа­ми, а в основе ненадежности ПО лежат предопределен­ные ошибки. Кроме того, отказ оборудования не зависит от обрабатываемой информации.

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

Корректное ПО – это ПО удовлетворяющее своей спецификации.

Большая часть ПО, рассматри­ваемого в настоящее время как надежное, не является корректным. Можно считать систему надежной и при наличии в ней ошибок, но при условии, что:

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

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

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

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

Для решения задачи получения надежного ПО на этапе проектирования необходимо:

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

  • в описании интерфейса между системой и окружаю­щей средой, а также интерфейса между модулями систе­мы необходимо предусматривать проверки корректности отработки заданий;

  • включать в интерфейс взаимные проверки коррект­ности отработки заданий.