Научная статья на тему 'Расчет надежности отказоустойчивых архитектур программного обеспечения'

Расчет надежности отказоустойчивых архитектур программного обеспечения Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
636
88
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Ковалев Игорь Владимирович, Новой Александр Валерьевич

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

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Ковалев Игорь Владимирович, Новой Александр Валерьевич

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Reliability calculation of software fault-tolerant architecture

The question of software reliability growth by means of fault-tolerant architecture is considered. Efficiency of N-version programming and recovery blocks method is estimated at construction of software fault-tolerant. Contrastive analysis of the offered methods is carried.

Текст научной работы на тему «Расчет надежности отказоустойчивых архитектур программного обеспечения»

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

Таким образом, решение задачи с т транспортными средствами сводится к многократному решению задачи одномерного случая.

Библиографический список

1. Егоров, В. А. Транспортно-накопительные системы / В. А. Егоров, В. Д. Лузанов, С. Щербаков. М. : Машиностроение, 1990.

2. Ильина, Т. Р. Модель формирования производственной программы при нерегулярном поступлении заказов / Т. Р. Ильина, О. Э. Семенкина // Интеллектуальные технологии и адаптация. Красноярск : НИИ СУВПТ, 1999.

T. R. Ilina, G. B. Khorolich

VEHICLE DISTRIBUTION PLANNING PROBLEM UNDER CONDITION OF IRREGULAR ORDERING

Vehicle distribution planning problem under condition of irregular ordering is formalized in form of discrete optimization problem. Regular search algorithm solving this problem is suggested.

ХЦК 681.34

И. В. Ковалев, А. В. Новой

РАСЧЕТ НАДЕЖНОСТИ ОТКАЗОУСТОЙЧИВЫХ АРХИТЕКТУР ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

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

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

В зависимости от сложности программного обеспечения и целей его использования к ПО предъявляются

различные требования по уровню надежности [1]. Надежность ПО должна быть тем больше, чем сложнее проблемы оно решает.

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

Методами построения отказоустойчивых архитектур являются ^-вариантное программирование (КУР) и блоки восстановления (ИВ) [2]. Оба метода относятся к муль-тиверсионным методам обеспечения отказоустойчивости, которые основываются на использовании двух или более версий компонентов программного обеспечения. Версии реализуются с помощью различных алгоритмов и разными проектировщиками, что уменьшает вероятность появления одинаковых ошибок. Поэтому если одна версия отказывает на специфических данных, то, по крайней мере, одна из альтернативных версий должна обеспечить корректный результат. Показателем, характеризующим версии, служит вероятность безотказной работы

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

Для расчета надежности №УР и RB архитектур будем использовать основные теоремы теории вероятности, а именно, основываясь на теореме сложения и теореме умножения [3, 4], можно найти выражение для вероятности безотказной работы программного обеспечения. Будем рассматривать такие версии ПО, которые не подлежат восстановлению в случае отказа. Такой случай характерен для ПО, применяемого на космических и воздушных аппаратах.

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

Построим модель для ^-вариантного программного обеспечения с тремя версиями и алгоритмом голосования

- голосование абсолютным большинством. Введем следующие обозначения: К - надежность ПО,р^ рг,ръ - вероятности безотказной работы версий, рг - вероятность безотказной работы алгоритма голосования и N - число версий.

В соответствии с выбранным алгоритмом голосования ПО будет работать правильно только в том случае, если одновременно откажет не более одной версии. Рассмотрим событие А - программное обеспечение работает. Это событие выполняется при одном из следующих условий: событие В - версии 1и 2 вернули верный результат, версия 3 отказала;

событие С - версии 1и 3 вернули верный результат, версия 2 отказала;

событие В - версии 2и 3 вернули верный результат, версия 1 отказала;

событие Е - все версии вернули верный результат. События В, С, В и Е несовместны, поэтому по теореме сложения вероятностей вероятность события А есть р(А) = р(в)+р(с)+р(в)+р(Е).

Вероятности событий В, С, В и Е с учетом алгоритма голосования находятся по теореме умножения вероятностей для независимых событий [2]:

р(В) = р 1р1(1-рг)рг> р(С = р ^3(1-р2)р^> р(В) = р(Е) = №№

Тогда вероятность безотказной работа ПО равна

К = р(А) = + № + № - 2^1№)-

Аналогичные рассуждения проводятся для любого N так для ПО с пятью версиями отказ наступит, если одновременно откажут более двух версий. Вероятность безотказной работы для N = 5 равна

К = + рррлС1-^ + 5 +

++

+Рі(1-,Р2)РЛ(1-Р5) + (1-Рі)№Р4(1-Р5) +

+ + Рі(1-Р2)Рз(1-Р4)Рз +

+(1-Л)РР3(1-Р4)Р5 + Р\ (1Рт}(1Р3)Р4Р5 + +(1р 1)р2(1—Р 3)р 4Р 5 +

