Разработка программнотАУалгоритмических средств для определения надёжности программного обеспечения на основании моделирования работы системы типа "клиенттАУсервер"

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



спользующих ПО пользователей:

Рисунок 5 Интенсивность обнаружения ошибок от интенсивности использования, где K число пользователей, K1 > K2 > K3.

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

Если интенсивное тестирование программ в течении достаточно длительного времени не приводит к обнаружению дефектов или ошибок, то создается ощущение бесполезности дальнейшего тестирования, и программа передается на эксплуатацию. Экспериментальные исследования характеристик обнаружения ошибок в сложных программах позволило оценить темп обнаружения ошибок, при котором сложные комплексы программ передаются на регулярную эксплуатацию: 0,02 0,05 ошибок в день на человека, т.е. специалисты выявляют только около одной ошибки каждые два месяца.

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

В [20] к числу основных факторов, влияющих на надежность ПО отнесены:

взаимодействие ПО с внешней средой (программноаппаратная средства, трансляторы, ОС). Этот фактор вносит наименьший вклад в надежность ПО при современном уровне надежности аппаратуры, ОС и компиляторов;

взаимодействие с человеком (разработчиком и пользователем) (см. например метрику Холстеда);

организация ПО (проектирование, постановка задачи и способы их достижения и реализации) и качество его разработки. Этот фактор вносит наибольший вклад в надежность;

тестирование.

В соответствии с этим способы обеспечения и повышения надежности ПО могут быть следующими:

усовершенствование технологии программирования (например, формальное описание этапов программирования при помощи языка UML);

выбор алгоритмов, не чувствительных к различного рода нарушениям вычислительного процесса (использование алгоритмической избыточности);

резервирование программ Nверсионное программирование;

верификация и валидация программ с последующей коррекцией.

1.3 Выводы

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

2. Теоретическая часть

2.1 Существующие модели надежности ПО

Прогнозирование надежности ПО в процессе его эксплуатации осуществляется на основе математических моделей надежности программ.

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

В [20] дается классификация моделей надежности ПО. Наиболее известных моделей надежности ПО в настоящее время существует около десятка, поэтому в данной работе они сгруппированы по признакам. В качестве классификационных признаков выбраны следующие (рис.6):

временная структура процессов проявления ошибок в ПО (время появления ошибки, количество ошибок за заданный интервал времени);

сложность программы (мера сложности ПО длина, количество функций или модулей, данных и т.п.);

разметка ошибок (искусственное внесение в ПО известных ошибок);

структура пространства входных данных;

структура текста программы (распределение ошибок по тексту программы).

Рисунок 6 Классификация моделей надежности ПО

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