Оценка надежности программного обеспечения
Надежность машинной программы может быть оценена путем прогона программы на п наборах входных данных и расчета значения оценки R¢
по формуле R¢=1-ne¢/n, где пе
- число наборов входных данных, при которых произошли рабочие отказы.
Если выборка включает п наборов входных данных из Е и осуществляется в соответствии с распределением вероятностей рi, то расчетное значение R¢ будет представлять собой несмещенную оценку надежности R в том смысле, что для рi<<1 ожидаемое значение на всем множестве наборов входных данных в пределах выборки равноR. Это может быть показано, если ввести характеристику выборки zij, которая определяется так, что zij=1, если Еi входит в выборку j и zij=0, в противном случае.
Число различных наборов входных данных nj, входящих в некоторую выборку j, может быть меньше, чем n, так как некоторые наборы Еi могут быть включены в нее более одного раза. Поэтому
=nj.Однако в большинстве случаев число возможных наборов входных данных N настолько больше размера выборки, что повторный выбор каких-либо наборов маловероятен. Если s - вероятность того, что взята выборка j и M – количество возможных выборок, то
.Так как R¢
можно представить в виде R¢=
, то математическое ожидание R¢ равноM(R¢)=
====
=.При р<<1 значение M(R¢)=1-Р=R.
Для получения оценки R должен быть определен функциональный разрез pi программы. На практике этот разрез определяется путем разбиения всего пространства значений входных переменных на подпространства и нахождения вероятностей того, что выбранный набор входных данных будет принадлежать конкретному подпространству. Определение этих вероятностей основано на оценке вероятностей появления тех или иных входов в реальных условиях функционирования, относительно которых оценивается надежность программы.
Как только вероятности pi определены указанным образом, случайная выборка из n
наборов входных данных, распределенных в соответствии с рi, может быть получена с помощью некоторого датчика случайных чисел. После реализации п испытаний программы для одних входных наборов данных результаты окажутся правильными, а для других могут быть зафиксированы отказы. При этом процесс испытаний не должен прекращаться, а ошибки не должны исправляться до завершения всех n прогонов; на основании полученных данных может быть вычислена оценка надежности R¢.
Для дальнейшего рассмотрения нам будут необходимы следующие определения и обозначения, связывающие структурные характеристики программ с их безопасностью. Структурными характеристиками программы П
являются множество ветвей Lj
(j=1,...,n), подмножества входных наборов данных Gj, соответствующие ветвям Lj, множества сегментов Segj, из которых состоят отдельные ветви, совокупность операторов ветвления, которые обеспечивают переход от одного сегмента к другому при движении по отдельной ветви программы.