Расчёт надёжности программных средств

В составе современных технических систем всё больший удельный вес занимают средства вычислительной техники. Стоимость основной ячейки интегральных микросхем – логического вентиля – с развитием электроники непрерывно снижается. Напротив, программное обеспечение, удельная стоимость которого у первых ЭВМ была очень малой, в настоящее время составляет более 90 % стоимости компьютеров. Этот рост стоимости объясняется несколькими причинами:

1) Технология создания программного обеспечения серьезно отстаёт от технологии производства элементной базы;

2) по своей природе программное обеспечение сложнее оборудования (объём программ для современных систем оценивается в 106 – 108 и более команд или информационных слов);

3) требования к программному обеспечению в течение его жизненного цикла, который увеличился до 15 – 20 лет, существенно изменяются;

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

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

Приближенно можно полагать, что отношение числа ошибок в программе к общему числу команд в ней лежит в диапазоне от 0,25 до 10 на 1000 команд. Это означает, что в ПО объёмом в 0,5 млн. команд может быть 125 – 5000 ошибок; причем, такая оценка является оптимистической. Выявление ошибок и их исправление является процессом многоэтапным (в соответствии с этапами «жизни» ПО), трудоёмким и дорогостоящим. По мере перехода к более поздним этапам разработки ПО цена ошибки возрастает, тенденцию этого роста иллюстрирует таблица:

Таблица 2.1 - Примерная «цена» программной ошибки на разных этапах жизни программного обеспечения

Наименование этапа Стоимость ошибки, руб.
Составление спецификаций
Программирование
Комплексная отладка
Сопровождение ПО у заказчика 350000 - 35000000

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

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

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

Основная трудность определения термина «программная ошибка» состоит в том, что ошибка в программе – это по своей сути функция самой программы и того, чего ожидает от неё пользователь. Перечислим основные проявления, которые можно идентифицировать как ошибку:

- появление при программировании ошибочного операнда или операции;

- несоответствие выполняемых ПО функций требованиям спецификаций, либо ошибка в спецификации, которая приводит к ошибке при выполнении операции ПО;

- ошибки вычислительного характера (например, переполнение);

- исправление ПО, улучшающее его взаимодействие с пользователем.

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

Введём интенсивность обнаружения ошибок или функцию риска r(t), которая определяется отношением числа обнаруженных ошибок к промежутку времени, за который эти ошибки были обнаружены. Для интенсивности обнаружения ошибок справедливы все формулы, которые известны из теории надёжности. В отличие от интенсивности отказов Расчёт надёжности программных средств - student2.ru функция риска убывает по мере обнаружения и исправления ошибок. Если предположить, что Расчёт надёжности программных средств - student2.ru остаётся постоянной между моментами обнаружения и исправления ошибок, уменьшаясь скачкообразно на постоянную величину в момент обнаружения ошибок, то для простоты целесообразно полагать её пропорциональной количеству оставшихся ошибок

Расчёт надёжности программных средств - student2.ru , (2.80)

где Расчёт надёжности программных средств - student2.ru - число обнаруженных ошибок на данном этапе.

Дифференцируя уравнение (2.80) по времени получим

Расчёт надёжности программных средств - student2.ru

где Расчёт надёжности программных средств - student2.ru - есть функция риска Расчёт надёжности программных средств - student2.ru . Если решить дифференциальное уравнение Расчёт надёжности программных средств - student2.ru , с начальными условиями Расчёт надёжности программных средств - student2.ru то

Расчёт надёжности программных средств - student2.ru (2.81)

Обозначим Расчёт надёжности программных средств - student2.ru Тогда уравнение (2.81) можно переписать в виде

Расчёт надёжности программных средств - student2.ru (2.82)

Функцию риска зададим дискретно, придав интервалу времени заданное значение (день, неделя, месяц). Логарифмируя уравнение (2.82) для выбранных значений времени Расчёт надёжности программных средств - student2.ru , получим систему уравнений вида

