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

Автор: Пользователь скрыл имя, 27 Декабря 2011 в 22:52, реферат

Описание работы

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

Содержание

ВВЕДЕНИЕ 3
1. Свойства надежности программного обеспечения 4
2. Модели оценки надежности программ 6
2.1. Модель Джелински-Моранды 6
2.2. Модель Шумана 7
2.3. Модель Миллса 7
3. Методы обеспечения надежности программных средств 8
4. Подход к обеспечению надежности №1 - предупреждение ошибок 10
4.1. Методы борьбы со сложностью 10
4.2. Обеспечение точности перевода 10
4.3. Преодоление барьера между пользователем и разработчиком 11
4.4. Контроль принимаемых решений 11
5. Подход к обеспечению надежности №2 - обнаружение и исправление ошибок 12
6. Подход к обеспечению надежности №3 - обеспечение устойчивости программы к ошибкам 16
ЗАКЛЮЧЕНИЕ 18
СПИСОК ИСПОЛЬЗОВАНОЙ ЛИТЕРАТУРЫ 19

Работа содержит 1 файл

реферат.doc

— 108.50 Кб (Скачать)

Содержание:

ВВЕДЕНИЕ            3

1. Свойства надежности программного обеспечения      4

2. Модели оценки надежности программ        6

      2.1. Модель Джелински-Моранды        6

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

      2.3. Модель Миллса          7

3. Методы обеспечения надежности программных средств     8

4. Подход к обеспечению надежности №1  - предупреждение ошибок                                 10

      4.1. Методы борьбы со сложностью                                                                         10

     4.2. Обеспечение точности перевода                                                                            10

     4.3. Преодоление барьера между пользователем и разработчиком                            11

     4.4. Контроль принимаемых решений                                                                           11

5. Подход к обеспечению надежности №2  - обнаружение и исправление ошибок          12

6. Подход к обеспечению надежности №3  - обеспечение устойчивости программы к ошибкам                     16

ЗАКЛЮЧЕНИЕ                                                                                                                           18

СПИСОК ИСПОЛЬЗОВАНОЙ  ЛИТЕРАТУРЫ                19  

  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

     Введение

     Программное обеспечение - согласно ГОСТ 19781-90 - совокупность программ системы обработки информации и программных документов, необходимых для их эксплуатации.

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

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

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

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

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

1. Свойства надежности программного обеспечения 

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

  • Зрелость, завершенность (обратна к частоте отказов) (maturity)
  • Устойчивость к отказам (fault tolerance)
  • Способность к восстановлению работоспособности при отказах (recoverability)
  • Соответствие стандартам надежности (reliability compliance, добавлен в 2001)
 

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

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

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

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

    Эргатический  отказ возникает из-за ошибки персонала (например, оператора) и искажает результат  работы программы. 

Выделяют два  типа устойчивости:

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

2. Модели оценки надежности программ 

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

  • случайное время между двумя последовательными отказами, которое имеет функцию плотности распределения f(t/li) появления ошибок;
  • число оставшихся ошибок в программе.
 

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

     Самой известной моделью надежности является модель Джелински-Моранды, опирающая на модели надежности аппаратуры.

     Пусть R(t) - функция надежности, т.е. вероятность  того, что ни одна ошибка не появится в интервале от 0 до t. F(t)=1-R(t) - функция отказов. Соответственно плотность вероятности f(t)=-dR(t)/dt.

     Вводится  функция риска z(t) - условная вероятность того, что ошибка появится на интервале от t до t+Dt, при условии, что до момента t ошибок не было. По аналогии z(t)=f(t)/R(t) и R(t) = exp ( -∫ z(x)dx), а среднее время между отказами интеграл от 0 до ¥ от функции R(t).

     Основной  такой модели является уточнение  поведения функции z(t). При оценке надежности аппаратуры аналогичный  параметр – интенсивность, равный константе. Однако предположение о постоянстве  функции риска представляется не соответствующим реальности в случае программного обеспечения, так как по мере обнаружения и исправления ошибок, время между сбоями увеличивается.

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

     Второе  предположение z(t) - прямо пропорциональна  числу оставшихся ошибок, z(t)=K(N-i), где N - неизвестное первоначальное число ошибок, i - число обнаруженных ошибок,  K - некоторая неизвестная константа. Каждый раз, когда ошибка обнаруживается (модель предполагает, что задержка между обнаружением ошибки и ее исправлением отсутствует) z(t) уменьшается на некоторую величину К.

     Дальнейшая  проработка этой модели - Модель Шумана  
 

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

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

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

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

     На  основании полученных для каждого  этапа времен и кол-ва ошибок рассчитываются параметры функции риска.

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

2.3. Модель Миллса

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

     Предположим, что в программу внесено s ошибок, после чего начато тестирование. При тестировании обнаружено  n - число собственных ошибок,  v -  число найденных внесенных. Тогда N=sn/v.

     Далее решается задача проверки гипотезы об N, (насколько полученное значение соответствует реальному по данному кол-ву внесенных ошибок). Тестирование проводится до обнаружения всех внесенных ошибок. Уровень значимости (мера доверия к модели) определяется: С=s/(s+k+1), k - кол-во обнаруженных собственных ошибок. 
 

Информация о работе Методы оценки и повышения надежности программного обеспечения