1 Модели надежности программного и информационного обеспечения

1.5. Модели надежности программного и информационного обеспеченияНадежность является важным и естественным требованием, предъявляемым к качеству разрабатываемых программных и инфор­мационных компонентов АСОИУ. Теория надежности аппаратных средств АСОИУ разработана достаточно глубоко, поэтому при иссле­довании надежности программного и информационного обеспечения большинство методов используют идеи теории надежности техничес­ких средств. Это позволяет инженеру не только оценивать, но и про­гнозировать надежность программно-информационных продуктов. С точки зрения надежности между техническими устройствами и программными продуктами кроме несомненных аналогий имеются существенные различия. Так, небрежно написанный и отлаженный программный модуль, непродуманная схема технического устройства могут давать неправильные результаты уже на первых этапах тести­рования. Однако на этом сходство заканчивается. Дело в том, что любое, даже самое надежное, техническое устройство подвержено эксплуатационному износу и со временем начинает отказывать из-за старения. Программные же модули лишены подобных недостатков, и их надежность может в ходе эксплуатации только увеличиваться за счет устранения выявляемых ошибок. Поэтому теоретически может возникнуть ситуация, когда при тестировании программного модуля ошибки уже не будут обнаруживаться. В процессе анализа надежности программное и информационное обеспечение (ИО) можно рассматривать как подсистемы АСОИУ. Работоспособным называется такое состояние программного сред­ства, при котором оно способно выполнять заданные функции с па­раметрами, установленными требованиями технического задания. С переходом в неработоспособное состояние связано событие отказа. Причиной отказа программного средства является невозможность его полной проверки в процессе тестирования и испытаний. При эксплуатации программного средства в реальных условиях может возникнуть такая комбинация входных данных, которая вызовет от­каз. Следовательно, работоспособность программного средства зави­сит от входных данных, и чем меньше эта зависимость, тем выше уро­вень надежности. В общем случае отказы программного обеспечения определяются как отклонения от правильного хода выполнения программы вслед­ствие ошибок, допущенных в процессе преобразования исходного алгоритма в действующую программу. А ошибка — это регистрируемый пользователем факт неудовлетворенности качеством программы, причина дефекта системы программного обеспечения; и наоборот, дефект рассматривается как проявление допущенной ранее ошибки. Таким образом, надежность программного (и информационного) обес­печения можно определить как вероятность того, что отказ программно­го обеспечения, вызывающий отклонение получаемых результатов — выход их за допустимые пределы, не произойдет в течение заданно­го периода времени (при определенных условиях внешней среды). Следует иметь в виду, что не все отказы приводят к уменьшению надежности программного обеспечения, а только те, которые вызы­вают отклонение результата расчета от допустимых пределов. Под определенными условиями внешней среды обычно понимается со­стояние АСОИУ и описание входных данных в процессе выполне­ния программы. Состояние АСОИУ определяется в основном возмож­ностями вычислительных средств обработки и хранения информа­ции (например, объемом главной оперативной памяти) и зависит от требований к программному обеспечению в части его способности нормально функционировать при наличии отказов. Под способнос­тью подразумеваются свойства программного обеспечения, которые закладываются при его проектировании (например, возможность смены программ в памяти; возможность возобновления работ с не­которых контрольных точек и т. д.). В общем случае работа в услови­ях внешней среды, не предусмотренных техническим заданием и проектом программного обеспечения, приведет к снижению надеж­ности последнего.^ Временной факторпри расчете надежности учитывает время, необ­ходимое для вычислительного процесса решения той или иной зада­чи. Выделение определенного временного интервала для оценки ка­чества программного обеспечения, по-видимому, целесообразно для систем реального времени, в которых непредсказуемыми являются число расчетов по любой из действующих программ, состояние базы данных и моменты начала выполнения той или иной программы. Каж­дый раз перед повторным запуском программы необходимо либо вос­станавливать исходное состояние памяти, либо осуществлять серию последовательных просчетов программы, при которых определенным образом последовательно изменяется состояние базы данных.^ Модель надежности программного и информационного обеспечения—это математическая модель, построенная для оценки зависимости надеж­ности программного и информационного обеспечения от некоторых определенных параметров. Например, параметров, связанных с ка­кой-либо ветвью программы на подмножестве наборов входных дан­ных, с помощью которых эта ветвь контролируется. Или частоты ошибок, которая позволяет оценить качество систем реального вре­мени, функционирующих в непрерывном режиме, и при этом полу­чить косвенные данные о надежности программного и информаци­онного обеспечения. Известные модели надежности программного и информационно­го обеспечения АСОИУ можно классифицировать по различным признакам, в частности по тому, какой из перечисленных процессов они поддерживают (предсказывающие, прогнозные, оценивающие, измеряющие). Модели надежности, которые в качестве исходной информации используют данные об интервалах между отказами, мож­но отнести к измеряющим или к оценивающим в равной степени. Некоторые модели, основанные на информации, полученной в ходе тестирования программного средства, дают возможность делать про­гнозы его поведения в процессе эксплуатации. Аналитические модели позволяют рассчитать количественные показатели надежности, основываясь на данных о поведении про­граммы в процессе тестирования (измеряющие и оценивающие модели).^ Аналитические модели реализуются в виде динамических и стати­ческих. В динамических моделях надежности программно-информа­ционных средств поведение программы (появление отказов) рассмат-ривается во времени. В статических моделях появление отказов не связывают со временем, а учитывают только зависимость количества ошибок от числа тестовых прогонов (по области ошибок) или зави­симость количества ошибок от характеристики входных данных (по области данных). Именно аналитическим моделям уделено особое внимание в данном параграфе.^ Эмпирические модели базируются на анализе структурных особен­ностей программ. При разработке эмпирических моделей надежно­сти программного и информационного обеспечения предполагает­ся, что связь между надежностью и другими параметрами является статической. Эти модели рассматривают зависимость показателей надежности от числа межмодульных связей, количества циклов в модулях, отно­шения количества прямолинейных участков к количеству точек вет­вления и т. п. Иначе говоря, при разработке эмпирической модели стремятся иметь дело с такими параметрами, соответствующее изме­нение значений которых должно приводить к повышению надежно­сти программного и информационного обеспечения. Необходимо отметить, что нередко эмпирические модели не дают конечных ре­зультатов показателей надежности.^ Основные количественные показатели надежности программного и информационного обеспечения Для оценки надежности используются три группы показателей: качественные, порядковые и количественные. К основным количественным показателям надежности программ­ного средства относятся:^ Вероятность безотказной работы P(t3) — это вероятность того, что в пределах заданной наработки отказ системы не возникает. При этом под наработкой понимается продолжительность или объем работ. где t— случайное время работы программно-информационного обес­печения до отказа; t3— заданная наработка.Вероятность отказа — вероятность того, что в пределах заданной наработки отказ программно-информационной системы возникает. Это показатель, обратный предыдущему: гдеf(t)—плотностьвероятностиотказавмоментвремениL Связь между λ(t) и P(t) определяется следующим соотношением:^ Интенсивность отказов ПО и ИО системы λ( t) — это условная плот­ность вероятности возникновения отказа программного или инфор­мационного обеспечения в определенный момент времени при усло­вии, что до этого времени отказ не возник. В частном случае при λ ■ constЕсли в процессе тестирования фиксируется определенное число отказов за некоторый интервал времени, то интенсивность отказов системы λ(t) характеризует число отказов в единицу времени. где t— время работы программного или информационного обеспече­ния от (i -1 )-го до i -го отказа.^ Средняя наработка до отказа Т. — математическое ожидание време­ни работы программного или информационного обеспечения АСОИУ до очередного отказа. где ti— время работы программного средства между отказами; ι = 1, 2, …, n —количество отказов. Среднее время восстановления Ti — математическое ожидание времени восстановления (tвi), времени, затраченного на восстанов­ление и локализацию отказа (tолi), времени устранения отказа (iyoi), времени пропускной проверки работоспособности (tnni): Для этого показателя термин «время» означает время, затрачен­ное программистом на перечисленные виды работ.^ Коэффициент готовности Кi оценивается как вероятность того, что программное и информационное обеспечение АСОИУ будет нахо­диться в работоспособном состоянии в произвольный момент вре­мени его использования по назначению: Напомним, что работоспособным называется такое состояние программно-информационного обеспечения, при котором оно спо­собно выполнять заданные функции с параметрами, установленны­ми требованиями технического задания. С переходом в неработо­способное состояние связано событие отказа. Причиной отказа программного и информационного обеспечения является невозможность его полной проверки в процессе тестирова­ния и испытаний. При эксплуатации ПО и ИО в реальных условиях может возникнуть такая комбинация входных данных, которая мо­жет вызвать отказ. Следовательно, работоспособность рассматриваемых подсистем может зависеть и от значений входных данных. Причем чем меньше эта зависимость, тем выше уровень надежности подсистем АСОИУ. Основным средством определения количественных показателей надежности являются модели надежности, под которыми понимают математические модели, построенные для оценки зависимости на­дежности от заранее известных или оцененных в ходе создания про­граммного средства параметров. В связи с этим определение надеж­ности показателей принято рассматривать в единстве трех процес­сов — предсказание, измерение, оценивание.Предсказание — определение количественных показателей надеж­ности исходя из характеристик будущего программно-информацион­ного продукта.Измерение— определение количественных показателей надежнос­ти, основанное на анализе данных об интервалах между отказами, полученных при выполнении программных заданий в условиях тес­товых испытаний.Оценивание— определение количественных показателей надежно­сти, основанное на данных об интервалах между отказами, получен­ных в процессе испытания ПО и ИО АСОИУ в реальных условиях функционирования.^ Динамические модели Аналитическое моделирование надежности программного сред­ства включает четыре шага: определение предположений, связанных с процедурой тестиро­вания программного средства; разработку или выбор аналитической модели, базирующейся на предположениях о процедуре тестирования; • выбор параметров моделей с использованием полученных данных; • применение модели расчета количественных показателей надеж­ности. Аналитические модели представлены двумя группами: динамичес­кие и статические модели надежности. Наиболее известными дина­мическими моделями являются модели Шумана, La Padula, Джелин-ского-Моранды, Шика-Волвертона, Муса. К статическим относят модели Миллса, Липова, Коркорэна, Нельсона. В динамических моделях надежности программного средства по­ведение программы (появление отказов) рассматривается во време­ни. Для использования динамических моделей необходимо иметь данные о появлении отказов во времени. Рассмотрим некоторые из указанных выше динамических моделей.^ Модель Шумана относится к динамическим моделям дискретного времени, данные для которой собираются в процессе тестирования программного обеспечения в течение фиксированных или случайных интервалов времени. Каждый интервал — это стадия, на которой вы­полняется последовательность тестов и фиксируется некоторое чис­ло ошибок. Целесообразность применения модели Шумана для оценки надеж­ности программного и информационного обеспечения зависит от принятых допущений и условий, наиболее важным из которых явля­ется условие существования программы для исследования системы. Остальные допущения и условия не связаны с какими-либо специфи­ческими свойствами программного обеспечения. Они сводятся к сле­дующему. Предполагается, что в начальный момент компоновки программ­ных средств в системе имеется E1 ошибок. С этого момента начина­ется отсчет времени отладки t, которое включает затраты времени на выявление ошибок с помощью тестов, на контрольные проверки и т. п. При этом время исправного функционирования системы не учитывается. Считается, что значение функции частоты отказов m(t) пропор­ционально числу ошибок, оставшихся в программном обеспечении после использования отведенного на отладку исследуемой програм­мы времени L Программа тестирования системы должна снабжать испытывае­мые программные средства входными данными, отражающими ре­альные условия функционирования. Такие данные называются функ­циональным разрезом и определяются главным образом через рас­пределение вероятностей значений входных переменных. Использование модели Шумана предполагает, что тестирование проводится в несколько этапов. Каждый этап представляет собой выполнение программы на полном комплексе разработанных тесто­вых данных. Выявленные ошибки регистрируются (собирается ста­тистика об ошибках), но не исправляются. По завершении этапа на основе собранных данных о поведении программно-информацион­ной системы на очередном этапе тестирования может быть исполь­зована модель Шумана для расчета количественных показателей на­дежности. После этого исправляются ошибки, обнаруженные на пре­дыдущем этапе. При необходимости корректируются тестовые набо­ры и проводится новый этап тестирования. При использовании мо- дели Шумана предполагается, что исходное количество ошибок в про­грамме постоянно и в процессе тестирования может уменьшаться по мере того, как ошибки выявляются и исправляются. Считается, что но­вые ошибки при корректировке не вносятся. Скорость обнаружения ошибок пропорциональна числу оставшихся ошибок. Общее число про­граммных инструкций в рамках одного этапа тестирования постоянно. Положим, что до начала тестирования имеется Eiошибок. В тече­ние времени тестирования τ обнаруживается ξс ошибок в расчете на одну команду программы. Таким образом, удельное число ошибок на одну команду, оставших­ся в системе после τ времени тестирования, равно где Ii — общее число команд программы, которое предполагается по­стоянным в рамках одного этапа тестирования. Будем считать, что значение функции частоты отказов Z(t) про­порционально числу ошибок, оставшихся в программе после исполь­зования отведенного для тестирования времени τ: где С— некоторая постоянная; t—время работы программы без отказов. Тогда, если время работы программы без отказа готсчитывается от точки t = 0, а τ остается фиксированным, функция надежности, или вероятность безотказной работы в интервале от 0 до t, будет равна Необходимо найти начальное значение ошибок Ei и коэффициент пропорциональности С. В процессе тестирования собирается инфор­мация о времени и количестве ошибок на каждом прогоне, т. е. общее время тестирования τ складывается из времени каждого прогона: гдеАi— количествоошибокнаi-мпрогоне.Предполагая, что интенсивность появления ошибок постоянна и равна λ, можно вычислить ее как число ошибок в единицу времени: На основании приведенных выше уравнений получимИмея данные для двух различных моментов тестирования Ха и хь, которые выбираются произвольно при условии, что ξс(τa) > ξс(τb), мож­но записать следующие соотношения: Определив значения E1 и С, можно рассчитать надежность про­граммной или информационной системы.Модель La Padula. По этой модели выполнение последовательнос­ти тестов производится за т этапов. Каждый этап заканчивается вне­сением изменений (исправлений) в тестируемую программу. Возрас­тающая функция надежности базируется на числе ошибок, обнару­женных в ходе каждого тестового прогона. Надежность тестируемой программы в течение i-го этапа опреде­ляется соотношением где А — параметр роста. Теоретически при бесконечном числе прогонов программы она будет обладать предельной надежностью R(°°): Модель является прогнозной и на основании данных тестирова­ния позволяет предсказать вероятность безотказной работы програм­мы на последующих этапах ее выполнения. Модель Джелинского-Моранды относится к динамическим моделям непрерывного времени. Исходные данные для ее использования со­бираются в процессе тестирования программной системы. При этом фиксируется время до очередного отказа. Особенностью данной мо­дели является то, что значение интервалов времени тестирования между обнаружением двух ошибок имеет экспоненциальное распре­деление с частотой ошибок (или интенсивностью отказов), пропор­циональной числу еще не выявленных ошибок. Каждая обнаружен­ная ошибка устраняется. При этом число оставшихся ошибок умень­шается на единицу. Здесь λ. — частота отказов (интенсивность отказов), которая про­порциональна числу еще не выявленных ошибок в программе:Функция плотности распределения времени обнаружения i-й ошибки, отсчитываемого от момента выявления (ί- 1)-й ошибки, имеет вид где ^ N- число ошибок, первоначально присутствующих в программе; С— коэффициент пропорциональности. Рассчитав значение λi можно определить вероятность безотказ­ной работы в различных временных интервалах. На основе получен­ных расчетных данных строится график зависимости вероятности безотказной работы от времени.Модель Шика-Волвертона. Модификация модели Джелинского-Моранды для случая возникновения в рассматриваемом интервале более одной ошибки предложена Волвертоном и Шиком. При этом считается, что исправление ошибок производится лишь по истече­нии интервала времени, в котором они возникли. В основе модели Шика—Волвертона лежит предположение, согласно которому часто­та ошибок пропорциональна не только количеству ошибок в програм­мах, но и времени тестирования, т. е. вероятность обнаружения оши­бок с течением времени возрастает. Частота ошибок (интенсивность обнаружения ошибок) λi предполагается постоянной в течение ин­тервала времени ti и пропорциональна числу ошибок, оставшихся в программе по истечении (i – 1)-го интервала. Но она также пропор­циональна и суммарному времени, уже затраченному на тестирова­ние (включая среднее время выполнения программы в текущем ин­тервале): X1=C(N-W14)(^1+ί,./2). В данной модели наблюдаемым событием является число ошибок, обнаруживаемых в заданном временном интервале, а не время ожи­дания каждой ошибки, как это было для модели Джелинского—Mo-ранды. В связи с этим модель относят к группе дискретных динами­ческих моделей.^ Модель Муса относят к динамическим моделям непрерывного вре­мени. Это значит, что в процессе тестирования фиксируется время выполнения программы (тестового прогона) до очередного отказа. Но считается, что не всякая ошибка программы может вызвать от­каз. Поэтому допускается обнаружение более одной ошибки при вы­полнении программы до возникновения очередного отказа. Предполагается, что на протяжении всего жизненного цикла про­цесса выполнения программы может произойти M0 отказов и при этом будут выявлены все N0 ошибок, которые присутствовали в про­грамме до начала тестирования. Общее число отказов M0 связано с первоначальным числом ошибок N0 соотношениемN0 = BM0, где В — коэффициент уменьшения числа ошибок. Положим, что после проведения тестирования, на которое потра­чено определенное время ί, зафиксировано т отказов и выявлено η ошибок. Тогда из соотношенияп=Bτ можно определить коэффициент уменьшения числа ошибок Bτ как число, характеризующее количество устраненных ошибок, приходя­щихся на один отказ. В модели Муса различают два вида времени: суммарное время функционирования х, которое учитывает чис­тое время тестирования до контрольного момента, когда производит­ся оценка надежности; оперативное время t— время выполнения программы, планиру­емое от контрольного момента и далее, при условии, что дальнейше­го устранения ошибок не будет (время безотказной работы в процес­се эксплуатации). Для суммарного времени функционирования τ предполагается: • интенсивность отказов пропорциональна числу неустраненных ошибок; • скорость изменения числа устраненных ошибок, измеряемая от­носительно суммарного времени функционирования, пропорцио­нальна интенсивности отказов. Один из основных показателей надежности, который рассчиты­вается по модели Муса, — средняя наработка на отказ. Этот показа­тель определяется как математическое ожидание временного интер­вала между последовательными отказами и связан с надежностью сле­дующим уравнением: где t— время работы до отказа. Если интенсивность отказов постоянна (т. е. длительность интер­валов между последовательными отказами имеет экспоненциальное распределение), то средняя наработка на отказ обратно пропорцио­нальна интенсивности отказов. По модели Муса средняя наработка на отказ зависит от суммарного времени функционирования τ: где T0 — средняя наработка на отказ в начале испытаний (тестирова­ния); С— коэффициент сжатия тестов, который вводится для устра­нения избыточности при тестировании. Например, если 1 ч тести­рования соответствует 12 ч работы в реальных условиях, то коэффи­циент сжатия тестов равен 12. Параметр T (средняя наработка на отказ до начала тестирования) можно рассчитать с помощью соотношения где f— средняя скорость исполнения программы, отнесенная к числу операторов; К— коэффициент проявления ошибок, связывающий ча­стоту возникновения ошибок со «скоростью ошибок» (скорость, с ко­торой бы встречались ошибки программы, если бы программа выпол­нялась линейно-последовательно по командам), значение /Сопределя-ют эмпирическим путем по однотипным программам, оно лежит в пре­делах от 1,54 10-7 до 3,99 · 10-7; N0- начальное число ошибок, которое можно рассчитать с помощью другой модели, позволяющей опреде­лить эту величину на основе статистических данных, полученных при тестировании (например, с помощью модели Шумана). Надежность R для оперативного периода τ выражается равенством В литературе указывается, что практическое использование рас­сматриваемой модели требует громоздких вычислений и делает не­обходимым наличие ее программной поддержки.^ Статические модели надежностиСтатические модели принципиально отличаются от динамичес­ких прежде всего тем, что в них не учитывается время появления ошибок в процессе тестирования. Этот тип моделей учитывает толь­ко статистические характеристики появления ошибок.Модель Миллса. Использование этой модели предполагает внесе­ние в программу некоторого количества известных ошибок. Они вно­сятся случайным образом и фиксируются в протоколе искусственных ошибок. Специалист, проводящий тестирование, не знает ни коли­чества, ни характера внесенных ошибок до момента оценки показа­телей надежности по модели Миллса. Предполагается, что все ошиб­ки (как имеющиеся в исследуемой программе, так и искусственно внесенные) имеют равную вероятность быть найденными в процес­се тестирования. Тестируя программу в течение некоторого време­ни, собирают статистику об ошибках. В момент оценки надежности по протоколу искусственных ошибок все ошибки делятся на ошибки собственно программы и искусственные. С помощью соотношения (формулы Миллса) можно оценить первоначальное число ошибок в программе (N). Здесь S- количество искусственно внесенных ошибок, η — число найден­ных собственных ошибок, V— число обнаруженных к моменту оцен­ки искусственных ошибок. Например, если в программу внесено дополнительно 50 ошибок и к некоторому моменту тестирования обнаружено 25 собственных и 5 внесенных, то по формуле Миллса делается предположение, что пер­воначально в программе было 250 ошибок. Вторая часть модели связана с проверкой гипотезы об оценке пер­воначального числа ошибок Nb программе. Допустим, что в програм­ме имеется Л” собственных ошибок. Внесем в нее еще S ошибок. Положим, что в процессе тестирования были обнаружены все S внесенных и л собственных ошибок программы. Тогда по формуле Миллса получим, что первоначально в программе было N= n оши­бок. Вероятность, с которой можно высказать такое предположение, рассчитывается с помощью следующих соотношений: Величина С является мерой «доверия» к модели и показывает ве­роятность того, насколько правильно найдено значение N. Эти два связанных между собой по смыслу соотношения образуют полезную модель ошибок: первое предсказывает возможное число первоначаль­но имевшихся в программе ошибок, а второе используется для уста­новления доверительного уровня прогноза. Однако приведенная выше формула для расчета С не может быть использована, если не обнаружены все внесенные ошибки. где числитель и знаменатель при n Если оценка надежности производится до момента обнаружения всех внесенных ошибок (S), величина С рассчитывается по модифи­цированной формуле: В реальной практике модель Миллса можно использовать для оцен­ки N после каждой найденной ошибки. Предлагается во время всего периода тестирования отвечать на графике число найденных оши­бок и текущие значения N К достоинствам модели относят простоту применяемого матема­тического аппарата, наглядность и возможность использования в процессе тестирования. Самым существенным недостатком считают необходимость вне­сения искусственных ошибок (этот процесс плохо формализуем) и достаточно вольное допущение величины К, которое основывается исключительно на интуиции и опыте испытателя, проводящего оцен­ку, т. е. допускает большое влияние субъективного фактора.Модель Липова. Липов модифицировал модель Миллса, рассмот­рев вероятность обнаружения ошибки при использовании различно­го числа тестов. Если сделать то же предположение, что и в модели Миллса, т. е. что собственные и внесенные ошибки имеют равную вероятность быть найденными, то вероятность обнаружения n соб­ственных и Vвнесенных ошибок может быть определена с помощью соотношения где т — количество тестов, используемых при тестировании; q— ве­роятность обнаружения ошибки в каждом из т тестов, рассчитан­ная по формуле; S- общее количество внесенных ошибок; N— коли­чество собственных ошибок, имеющихся в программе до начала те­стирования. Оценки максимального правдоподобия (наиболее вероятное зна­чение) для N осуществляются с помощью соотношенийДля использования модели Липова должны выполняться следую­щие условия: Модель Липова дополняет модель Миллса, позволяя оценить ве­роятность обнаружения определенного количества ошибок к момен­ту оценки.Модель Коркорэна относится к статическим моделям надежности ПО, так как в ней не используются параметры времени тестирова­ния, а учитывается только результат N испытаний, в которых выяв­лено Niошибок i-ro типа. Применение модели предполагает знание следующих ее показа­телей: модель содержит изменяющуюся вероятность отказов для раз­личных источников ошибок и соответственно разную вероятность их исправления; в модели используются такие параметры, как результат Nиспы­таний, в которых наблюдается Ni ошибок г-го типа; обнаруженные в ходе ^испытаний ошибки г-го типа появляются с вероятностью аi Показатель уровня надежности R вычисляют по формуле где N0 — число безотказных (или безуспешных) испытаний, выпол­ненных в серии из ^испытаний; к— известное число типов ошибок; Y— вероятность появления ошибок: при N>0 Y. = аi при N = 0 У>0. Отметим, что в данной модели вероятность а. оценивается на ос­новании априорной информации или данных предшествующего пе­риода функционирования однотипных программных средств.Модель Нельсона создана в аэрокосмической компании США TRW. При расчете надежности программно-информационного обеспече­ния учитывается вероятность выбора определенного тестового на­бора для очередного выполнения программы. Для описания модели вводятся следующие обозначения. Совокупность действий, включающая ввод Еi выполнение про­граммы и получение результата F'(E), называется прогоном програм­мы. При этом значения входных переменных, образующих Eiне дол­жны одновременно подаваться на вход программ. Таким образом, вероятность (P) того, что прогон программы приведет к обнаруже­нию дефекта, равна вероятности того, что набор данных Eiисполь­зуемый в прогоне, принадлежит множеству Ei. Если обозначить через пе число различных наборов входных дан­ных, содержащихся в Е. то есть вероятность того, что прогон программы на наборе входных данных Ei случайно выбранном из E среди равновероятных, закон­чится обнаружением дефекта. Однако в процессе функционирования программы выбор входных данных из E обычно осуществляется не с одинаковыми априорными вероятностями, а диктуется определенными условиями работы. Эти условия характеризуются некоторым распределением вероятностей (р) того, каким будет выбран определенный набор входных данных Ei Распределение ^ P может быть найдено через р. с помощью величи­ны у., которая принимает значение О, если прогон программы на набо­ре £ заканчивается получением приемлемого результата, и значение 1, если этот прогон заканчивается обнаружением дефекта. Поэтому есть вероятность того, что прогон программы на наборе входных данных Ei, выбранных случайно с распределением вероятностей рi, закончится обнаружением дефекта. При этом есть вероятность того, что прогон программы на наборе входных данных Ei выбранных случайно с распределением вероятностей рi, приведет к получению приемлемого результата. Так как ^ R- вероятность того, что единичный прогон программы не закончится отказом на наборе входных данных, выбранных в со­ответствии с распределением рi то вероятность успешного выполне­ния n прогонов этой программы при независимом для каждого про­гона выборе входных данных в соответствии с распределением Рбу-дет равна Таким образом, можно дать следующее математическое определе­ние надежности программы: надежность программы – это вероятность безотказного выполнения n прогонов программы. Поэтому прогон являет­ся единичным испытанием программы. На практике выбор входных данных для каждого прогона нельзя считать независимым. Исключение составляют лишь такие последо­вательности прогонов, которые определяются возрастающими зна­чениями некоторой входной переменной или некоторым порядком установленных процедур, как в случае программ, работающих в ре­альном масштабе времени. С учетом введенного определения функциональный разрез дол­жен быть переопределен в терминах вероятностей р выбора £ в ка­честве входных данных при j-м прогоне из некоторой последователь­ности прогонов. Тогда вероятность того, что j-й прогон закончится отказом, может быть записана в виде Надежность R(n) программы равна вероятности того, что в после­довательности из η прогонов ни один из них не закончится отказом: Этаформуламожетбытьпредставленаввиде Некоторые свойства функции R(n) могут стать более явными при следующих допущениях: дляРj еслиРj=Pдлявcexj,то С помощью соответствующих замен переменных и подстановок можно выразить функцию R(п) через время функционирования tОбо­значим через Δt время выполнения j-гo прогона, а через ΣΔti – суммарное время выполнения первых jпрогонов программы. Введем h(t)\ В случае Рj Тогда На практике вероятность выбора очередного набора данных для прогона (Pi) определяется путем разбиения всего множества значе­ний входных данных на подмножества и нахождения вероятностей того, что выбранный для очередного прогона набор данных будет принадлежать конкретному подмножеству. Определение этих веро­ятностей основано на эмпирической оценке вероятности появления тех или иных входов в реальных условиях функционирования. Поскольку в основу модели Нельсона положены свойства про­граммного обеспечения, она допускает развитие за счет более деталь­ного описания других аспектов надежности. Некоторые из получен­ных обобщений модели могут рассматриваться в контексте исследо­вания проблемы безопасности программ. Вследствие отмеченных особенностей модели ее можно рассматривать в целом как математи­ческую теорию надежности программного и информационного обес­печения, а не как простую модель надежности.^ Эмпирические модели надежности Эмпирические модели в основном базируются на структурном анализе особенностей программы или программного обеспечения в целом. Они часто не дают конкретных значений параметров надеж­ности программы. Однако их использование считается полезным на этапе проектирования программ для прогнозирования ресурсов тес­тирования и т. д.Модель сложности. В литературе неоднократно подчеркивается тес­ная взаимосвязь между сложностью и надежностью ПО. Если придер­живаться упрощенного понимания сложности ПО, то она может быть описана такими характеристиками, как размер ПО (количество про­граммных модулей), количество и сложность межмодульных интер­фейсов и т. д. Под программным модулем в данном случае понимается программ­ная единица, выполняющая определенную функцию (ввод, вывод, вычисление и т. д.) и взаимосвязанная с другими модулями ПО. Слож­ность модуля ПО может быть описана, если рассматривать структуру программы как последовательность узлов, дуг и петель в виде направ­ленного графа.Некоторые базовые понятия для определения характеристик сложности даны в табл. 1.2. В качестве структурных характеристик модуля ПО или програм­мы и