Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
FINAL.doc
Скачиваний:
80
Добавлен:
04.06.2015
Размер:
1.29 Mб
Скачать

Мультиверсионное программирование

При использовании методологии мультиверсионного программирования, надежность системы во многом определяется используемым алгоритмом согласования результатов мультиверсий. Из всех алгоритмов голосования, рассмотренных в главе 2.6, оценить все возможные условия, влияющие на выход системы, можно только для голосования абсолютным большинством (см. главу 2.6.1).

Голосование абсолютным большинством получает «корректный» результат, если более половины мультиверсий возвращают «корректный» результат и алгоритм голосования выбирает один из них. Предположим, что все программные модули обладают некоторой средней надежностью ¯;r, надежность модуля принятия решения ‑b, а корректность выхода системы ‑Sn, гдеn– количество мультиверсий в системе.

Пусть mмодулей вернуло «корректный» результат, а(n-m)– вернули ошибку, тогда вероятность такой ситуации можно записать как:

Pn(m)= CCombin¯;rm∙(1-¯;r)n-m

Тогда Snможно представить как сумма вероятностей, чтоm=модулей вернули «корректный» результат и алгоритм голосования принял правильное решение:

Sn=(3.4)

Голосование согласованным, нечеткое голосование согласованным большинством, а также взвешенные варианты алгоритмов голосования, служат для того, чтобы приблизить Snк 1 для того жеm. Получить выражения в аналитическом виде для данных алгоритмов не представляется возможным, но оценить предел улучшений данных алгоритмов можно положив, чтоmдостаточно мало (менее 0,5 отn, как в случае с ГАБ).

На рис. 3 .1 и приведены графические оценки моделей мультиверсионного программирования и восстанавливающихся блоков для характеристик систем. Стоит отметить, что для МВП, bотклоняется от 1 за счет ошибок в конкретной реализации модуля мультиверсионного голосования. Следовательно, для данной модели,bможно бесконечно приблизить к 1 за счет качественной отладки, а основным критерием, влияющим наSn, являетсяm(косвенно зависящий от¯;r). В тоже время, для МВБb характеризует в первую очередь качество проверочного модуля, а уже потом наличие ошибок в программной реализации.

Рисунок 3.1. Оценка эффективности основных мультиверсионных моделей приn=5

Рисунок 3.2. Оценка эффективности основных мультиверсионных моделей приn=15

    1. Исследование результатов работы реализованной среды исполнения

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

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

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

Если бы все ошибки являлись одиночными, тогда из ситуации, когда несколько мультиверсий произвели вычисления с ошибкой, следовало бы, что их результаты не равны между собой. Однако на практике возникают ситуации, когда несколько модулей возвращают одинаковый неверный результат и, следовательно, содержат одинаковую ошибку в программной архитектуре. Такие ошибки будем называть межверсионными. Следует отметить, что существуют методики и рекомендации по проектированию программных систем, которые позволяют снизить вероятность появления ошибок данного вида, но, как показывает практика, полностью их исключить не удается [22].

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

Очевидно, что гарантировать максимально надежное функционирование системы можно только при выполнении следующих условий:

  1. Для каждой ошибки существует, как минимум, один модуль, ее не содержащий.

Рисунок 3.3. Множество выходов мультиверсионной системы с тремя программными модулями

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

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

Рисунок 3.4. Множество выходов мультиверсионной системы с тремя модулями, имеющими общие ошибки

  1. Количество областей межверсионных ошибок должно быть меньше половины общего количества модулей, либо общее количество модулей должно быть достаточно велико.

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

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

Способ взаимодействия имитационной среды с мультиверсионной системой характеризуется следующим. Имитационная среда должна быть полностью внешней по отношению к среде исполнения, не следует изменять код и структуру мультиверсионной системы управления. Это позволяет добиваться максимальной достоверности получаемых статистических данных в различных имитируемых ситуациях. Соединение этих двух систем должно осуществляться через интерфейсы, предоставляемые модулями: ввода, вывода, программными модулями и модулем сравнения двух результатов (рисунок 3 .5).

