Разработка программно–алгоритмических средств для определения надёжности программного обеспечения на основании моделирования работы системы типа "клиент–сервер" - Дипломная работа
Надежность как характеристика качества программного обеспечения (ПО). Методика расчета характеристик надежности ПО (таких как, время наработки до отказа, коэффициент готовности, вероятность отказа), особенности прогнозирования их изменений во времени.
Аннотация к работе
Архитектура современных корпоративных информационных систем (КИС) является, как правило, функционально распределенной. В связи с этим важнейшей проблемой, возникающей при создании КИС, является обеспечение высокого уровня надежности их функционирования. В распределенных системах, архитектура которых обеспечивает возможность полного или частичного резервирования аппаратных средств, основным фактором, определяющим надежность функционирования, является программное обеспечение. В настоящее время в области машинной обработки информации существуют две взаимосвязанные проблемы: стоимость обработки информации и ненадежность программного обеспечения, организующего и выполняющего процесс обработки информации. Поэтому целью данной дипломной работы разработка программно-алгоритмических средств для проведения оценки надежности программного обеспечения на основе построения модели надежности ПО, позволяющей проводить расчет характеристик надежности ПО (таких как, время наработки до отказа, коэффициент готовности, вероятность отказа) и на основе этой модели прогнозировать изменение этих характеристик во времени.В работах [6-9] дается определение основных характеристик качества ПО, а также приводятся рекомендации по их измерению, даются метрики и критерии. В частности, дается номенклатура показателей надежности ПО. В стандарте [10] вводится шесть характеристик качества, в том числе для оценки надежности: завершенность, устойчивость к ошибкам, восстанавливаемость, согласованность, правильность работы, своевременность. Надежность Определяется рядом характеристик, таких как безотказность, защищенность и безопасность В этот период, когда устанавливается первоначальная взаимозависимость между характеристиками системы, затратами и графиком выполнения работ, должны быть сформулированы и требования к надежности, так как именно они в значительной мере определяют реализуемость проекта и стоимость будущей системы.При этом вероятность правильно исправить ошибку находится в противоречии с вероятностью обнаружить ошибку. На рис.4а изображена зависимость вероятности обнаружить ошибку от времени, а на рис.4б: линия 1 - зависимость вероятности обнаружить ошибку от времени; линия 2 - вероятность исправить ошибку; также представлены области оптимального соотношения и оптимального времени для обнаружения и исправления ошибок в ЖЦ ПО. Тестирование - процесс выполнения программы с намерением найти ошибку. Валидация (испытание) - попытка найти ошибку, выполняя программу в заданной реальной среде. И отличия: аппаратный отказ зависит либо от времени, либо от объема выполненной работы, а программный отказ - от той функции, которую выполняет изделие под управлением программы (то есть с какой вероятностью программа выйдет на участок, который содержит ошибку);На основе сделанного обзора можно констатировать: на сегодняшний день отсутствует общее решение проблемы надежности ПО и есть много частных решений, не учитывающие такие существенные факторы как интенсивность внесения и устранения ошибок в программе, время разработки ПО.Теория надежности для аппаратного обеспечения развита довольно хорошо, и, как показано выше, есть применить ее и к надежности ПО. В этих моделях ищется число ошибок, оставшихся в программе. Также эти модели позволяют находить надежность программы, которая понимается как вероятность, что программа будет функционировать без ошибок в течение заданного интервала времени, а также - среднее время между отказами программы. В качестве классификационных признаков выбраны следующие (рис.6): временная структура процессов проявления ошибок в ПО (время появления ошибки, количество ошибок за заданный интервал времени); Однако ни одна из этих моделей не имеет явных преимуществ по точности аппроксимации распределений и прогнозирования числа ошибок в программах по сравнению с простейшей экспоненциальной моделью.Сервер обслуживает запросы от N программ-клиентов (далее просто клиенты, рис.7). Каждый k-ый (k = 1, 2, …, N) клиент порождает пуассоновский поток данных к серверу интенсивностью lобр. Данные от клиента распределены по ООД по нормальному закону с характеристиками mk и sk, где mk распределено между клиентами равномерно по всей области входных данных, 3sk - распределено равномерно на меньшем из участков отсекаемых mk на оси области данных. 8 изображено распределение запросов одного клиента по области всех возможных запросов к серверу, а также показано равномерное распределение ошибок по ООД. При попадании запроса клиента или ответа сервера в область ООД, содержащую ошибку, считается, что ошибка обнаружена и соответствующий модуль выводится из эксплуатации для ее исправления: Рисунок 8 - Распределение запросов k-го клиента на области данныхОсобенностью этой системы в отличие от систем, рассматриваемых в теории массового обслуживания, (например, обслуживание ремонтной бригадой автомобиля, или однотипных аппаратных комплексов) заключается в том, что при выходе из строя (обнаружении ошибки) в одном модуле (потоке или клиенте) и устранении этой оши
План
Оглавление
Сокращения 4
Введение 5
1. Аналитический обзор литературы 7
1.1 Надежность как характеристика качества ПО 7
1.2 Текущее состояние вопроса 9
1.3 Выводы 19
2. Теоретическая часть 21
2.1 Существующие модели надежности ПО 21
2.2 Содержательная постановка задачи 24
2.3 Разработка модели надежности ПО типа клиент-сервер 29
2.3.1 Модель надежности клиентских программ 29
2.3.2 Модель с заменой вероятностей состояний на средние численности состояний 34
2.3.3 Модель для случая N модулей-клиентов 37
2.3.4 Модель для случая const 42
2.4 Разработка обобщенной модели надежности ПО типа клиент-сервер 46
3. Экспериментальная часть 52
3.1 Обоснование выбранного метода реализации 52
3.2 Алгоритм функционирования программы 52
3.3 Практические результаты моделирования 55
3.3.1 Оценка времени, необходимого для уменьшения количества ошибок до расчетного уровня 55
3.3.2 Влияние количества клиентов на надежность ПО 57
3.3.3 Влияние количества программистов на надежность ПО 59
3.3.4 Влияние интенсивности обращений клиентов к серверу 61
3.3.5 Определение начального количества ошибок в ПО 62
3.3.6 Поиск начального количества ошибок в программе по начальной и конечной интенсивностям отказов 65
Выводы 68
Список использованных источников 70
Приложение А. Примеры моделей надежности ПО 73
Сокращения
ВС - вычислительное средство
ВТ - вычислительная техника
ЖЦ - жизненный цикл
КИС - корпоративная информационная система
ММП - метод максимального правдоподобия
МНК - метод наименьших квадратов
ООД - область определения данных
ОС - операционная система
ПИ - программное изделие
ПК - программный комплекс
ПО - программное обеспечение
ПТС - программно-техническое средство
СВМО - среднее время между отказами
СМО - система массового обслуживания
СПО - системное программное обеспечение
ТЗ - техническое задание
ТУ - технические условия
ЭП - экстремальное программирование
Введение
Архитектура современных корпоративных информационных систем (КИС) является, как правило, функционально распределенной. Она характеризуется многопотоковой организацией вычислений, при которой запросы реализуются параллельно и распределяются по нескольким процессорам (серверам). Основным средством реализации функций обработки информации и управления в таких системах является программное обеспечение (ПО). Существенной особенностью КИС является непрерывность процессов ввода и обработки информации, цикличный характер вычислительных процессов. В связи с этим важнейшей проблемой, возникающей при создании КИС, является обеспечение высокого уровня надежности их функционирования. В распределенных системах, архитектура которых обеспечивает возможность полного или частичного резервирования аппаратных средств, основным фактором, определяющим надежность функционирования, является программное обеспечение.
Многочисленные научные публикации [1-4] и накопленный опыт разработки программных систем в России и за рубежом свидетельствуют о том, что достаточно уверенно прогнозировать уровень надежности функционирования ПО весьма трудно. Проблема заключается в том, что существующие методы и модели прогнозирования надежности ПО не в полной мере пригодны для практического применения.
В настоящее время в области машинной обработки информации существуют две взаимосвязанные проблемы: стоимость обработки информации и ненадежность программного обеспечения, организующего и выполняющего процесс обработки информации. При этом первая проблема находится в зависимости от второй, так как высокая стоимость проектирования, тестирования и сопровождения программ обработки информации определяется прежде всего ненадежностью ПО [5].
Необходимость повышения надежности программного обеспечения обусловлена еще и тем, что в настоящее время ПО несет значительно большую функциональную нагрузку в решении задач управления, чем технические средства.
Поэтому целью данной дипломной работы разработка программно-алгоритмических средств для проведения оценки надежности программного обеспечения на основе построения модели надежности ПО, позволяющей проводить расчет характеристик надежности ПО (таких как, время наработки до отказа, коэффициент готовности, вероятность отказа) и на основе этой модели прогнозировать изменение этих характеристик во времени.
В качестве теоретической основы использованы: теория массового обслуживания, теория вероятностей, теория линейного программирования, методы разработки программного обеспечения, международные и отечественные стандарты по программному обеспечению. В качестве метода исследования выбран метод Монте-Карло.
В качестве информационных источников в работе использовались научные данные и сведения из книг, журнальных статей, а также международные и отечественные стандарты по разработке и применению программного обеспечения, результаты собственных расчетов и проведенных экспериментов.
Вывод
На основе сделанного обзора можно констатировать: на сегодняшний день отсутствует общее решение проблемы надежности ПО и есть много частных решений, не учитывающие такие существенные факторы как интенсивность внесения и устранения ошибок в программе, время разработки ПО. Ни одна из моделей не может считаться достаточной для оценки надежности. Таким образом, сегодняшний уровень понимания проблемы надежности, в основном качественный, позволяет нам рассматривать программу как черный ящик с поступающими ему на вход данными и внешними воздействиями, а на выходе выдающий нам поток ошибок, устраняемый с большим или меньшим успехом. Стоит актуальная задача построения более совершенных моделей. В данной дипломной работе предлагается модель, основанная на марковской теории систем массового обслуживания (СМО), с решением задачи появления и устранения ошибок в программе как марковского процесса гибели и размножения с непрерывным временем и нахождением его характеристики.