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

ПО системы, которое может отказать из–за ошибок в спецификациях, в архитектуре, в программном коде;

человеческий фактор, который своими действиями нарушает запланированную работу системы либо производит незапланированные в ПО действия.

В данной дипломной работе будут рассмотрены вопросы надежности ПО.

В [11] говорится о высокой стоимости ПО как следствие его низкой надежности. Типичное распределение стоимости ПО приведено на рис. 2.

Рисунок 2 – Типичное распределение стоимости ПО

Отсюда делается вывод, что наилучший путь сокращения стоимости ПО – в уменьшении стоимости его тестирования и, главное, сопровождения, то есть в повышении надежности.

1.2 Текущее состояние вопроса

Теория надежности как наука получила развитие применительно к сложным техническим системам. Необходимость и полезность контроля технических компонент систем и систем в целом, с целью проверки соответствия их текущих характеристик заданным, доказаны практикой. В этом плане выполнено значительное количество работ по надежности применительно к техническим системам, разработано множество моделей обеспечения разумными методами надежности сложных систем и их технической готовности.

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

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

К основным проблемам исследований надежности ПО относятся:

прежде всего – разработка методов оценки и прогнозирования надежности ПО;

определение основных факторов, влияющих на надежность ПО;

разработка методов, обеспечивающих достижение заданного уровня надежности ПО;

совершенствование методов повышения надежности ПО в процессе проектирования и эксплуатации.

Основная причина ошибок в ПО – это его сложность. Для борьбы со сложностью выделяются две концепции:

независимость;

иерархическая структура.

В работе [11] приводится правило "n ± 1": Проверка правильности фазы n проекта должна осуществляться проектировщиками (исполнителями) фаз (n+1) и (n–1). Кроме того, в [11] приводится обоснование необходимости как можно более раннего обнаружения ошибок проектирования ПО. Оно заключается в том, что стоимость исправления ошибки со временем возрастает (рис. 3б), а вероятность правильно исправить ошибку – падает (рис. 3б).

Рисунок 3 – Обоснование необходимости раннего обнаружения ошибки

При этом вероятность правильно исправить ошибку находится в противоречии с вероятностью обнаружить ошибку. Вероятность обнаружить ошибку возрастает со временем при уточнении требований заказчика и во время опытной эксплуатации. В этой связи важно решить задачу оптимизации времени обнаружения ошибки при минимальных затратах на ее исправление (см. рис. 4).

Рисунок 4 – Вероятность обнаружения ошибки и задача оптимизации

На рис.4а изображена зависимость вероятности обнаружить ошибку от времени, а на рис.4б: линия 1 – зависимость вероятности обнаружить ошибку от времени; линия 2 – вероятность исправить ошибку; также представлены области оптимального соотношения и оптимального времени для обнаружения и исправления ошибок в ЖЦ ПО.

Кроме того, дается определение тестирования и сопутствующих ему понятий. Тестирование – процесс выполнения программы с намерением найти ошибку. Валидация (испытание) – попытка найти ошибку, выполняя программу в заданной реальной среде.

Процентные частоты появления ошибок в ПО [13-15] по типам ошибок представлены в табл. 2.

К-во Просмотров: 517
Бесплатно скачать Дипломная работа: Разработка программно–алгоритмических средств для определения надёжности программного обеспечения на основании моделирования работы системы типа "клиент–сервер"