Рисунок 3.5. Общая функциональная модель имитационной среды

Схема функционирования данной системы будет следующей:

  • Модуль ввода передает СМВИ в качестве входных данных требуемые надежностные характеристики программных модулей (вероятности одиночных и межверсионных ошибок, максимальное количество модулей, содержащих одинаковую ошибку).

  • СМВИ передает эти данные программным модулям.

  • По команде выполнения вычислений (от СМВИ) программные модули генерируют одиночные и межверсионные ошибки с требуемой частотой.

  • Блок принятия решений определяет корректный результат всей системы.

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

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

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

Введем обозначения:

i– номер программного модуля;

Pi– вероятность ошибки программного модуляi;

Qi– вероятность безотказной работы программного модуляi(Qi = 1-Pi);

Ni– количество сгенерированныхi-м программным модулем ошибок;

Pм– вероятность межверсионной ошибки в нескольких модулях;

Nм– количество сгенерированных межверсионных ошибок;

S– номер текущего этапа вычислений (так как процесс обработки информации, в общем случае, происходит в несколько этапов [4]);

e,h– некоторые случайные величины из интервала от 0 до 1;

q– случайная величина, принимающая значение -1 или +1;

Xi– значение возвращаемоеi-м программным модулем;

Y– абсолютно истинное значение (фиксированное или заранее известное всем модулям);

x – максимально допустимое отклонениеXiотY, при которомXiвсе еще можно считать корректным.

Будем считать, что i-й программный модуль завершил выполнение с ошибкой, если возвращаемая им величинаXiотклоняется от образцаYболее чем на некоторый порогx(рисунок 3 .6). Причемxдолжен быть отличным от нуля, т.к. некоторые алгоритмы принятия решений используют в процессе выполнения степень равенства результатов [3,29].

Рисунок 3.6. Зависимость выхода мультиверсии от параметраr

Формально это можно записать следующим образом:

Xi = Y + r ∙ ∆x.

Таким образом, придав параметру rзначение из диапазона от -1 до +1, мы обеспечим на выходе «корректный» результат, а присвоивrлюбое другое значение – «ошибочный», причемrрегулирует степень «ошибки». Остановимся на том, по какому правилу следует присваивать то или иное значение данному параметру. Очевидно, чтоrдолжен зависеть от вероятности ошибкиi-го программного модуляPiи некоторой случайной величиныeдля того, чтобы модули, обладающие одинаковой вероятностью ошибки, не генерировали их одновременно. В качестве основы такой зависимости выберем периодическую функцию с периодомM=1 / Pi. Например, линейную функцию:

f(S) = {S / M} ,

где {} – операция получения дробной части числа.

Учитывая, что M=1 / Pi, получаем:

f(Pi, S) = {SPi} .

Добавим элемент случайности:

g(Pi, S) = f(Pi, S) + t ∙ e = {S ∙ Pi} + t ∙ e,

где t– некоторый коэффициент, определяющий уровень влияния случайности на выход программного модуля.

Так как множество значений функции f(x)лежит на отрезке [0;1], то и коэффициентtтоже должен принадлежать этому отрезку и не превышать 1.

Решение о том генерировать ли на текущем этапе ошибку или нет, будем принимать, сравнивая gс некоторым пороговым значениемEg:

(g > Eg) → ошибка.

Однако, ввиду влияния случайной величины te, необходимо следить, чтобы количество сгенерированных ошибокNiне превышало количество ошибок, ожидаемых к текущему этапу обработки данныхPiS:

Ni / (Pi S) ≤ 1.

Таким образом, общий алгоритм вычисления rвыглядит следующим образом:

, если [ g(Pi, S) > Eg ] и [ Ni / (Pi S) ≤ 1 ],

, в противном случае.

