Динамические модели надежности программного обеспечения

Реферат по дисциплине: «Методология и качество сертификации программного обеспечения» на тему: «Динамические  модели надежности программного обеспечения»

 

 

 

 

 

 

РЕФЕРАТ

По дисциплине: «Метрология и качество сертификации программного обеспечения»

Тема:

«Динамические модели надежности программного обеспечения»

 

 

 

 

 

 

 

 

Выполнил:______________________

Проверил:______________________

 

 

 

 

 

 

 

2013 г.

СОДЕРЖАНИЕ

 

ВВЕДЕНИЕ

  1. Понятие модели надежности программного обеспечения
  2. Динамические модели надежности программного обеспечения
    1. Модель Шика-Волвертона
    2. Модель Муса
    3. Модель Шумана
    4. Модель La Padula
    5. Модель Джелинского-Моранда

ЗАКЛЮЧЕНИЕ

СПИСОК ЛИТЕРАТУРЫ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ВВЕДЕНИЕ

 

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

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

Этот показатель определяется вероятностью безотказной работы программного обеспечения  за заданный период времени.

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

- безотказность – здесь имеется  в виду возможность выполнения  возложенных на программу функций  на время эксплуатации;

- работоспособность – рассматривается  корректность и адекватность работы программного обеспечения на заданный период времени.

- безопасность – учитывается  влияние программного обеспечения  на человека и окружающую среду;

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

Темой данного реферата является именно определение надежности программного обеспечения с применением моделей  надежности.

Кроме того, тематика реферата подразумевает  знакомство с особенностями динамических моделей  надежности программного обеспечения, специфики их расчета. Помимо теоритических  основ, нужно привести расчетные  данные в виде формул и их объяснения, для того, чтобы полностью разобраться  в построении той или иной модели. Сравнение моделей между собой  позволит выбрать оптимальный вариант  для исследования и постановки оценки программному обеспечению.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. Понятие модели надежности программного обеспечения

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

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

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

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

Модели надежности программного обеспечения  можно представить в виде классификации  или подразделения на две основные группы – это аналитические и  эмпирические модели.

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

Аналитические модели так же можно  разделить на две основные группы, представителями которой считаются  динамические и статические модели.

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

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

В современных условиях, условиях жесткой конкуренции, очень важно  гарантировать высокое качество процесса конструирования ПО. Такую гарантию дает сертификат качества процесса, подтверждающий его соответствие принятым международным стандартам. Каждый такой стандарт фиксирует свою модель обеспечения качества. Наиболее авторитетны модели стандартов ISO 9001:2000, ISO/IЕС 15504 и модель зрелости процесса конструирования ПО  - СММ.  Института программной инженерии при американском университете Карнеги-Меллон.

Модель стандарта ISO 9001:2000 ориентирована на процессы разработки из любых областей человеческой деятельности. Стандарт ISO/IEC 15504 специализируется на процессах программной разработки и отличается более высоким уровнем детализации. Достаточно сказать, что объем этого стандарта превышает 500 страниц. Значительная часть идей  ISO/IEC 15504 взята из модели СММ.

Базовым понятием модели СММ считается  зрелость компании. Незрелой называют компанию, где процесс конструирования ПО и принимаемые решения зависят только от таланта конкретных разработчиков. Как следствие, здесь высока вероятность превышения бюджета или срыва сроков окончания проекта.

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

 

  1. Динамические модели надежности программного обеспечения

 

Аналитическое моделирование надежности программного средства включает четыре шага:

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

• выбор параметров моделей с  использованием полученных данных; 
          • применение модели расчета количественных показателей надежности.

Аналитические модели представлены двумя  группами: динамические и статические  модели надежности. Наиболее известными динамическими моделями являются модели Шумана, La Padula, Джелин-ского-Моранды, Шика-Волвертона, Муса.

В динамических моделях надежности программного средства поведение программы (появление отказов) рассматривается во времени. Для использования динамических моделей необходимо иметь данные о появлении отказов во времени.

 

    1. Динамическая модель Шика-Волвертона

Модификация модели Джелинского-Моранды для случая возникновения на рассматриваемом интервале более одной ошибки предложена Волвертоном и Шиком. При этом считается, что исправление ошибок производится лишь после истечения интервала времени, на котором они возникли. В основе модели Шика - Волвертона лежит предположение, «согласно которому частота ошибок пропорциональна не только количеству ошибок в программах, но и времени тестирования, т.е. вероятность обнаружения ошибок с течением времени возрастает. Частота ошибок (интенсивность обнаружения ошибок) предполагается постоянной в течение интервала времени ti и пропорциональна числу ошибок, оставшихся в программе по истечении (i-1)-го интервала; но она пропорциональна также и суммарному времени, уже затраченному на тестирование (включая среднее время выполнения программы в текущем интервале).

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

Модификация модели Джелинского-Моранды для случая возникновения в рассматриваемом интервале более одной ошибки предложена Волвертоном и Шиком. При этом считается, что исправление ошибок производится лишь по истечении интервала времени, в котором они возникли. В основе модели Шика—Волвертона лежит предположение, согласно которому частота ошибок пропорциональна не только количеству ошибок в программах, но и времени тестирования, т. е. вероятность обнаружения ошибок с течением времени возрастает. Частота ошибок (интенсивность обнаружения ошибок) λi предполагается постоянной в течение интервала времени ti и пропорциональна числу ошибок, оставшихся в программе по истечении (i - 1)-го интервала. Но она также пропорциональна и суммарному времени, уже затраченному на тестирование (включая среднее время выполнения программы в текущем интервале):

X1=C(N-W14)(^1+ί,./2).

