- •220700 – «Автоматизация технологических процессов и производств»
- •140400 – «Электроэнергетика и электротехника»
- •Содержание Введение
- •Глава 1. Общие сведения по теории надежности
- •1.1. Основные термины и определения
- •1.2. Классификация отказов автоматизированных систем
- •1.3. Показатели надежности невосстанавливаемых систем
- •1.4. Основные законы распределения наработки до отказа
- •1.5. Потоки отказов восстанавливаемых систем
- •1.6. Показатели надежности восстанавливаемых систем
- •Глава 2. Особенности оценки надежности ас
- •2.1. Надежность комплекса технических средств
- •2.1.1 Факторы, влияющие на надежность технических систем
- •2.1.2 Методы расчета надежности технических систем без учета восстановления
- •2.1.3 Расчет надежности технических систем с учетом восстановления
- •2.2. Надежность программного обеспечения
- •2.2.1 Оценка надежности по по аналогии с невосстанавливаемыми техническими системами
- •2.2.2 Оценка надежности программ на ранних стадиях проектирования.
- •2.3. Надежность оперативного персонала
- •2.4. Надежность ас как совокупности функций
- •Глава 3. Методы повышения надежности ас
- •3.1. Классификация методов повышения надежности
- •3.2. Резервирование
- •3.3. Расчет надежности невосстанавливаемых систем с постоянным резервом
- •Глава 4. Техническая диагностика ас
- •4.1. Цели и задачи технической диагностики ас
- •4.2. Виды контроля технического состояния ас
- •4.3. Влияние контроля технического состояния на эксплуатационную надежность ас
- •Глава 5. Оценка надежности ас по результатам испытаний
- •5.1. Особенности испытаний на надежность ас
- •5.2. Классификация методов испытаний на надежность ас
- •5.3. Организация работ по проведению испытаний ас
- •5.3.1 Обеспечение достоверности испытаний ас
- •5.3.2 Исходные и отчетные документы при испытаниях ас
- •5. Условия и порядок проведения испытаний.
- •5.4. Виды испытаний на надежность
- •5.4.1 Классификация методов испытаний на надежность
- •5.5. Определительные испытания
- •5.6. Контрольные испытания
- •5.6.1 Методы проведения контрольных испытаний
- •5.7. Оценка надежности ас в условиях эксплуатации
- •5.7.1 Требования к информации
- •5.7.2 Работы, предшествующие сбору информации
- •Глава 6. Обеспечение требуемой надежности ас при эксплуатации
- •6.1. Организация эксплуатации
- •6.1.1 Основные задачи эксплуатации
- •6.1.2 Определение численности эксплуатационного персонала
- •6.2. Обеспечение запасными частями
- •6.2.1 Организация пополнения запаса
- •6.2.2 Показатели достаточности запаса
- •6.2.3 Расчет числа невосстанавливаемых запасных частей с периодическим пополнением по вероятности достаточности
- •6.2.4 Расчет количества невосстанавливаемых запасных частей по экономическим критериям
- •6.2.5 Расчет количества восстанавливаемых запасных частей по вероятности достаточности
- •6.3. Техническое обслуживание
- •6.3.1 Структура системы технического обслуживания
- •6.3.2 Виды технического обслуживания
- •6.3.3 Стратегии технического обслуживания
- •6.3.4 Определение параметров технического обслуживания при явных отказах
- •6.3.5 Определение параметров технического обслуживания при неявных отказах
- •Список литературы
- •Диагностика и надежность автоматизированных систем
2.2. Надежность программного обеспечения
Теория надежности, основные понятия которой введены в гл. 1, развивалась для описания технических систем, включая технические средства АС. Отказы происходят из-за разрушения и старения компонентов, причем восстановление требует ремонта, регулировки, замены компонентов или технического средства. Разрушение и старение не свойственно ни программному обеспечению (ПО) системы в целом, ни отдельным программам. Тем не менее, возможно перенесение некоторых понятий, терминов и методов надежности и на ПО (принимая при этом определенную условность такого подхода).
При разработке ПО может возникнуть ряд причин, приводящих к возникновению ошибок: неправильное понимание программистом алгоритма; неправильное составление общей структуры ПО и взаимосвязи программ; неправильный выбор методов защиты программ; ошибки в переносе программ па носители и др.
Отладка ПО не может устранить все ошибки, так как число возможных сочетаний входных данных и состояний системы при ее функционировании настолько велико, что заранее проверить все возможные ветви прохождения программ практически невозможно. Поэтому поток моментов проявления ошибок ПО при функционировании АС носит случайный характер: ошибки проявляются в случайные моменты времени, когда программа выйдет на тот участок, где имеется ошибка.
Существуют два подхода к выбору показателей надежности ПО. С одной стороны, возможно использовать обычные показатели надежности, такие как вероятность отсутствия ошибок за время t; среднее время между ошибками; среднее время восстановления ПО после прекращения функционирования и т. п. Данные показатели характеризуют проявление ошибок ПО во времени, поэтому их целесообразно использовать для ПО, непрерывно эксплуатируемого. Для программ, используемых нерегулярно (при необходимости), возможно применение таких показателей, как вероятность успешного выполнения одного прогона программы, вероятность того, что данное ПО сумеет решить произвольную задачу из потока реальных задач.
Однако при применении понятий классической теории надежности к ПО следует учитывать особенности и отличия этих объектов от традиционных технических систем, для которых первоначально разрабатывалась теория надежности [11]:
- не для всех видов программ применимы понятия и методы теории надежности – их можно использовать только к ПО, функционирующим в реальном времени и непосредственно взаимодействующим с внешней средой;
- доминирующими факторами, определяющими надежность программ, являются дефекты и ошибки проектирования и разработки, и второстепенное значение имеет физическое разрушение программных компонент при внешних воздействиях;
- относительно редкое разрушение программных компонент и необходимость их физической замены, приводит к принципиальному изменению понятий сбоя и отказа программ и к разделению их по длительности восстановления относительно некоторого допустимого времени простоя для функционирования информационной системы;
- непредсказуемость места, времени и вероятности проявления дефектов и ошибок, а также их редкое обнаружение при реальной эксплуатации достаточно надежных программных средств, не позволяет эффективно использовать традиционные методы априорного расчета показателей надежности сложных систем, ориентированные на стабильные, измеряемые значения надежности составляющих компонент;
- после исправления ошибки в программе эта же ошибка в дальнейшем не может повториться. Более того, ошибки, выявленные в ПО одной из нескольких однотипных систем, обычно исправляются во всех таких системах. Поток ошибок ПО нестационарный, так как по мере выявления ошибок параметр их потока уменьшается. Отказы ТС по одной и той же причине носят повторяющийся характер; после восстановления такой же отказ и этого, и иных аналогичных средств по той же причине может повториться вновь. Поток отказов ТС в установившемся режиме с тем или иным приближением можно принять стационарным.
С учетом перечисленных особенностей для описания надежности ПО могут быть использованы специальные показатели, характерные только для ПО и отражающие, главным образом, качество выполнения ПО. Эти показатели позволяют оценить следующие свойства ПО, составляющие понятие «надежность ПО»:
1. Корректность - статическое свойство программы, определяемое как отсутствие ошибок в ней. Корректность программ обеспечивается отладкой (проверкой) на множестве исходных данных, регламентированных документацией.
2. Устойчивость - динамическое свойство программы, которое характеризует ее способность давать правильные результаты при аппаратных, информационных и эргатических воздействиях. При этом выделяют два вида устойчивости:
- толерантность - способность программы продолжать свою работу и выдавать правильные результаты при наличии перечисленных воздействий.
- консервативность - способность программы при наличии возмущений, не позволяющих правильно решить задачу, перевести вычислительную систему в состояние отказа, из которого с минимальными потерями можно выполнить процедуру рестарта. Устойчивость программ обеспечивают структурной, информационной, временной и алгоритмической избыточностью.
Классификация отказов ПО. Для современного ПО характерны такие виды нарушения работоспособности, как отказ, сбой и ошибка ПО, определение которым было дано в п. 1.1. В свою очередь отказы ПО бывают:
- программными - из-за не выявленных ошибок в программе, которые возникают при определенном сочетании данных и команд, соответствующем спецификации;
- информационными - результаты работы искажаются из-за ошибок входных данных;
- аппаратными - возникают в результате перемежающихся отказов технических средств и/или возникновения ошибок в операционных средах (сбоев);
- эргатическими - возникают из-за некорректных действий пользователей.
При определении надежности программных средств рассматривают, как правило, только программные отказы, обусловленные наличием не выявленных ошибок в программе.
Ошибки могут быть допущены на всех этапах жизненного цикла ПО. Рассмотрим разновидности ошибок ПО и соответствующие примеры.
1. Неправильная постановка задачи.
2. Неверный алгоритм.
3. Ошибка анализа (неполный учет ситуаций, которые могут возникнуть; логические ошибки).
4. Семантические ошибки (непонимание порядка выполнения оператора).
5. Синтаксические ошибки (нарушение правил, определяемых языком программирования).
6. Ошибки при выполнении операций (слишком большое число, деление на ноль, извлечение квадратного корня из отрицательного числа и т. п.).
7. Ошибки в данных (неудачное определение возможного диапазона изменения данных).
8. Опечатки (перепутаны близкие по написанию символы, например, цифра 1 и буквы I, l).
9. Ошибки ввода-вывода (неверное считывание входных данных, неверное задание форматов данных).
Показатели качества и надежности современных ПО. Формализации показателей качества ПО посвящена группа нормативных документов, в которых выделены характеристики, позволяющие оценивать ПО с позиции пользователя, разработчика и управляющего проектом. Рекомендуется 6 основных характеристик качества ПО, каждая из которых детализируется несколькими (всего 21) субхарактеристиками [5]:
1. Функциональная пригодность – это набор атрибутов, определяющий назначение, номенклатуру, основные необходимые и достаточные функции ПО, заданные техническим заданием заказчика или потенциального пользователя. Функциональная пригодность детализируется:
- пригодностью для применения;
- точностью;
- защищенностью;
- способностью к взаимодействию;
- согласованностью со стандартами и правилами проектирования.
2. Надежность – это способность программы обеспечивать достаточно низкую вероятность отказа в процессе функционирования в реальном времени. Надежность рекомендуется характеризовать:
- уровнем завершенности (отсутствия ошибок);
- устойчивостью к ошибкам;
- перезапускаемостью.
3. Применимость описывается:
- понятностью;
- обучаемостью;
- простотой использования.
4. Эффективность рекомендуется характеризовать:
- ресурсной избыточностью;
- временной избыточностью.
5. Сопровождаемость детализируется:
- удобством для анализа;
- изменяемостью;
- стабильностью;
- тестируемостью.
6. Переносимость предлагается отражать:
- адаптируемостью;
- структурированностью;
- замещаемостью;
- внедряемостью.
К показателям надежности ПО можно отнести следующие показатели.
1. Вероятность ошибки в ПО
(2.16)
где n – число возможных подмножеств входных данных; pi - вероятность выбора i–го подмножества; yi - динамическая переменная, yi=0, если выходной результат верен для i–го подмножества; yi =1, если выходной результат неверен.
Cтатистическое определение вероятности ошибки
(2.17)
где l – количество входных подмножеств, при испытаниях которых возникли сбои.
2. Функция надежности ПО, определяемая как вероятность того, что программный сбой произошел за пределами интервала (0,t):
(2.18)
где
-
случайный момент времени, в который
произошел программный сбой.
3. Вероятность программного сбоя в интервале от 0 до t:
(2.19)
4. Плотность распределения вероятности сбоя:
(2.20)
5. Функция риска (аналогичная функции интенсивности отказов ):
(2.21)
Решая это дифференциальное уравнение относительно R(t) при начальном условии R(0)=1, получим
.
(2.22)
6. Среднее время между программными сбоями
.
(2.23)
Дестабилизирующие факторы, влияющие на надежность ПО. Для систематической, координированной борьбы с ошибками, отказами, сбоями необходимы исследования факторов, влияющих на надежность ПО. При решении задач надежности можно представить следующий структурный состав программного обеспечения современных АСУ:
- динамический вычислительный процесс обработки данных, автоматизированной подготовки решений и выработки управляющих воздействий;
- информация, накопленная в базах данных, отражающая объекты внешней среды, и процессы ее обработки;
- объектный код программ, исполняемых вычислительными средствами в процессе функционирования ПО;
- информация, выдаваемая потребителям и на исполнительные механизмы, являющаяся результатом обработки исходных данных и информации, накопленной в базе данных.
Вышеперечисленные компоненты ПО являются в некотором роде объектами уязвимости, на которые воздействуют различные дестабилизирующие факторы, которые можно разделить на внутренние, присущие самим объектам уязвимости, и внешние, обусловленные средой, в которой эти объекты функционируют.
К внутренним дестабилизирующим факторам относятся следующие дефекты ПО:
- системные ошибки при постановке целей и задач создания ПО, при формулировке требований к функциям и характеристикам решения задач, определении условий и параметров внешней среды, в которой предстоит применять ПО;
- алгоритмические ошибки разработки при непосредственной спецификации функций ПО, при определении структуры и взаимодействия компонент комплексов программ, а также при использовании информации баз данных;
- ошибки программирования в текстах программ и описаниях данных, а также в исходной и результирующей документации на компоненты и ПО в целом;
- недостаточную эффективность используемых методов и средств оперативной защиты программ и данных от сбоев и отказов и обеспечения надежности функционирования ПЩ в условиях случайных негативных воздействий.
Внешними дестабилизирующими факторами являются:
- ошибки оперативного и обслуживающего персонала в процессе эксплуатации ПО;
- искажения в каналах телекоммуникации информации, поступающей от внешних источников и передаваемой потребителям, а также недопустимые для конкретной АС характеристики потоков внешней информации;
- сбои и отказы в аппаратуре вычислительных средств;
- изменения состава и конфигурации комплекса взаимодействующей аппаратуры АС за пределы, проверенные при испытаниях или сертификации и отраженные в эксплуатационной документации.