Вместо (4 + ih)∙qможно использовать и любую другую функцию, удовлетворяющую следующим условиям:

  • каждый программный модуль имеет уникальные одиночные ошибки;

  • в окрестности xот любого «ошибочного» значения одной мультиверсии нет «ошибок» других мультиверсий.

Экспериментально было установлено, что для Egоптимальным значением является 0,85, а дляt– 0,5. ХарактерXi при этих значения представлен на рисунок 3 .7. На данном рисунке по оси абсцисс откладываются итерацииi-го модуля, а по оси ординат – отклонение выходного значение от «корректного». Отклонение от Y более чем наxсчитается ошибкой.

Рисунок 3.7. Характер выходных значений генератора ошибок при Eg=0,85 и t=0,5. (100 значений, вероятность ошибки 0,07)

Генерация межверсионных ошибок будет осуществляться аналогично генерации одиночных ошибок, но вместо Piбудем использоватьPм, а вместоNiNm:

, если [ g(Pм, S) > Eg ] и [ Nм / (Pм S) ≤ 1 ],

, в противном случае.

Важным моментом в процессе генерации межверсионных ошибок является то, что решение о «наличии» межверсионной ошибки принимает лишь один из программных модулей, назначенный арбитром. Например, если в качестве арбитра выбран программный модуль с номеромi=1, то он определяет, какое ошибочное значениеXмгенерировать в качестве межверсионной ошибки, на каком этапеSмона должна произойти, а также количество и номера модулей, «содержащих» эту ошибку. Указанные им модули возвращают нужное значениеXмв нужный моментSми увеличивают свои счетчики ошибокNi, а арбитр увеличиваетNм. Сам арбитр может как участвовать в межверсионной ошибке, так и только управлять процессом ее генерации.

На основании изложенных принципов была реализована «Программная система «ИС-СМВИ v1.0» (имитационная среда для системы мультиверсионного исполнения программных модулей), прошедшая регистрацию в Отраслевом фонде алгоритмов и программ [8].

Ниже приведены полученные с помощью разработанной системы данные, характеризующие преимущества и недостатки наиболее перспективных алгоритмов принятия решения [6]. Исследовались следующие алгоритмы: голосование абсолютным большинством (ГАБ) и голосование согласованным большинством (ГСБ) [16], нечеткое голосование согласованным большинством (НГСБ) [29] и взвешенные варианты ГСБ и НГСБ, предложенные в [3]. Касаясь характеристик приведенных алгоритмов, отметим только, что алгоритм ГАБ выбирает тот результат из множества результатов программных модулей, который был возвращен абсолютным большинством из них, т.е. для Nмодулей правильный результат должны вернуть одновременно(N+1)/2мультиверсий [30]. Второй алгоритм, ГСБ, при принятии решения опирается не на абсолютное большинство, а на максимально большую группу из представленных результатов. Например, если множество выходов есть {A,B,A,C,B,A,D,C}, то алгоритм ГСБ выберет “A”. Причем, алгоритмы ГАБ и ГСБ определяют группу равных выходов, исходя из факта их равенства друг другу [30]. Алгоритм НГСБ, в свою очередь, исходит из степеней схожести выходов друг с другом, и в этом заключается его основное отличие от предыдущих алгоритмов. Взвешенные варианты алгоритмов ВГСБ и НВГСБ используют в процессе своего функционирования еще и накапливаемую статистику «ошибок» мультиверсий [3].

Ситуация №1.

Исходные данные:

Количество мультиверсий: 3

Межверсионных ошибок нет.

Результат представлен на рисунок 3 .8.

Методы ГАБ, ГСБ и НГСБ не смогли принять решение ни для одного значения вероятности ошибки Qмодуля существенно меньшего 1. Это связано с тем, что при даже при средней надежности одного модуля 0,99, вероятность того что все три модуля вернут различные результаты равна 0,0001. Следовательно, при достаточном количестве итераций, непременно возникнет ситуация неопределенности при принятии решения.

Ситуация №2.

Исходные данные:

