Разработка программнотАУалгоритмических средств для определения надёжности программного обеспечения на основании моделирования работы системы типа "клиенттАУсервер"
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
спользующих ПО пользователей:
Рисунок 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] на практике простейшие, элементарные ошибки программ и данных могут приводить к катастрофическим последствиям при функционировании ПО. В то же время, крупные системные дефекты могут только несколько ухудшать эксплуатационные характеристики ПО. Поэтому невозможно ранжировать типы первичных ошибок по степени влияния на надежность и следует одинаково тщательно относ