Если версии имеют одинаковую вероятность безотказной работы, то надежность ПО рассчитывается по формуле

я = рЛсV+'■ (1 - р Т-к -,

і=0

где к = сеП((#+1)/2) - минимальное число версий, возвращающих верный результат, сеі1() - оператор округления до наибольшего целого числа, С - число сочетаний.

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

Я = Р-^хРгРъ + РхР^-РЗ) + Р 1(1Р 2)Р з + ОЛИЛ +

+ Р 1(1-р2) (1-Рз) + Ол)Р2(1—Рз) + (1-Р1) (1-Р2)Р)-При таком алгоритме голосования удобно перейти к противоположному событию (рассматривать случай, когда ПО откажет), так как оно распадается на меньшее число вариантов. Отказ ПО произойдет после отказа всех версий. Надежность ПО находят по формуле

Я = Р^(1-(1-Р1)(1-Р2)(1-Рз)).

Для любого N надежность программного обеспечения:

/ N \

і-П (і - р<)

Зависимость надежности ПО от надежности его версий и алгоритма голосования представлена на рис. 1, при условиях р = Р2 = Рз = р4 = р 5 = р, N = 5, рг = 0,9, кривая 1

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

Рис. 1. Надежность ПО в зависимости от алгоритма голосования

График надежности ПО с алгоритмом голосования абсолютным большинством при изменении числа версий (надежность версий одинакова, р = 0,8, рг= 0,9) представлен на рис. 2. С ростом числа версий надежность ПО стремится к надежности алгоритма голосования. В таком случае изменение надежности ПО произойдет только при изменении характеристик версий или алгоритма голосования. При выборе этого алгоритма голосования следует использовать нечетное число версий, это обеспечивает оптимальное соотношение числа версий - надежность.

Рис. 2. Надежность ПО в зависимости от числа версий

В том случае если известна интенсивность отказов версий л, то р. заменяется на [4] р. = е~х,‘. Все формулы остаются справедливыми.

Надежность программного обеспечения с блоками восстановления. Согласно методу блоков восстановления, каждый программный компонент содержит тест, проверяющий его работу. Компонент имеет подпрограмму, которая повторяет вычисления, если тест обнаружил неправильное выполнение. Но повторные вычисления выполняются другой версией компонента, который построен на другой интерпретации требований, предъявляемых к компоненту. Компонент имеет несколько версий (блоков восстановления), выполняющих одинаковые функции, но реализующих разные алгоритмы [2]. Отказ такого программного обеспечения произойдет только в том случае, если в резерве компонента не останется версий, или приемочный тест пропустит ошибочный результат.

Построим модель программного обеспечения с тремя блоками (версиями) восстановления. Как и прежде Я

- надежность программного обеспечения, р1, р2, р3 - вероятности безотказной работы версий, рж - вероятность безотказной работы приемочного теста, N - число версий. Сделаем следующее допущение: (1 - _рАТ) есть вероятность отклонения правильного ответа.

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

1) событие В - первая версия работает верно, и приемочный тест принимает результат. Вероятность этого события р(А) = р]рАТ;

2) событие С - работает вторая версия, версия возвращает верный результат, и тест его принимает. Замена версий произойдет в случае отказа первой версии и обнаружения этого тестом (вероятность ситуации -(1-^1)рАТ) или в случае отклонения правильного ответа,

несмотря на верное выполнение первой версии (вероятность ситуации - .Pj(1-pAT)). Вероятность события C:

P(C) = ((1-p>at + ,Pi(1-PaT)) РРж;

3) событие D - работает третья версия, результат верный, и он принимается. Переход к третьей версии осуществится если:

- откажет первая версия ^ тест обнаружит отказ ^ переход ко второй версии ^ затем откажет вторая версия ^ тест обнаружит отказ ^ переход к третьей версии, вероятность перехода - (1-p 1 )pAT(1-p2)pAT;

- откажет первая версия ^ тест обнаружит отказ ^ переход ко второй версии ^ вторая версия вернет верный ответ ^ тест отклонит верный результат ^ переход к третьей версии, вероятность перехода - (1-p1)pAS.p1(1-pAS)';

- первая версия возвращает верный результат ^ тест отклоняет ответ ^ переход ко второй версии ^ отказ второй версии ^ тест обнаруживает отказ ^ переход к третьей версии, вероятность перехода - _p1(1-pAT)(1-p2)pAT;

- первая версия возвращает верный результат ^ тест отклоняет ответ ^ переход ко второй версии ^ вторая версия возвращает верный ответ ^ тест отклоняет ответ ^ переход к третьей версии, вероятность перехода -

