- •Е.Л. Кон, м.М. Кулагина надежность и диагностика компонентов инфокоммуникационных и информационно-управляющих систем
- •Оглавление
- •1. Основные теоретические сведения 9
- •2. Надежность аппаратурного обеспечения 31
- •3. Создание надежного программного обеспечения 130
- •4. Диагностика состояния сложных технических систем 205
- •Введение
- •1. Основные теоретические сведения
- •1.1. Информационно-управляющие и инфокоммуникационные системы
- •1.2. Основные определения теории надежности
- •1.2.1. Надежность и ее частные стороны
- •1.2.2. Виды надежности
- •1.2.3. Отказы
- •1.2.4. Эффективность
- •1.2.5. Восстановление
- •1.3. Понятие случайных событий и случайных величин
- •1.3.1. Надежность систем при основном (последовательном) и параллельном соединении элементов
- •1.3.2. Основное соединение элементов
- •1.3.3. Параллельное соединение элементов
- •1.4. Элементы теории нечетких множеств
- •1.4.1. Понятие принадлежности и основные операции для четких подмножеств
- •1.4.2. Понятие принадлежности и основные операции для нечетких подмножеств
- •1.4.3. Отношение доминирования
- •1.4.4. Простейшие операции над нечеткими множествами
- •1.4.5. Расстояние Хэмминга
- •Вопросы и задания
- •Список литературы
- •2. Надежность аппаратурного обеспечения
- •2.1. Надежность невосстанавливаемых систем без резервирования
- •2.1.1. Показатели надежности невосстанавливаемых объектов
- •2.1.2. Законы распределения случайных величин, используемые в теории надежности
- •Показательное (экспоненциальное) распределение
- •Усеченное нормальное распределение
- •Распределение Вейбулла
- •Гамма-распределение
- •Практическая область применения законов распределения времени безотказной работы
- •2.1.3. Использованиеи-характеристик для решения практических задач
- •2.1.4. Особенности расчета надежности при проектировании различных систем
- •2.1.5. Расчет надежности по блок-схеме системы
- •2.1.6. Расчет надежности при подборе элементов системы
- •2.1.7. Расчет надежности системы с учетом режимов работы элементов
- •2.1.8. Учет цикличности работы аппаратуры
- •2.2. Надежность невосстанавливаемых систем с резервированием
- •2.2.1. Пути повышения надежности
- •2.2.2. Методы резервирования
- •2.2.3. Расчет надежности сложных систем при постоянно включенном резерве
- •2.2.4. Расчет надежности системы при резервировании замещением
- •2.2.5. Резервирование замещением в случае нагруженного резерва
- •2.2.6. Резервирование замещением в случае облегченного резерва
- •2.2.7. Резервирование замещением в случае ненагруженного резерва
- •2.2.8. Расчет надежности систем с функциональным резервированием
- •2.3. Расчет надежности восстанавливаемых систем
- •2.3.1. Критерий надежности систем с восстановлением
- •Характеристики потока отказов
- •Характеристики потока восстановления
- •Комплексные характеристики надежности систем с восстановлением
- •2.3.2. Расчет надежности по графу работоспособности объекта
- •2.3.3. Определение среднего времени наработки на отказ системы с восстановлением
- •2.3.4. Расчет надежности систем с восстановлением при основном (последовательном) и параллельном соединении элементов
- •2.3.5. Расчет надежности сложных инфокоммуникационных систем
- •Структура и функции стс
- •Определение надежностных характеристик блоков стс
- •Составление структурно-логической схемы надежности и графа состояний
- •2.3.5.4. Расчет коэффициента готовности стс
- •Определение надежностных характеристик блоков аиис
- •Составление структурно-логической схемы надежности и графа переходов
- •Расчет коэффициента готовности аиис «Алтайэнерго»
- •Расчет коэффициента готовности аиис
- •2.4. Расчет надежности восстанавливаемых систем при наличии системы контроля
- •2.4.1. Система встроенного контроля абсолютно надежна
- •2.4.2. Система встроенного контроля самопроверяемая, и ее отказ обнаруживается сразу же
- •2.4.3. Система встроенного самоконтроля несамопроверяемая
- •2.5. Расчет надежности в условиях нечетко заданных исходных данных
- •2.5.1. Выбор оптимального варианта для невосстанавливаемых систем
- •2.5.2. Выбор оптимального варианта для восстанавливаемых систем
- •2.6. Расчет надежности систем на этапе эксплуатации
- •2.6.1. Планирование и расчет периодов профилактик
- •2.6.2. Планирование и расчет числа запасных изделий
- •Вопросы и задания
- •Список литературы
- •3. Создание надежного программного обеспечения
- •3.1. Надежность программного обеспечения
- •3.1.1. Ошибки в по и их типы
- •Типы ошибок в программном обеспечении
- •3.1.2. Причины появления ошибок в программном обеспечении
- •3.1.3. Отношения с пользователем (заказчиком)
- •3.1.4. Принципы и методы обеспечения надежности
- •3.1.5. Последовательность выполнения процессов разработки программного обеспечения
- •3.1.6. Сравнение надежности аппаратуры и программного обеспечения
- •3.2. Основные этапы проектирования программного обеспечения
- •3.2.1. Правильность проектирования и планирование изменений
- •3.2.2. Требования к по
- •3.2.3. Цели программного обеспечения
- •Цели продукта
- •Цели проекта
- •Общие правила постановки целей
- •Оценка целей
- •3.2.4. Внешнее проектирование
- •Проектирование взаимодействия с пользователем
- •Подготовка внешних спецификаций
- •Проверка правильности внешних спецификаций
- •3.2.5. Проектирование архитектуры программы
- •Независимость модулей
- •Прочность модулей
- •Сцепление модулей
- •3.2.6. Методы непосредственного повышения надежности модулей
- •Пассивное обнаружение ошибок
- •Активное обнаружение ошибок
- •Исправление ошибок и устойчивость к ошибкам
- •Изоляция ошибок
- •Обработка сбоев аппаратуры
- •3.2.7. Проектирование и программирование модуля
- •Внешнее проектирование модуля
- •Проектирование логики модуля
- •Пошаговая детализация
- •3.2.8. Стиль программирования
- •Ясность программирования
- •Использование языка
- •Микроэффективность
- •Комментарии
- •Определения данных
- •Структура модуля
- •3.3. Тестирование и верификация программ
- •3.3.1. Проблемы тестирования программ
- •3.3.2. Технологии тестирования программ
- •3.3.3. Принципы тестирования
- •3.4. Модели надежности по
- •3.4.1. Модель роста надежности
- •3.4.2. Другие вероятностные модели
- •3.4.3. Статистическая модель Миллса
- •3.4.4. Простые интуитивные модели
- •3.4.5. Объединение показателей надежности
- •Вопросы и задания
- •Список литературы
- •4. Диагностика состояния сложных технических систем
- •4.1. Предмет, задачи и модели технической диагностики
- •4.1.1. Предмет технической диагностики
- •4.1.2. Основные аспекты, задачи и модели технической диагностики
- •4.1.3. Классификация диагностических процедур и их краткая характеристика
- •4.2. Построение тестов
- •4.2.1. Построение тестового набора методом активизации существенного пути
- •4.2.2. Алгоритм построения тестового набора для комбинационной схемы методом активизации существенного пути
- •4.2.3. Построение тестов для схем с памятью
- •Комбинационная модель последовательностной схемы
- •Построение тестовой последовательности по комбинационной модели последовательностной схемы
- •4.3. Функциональный контроль и диагностирование сложных технических систем
- •4.3.1. Полностью самопроверяемые цифровые устройства
- •4.3.2. Схемы встроенного контроля
- •4.3.3. Схемы сжатия
- •4.3.4. Микропроцессор как объект функционального контроля
- •4.3.5. Модель мп с точки зрения функционального контроля
- •4.3.6. Диагностическая модель уу мп системы
- •4.3.7. Критерии оценки методов контроля механизмов выборки, хранения и дешифрации команд
- •4.3.8. Встроенный функциональный контроль механизмов хранения и дешифрации команд
- •Методы пошагового контроля правильности хода программ
- •Методы контроля, реализующие раскраску команд
- •Метод контроля, использующий раскраску без учета структуры команд
- •Преобразованная программа приведена ниже:
- •Цвет Четность Цвет гса
- •Метод контроля команд, реализующий раскраску с учетом структуры команды
- •Раскраска без внесения в команду избыточных разрядов
- •Методы контроля механизмов дешифрации и хранения команд с помощью веса перехода
- •Метод контроля с помощью алгебраических кодов
- •Методы блокового контроля правильности хода программ
- •Блоковый контроль программ по методу разбиения программы на фазы (блоки)
- •Блоковый контроль правильности хода программ с помощью сигнатур
- •Метод контроля программ на основе полиноминальной интерпретации схем алгоритмов (программ)
- •Сравнительный анализ свк, реализующих методы блокового и пошагового контроля
- •4.4. Экспертные системы диагностирования сложных технических систем
- •4.4.1. Обучение и его модели. Самообучение
- •4.4.2. Экспертные системы и принципы их построения
- •4.4.3. Проблема разделения в самообучаемых экспертных системах
- •4.4.4. Алгоритмы обучения экспертных систем
- •Частота события находится по следующей формуле:
- •4.4.5. Асу «интеллектуальным зданием»
- •4.4.6. Система, принимающая решения по максимальной вероятности
- •4.4.7. Система, принимающая решения по наименьшему расстоянию
- •4.4.8. Повышение достоверности решений экспертной системы
- •4.4.9. Прогнозирование технического состояния узлов
- •Вопросы и задания
- •Список литературы
- •Приложение Интенсивность отказов компонентов иус
- •Кон Ефим Львович, Кулагина Марина Михайловна надежность и диагностика компонентов инфокоммуникационных и информационно-управляющих систем
3.4. Модели надежности по
В области надежности аппаратуры достигнут уровень, когда уже создан ряд математических методов, позволяющих инженеру предсказывать надежность его продукта. Эти математические методы, проанализированные в главе 2, (главным образом в форме вероятностных моделей) широко и успешно применяются на всех этапах жизненного цикла изделий.
Так как теория надежности аппаратуры развита довольно хорошо, естественно попытаться применить ее и к надежности программного обеспечения.
Из всех надежностных параметров программного обеспечения, вероятно, самым важным является число ошибок, оставшихся в программе. Если бы разумная его оценка была известна при тестировании, это помогло бы решить, когда можно закончить процесс. Если знать число оставшихся ошибок в устанавливаемой системе, можно было бы оценить стоимость работ по сопровождению и определить уровень доверия к программе. Другие надежностные параметры, для которых желательно иметь оценки, – это вероятность того, что программа будет правильно (корректно) выполняться в течение заданного интервала времени, прежде чем обнаружится ошибка ПО, приводящая к отказу системы, и среднее время между отказами системы.
В настоящем разделе рассматривается несколько моделей надежности. Несколько первых моделей тесно связано с теорией надежности аппаратуры и существенно опирается на определенные предположения о распределении вероятности отказов программного обеспечения. Следующий ряд моделей дает сходные результаты, но не связан с теорией надежности аппаратуры.
3.4.1. Модель роста надежности
Вероятно, самой известной моделью надежности является модель, разработанная Джелински и Морандой [7] и Шуманом [8]. Она опирается на теорию надежности аппаратуры, основы которой были приведены в подразд. 1.2. В частности, в данной модели используются: вероятность безотказной работы P(t), интенсивность отказов λ(t) и среднее время между отказамиТ.
Один из способов оценки среднего времени между отказами – наблюдение за поведением программы в течение некоторого периода времени и нанесение на график значений времени между последовательными ошибками. Можно надеяться, что при этом будет обнаружено явление роста надежности; по мере того как ошибки обнаруживаются и исправляются, время между последовательными ошибками становится больше. Экстраполируя эту кривую в будущее, можно предсказать среднее время между отказами в любой момент времени и предсказать полное число ошибок в программе.
Такая экстраполяция, однако, в слишком большой степени основана на догадках и обычно уводит в сторону. Было бы лучше опираться на какое-то априорное представление об имеющемся распределении вероятностей ошибок, затем использовать сведения о найденных ошибках для оценки параметров этого распределения и только потом использовать эту модель для предсказания событий в будущем.
Разработка такой модели начинается с уточнения поведения функции λ(t) – интенсивности отказов ПО. В большинстве моделей аппаратного обеспечения λ(t) сначала уменьшается со временем (этап, когда обнаруживаются и исправляются ошибки проектирования и производства), затем остается постоянной в течение большей части срока службы системы (соответствует случайным отказам) и в конце полезного срока службы системы увеличивается (см. рис. 3.1). В теории надежности аппаратуры в основном рассматривается средний период, где интенсивность отказов постоянна. Однако предположение о постоянстве интенсивности отказов вряд ли применимо в случае программного обеспечения, для которого эта функция должна уменьшаться по мере обнаружения и исправления ошибок. Поэтому, как показано на рис. 3.6, интенсивность отказов со временем уменьшается.
Рис. 3.6. Предполагаемая интенсивность отказов
Первое существенное предположение состоит в том, что λ(t) постоянно до обнаружения и исправления ошибки, после чего λ(t) опять становится константой, но уже с другим, меньшим, значением. Это означает, чтоλ(t) пропорционально числу оставшихся ошибок. Второе предположение состоит в том, что λ(t) прямо пропорционально числу оставшихся ошибок, т.е.
λ(t) = –K(N–i), (3.1)
где N– неизвестное первоначальное число ошибок;i – число обнаруженных ошибок;K – некоторая неизвестная константа. Каждый раз, когда ошибка обнаруживается (модель предполагает, что задержка между обнаружением ошибки и ее исправлением отсутствует), λ(t) уменьшается на некоторую величинуK. На оси времени может быть представлено календарное время или время работы программы (последнее может быть масштабировано с учетом интенсивности использования программы).
Параметры N и K можно оценить, если некоторое количество ошибок уже обнаружено (например, если фаза тестирования уже частично пройдена). Предположим, что обнаруженоп ошибок, ах:[1],х[2], ...,х[n] – интервалы времени между этими ошибками. В предположении, что λ(t) постоянно между ошибками, плотность вероятности дляx[i]
. (3.2)
Полагая Т равным суммех-ов и используя функцию максимального правдоподобия для этого уравнения, получаем второе уравнение:
(3.3)
K иN в этих уравнениях – приближения для рассмотренных вышеK и N. Получилось два уравнения с двумя неизвестнымиN и K. Зная, что обнаруженоп ошибок с интерваламиx[i] между ними, эти уравнения можно решить относительноN и Kс помощью простой программы численного анализа. ЗначениеNдает основной результат – оценку полного числа ошибок. Знание параметраKпозволяет использовать уравнения для предсказания времени до появления (n+1)-й ошибки, (n+2)-й и т.д.
Эта основная модель может быть развита в различных направлениях. Например, частота отказов нередко увеличивается после завершения некоторого начального периода, по мере того как разрабатываются тесты или программа начинает использоваться интенсивнее.
Чтобы очертить границы применимости этой модели, требуется понимать лежащие в ее основе допущения (упрощения).
Первое из них – ошибка исправляется немедленно (или программа не используется до тех пор, пока найденная ошибка не будет исправлена). Предполагается также, что программа не изменяется (за исключением исправления ошибок). Второе допущение – при всех исправлениях найденные ошибки устраняются, и новых ошибок не вносится.
Третье, основное, допущение – это то, что функция λ(t) носит одинаковый характер для всех программ. Тем самым предполагается, что каждая ошибка уменьшает λ(t) на постоянную величинуK – на практике это, вероятно, нереально, однако, по-видимому, с такого предположения вполне разумно начать. Хотя желание выразить надежность программного обеспечения некоторой функцией времени вполне разумно, следует понимать, что в действительности она от времени не зависит. Надежность программного обеспечения является функцией числа ошибок, их серьезности и их расположения, а также того, как система используется.
В реальности частота отказов в большой системе при измерении в течение нескольких лет может иметь тенденцию к понижению, но внутри этого периода возможны большие колебания. Анализ частоты обнаружения ошибок при тестировании 14 различных систем [1] показал, что частота эта в пяти проектах достигала пика в начале работы, в пяти – в середине и в четырех – в конце.
Отметим, наконец, что описанная выше модель кажется чересчур оптимистичной. Например, при п = 10 (десять обнаруженных ошибок) с интервалами между отказами (в минутах)
9, 17, 21, 54, 32, 78, 82, 33, 57, 82
модель предсказывает, что осталось 3,3 ошибки (т.е. изначально в программе было N = 13,3 ошибки). При этом интервалы времени между 10, 11, 12 и 13 ошибками оцениваются в 135, 245 и 1265 минут.