Разработка программнотАУалгоритмических средств для определения надёжности программного обеспечения на основании моделирования работы системы типа "клиенттАУсервер"
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
ть несколько новых с требуемой функциональностью, то это приведет к уменьшению оценки ожидаемых ошибок. То есть на некотором этапе усовершенствования ПО поддержка старых модулей является не эффективной, а более целесообразно с точки зрения надежности написать новые модули.
Модель Шумана
Рассмотрена в [16]. Предполагается, что Er количество ошибок в начальный момент времени и в течение времени устраняется c() ошибок в расчете на одну команду. Тогда:
количество оставшихся ошибок на одну команду, где IT число машинных команд, которое предполагается постоянным.
Предполагается, что частота отказов z(t) пропорциональна числу ошибок, оставшихся в ПО, то есть z(t) = с r().
Тогда вероятность безотказной работы на интервале времени (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] рассмотрены модели количества ошибок, основанные на знании объема исходных текстов ПО. Данные модели не учитывают квалификацию программиста и подобные трудно измеримые факторы. В этих моделях используются коэффициенты пропорциональности, которые нужно искать из опытных данных не совсем ясными методами.