Расчёт надёжности программных средств - student2.ru (2.83)

Расчёт экспоненциальной регрессии даёт следующие выражения для её коэффициентов

Расчёт надёжности программных средств - student2.ru (2.84)

Расчёт надёжности программных средств - student2.ru (2.85)

Расчёт надёжности программных средств - student2.ru (2.86)

Программа для расчёта экспоненциальной регрессии приведена ниже в 2.3.3.

Будем под удельной интенсивностью обнаружения ошибок в ПО понимать следующую функцию времени:

Расчёт надёжности программных средств - student2.ru (2.87)

где Расчёт надёжности программных средств - student2.ru - число ошибок в ПО, которые исправлены к моменту времени t ; Расчёт надёжности программных средств - student2.ru - число команд в программе. Приближенно можно полагать, что

Расчёт надёжности программных средств - student2.ru (2.88)

здесь Расчёт надёжности программных средств - student2.ru - разрядность команды; Расчёт надёжности программных средств - student2.ru - объем программы по Холстеду, что будет; В – число оставшихся ошибок в ПО к моменту t = 0; К – коэффициент пропорциональности. Величины В и К являются неизвестными.

Рассмотрим два периода отладки программы Т1 и Т2 такие, что Т1 < Т2. Пусть n1 и n2 соответственно количество ошибок в ПО, обнаруженных в каждом из периодов. Тогда для среднего времени безошибочной (безотказной) работы в каждом из периодов можно записать следующие выражения:

Расчёт надёжности программных средств - student2.ru (2.89)

Расчёт надёжности программных средств - student2.ru (2.90)

Разделив первое равенство на второе, после преобразований можно получить:

Расчёт надёжности программных средств - student2.ru (2.91)

где Расчёт надёжности программных средств - student2.ru

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

Расчёт надёжности программных средств - student2.ru . (2.92)

Определив В и К, можно для любого момента времени вычислить значение удельной интенсивности обнаружения ошибок в ПО Расчёт надёжности программных средств - student2.ru и вероятность безотказной работы, полагая, что время исправной работы подчинено экспоненциальному закону распределения.

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

- ввод возможной комбинации Еi входных данных;

- выполнение расчёта по программе, которая заканчивается получением результата F(Ei) или отказом.