В данной модели наблюдаемым событием является число возникших нарушений, анализируемых в заданном временном интервале, а не время ожидания каждого такого случая или ошибки, как это было для модели Джелинского—Moранды. В связи с этим модель относят к группе дискретных динамических моделей.

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

N0 = BM0,

где В — коэффициент уменьшения числа ошибок.

Положим, что после проведения тестирования, на которое потрачено определенное время ί, зафиксировано т отказов и выявлено η ошибок.

Тогда из соотношения

п=Bτ

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

 

    1. Модель Муса

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

В модели Муса различают два вида времени:

1) суммарное время функционирования  т, которое учитывает 
чистое время тестирования до контрольного момента, когда проводится оценка надежности;

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

Для суммарного времени функционирования  предполагается:

  • интенсивность отказов пропорциональна числу не устранённых ошибок;
  • скорость изменения числа устраненных ошибок, измеряемая относительно суммарного времени функционирования, пропорциональна интенсивности отказов.

Один из основных показателей надежности, который рассчитывается по модели Муса — средняя наработка на отказ. Этот показатель определяется как математическое ожидание временного интервала между последовательными отказами и связан с надежностью следующим уравнением:

 
где t— время работы до отказа.

Если интенсивность отказов  постоянна (т. е. длительность интервалов между последовательными отказами имеет экспоненциальное распределение), то средняя наработка на отказ  обратно пропорциональна интенсивности  отказов. По модели Муса средняя наработка  на отказ зависит от суммарного времени  функционирования τ:

T = T0 exp (Cτ/M0T0)

где T0 — средняя наработка на отказ в начале испытаний (тестирования); С— коэффициент сжатия тестов, который вводится для устранения избыточности при тестировании. Например, если 1 ч тестирования соответствует 12 ч работы в реальных условиях, то коэффициент сжатия тестов равен 12.

Параметр T (средняя наработка на отказ до начала тестирования) можно рассчитать с помощью соотношения

T0 = 1/fKN0

где f— средняя скорость исполнения программы, отнесенная к числу операторов; К— коэффициент проявления ошибок, связывающий частоту возникновения ошибок со «скоростью ошибок» (скорость, с которой бы встречались ошибки программы, если бы программа выполнялась линейно-последовательно по командам), значение

Сопределяют эмпирическим путем по однотипным программам, оно лежит в пределах от 1,54 10-7 до 3,99 · 10-7; N0- начальное число ошибок, которое можно рассчитать с помощью другой модели, позволяющей определить эту величину на основе статистических данных, полученных при  тестировании (например, с помощью модели Шумана). Надежность R для оперативного периода τ выражается равенством

R = exp (- τ/T)

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

 

    1. Модель Шумана

 

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

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

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

Считается, что значение функции  частоты отказов m(t) пропорционально числу ошибок, оставшихся в программном обеспечении после использования отведенного на отладку исследуемой программы времени L

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

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

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

Положим, что до начала тестирования имеется Ei ошибок. В течение времени тестирования τ обнаруживается ξс ошибок в расчете на одну команду программы.

Таким образом, удельное число ошибок на одну команду, оставшихся в системе  после τ времени тестирования, равно

ετ(τ) = (Et/Itc(τ)

 
где Ii — общее число команд программы, которое предполагается постоянным в рамках одного этапа тестирования.

Будем считать, что значение функции  частоты отказов Z(t) пропорционально числу ошибок, оставшихся в программе после использования отведенного для тестирования времени τ:

Z (t) = Cεi(τ)

где С— некоторая постоянная; t—время работы программы без отказов.

Тогда, если время работы программы  без отказа рассчитывается от точки t = 0, а τ остается неизменным, функция надежности, или вероятность безотказной работы в интервале от 0 до t, будет равна

R(t, τ) = exp {-C[Et/It – εt(τ)]t}

tср = 1/{C[Et/It – εc(τ)]}

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

τ = τ1 + τ2 + τ3 + …+ τn

где Аi — количество ошибок на i-м прогоне

Предполагая, что скорость и частота появления ошибок постоянна и равна λ, можно вычислить их как число ошибок во временном диапазоне:  

Имея данные для двух различных  моментов тестирования Ха и хь, которые выбираются произвольно при условии, что ξсa) > ξсb), можно записать следующие соотношения:

 

 

 

 

 

 

 

 

Определив значения E1 и С, можно рассчитать надежность программной или информационной системы.

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

 

    1. Модель La Padula

 

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

Надежность тестируемой программы в течение i-го этапа определяется соотношением

R(t) = R (∞) - A/i, i= 1, 2, 3, …, m

 где А — параметр роста. Теоретически при бесконечном числе прогонов программы она будет обладать предельной надежностью R(°°):

R(t) → R(∞) при i → ∞

Модель является прогнозной и на основании данных тестирования позволяет  предсказать вероятность безотказной  работы программы на последующих  этапах ее выполнения.

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

 

    1. Модель Джелинского-Моранда

 

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

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

 

Здесь λ. — частота отказов (интенсивность  отказов), которая пропорциональна числу еще не выявленных ошибок в программе:

 
Функция плотности распределения  времени обнаружения i-й ошибки, отсчитываемого от момента выявления (ί- 1)-й ошибки, имеет вид  
где N- число ошибок, первоначально присутствующих в программе;

С— коэффициент пропорциональности. Рассчитав показатель λi, появляется возможность рассчитать вероятность безотказности программного обеспечения в разных временных интервалах. Основополагаясь на полученные расчетные данные нужно построить диаграмму зависимости вероятности безотказной работы от затраченного времени.

 

 

 

 

ЗАКЛЮЧЕНИЕ

 

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

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

Динамические модели надежности программного обеспечения