Анализ надёжности и качества программного средства.

Введение

По определению, установленному в ГОСТ 13377-75, надёжность – свойство объекта выполнять заданные функции, сохраняя во времени значения установленных эксплуатационных показателей в заданных пределах, соответствующих заданным режимам и условиям использования, технического обслуживания, ремонта, хранения и транспортирования. Таким образом, надёжность является внутренним свойством системы, заложенным при её создании и проявляющимся во времени, при функционировании и эксплуатации. Надёжность также определяется как уровень, при котором система программ удовлетворяет поставленным требованиям и пригодна для эксплуатации. При этом следует отличать надёжность от корректности, которая определяется как степень удовлетворения требованиям. Надёжность является составной частью более общего понятия – качества. Качественная программа не только надёжна, но и компактна, совместима с другими программами, эффективна, удобна в сопровождении, портативна и вполне понятна.

В международном стандарте ISO 9126:1991 из всех показателей качества и надёжности программных средств выделены следующие характеристики, которые позволяют оценивать программные средства с позиции пользователя, разработчика и управляющего проектом:

l Функциональная пригодность детализируется пригодностью для применения, точностью, защищённостью, способностью к взаимодействию и согласованностью со стандартами и правилами проектирования.

l Надёжность характеризуется уровнем завершенности (отсутствия ошибок), устойчивостью к ошибкам и перезапускаемостью.

l Применимость оценивается понятностью, обучаемостью и простотой использования.

l Эффективность характеризуется ресурсной и временной экономичностью.

l Сопровождаемость характеризуется удобством для анализа, изменяемостью, стабильностью и тестируемостью.

l Переносимость отражается адаптируемостью, структурированностью, замещаемостью и внедряемостью.

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

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

Аналитические модели дают возможность рассчитать количественные показатели надёжности, основываясь на данных о поведении программы в процессе тестирования. Аналитические модели делятся на две группы: динамические и статические.

В динамических моделях появление отказов ПС рассматриваются во времени.

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

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

Соотношение, которое называется формулой Миллса, даёт возможность оценить первоначальное число ошибок в программе N.

N=S*n/V ,

где S – количество искусственно внесённых ошибок;

n – число найденных собственных ошибок;

V – число обнаруженных искусственных ошибок.

C=S/(S+N+1)

Величина C является мерой доверия к модели и показывает, насколько правильно найдено значение N.

Эти два связанных между собой по смыслу соотношения образуют полезную модель ошибок: первое предсказывает возможное число первоначально имевшихся в программе ошибок, а второе используется для установления доверительного уровня прогноза.