Для определенного набора входных данных отклонение результата от заданного значения F`(Ei), полученное в результате выполнения программы, находится в допустимых пределах

Расчёт надёжности программных средств - student2.ru (2.93)

а для всех остальных Ei , образующих подмножество Расчёт надёжности программных средств - student2.ru , выполнение программы не обеспечивает приемлемого результата, т.е.

Расчёт надёжности программных средств - student2.ru > Расчёт надёжности программных средств - student2.ru (2.94)

События, описываемые неравенством (2.94), называются отказами программы.

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

Расчёт надёжности программных средств - student2.ru (2.95)

где Расчёт надёжности программных средств - student2.ru если выполняется неравенство (2.93); Расчёт надёжности программных средств - student2.ru если выполняется неравенство (2.94).

Обозначим через Расчёт надёжности программных средств - student2.ru допустимую относительную погрешность оценки вероятности отказа. Тогда необходимое число независимых прогонов программы n должно быть пропорционально величине Расчёт надёжности программных средств - student2.ru где Расчёт надёжности программных средств - student2.ru - заданное значение вероятности отказа. Так, при Расчёт надёжности программных средств - student2.ru и значении Расчёт надёжности программных средств - student2.ru число независимых прогонов должно быть не меньше

Расчёт надёжности программных средств - student2.ru

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

Для проверки надёжности ПО используются методы проверки статистических гипотез и, в частности, последовательный анализ Вальда. Сопоставим дихотомической переменной Расчёт надёжности программных средств - student2.ru значение 1, если выполняется (2.94), и значение 0, если выполняется (2.93 ). Тогда результат прогонов образует выборку случайных величин Расчёт надёжности программных средств - student2.ru Обозначим вероятность того, что Расчёт надёжности программных средств - student2.ru , т.е. программа отказывает, как Р; а вероятность Р0 того. что Расчёт надёжности программных средств - student2.ru принимает значение 0, а программа исправна. Тогда выбор значения

Р0 =0,99 означает, что в серии из 100 прогонов вероятно в среднем появление одного отказа.

Применение последовательного анализа позволяет существенно ограничить число испытаний на надёжность ПО и не налагает жёстких требований на закон распределения случайной величины Расчёт надёжности программных средств - student2.ru . Практическое применение последовательного анализа будет продемонстрировано ниже.

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

Для любой программы можно определить:

- число различных операций Расчёт надёжности программных средств - student2.ru , например, Расчёт надёжности программных средств - student2.ru и др.;

- общее число всех операндов Расчёт надёжности программных средств - student2.ru (переменных и констант);

- общее число всех операций Расчёт надёжности программных средств - student2.ru

- общее число всех операндов Расчёт надёжности программных средств - student2.ru

Тогда словарь программы есть Расчёт надёжности программных средств - student2.ru , а длина реализации составляет Расчёт надёжности программных средств - student2.ru Длина программы в этом случае равна

Расчёт надёжности программных средств - student2.ru (2.96)

а объём программы Расчёт надёжности программных средств - student2.ru (2.97)

потенциальный объём программы

Расчёт надёжности программных средств - student2.ru (2.98)

где Расчёт надёжности программных средств - student2.ru минимальное число различных операндов (точнее, число независимых входных и выходных величин).

Потенциальный объём Расчёт надёжности программных средств - student2.ru - минимально возможный объём определённого алгоритма. Уровень программы L определяется через отношение потенциального объёма к объёму программы

Расчёт надёжности программных средств - student2.ru (2.99)

Работа по программированию Е оценивается как суммарное число элементарных мысленных отличий между элементами, необходимых для генерации программы:

Расчёт надёжности программных средств - student2.ru (2.100)

Уровень языка Расчёт надёжности программных средств - student2.ru позволяет оценивать преимущество языка более высокого уровня по сравнению со своим предшественником и определяется выражением

Расчёт надёжности программных средств - student2.ru (2.101)

что позволяет иначе выразить характеристики Е и V:

Расчёт надёжности программных средств - student2.ru (2.102)

Расчёт надёжности программных средств - student2.ru (2.103)

В таблице 2.2 приведены численные значения Расчёт надёжности программных средств - student2.ru для языков различного уровня.

Таблица 2.2 – Численные значения уровня языка

Язык Уровень Расчёт надёжности программных средств - student2.ru
Ассемблер 0,88
Бейсик 1,14
Английский 2,16

Трудоемкость разработки программного обеспечения определяется по формуле

Расчёт надёжности программных средств - student2.ru чел. - часов; (2.104)

где Расчёт надёжности программных средств - student2.ru - параметр Страуда, т.е. время, которое необходимо человеческому мозгу для определения существенного отличия между двумя элементами, оценивается значением 5-20 существенных различий в секунду.

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

Расчёт надёжности программных средств - student2.ru (2.105)

или Расчёт надёжности программных средств - student2.ru (2.106)

Коэффициент пропорциональности С определяют, исходя из следующих соображений. В соответствии с эмпирическим законом Д. Миллера «7 Расчёт надёжности программных средств - student2.ru 2» для Расчёт надёжности программных средств - student2.ru определим, что Расчёт надёжности программных средств - student2.ru , а для английского языка с учётом (2.100) получим

Расчёт надёжности программных средств - student2.ru

что позволяет оценить коэффициент С как Расчёт надёжности программных средств - student2.ru

однако для языков более низкого уровня правильнее оценивать С, используя выражение более общего вида

Расчёт надёжности программных средств - student2.ru (2.107)

что, в частности, для Ассемблера даёт значение Расчёт надёжности программных средств - student2.ru Таким образом,

Расчёт надёжности программных средств - student2.ru (2.108)

или в более общей форме

Расчёт надёжности программных средств - student2.ru (2.109)

Значения величин Расчёт надёжности программных средств - student2.ru и Расчёт надёжности программных средств - student2.ru могут быть определены из результатов анализа ПО или косвенно путем решения уравнений Холстеда, если известны значения Расчёт надёжности программных средств - student2.ru и Расчёт надёжности программных средств - student2.ru :

Расчёт надёжности программных средств - student2.ru (2.110)

2.3.2 Методика оценки числа оставшихся ошибок в программе

Оценка потенциального числа ошибок в ПО перед началом разработки программы может быть проведена путём расчёта количества независимых входных и выходных величин Расчёт надёжности программных средств - student2.ru , потенциального объёма программы и возможного числа ошибок в ней. Приведём примеры анализа входных и выходных данных.

Пример 1. Рассматривается система контроля посадки самолётов в условиях ограниченной видимости. В состав системы входят курсовой радиомаяк, глиссадный радиомаяк, ответчик радиодальномера. Входными величинами системы являются : три пространственные координаты (азимут, угол места, дальность), всего количество координат равно Расчёт надёжности программных средств - student2.ru Три информационных эталонных канала, т.е. - Расчёт надёжности программных средств - student2.ru четыре координаты самолёта (высота, путевая скорость, крен, тангаж).

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

Решение.

Расчёт надёжности программных средств - student2.ru

потенциальный объём программы равен

Расчёт надёжности программных средств - student2.ru бит,

а количество потенциальных ошибок в ПО равно

Расчёт надёжности программных средств - student2.ru

Пример 2. Определить характеристики программного обеспечения для боевой космической станции (БКС) системы противоракетной обороны (ПРО) типа стратегической оборонной инициативы президента США Рейгана. БКС должна быть рассчитана на перехват около 1000 целей с расстояния примерно 400 км.

Решение. Для перехвата необходимо рассчитать местоположение целей, их скорость, расстояние до них и условные параметры прицеливания. Упростим задачу и попытаемся получить оценку снизу. Поэтому не будем рассматривать задачи распознавания целей и согласования полученных данных с моделью боевой ситуации. Будем рассматривать предельно простой случай полной децентрализации, когда процессор управляющего компьютера непосредственно подключён к датчикам БКС и обрабатывает данные о координатах наблюдаемых объектов с целью вычислить их положение на момент перехвата. Полагаем, что на одном экране БКС появляется одновременно не более 20 целей, а 30 последовательных измерений положения объекта и его скорости статистически достаточно для получения необходимой точности и выбора наилучшего момента поражения одной цели.

Пусть для определения природы объекта необходимо измерить пять величин и на экране измеряются две координаты для каждого из 20 объектов. Таким образом, количество входных величин оказывается равным Расчёт надёжности программных средств - student2.ru

Выходные величины программы – это угловые координаты целей и расстояние до них. Для 20 целей количество выходных величин составляет Расчёт надёжности программных средств - student2.ru

Итак, Расчёт надёжности программных средств - student2.ru

что даёт для потенциального объёма программы значение равное

Расчёт надёжности программных средств - student2.ru бит.

Расчёты показывают, что для создания такого объёмного ПО требуется около 1012 чел. - часов. Потенциальное количество ошибок в этом гигантском по объёму ПО для языков различного уровня равно:

Расчёт надёжности программных средств - student2.ru

На устранение такого огромного количества ошибок может потребоваться значительно больше времени, чем на создание самого программного обеспечения. Поэтому разработка ПО такого большого объёма сомнительна.

Выполним расчёт потенциального количества ошибок в ПО перед началом комплексной отладки. Уточнение значения числа ошибок можно было бы провести путём прямого подсчёта значений Расчёт надёжности программных средств - student2.ru и Расчёт надёжности программных средств - student2.ru . Однако для программ, написанных на языке низкого уровня это сделать затруднительно. Возможен иной подход, который рассмотрим для ПО при условиях примера 1. Особенностью этого ПО является то, что оно написано на Ассемблере.

Значение Расчёт надёжности программных средств - student2.ru складывается из числа команд Расчёт надёжности программных средств - student2.ru , используемой системы команд и из числа отдельных подпрограмм Расчёт надёжности программных средств - student2.ru . В ПО примера использовалось 45 различных операторов, число подпрограмм составило 157. Таким образом, Расчёт надёжности программных средств - student2.ru

Количество операндов Расчёт надёжности программных средств - student2.ru равно сумме Расчёт надёжности программных средств - student2.ru (различные переменные и массивы данных, используемых в ПО); плюс количество локальных меток Расчёт надёжности программных средств - student2.ru и констант Расчёт надёжности программных средств - student2.ru . Для облегчения подсчёта Расчёт надёжности программных средств - student2.ru используют имеющееся распределение памяти оперативного запоминающее устройства (ОЗУ), при этом подходе исключается повторяемость соответствующих операндов. Число локальных меток подсчитывают по тексту программы на Ассемблере слева от мнемонической записи команды. Таким способом гарантируется не повторяемость меток, а общепринятая табуляция облегчает подсчёт. Сложнее сосчитать число различных констант, которые оформляются в массивы числовых данных и используются при адресации в Ассемблере. Поэтому по тексту программы считают лишь число констант, заведомо помещающихся в одном байте. Как правило, они выделяются в тексте и вероятность их совпадения очень мала. К значению этой величины прибавляют 256 – число возможных байтовых констант. Для рассматриваемого ПО указанные величины имеют следующие значения :

Расчёт надёжности программных средств - student2.ru

Тогда

Расчёт надёжности программных средств - student2.ru Расчёт надёжности программных средств - student2.ru 82 + 334 + 280 + 256 = 952.

Полученные значения Расчёт надёжности программных средств - student2.ru и Расчёт надёжности программных средств - student2.ru можно сопоставить с расчётными значениями, которые определены из решения уравнений Холстеда для Расчёт надёжности программных средств - student2.ru

Расчёт надёжности программных средств - student2.ru

В результате решения Расчёт надёжности программных средств - student2.ru Эти значения можно полагать приемлемыми (отличие от реального ПО составляет 11,0 % и 10,5 %).

Рассчитаем длину программы

Расчёт надёжности программных средств - student2.ru

и определим объём программы

Расчёт надёжности программных средств - student2.ru бит.

Уточнённая оценка переданного количества ошибок в ПО равна:

Расчёт надёжности программных средств - student2.ru

Оценка Расчёт надёжности программных средств - student2.ru отличается от полученной ранее Расчёт надёжности программных средств - student2.ru = 168 лишь на 12 % и по своему смыслу является более близкой к реальности.

2.3.3 Методика расчёта интенсивности обнаружения ошибок в зависимости от времени эксплуатации программы

В процессе комплексной отладки ПО видоизменяется с целью осуществления недостающих функций и внесения исправлений для обнаруженных ошибок в уже реализованной программе. Такие изменения обычно заносятся в специальный журнал учёта исправлений с указанием даты и семантики исправления. В качестве примера рассмотрим ПО из примера 1. Исходными данными являются результаты комплексной отладки этого ПО примерно за двухлетний период. Количество обнаруженных ошибок фиксировалось помесячно, поэтому интенсивность обнаружения ошибок имеет размер «количество ошибок/месяц». Значения интенсивности обнаружения ошибок за 20 месяцев приведены ниже в таблице. Таблица 2.3 - Значения интенсивности обнаружения ошибок

Δti
r(ti)
Δti
r(ti)

Используя экспоненциальную аппроксимацию Расчёт надёжности программных средств - student2.ru что даёт значение количества оставшихся ошибок Расчёт надёжности программных средств - student2.ru Это значение хорошо согласуется с ранее определенными значениями Расчёт надёжности программных средств - student2.ru и Расчёт надёжности программных средств - student2.ru .

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

Таблица 2.4 - Интенсивность обнаружения ошибок на квартал вперед

Δti
r(ti)


2.3.4 Статистическая оценка вероятности безотказной работы

программного обеспечения

Рассмотрим метод последовательного анализа для оценки вероятности безотказной работы программы. В нём вводится допущение о том, что если вероятность успешного прогона Р находится в достаточно малой окрестности точки Р0, то риск принятия неправильного решения допустимо мал. Под неправильным решением понимают решение отвергнуть надёжную программу или пропустить не надёжную программу. Для формализации этого допущения задают такие P` и P`` (P`<P0<P``), что принятие не надёжной программы рассматривается как ошибочное решение только при Расчёт надёжности программных средств - student2.ru , а отказ от надёжной программы является ошибочным в случае, когда Расчёт надёжности программных средств - student2.ru . После задания значений вероятностей P` и P`` допустимый риск принятия неправильных решений таков, что вероятность ошибки первого рода, т.е. отказа от надёжной программы, не должна превышать α = Вер Расчёт надёжности программных средств - student2.ru , а вероятность ошибки второго рода, т.е. принятия не надёжной программы не должна превышать β = Вер Расчёт надёжности программных средств - student2.ru . Значения величин α и β при этом назначаются, исходя из разумного компромисса, до начала испытаний, так как с их уменьшением растёт объём испытаний.

Сущность последовательного анализа гипотезы Н0 (Р = Р0) состоит в проверке двух конкурирующих гипотез Н`(P = P`) и H``(P = P``). Здесь под вероятностью безотказной работы ПО P(m) понимают вероятность получения выборки Расчёт надёжности программных средств - student2.ru в которой для Расчёт надёжности программных средств - student2.ru элементов P`<Pm,P``, тогда

Расчёт надёжности программных средств - student2.ru (2.111)

Если верна гипотеза H`, то

