Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
[Надежность] / НКДЕ 10 ЛЕКЦИИ-rus_edit.doc
Скачиваний:
204
Добавлен:
07.02.2016
Размер:
2.72 Mб
Скачать

9.5 Методы структурной избыточности по

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

При N-версионном программировании результат при расхождении опре­деляется мажоритированием.

Недостаток:трудоемкий и дорогой процесс, требующий дополнительной аппаратуры и затрат.

Поэтому, представляет интерес модифицированное дуальное программи­рование, где наряду с основной работает упрощенная программа, резервная [28]. Если результат отличается больше допустимой погрешности, считают, что отказала основная программа, как менее надежная.

Рассмотрим систему из двух программ.

Рисунок 9.3- Граф состояний дуального программирования

Обозначим q1, q2- вероятности отказов программ. Система дуального программирования может находиться в одном из четырех состояний:

- обе программы работают, вероятность этого события

р = 1 – q1- q2+ q1q2;

-отказала основная программа, вероятность этого события

q01 = q1(1-q2) = q1-q1q2;

отказала резервная программа, вероятность этого события

q10= q2(l – q1) = q2- q1q2;

-отказ основной и резервной программы, вероятность этого события

q11= q1q2.

Тогда, общая вероятность отказа системы

qc= q10+ q11= q2– q1q2+ q1q2= q2

Пусть δ1, δ2, δ3, δ4- погрешность, вносимая системой программ в каждом случае. Тогда средняя погрешность системы из двух программ составит

Пример расчета надежности и точности системыс применением модифи­цированного дуального программирования.

Пусть δ1= 0.01; δ2- 0.1; q1= 0.05; q2= 0.001,

тогда δ12= 0.95 * 0.01 + 0.05 * 0.1= 0.0145 ; qc = q2 = 0.001.

Т.е. средняя погрешность возросла в 1.5 раза, а вероятность отказа умень­шилась в 50 раз. Система эффективна, если погрешность не имеет решающего значения.

9.6 Избыточность операционной системы

Некоторое повышение надёжности ПО даёт принцип виртуальной маши­ны.При помощи общего монитора М коммутируются индивидуальные операционные системы, создающие иллюзию высокой степени изоляции ОС1, ОС2, ОСЗ и пользователей П1, П2, ПЗ.

Рисунок 9.4-Структура а) — мультипрограммной работы; б) — виртуальной машины;

9.7 Метод контрольных функций

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

Простейший пример метода вычислений функций sinx или cosx. Контрольное соотношение cos2x + sin2x = 1.

9.8 Методы тестирования программ

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

Рисунок 9.5- Алгоритм генератора тестов

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

ТЕСТИРОВАНИЕ ВЕТВЕЙ заключается в том, что выбранные пути должны прерывать не только действие операторов, но и все ветвления программы (динамическое тестирование). Циклы без возврата и с возвратом.

ВЕРИФИКАЦИЯ ПРОГРАММ— доказательство их правильности при помощи математических методов доказательства теорем.

Данный процесс может быть автоматическим, но практические результаты в этом направлении пока незначительны.

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

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

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

Соседние файлы в папке [Надежность]