jP1(1-Pat^P2(1-Pat).

Вероятность события D:

P(D) = ((1-P1^Pat(1-P2)Pat + (1-P>at ■P1(1-Pat) +

+ -P 1(1-PaT)(1-P2)PaT + Л(1-Рат) JP2(1-PaT)) №t

Так как события B, C и D являются не совместными, то надежность программного обеспечения находится как сумма вероятностей этих событий [3]:

R = p(A) = p(B) + p(C) + p(D) = p^AT + ((1-P1)PAT + ^P1(1-Pat)) P2P at + ((1-р>лг(1-Р>лг + +(1-P>AT Л^-Рат) + Л^-РатХЫКт +

+ Л(1-Рат) -P2(1-PaT)) №г

Проводя аналогичные рассуждения для любого N, находится обобщенная формула для надежности программного обеспечения с блоками восстановления:

N j-1

R = XPjPAT П (- P )Pat + p, (- Pat )) . j=i ,=1

Зависимость надежности ПО от надежности его версий и приемочного теста представлена на рис. 3, при условиях N = 3, p1 = p2 = p3 = p.

График изменения надежности ПО с увеличением числа версий при тех же условиях что и для NVP (рис. 2) представлен на рис. 4. Надежность программного обеспечения с блоками восстановления выше по сравнению с NVP. Максимальный уровень надежности достигается уже при трех версиях по сравнению с семью для NVP. Дальнейшее увеличение числа версий не приводит к повышению надежности, это происходит из-за приемочного теста, который ограничивает надежность ПО. Изменение надежности может произойти только при изменении вероятности безотказной работы версий или теста.

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

имость ПО будет ниже. И, во-вторых, требования, предъявляемые к приемочному тесту, а именно тест проверяет результат на приемлемость, а не само значение, гораздо ниже, чем к алгоритму голосования.

граммного обеспечения с NVP и ИВ архитектурами. Метод блоков восстановления является эффективней, чем ^вариантное программирование независимо оттого, что является характеристикой версий вероятность безотказной работы или интенсивность отказов (см. рис. 2, 4и 5).

Рис. з. Зависимость надежности ПО отp иp

Рис. 4. Надежность ПО в зависимости от числа версий

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

R(t) = £e_x jte-%ATt П ( - e~x't)

- e 'x‘t )e %tTt + e x‘t

j=1

(1 - e K-Tt ),

где X - интенсивность отказа . версии, ХАТ - интенсивность отказа приемочного теста.

Графики изменения надежности ПО со временем для NVP и ИВ метода представлены на рис. 5. Применение ИВ метода дает большую надежность ПО на всем интервале, кроме того, интервал времени при котором Я = 1 шире, чем для NVP, что дает большую уверенность в методе блоков восстановления.

Рассмотрены два метода для проектирования отказоустойчивых архитектур программного обеспечения: ^вариантное программирование и блоки восстановления. Получены формулы для расчета надежности про-

Рис. 5. Изменение надежности программного обеспечения со временем

Изменение надежности программного обеспечения происходит при изменении надежности версий, алгоритма голосования или приемочного теста и числа версий. Однако значительное увеличение числа версий не приводит к повышению надежности программного обеспечения (см. рис. 2 и 4). Это происходит из-за алгоритма голосования или приемочного теста. Для NVP и ИВ метода существует оптимальное количество версий, которое даст максимальную надежность программного обеспечения. Как правило, это количество версий для метода блоков восстановления меньше, что говорит о его преимуществе.

Таким образом, при выборе метода для построения отказоустойчивой архитектуры программного обеспечения, применяемого в условиях, которые не позволят восстановить работоспособность версий, следует из ^ва-риантного программирования и блоков восстановления выбирать метод блоков восстановления.

Библиографический список

1. Благодатских, В. А. Стандартизация разработки программных средств / В.А. Благодатских, В. А. Волнин, К. Ф. Поскакалов ; под ред. О. С. Разумова. М. : Финансы и статистика, 2006. 288 с.

2. Соммервилл, И. Инженерия программного обеспечения / И. Сомервилл ; пер. с англ. А. А. Минько, А. А. Момотюк. 6-е изд. М. : Вильямс, 2002. 624 с.

3. Вентцель, Е. С. Теория вероятностей / Е. С. Вентцель. 5-е изд. М. : Высш. шк., 1998. 576 с.

4. Половко, А. М. Основы теории надежности / А. М. Половко, С. В. Гуров. 2-е изд., перераб. и доп. СПб. : БХВ-Петербург, 2006. 704 с.

I. V Kovalev, A. V. Novoy

RELIABILITY CALCULATION OF SOFTWARE FAULT-TOLERANT ARCHITECTURE

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

The question of software reliability growth by means of fault-tolerant architecture is considered. Efficiency of N-version programming and recovery blocks method is estimated at construction of software fault-tolerant. Contrastive analysis of the offered methods is carried.

i Надоели баннеры? Вы всегда можете отключить рекламу.