Расчёт надёжности программных средств - student2.ru (2.112)

Аналогично, если верна гипотеза H``, то

Расчёт надёжности программных средств - student2.ru (2.113)

Составим отношение «правдоподобия»:

Расчёт надёжности программных средств - student2.ru (2.114)

Последовательный анализ проводится до тех пор, пока не будет выполняться следующие неравенства:

Расчёт надёжности программных средств - student2.ru (2.115)

Если на этапе m Расчёт надёжности программных средств - student2.ru то ПО не надёжно; а если Расчёт надёжности программных средств - student2.ru то ПО можно принять как надёжное.

Прологарифмировав выражения (2.114) и (2.115), можно придать им графическую форму в координатах m , Расчёт надёжности программных средств - student2.ru . После логарифмирования и преобразований получим :

Расчёт надёжности программных средств - student2.ru

Расчёт надёжности программных средств - student2.ru

Расчёт надёжности программных средств - student2.ru

Расчёт надёжности программных средств - student2.ru

Теперь можно построить две прямые Расчёт надёжности программных средств - student2.ru и Расчёт надёжности программных средств - student2.ru Если Расчёт надёжности программных средств - student2.ru то ПО не надёжно, если же Расчёт надёжности программных средств - student2.ru то ПО можно принять как надёжное. При условии Расчёт надёжности программных средств - student2.ru испытания следует продолжать.