Количество мультиверсий: 5

Межверсионных ошибок нет.

Результат представлен на рисунок 3 .9.

Алгоритм ГАБ не смог принять решение для Qмодуляменьших 0,91. Алгоритм ГСБ не смог принять решение дляQмодуляменьших 0,80. У алгоритма ВГСБ наблюдается небольшое отклонение характеристики по сравнению с алгоритмом НВГСБ-0,5.

Ситуация №3.

Исходные данные:

Количество мультиверсий: 15

Межверсионных ошибок нет.

Результат представлен на рисунок 3 .10.

Метод ГАБ не смог принять решение для значений Qмодуля, меньших 0,82. У алгоритма, реализующего метод ВГСБ, наблюдается аномалия в области значений вероятности безотказной работы мультиверсий до 0,67, причем, в отличие от остальных методов, его характеристика начинается не с 0, а, приблизительно, со значения, соответствующего 0,18, после чего, вплоть до 0,67, отказоустойчивость системы падает практически до нуля. При повторе теста с большим числом вложенных этапов, эта аномалия повторяется. Возможно, это связано с тем, что вероятность ошибки в данной области гораздо выше, чем вероятность корректного результата. После значения вероятности отказа выше 0,67, алгоритм ВГСБ оказывается несколько более эффективным, чем ГСБ. Линия, соответствующая алгоритму НГСБ-0,5, также демонстрирует большую эффективность, чем характеристика алгоритма ГСБ для всех значений вероятности отказаQмодуля.

В области Qмодуля > 0,67 все значения, соответствующие вероятности отказа системыQсистемы, выше 0,98.

Анализ показывает, что, начиная со значений вероятностей отказа 0,82, самым эффективным алгоритмом является ГАБ. Для него Qсистемы = 1.

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

Ситуация №4.

Исходные данные:

Количество мультиверсий: 15

Вероятность межверсионной ошибки 0,000002 в 8 модулях.

Результат представлен на рисунок 3 .11.

Алгоритм ГАБ не смог принять решение для значений Qмодуля, меньших 0,86. Аномальное поведение алгоритма ВГСБ повторилось. В целом, поведение алгоритмов принятия решения идентично предыдущему случаю, за тем только отличием, что все характеристики, кроме НВГСБ, идут несколько ниже, а разница между значениями ГСБ и НГСБ сократилась.

      1. Выводы

Проведя анализ полученных зависимостей, можно сделать вывод о том, что наиболее универсальным алгоритмом принятия решений является взвешенное голосование согласованным большинством - ВГСБ. Алгоритм ВГСБ показал лучшие результаты во всех ситуациях, где средняя вероятность ошибки программного модуля не превышала 0,30. Следует также отметить, что алгоритм, реализующий голосование абсолютным большинством, позволяет добиваться очень высокой отказоустойчивости для систем, в которых все программные модули являются высоконадежными (средняя вероятность ошибки не превышает 0,15), и их количество достаточно велико. Это важно, так как алгоритм ГАБ является очень простым [3], и его использование позволит снизить (относительно других методом голосования) ресурсоемкость решения задачи для системы в целом. Все рассмотренные алгоритмы голосования обладают своими преимуществами и недостатками, поэтому для достижения максимальной эффективности функционирования каждой конкретной мультиверсионной системы управления следует проводить исследование всех характеристик этой системы. Затем, используя значения этих характеристик в среде ИС‑СМВИ, можно осуществить обоснованный выбор наиболее подходящего для конкретной системы управления алгоритма принятия решений.

Рисунок  3.8. Зависимость отказоустойчивости системы от отказоустойчивости отдельных модулей

Рисунок 3.9. Зависимость отказоустойчивости системы от отказоустойчивости отдельных модулей

Рисунок 3.10. Зависимость отказоустойчивости системы от отказоустойчивости отдельных модулей

Рисунок 3.11. Зависимость отказоустойчивости системы от отказоустойчивости отдельных модулей

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]