Теория и практика защиты программ

       

Оценка надежности программного обеспечения


Надежность машинной программы может быть оценена путем прогона программы на п наборах входных данных и расчета значения оценки 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, из которых состоят отдельные ветви, совокупность операторов ветвления, которые обеспечивают переход от одного сегмента к другому при движении по отдельной ветви программы.



Содержание раздела