На плоскости Расчёт надёжности программных средств - student2.ru строятся прямые Расчёт надёжности программных средств - student2.ru с одинаковым наклоном Расчёт надёжности программных средств - student2.ru и точками пересечения оси ординат Расчёт надёжности программных средств - student2.ru и Расчёт надёжности программных средств - student2.ru соответственно.

Расчёт надёжности программных средств - student2.ru

Рисунок 2.12 - Примерные графические результаты

последовательного анализа

Итак, план действий при выполнении последовательного анализа является таковым:

- задать перед началом испытаний значения величин Расчёт надёжности программных средств - student2.ru

- построить прямые линии Расчёт надёжности программных средств - student2.ru и Расчёт надёжности программных средств - student2.ru , как это сделано на рис. 2.12;

- в ходе испытаний наносить на график полученные точки ( Расчёт надёжности программных средств - student2.ru );

- если текущая точка Расчёт надёжности программных средств - student2.ru попадает выше линии Расчёт надёжности программных средств - student2.ru , то испытания завершаются, а ПО признаётся не удовлетворяющим заданным требованиям по надёжности;

- если текущая точка Расчёт надёжности программных средств - student2.ru попадает ниже линии Расчёт надёжности программных средств - student2.ru , то испытания завершаются, а ПО признаётся надёжным ;

