Повышение надежности ПО путем резервирования
Другой перспективный путь повышения надежности ПО (и особенно ПО РВ) связан с созданием в программной системе некоторой избыточности. Применительно к ПО РВ различают четыре вида резервирования: временное, информационное, программное, программно-техническое.
Временное резервирование ПО заключается в многократном прогоне одного и того же программного комплекса с неизменными исходными данными и последующего анализа полученных результатов y (рис. 4.11 а).
Рис. 4.11 а – Схема временного резервирования ПО (нагруженный вариант “два из трех”)
Подобное нагруженное резервирование позволяет устранять программные сбои и выявлять случайные устойчивые отказы, требующие восстановления программ. Анализ результатов - номер прогона ПО, на предмет выявления «неразумных» решений осуществляет эксперт (группа экспертов) или, реже специальная программа-анализатор (последнее возможно для тех хорошо изученных задач, для которых известны границы Г(у) множества ). Выбор правильного результата из ряда «разумных», но различающихся осуществляется по мажоритарному правилу «два из трех» или, реже, «три из пяти».
Временное резервирование реализуется достаточно просто, однако требует заметного l-кратного увеличения затрат машинного времени на получение решения у или повышения быстродействия ЭВМ (последнее существенно удорожает вычислительную систему).
С позиции экономии ресурсов ЭВМ более предпочтительно ненагруженное временное резервирование, когда повторные прогоны ПО выполняют только при появлении «неразумного» или «подозрительного» решения . Однако для реализации такого способа резервирования ПО РВ необходимо наличие программы-анализатора, которая автоматически идентифицирует и реализует с помощью ключа К режим повторного прогона (рис. 4.11 б).
Рис. 4.11 б – Схема временного резервирования ПО (ненагруженный вариант)
Кроме того, ненагруженное временное резервирование ПО РВ предъявляет повышенные требования к быстродействию ЭВМ, правда в сравнительно редких случаях отказов программ.
Информационное резервирование основано на дублировании исходной информации и двукратном последовательном решении (одним и тем же ПО) задачи и с данными и эквивалентными им данными (рис. 4.12). Если , то ПО работоспособно, при имеет место устойчивый отказ какой-либо из программ ПО, при наблюдается сбой ПО и требуется еще раз решить задачу с данными и , и с помощью правила «два из трех» выбрать правильный результат. Функции анализатора АН выполняют эксперты или, при известных границах множества «разумных» решений , специальные программы-идентификаторы (рис. 4.12).
Рис. 4.12- Схема нагруженного информационного резервирования ПО
Информационное резервирование допускает нагруженный и/или ненагруженный режимы работы. Основной трудностью при реализации информационного резервирования ПО РВ является получение второго набора исходных данных , количественно и семантически эквивалентных данным .
Программное резервирование ПО предусматривает наличие двух (или более) алгоритмов , решения одной и той же задачи с одинаковыми исходными данными и двух ПО1 и ПО2 (рис. 4.13).
Рис. 4.13 – Схема ненагруженного программного резервирования ПО с разными операторами А1 и А2
Здесь возможно нагруженное и ненагруженное резервирование. В первом случае исходная информация x постоянно перерабатывается на одной ЭВМ двумя последовательно выполняемыми ПО1 и ПО2, результаты действия которых и сравниваются в анализаторе между собой и если они близки в определенном смысле, то выносится заключение об отсутствии отказа ПО. Если при этом , то ПО считается исправным и за решение задачи принимается или или их среднее. При и выполняется повторный прогон ПО1 и если новый результат , то объявляется сбой программного обеспечения 1. Наконец, если при повторном прогоне ПО1 снова , то имеет место отказ программного обеспечения 1, которое направляется на восстановление, а ПО2 начинает функционировать в режиме временного резервирования.
При ненагруженном резервировании постоянно функционирует только одно ПО1 (или ПО2), обрабатывающее данные x. Если анализатор идентифицирует случайное событие , то исходная информация x вводится и в ПО2, которое получает решение задачи . Дальнейший алгоритм анализа , (и возможно ) таков же, как и при нагруженном резервировании.
Программное резервирование позволяет эффективно выявлять и устранять сбои ПО и случайные отказы программ, которые вызываются первичными ошибками, вносимыми в ПО на начальных этапах его жизненного цикла. Вместе с тем программное резервирование вызывает более чем двукратное увеличение стоимости ПО, так оно требует удвоения объема алгоритмизации и программирования, двукратного увеличения объема запоминающего устройства и машинного времени ЭВМ на прогоны ПО1 и ПО2. В связи с этим программное обеспечение находит, как правило, широкое применение в АСУ РВ, применяемым для автоматизации ответственных объектов.
Программно-техническое резервирование представляет собой расширенный вариант программного резервирования, реализуемого с помощью нескольких ЭВМ (рис. 4.14).
Рис. 4.14 – Схема нагруженного программно-технического резервирования ПО и ЭВМ
Такой способ резервирования предполагает использование как минимум двух ЭВМ1 и ЭВМ2 , двух алгоритмов , решения одной и той же задачи , и наконец, двух независимо написанных программных обеспечений ПО1 и ПО2, выполняющих решения задач и (рис. 4.14). Возможно нагруженное резервирование (работают ЭВМ1 и ЭВМ2, функционируют соответственно ПО1 и ПО2, анализатор с помощью правил «два из двух» и «два из трех» идентифицирует безотказную работу программ, сбои и случайные отказы) и ненагруженное резервирование (ЭВМ1 постоянно решает задачу , ЭВМ2 с ПО2 находится в «теплом» или, реже, «холодном» резерве; анализатор идентифицирует безотказность ПО при , сбои программ по правилу «два из трех» и случайные отказы ПО или ЭВМ при , ).
Программно-техническое резервирование несомненно самый дорогой способ повышения надежности ПО и ЭВМ, однако он наиболее универсален и позволяет уменьшить риск отказа АСУ РВ из-за ошибок алгоритмического и, частично, программно-технического обеспечения системы реального времени. Эта особенность программно-технического резервирования способствует его широкому применению в современных распределенных АСУ ТП, работающих, как правило, в реальном времени. Так, например, в середине 90-ых годов ХХ века около половины подобных систем управления использовало нагруженное программно-техническое резервирование, в 70 % АСУ ТП применялось «холодное» или «теплое» резервирование ПО и управляющих ЭВМ.
Литература
1. Ястребенецкий М.А., Иванова Г.М. Надежность АСУ ТП. /Учеб.пособие для вузов. М.: Энергоатомиздат, 1989 - 264 с.
2. Надежность АСУ. / Учеб.пособие для вузов/ Под ред. Я.А.Хетатурова. М.: Высшая школа, 1979 - 287 с.
3. Шенброт И.М., Алиев В.М. Проектирование вычислительных систем распределенных АСУ ТП. М.: Энергоатомиздат, 1989 - 88 с.
4. Тейер Т., Липов М., Нельсон Э. Надежность программного обеспечения. М.: Мир, 1981 - 323 с.
5. Пальчун Б.Н., Юсупов Р.М. Оценка надежности программного обеспечения. Л.: Наука, 1994.
6. Защита программного обеспечения: Пер.с англ. / Под ред. Д. Гроувера. М.: Мир, 1992.
7. Шураков В.В. Надежность программного обеспечения систем обработки данных. /Учебн., М.: Финансы и статистика, 1987 - 272 с.