Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PGTU / 5 семестр / Надежность / Nadezhnost_4-ya_redaktsia.doc
Скачиваний:
336
Добавлен:
29.03.2015
Размер:
12.07 Mб
Скачать

3.4.4. Простые интуитивные модели

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

Первый из них – метод независимого тестирования. Он предлагает начинать тестирование двумя совершенно независимыми группами, ис­пользующими независимые наборы тестов. Этим двум группам (или двум сотрудникам – в зависимости от размеров проекта) в течение некоторого времени позволяется тестировать систему параллельно, а затем их резуль­таты собирают и сравнивают. Обозначим через N1 иN2 число оши­бок, об­наруженных каждой из групп соответственно, а черезN12 – число ошибок, обнаруженных дважды (т.е. обеими группами). Это отношение изображено на рис. 3.7.

Пусть Nобозначает неизвестное полное число ошибок в про­грамме. Можно установить эффективность тестирования каждой из групп:E1=N1/N, E2=N2/N. Предполагая, что возможность обнаружения для всех ошибок одинакова (что справедливо далеко не для всех программ), мы можем рассматривать каждое под множество пространстваN как аппрок­симацию всего пространства. Если первая группа обнаружила 10 % всех ошибок, она должна была найти примерно 10 % всякого случайным обра­зом выбранного подмножества, например подмножестваN2. Отсюда

E1 = (N1/N)= (N12/N2).

Выполняя подстановку для N2, получаем

E1=N12/(E2·N)

и

(3.7)

N12 известно, аЕ1 иЕ2 можно оценить какN12/N2 иN12/N1 соот­ветст­венно, откуда мы получаем приближение дляN.

Рис. 3.7. Множества ошибок, обнаруженных на независимых тестах

Например, предположим, что две группы нашли по 20 и 30 ошибок соответственно, и, сравнивая их, мы замечаем, что восемь ошибок из них –общие. Имеем E1= 0,27,E2= 0,4, что дает, оценкуN = 74 и примерно 32 необ­наруженные ошибки (74 – 20 – 30 + 8).

Второй метод (вероятно, самый простой) – метод накопления стати­стики. Он строит оценки, основываясь на исторических данных, в частно­сти на сред­нем числе ошибок, приходящемся на один оператор в преды­дущих проектах. В литературе сведения о частоте ошибок программистов довольно немногочисленны, но на основании имеющихся данных пред­ставляется, что в среднем по «отрасли» на каждую тысячу опе­раторов про­граммы после автономного тестирования остается при­мерно 10 ошибок. Таким образом, если нет более точных данных, можно предположить, что в программе из 32 000 операторов после автономного тестирования еще остается 320 ошибок. Интенсивность отказов из-за одной ошибки при не­прерывном использовании программы составляет в среднем 10–41/ч.

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

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

Соседние файлы в папке Надежность