- испытания продолжаются, если текущая точка Расчёт надёжности программных средств - student2.ru находится внутри области ограниченной прямыми Расчёт надёжности программных средств - student2.ru и Расчёт надёжности программных средств - student2.ru .

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

При использовании метода последовательного анализа очень важно оценить среднее число испытаний Расчёт надёжности программных средств - student2.ru при истинности гипотезы H` и среднее число испытаний Расчёт надёжности программных средств - student2.ru при истинности гипотезы H``. В первом случае

Расчёт надёжности программных средств - student2.ru (2.116)

где Расчёт надёжности программных средств - student2.ru математическое ожидание случайной величины Расчёт надёжности программных средств - student2.ru при истинности гипотезы H`. Очевидно, что Расчёт надёжности программных средств - student2.ru

Во втором случае

Расчёт надёжности программных средств - student2.ru (2.117)

где Расчёт надёжности программных средств - student2.ru математическое ожидание случайной величины Расчёт надёжности программных средств - student2.ru при истинности гипотезы H``, Расчёт надёжности программных средств - student2.ru

Рассмотрим примеры расчёта среднего числа испытаний.

Пример 3. Пусть Расчёт надёжности программных средств - student2.ru Необходимо определить среднее число испытаний программы.

Решение.

Расчёт надёжности программных средств - student2.ru

