Смекни!
smekni.com

Разработка программно–алгоритмических средств для определения надёжности программного обеспечения на основании моделирования работы системы типа "клиент–сервер" (стр. 13 из 13)

Пусть Mi – число модулей i–ой (новой) версии. Из них

СИМi – число измененных по отношению к предыдущей версии модулей,

НМi – число новых модулей (то есть Мi = Мi–1 + НМi),

МИМi – число многократно измененных и исправленных модулей (10 и более раз),

ИМi – число модулей, в которые внесено менее 10 изменений.

Из практики сопровождения OS/360 и создания ее новых версий были выявлены следующие зависимости:

ИМi = 0,9 × НМi + 0,15 × СИМi

МИМi = 0,15 × ИМi + 0,06 × СИМi.

Число ожидаемых ошибок равно:

N = 23 × МИМi + 2 × ИМi .

Основные выводы, следующие из модели IBM, таковы:

количество ожидаемых ошибок в следующей версии может увеличиться по сравнению со старой версией, если будет изменено достаточно большое количество старых модулей (СИМ) и/или будет введено достаточно большое количество новых модулей (НМ). Поэтому перед выпуском такой версии понадобятся дополнительные усилия по ее тестированию;

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

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

Рассмотрена в [16]. Предполагается, что Er – количество ошибок в начальный момент времени и в течение времени t устраняется ec(t) ошибок в расчете на одну команду. Тогда:

– количество оставшихся ошибок на одну команду, где IT – число машинных команд, которое предполагается постоянным.

Предполагается, что частота отказов z(t) пропорциональна числу ошибок, оставшихся в ПО, то есть z(t) = с · er(t).

Тогда вероятность безотказной работы на интервале времени (0, t):

.

Простая эвристическая модель двух независимых групп тестирования Руднера

Описана в [11] и [20]. В этой модели исключается основной недостаток модели Миллса. Здесь тестирование осуществляется двумя независимыми группами.

Пусть есть две независимые группы тестирования.

N1 и N2 – число ошибок, обнаруженных каждой группой соответственно. N12 – число одинаковых ошибок, обнаруженных обеими группами (т.е. число ошибок обнаруженных дважды), N – число всех ошибок программы (см. рис. 74).

Рисунок A.3 – Область ошибок программы

Эффективность тестирования каждой из групп представим как

E1 = N1/N, E2=N2/N.

Предположим, что вероятность обнаружения всех ошибок каждой группой одинакова (это следует из того, что у каждой группы были одинаковые условия и одинакова квалификация их составов). Тогда можно рассматривать каждое подмножество пространства N как аппроксимацию всего пространства, т.е. если 1–я группа обнаружила 10% всех ошибок, то она должна была найти примерно 10% всякого случайным образом выбранного подмножества, например, подмножества N2. Тогда (N1/N) » (N12/N2) и (N2/N) » (N12/N1). Тогда получаем:

N = (N1 ·N2)/ N12.(А.24)

Например, две группы нашли 20 и 30 ошибок соответственно. Из них – 10 ошибок общие. Имеем согласно формуле (А.24) общее число ошибок N = 60 и из них не обнаружено 60 – 20 – 30 + 10 = 20 ошибок.

Линейная модель

В работе [16] предлагается описывать количество ошибок в программе как линейную функцию от сложности программы, то есть

где zi – показатели сложности ПО такие как:

количество ветвлений;

количество циклов;

количество вычислений;

число комментариев;

количество вызовов функций и т.п.;

ai – весовые коэффициенты.

Методом регрессионного анализа (МНК) по данным об ошибках пяти различных проектов показано, что наибольший вклад в N вносят общее число ветвлений z4 и общее число логических операторов z6 и, что N = 0,0454 · z4 + 0,254· z6; со стандартной ошибкой – 54,4 и доверительным интервалом – 0,982.

В работе [5] рассмотрены модели количества ошибок, основанные на знании объема исходных текстов ПО. Данные модели не учитывают квалификацию программиста и подобные трудно измеримые факторы. В этих моделях используются коэффициенты пропорциональности, которые нужно искать из опытных данных не совсем ясными методами.