- •Е.Л. Кон, м.М. Кулагина надежность и диагностика компонентов инфокоммуникационных и информационно-управляющих систем
- •Оглавление
- •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. Другие вероятностные модели
Кроме обсуждавшейся в предыдущем разделе основной модели было построено несколько других. Предлагалась байесова модель, учитывающая возможность того, что λ(t) может не уменьшаться при каждом исправлении ошибки из-за возможного внесения при этом новых ошибок [9]. В [10] отказываются от предположения, что исправления выполняются сразу после обнаружения, и предлагается модель, в которой распределение исправлений пропорционально распределению обнаружений ошибок, но отстает во времени. Было предложено несколько моделей на основе марковского процесса, состояния которого изменяются при всяком обнаружении или исправлении ошибки, а вероятности переходов представлены частотами обнаружения и исправления ошибок [11]. Более общий подход был предложен в [12]. В этих работах был выполнен статистический анализ данных об ошибках в 19 программах, при этом было обнаружено, что эти данные не соответствовали какому-либо единственному распределению вероятностей. Анализ проверки дисперсии среднего времени между обнаружениями ошибки одной программы в семи различных условиях показал, что средние значения были не одинаковы, из чего следует, что среда (т.е. условия, в которых программа используется) – более существенный фактор, чем число оставшихся ошибок. Это привело к выводу, что модель надежности должна быть своей для каждой программы и конкретных условий ее использования. Для этого нужно собрать некоторые данные об ошибках, выработать на основе данных о частоте ошибок гипотезы о функции надежности, оценить параметры модели и выполнить тесты, показывающие, насколько эта модель подходит.
3.4.3. Статистическая модель Миллса
Модель совершенно другого типа разработал Миллс [13]. В ней не используется никаких предположений о поведении интенсивности отказов λ(t), эта модель строится на твердом статистическом фундаменте. Сначала программа «засоряется» некоторым количеством известных ошибок. Эти ошибки вносятся в программу случайным образом, а затем делается предположение, что для исходных и внесенных в программу ошибок вероятность обнаружения при последующем тестировании одинакова и зависит только от их количества. Тестируя программу в течение некоторого времени и сравнивая количество обнаруженных исходных и внесенных в программу ошибок, можно оценитьN– первоначальное число ошибок в программе.
Предположим, что в программу было внесено s ошибок, после чего решено начать тестирование. Пусть при тестировании обнаруженоn+v ошибок, причемп – число найденных исходных ошибок,av – число найденных внесенных ошибок. Тогда оценка дляN по методу максимального правдоподобия будет следующей:
(3.4)
Например, если в программу внесено 20 ошибок и к некоторому моменту тестирования обнаружено 15 исходных и 5 внесенных ошибок, значение Nможно оценить в 60. В действительностиN можно оценивать после обнаружения каждой ошибки; Миллс [13] предлагает во время всего периода тестирования отмечать на графике число найденных ошибок и текущие оценки дляN.
Вторая часть модели связана с выдвижением и проверкой гипотез об N. Примем, что в программе имеется не болееk исходных ошибок, и внесем в нее ещеs ошибок. Теперь программа тестируется, пока не будут обнаружены все внесенные ошибки, причем в этот момент подсчитывается число обнаруженных исходных ошибок (обозначим егоп). Уровень значимостиС вычисляется по следующей формуле:
(3.5)
Величина С является мерой доверия к модели; это вероятность того, что число исходных ошибок будет не большеk. Например, если мы утверждаем, что в программе нет ошибок (k = 0), и, внеся в программу 4 ошибки, все их обнаруживаем, не встретив ни одной исходной ошибки, тоС= 0,80. Чтобы достичь уровня 95 %, нам надо было бы внести в программу 19 ошибок. Если мы утверждаем, что в программе не более трех исходных ошибок, и, внеся шесть ошибок, обнаруживаем их все и не более трех исходных, уровень значимости равен 60 %. Формула дляС имеет под собой прочные статистические основания; выведена она Миллсом [13].
Эти две формулы для N и С образуют полезную модель ошибок; первая предсказывает число ошибок, а вторая может использоваться для установления доверительного уровня прогноза. Слабость этой формулы в том, чтоС нельзя предсказать до тех пор, пока не будут обнаружены все внесенные ошибки (а это, конечно, может не произойти до самого конца этапа тестирования). Чтобы справиться с этой трудностью, можно модифицировать формулу дляСтак, чтобыС можно было оценить после того, как найденоjвнесенных ошибок (j s) [14]:
(3.6)
В предыдущем примере, где k = 3,as = 6, если найдены 5 из 6 внесенных ошибок,С опускается с 60 до 33 %. Еще один график, который полезно строить во время тестирования, – текущее значение верхней границыk для некоторого фиксированного доверительного уровня, например 90 %.
Модель Миллса одновременно математически проста и интуитивно понятна. Легко представить себе программу внесения ошибок, которая случайным образом выбирает модуль, вносит логическую ошибку, изменяя или убирая операторы, и затем заново его компилирует. Природа внесенной ошибки должна сохраняться в тайне, но все их следует регистрировать, чтобы впоследствии можно было разделять ошибки на исходные и внесенные.
Процесс внесения ошибок в настоящее время является самым слабым местом модели, поскольку предполагается, что для исходных и внесенных ошибок вероятность обнаружения одинакова (но неизвестна). Из этого следует, что внесенные ошибки должны быть «типичными» образцами ошибок, но мы еще недостаточно хорошо понимаем программирование, чтобы сказать, какими именно должны быть типичные ошибки. Однако по сравнению с проблемами, стоящими перед другими моделями надежности, эта проблема кажется относительно несложной и вполне разрешимой.
Наконец, отметим еще одно достоинство внесения ошибок: оно может оказывать положительное психологическое влияние на группу тестирования. У программистов возникают затруднения при отладке своих программ, например, потому, что они склонны считать каждую обнаруженную ошибку последней. Внесение ошибок может помочь в этом деле, поскольку теперь программист знает, что в его программе есть еще не обнаруженные ошибки.