Расчёт надёжности программных средств - student2.ru

Расчёт надёжности программных средств - student2.ru

Расчёт надёжности программных средств - student2.ru

Расчёт надёжности программных средств - student2.ru

Пример 4. Пусть Расчёт надёжности программных средств - student2.ru Определить среднее число испытаний программного обеспечения.

Решение.

Расчёт надёжности программных средств - student2.ru

Расчёт надёжности программных средств - student2.ru

Расчёт надёжности программных средств - student2.ru

Расчёт надёжности программных средств - student2.ru

2.3.5 Рекомендации по повышению надёжности программного обеспечения

Как было показано в 2.3.1 количество оставшихся в ПО ошибок В пропорционально объёму программы V. Уменьшение числа различных операций Расчёт надёжности программных средств - student2.ru и операндов Расчёт надёжности программных средств - student2.ru , от которых зависит объём программы, приводит к снижению числа переданных ошибок. Из примеров 1 и 2 ясно, что можно рекомендовать следующие способы снижения количества переданных ошибок и повышения надёжности ПО:

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

2. Программируемый алгоритм должен иметь «приведённый» вид, т.е. иметь минимальное количество констант. Этому способствуют операции выделения общего множителя, приведения подобных членов в алгебраических выражениях и т.п.

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

4. Необходимо стремиться к тому, чтобы обходиться минимальным набором команд при реализации алгоритма.

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

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

1) совершенствование технологии программирования;

2) выбор алгоритмов, не чувствительных к нарушениям вычислительного процесса (применение алгоритмической избыточности);

3) резервирование программ (создание структурной избыточности);

4) контроль и тестирование программ с последующей их коррекцией.

Контрольные вопросы:

1.Какая система имеет основное соединение элементов?

2.Как классифицируют методы расчёта надёжности при основном соединении элементов в системе?

3.Объясните суть метода «мажоритарного» резервирования.

4.Какие два метода структурного резервирования идентичны друг другу?

5.Перечислите способы преобразования сложных схем.

6.В каком методе резервирования используется интеграл Дюамеля?

7.Что такое «программная ошибка», «прогон программы»?

Наши рекомендации