Файл: Понятие надежности программного средства.pdf

ВУЗ: Не указан

Категория: Реферат

Дисциплина: Не указана

Добавлен: 06.07.2023

Просмотров: 153

Скачиваний: 5

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Основные понятия

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

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

Существует 4 основные составляющие функциональной надежности

программных систем:

  • безотказность - свойство программы выполнять свои функции во время эксплуатации;
  • работоспособность - свойство программы корректно работать весь заданный период эксплуатации;
  • безопасность - свойство программы быть не опасной для людей и окружающих систем;
  • защищенность - свойство программы противостоять случайным или умышленным вторжениям в нее.

Модель анализа надежности программных средств

    1. Факторы, влияющие на надежность ПО

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

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

В борьбе со сложностью ПО используются две концепции:

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

Независимость. В соответствии с этой концепцией, для минимизации сложности, необходимо максимально усилить независимость элементов системы. Это означает такую декомпозицию системы, чтобы её высокочастотная динамика была заключена в отдельных компонентах, а межкомпонентные взаимодействия (связи) описывали только низкочастотную динамику системы.


Методы обнаружения ошибок, которые базируются на введении в ПО системы различных видов избыточности:

Временная избыточность. Использование части производительности ЭВМ для контроля исполнения и восстановления работоспособности ПО после сбоя.

Информационная избыточность. Дублирование части данных информационной системы для обеспечения надёжности и контроля достоверности данных.

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

Задача обеспечения ПО устойчивости к ошибкам направлены на применение методов минимизации ущерба, вызванного появлением ошибок, и включают в себя:

  • обработку сбоев аппаратуры;
  • повторное выполнение операций;
  • динамическое изменение конфигурации;
  • сокращенное обслуживание в случае отказа отдельных функций системы;
  • копирование и восстановление данных;
  • изоляцию ошибок.

Дается 4 группы принципов обеспечения надежности:

  • предупреждение ошибок;
  • обнаружение ошибок;
  • исправление ошибок;
  • обеспечение устойчивости к ошибкам.

Действия, направленные на минимизацию ошибок и сбоев:

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

В соответствии с ГОСТ 19.004-80 различают следующие виды работ, направленные на устранение ошибок в ПО: проверка, отладка и испытание программы.

Чем интенсивнее использование программного изделия (ПИ), тем быстрее выявляются в нем ошибки.

Рисунок 1 Интенсивность обнаружения ошибок от интенсивности использования

где K – число пользователей, K1 > K2 > K3.

Процентные частоты появления ошибок в ПО по типам ошибок представлены в таблице 1.


Таблица 1 – Процентные частоты появления ошибок в ПО

ТИП ОШИБКИ

ЧАСТОТА ПОЯВЛЕНИЯ, %

Не полная или ошибочная спецификация

28

Отклонение от спецификации

12

Пренебрежение правилами программирования

10

Ошибочная выборка данных

10

Ошибочная логика или последовательность операций

12

Ошибочные арифметические операции

9

Нехватка времени для решения

4

Ошибка обработки прерываний

4

Ошибка в исходных данных

3

Неточная запись

8

Как видно из таблицы 1 основное количество ошибок делается из-за неверной спецификации или ТЗ. Эти ошибки, в свою очередь, могут быть разделены на следующие категории:

Таблица 2 – Категории ошибок в ПО

ПРИЧИНА ОШИБКИ

ЧАСТОТА ПОЯВЛЕНИЯ, %

Ошибки в числовых значениях

12

Недостаточные требования к точности

4

Ошибочные символы или знаки

2

Ошибки оформления

15

Неправильное описание или требование к аппаратуре

2

Исходные данные для разработки неполные, неточные или ошибочные

52

Двусмысленность требований

13

Из этих таблиц, кстати, следует, на что нужно обращать особое внимание при проведении валидации и верификации ПО (верификация отвечает на вопрос, правильно ли и качественно ли создана программа, а валидация (или аттестация) - на вопрос правильно ли работает программа).

Средства и способы повышения надёжности ПО

На основании методов обнаружения ошибок были разработаны следующие средства повышения надёжности ПО.

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

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


Способы обеспечения и повышения надежности ПО:

  • усовершенствование технологии программирования (например, формальное описание этапов программирования при помощи языка UML);
  • выбор алгоритмов, не чувствительных к различного рода нарушениям
  • вычислительного процесса (использование алгоритмической избыточности);
  • резервирование программ - N-версионное программирование;
  • верификация и валидация программ с последующей коррекцией.
    1. Проблемы исследования надежности ПО

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

  • прежде всего - разработка методов оценки и прогнозирования надежности ПО;
  • определение основных факторов, влияющих на надежность ПО;
  • разработка методов, обеспечивающих достижение заданного уровня надежности ПО;
  • совершенствование методов повышения надежности ПО в процессе проектирования и эксплуатации.
    1. Тестирование ПО

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

  • автономное тестирование;
  • тестирование сопряжений;
  • тестирование функций;
  • комплексное тестирование;
  • тестирование полноты и корректности документации;
  • тестирование конфигураций.

Надежность ПО повышается также с помощью применения различных методов тестирования. Полное тестирование ПО невозможно. Обычно применяют следующие виды тестирования:

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

Модели надежности ПО

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


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

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

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

Для использования динамических моделей необходимо иметь данные о появлении отказов во времени. Если фиксируются интервалы каждого отказа, то получается непрерывная картина появления отказов во времени (группа динамических моделей с непрерывным временем). С другой стороны, может фиксироваться только число отказов за произвольный интервал времени.

Динамические модели надежности

Модель Шумана

Исходными данными для модели Шумана, которая относится к динамическим моделям дискретного времени, собираются в процессе тестирования АСОД в течение фиксированных или случайных временных интервалов.

Каждый интервал - это стадия, на котором выполняется последовательность тестов и фиксируется некоторое число ошибок.

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