Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Оценка и повышение надежности программно-информационных технологий

Покупка
Основная коллекция
Артикул: 684946.01.99
Рассмотрены актуальные вопросы оценки и повышения надежности программно-информационных технологий. Приведены различные подходы к анализу программных средств как традиционной, так и распределенной архитектуры, а также мультиверсионного программного обеспечения. Рассмотрены основы мультиверсионного проектирования, показан объектно-ориентированный подход к повышению надежности программного обеспечения с введением программной избыточности. Особое внимание уделено проблеме надежности программно- информационных технологий корпоративных структур. Предназначено для студентов, обучающихся по направлениям 09.03.03 «Прикладная информатика», 09.03.04 «Программная инженерия», 38.03.02 «Менеджмент», 38.03.05 «Бизнес-информатика», всех форм обучения.
Царев, Р. Ю. Оценка и повышение надежности программно-информационных технологий: Учебное пособие / Царёв Р.Ю., Прокопенко А.В., Князьков А.Н. - Краснояр.:СФУ, 2015. - 176 с.: ISBN 978-5-7638-3387-4. - Текст : электронный. - URL: https://znanium.com/catalog/product/967667 (дата обращения: 27.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Оглавление 

1 

Министерство образования и науки Российской Федерации 
Сибирский федеральный университет 
 
 
 
 
 
 
Р. Ю. Царёв, А. В. Прокопенко, А. Н. Князьков 
 
 
 
ОЦЕНКА  И  ПОВЫШЕНИЕ  НАДЕЖНОСТИ 
ПРОГРАММНО-ИНФОРМАЦИОННЫХ 
ТЕХНОЛОГИЙ 
 
 
Рекомендовано УМО РАЕ по классическому университетскому 
и техническому образованию в качестве учебного пособия для 
студентов высших учебных заведений, обучающихся по направлениям подготовки: 09.03.03 «Прикладная информатика», 
09.03.04 «Программная инженерия», 38.03.02 «Менеджмент», 
38.03.05 «Бизнес-информатика» (рег. № 528 от 10.08.2015 г.) 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Красноярск 
СФУ 
2015 

Оценка и повышение надежности программно-информационных технологий 

2 

УДК 004.42-027.45(07) 
ББК 32.971-021я73 
        Ц181 
 
 
 
 
Р е ц е н з е н т ы: 
А. Н. Антамошкин, доктор технических наук, профессор Красноярского государственного аграрного университета; 
А. А. Ступина, доктор технических наук, профессор Красноярского 
государственного аграрного университета 
 
 
 
 
 
 
 
 
 
 
Царёв, Р. Ю. 
Ц181           Оценка и повышение надежности программно-информационных 
технологий : учеб. пособие / Р. Ю. Царёв, А. В. Прокопенко,             
А. Н. Князьков. – Красноярск : Сиб. федер. ун-т, 2015. – 176 с.  
ISBN 978-5-7638-3387-4 
 
Рассмотрены актуальные вопросы оценки и повышения надежности программно-информационных технологий. Приведены различные подходы к анализу программных средств как традиционной, так  и распределенной архитектуры,   
а также мультиверсионного программного обеспечения. Рассмотрены основы мультиверсионного проектирования, показан объектно-ориентированный подход к повышению надежности программного обеспечения с введением программной         
избыточности. Особое внимание уделено проблеме надежности программноинформационных технологий корпоративных структур. 
Предназначено для студентов, обучающихся по направлениям 09.03.03 
«Прикладная информатика», 09.03.04 «Программная инженерия», 38.03.02 «Менеджмент», 38.03.05 «Бизнес-информатика», всех форм обучения. 
 
Электронный вариант издания см.: 
http://catalog.sfu-kras.ru 
УДК 004.42-027.45(07) 
ББК 32.971-021я73 
 
ISBN 978-5-7638-3387-4                                                            © Сибирский федеральный  
                                                                                                          университет, 2015 

Оглавление 

3 

 
ОГЛАВЛЕНИЕ 
 
ВВЕДЕНИЕ .......................................................................................................... 7 
 
1. АНАЛИЗ  МЕТОДОВ  ОЦЕНКИ  НАДЕЖНОСТИ   
    ПРОГРАММНЫХ  СРЕДСТВ  НА  ВСЕХ  ЭТАПАХ   
    ЖИЗНЕННОГО  ЦИКЛА ............................................................................... 8 
1.1. Программное обеспечение и надежность .............................................. 8 
1.2. Проблемы в области исследования надежности  
       программного обеспечения ..................................................................... 9 
1.2.1. Проблемы терминологии ............................................................ 10 
1.2.2. Проблемы выбора параметров ................................................... 11 
1.3. Классификация моделей оценки надежности ПО .............................. 12 
1.4. Методы и средства обеспечения надежности   
       программного обеспечения ................................................................... 14 
1.5. Фазы разработки программного обеспечения ..................................... 15 
1.6. Фаза дизайна архитектуры программного обеспечения .................... 16 
1.6.1. Зависимость надежности от архитектуры   
          программного обеспечения ........................................................ 17 
1.6.2. Компоненты архитектуры........................................................... 18 
1.6.3. Свойства компонентов архитектуры ......................................... 20 
1.6.4. Надежность архитектуры программного обеспечения ............ 20 
1.7. Фаза кодирования ................................................................................... 24 
1.8. Фаза тестирования .................................................................................. 25 
1.8.1. Методология тестирования программного обеспечения ........ 25 
1.8.2. Моделирование роста надежности  
          программного обеспечения ........................................................ 27 
1.8.3. Операционные профили тестирования ..................................... 29 
1.9. Целеориентированный подход к жизненному циклу   
       программных средств ............................................................................ 31 
 
2. МУЛЬТИВЕРСИОННОЕ  ПРОГРАММНОЕ  ОБЕСПЕЧЕНИЕ ............. 36 
2.1. Базовые элементы мультиверсионного   
       программного обеспечения ................................................................... 36 
2.2. Жизненный цикл мультиверсионного   
       программного обеспечения ................................................................... 39 
2.3. Восстановление сбойных компонент при мультиверсионном 
       объектно-ориентированном программировании ................................ 42 

Оценка и повышение надежности программно-информационных технологий 

4 

2.4. Формализация задачи мультиверсионного формирования 
       программно-информационных технологий  
       с  гарантированной доступностью ресурсов ....................................... 47 
2.5. Модель использования ресурсов при формировании  
       программно-информационных технологий ........................................ 51 
2.5.1. Формирование вектора временной развертки  
          с учетом ресурсных и временных ограничений ...................... 55 
2.5.2. Формирование оптимального вектора конфигурации  
          при стоимостных ограничениях ................................................ 59 
2.6. Алгоритмические процедуры  мультиверсионного  
       формирования  программно-информационных технологий ............. 60 
2.6.1. Общий алгоритм решения задачи ............................................. 61 
2.6.2. Алгоритм проверки вектора конфигурации  
         на ресурсные и временные ограничения ................................... 62 
2.7. Применение мультиверсий для обеспечения отказоустойчивости 
       программно-информационных технологий ........................................ 68 
2.7.1. Блоки восстановления ................................................................ 69 
2.7.2. Мультиверсионное программирование .................................... 70 
2.7.3. Мультиверсионное программирование с самоконтролем ...... 71 
2.7.4. Блоки восстановления с согласованием ................................... 73 
2.7.5. Проблемы мультиверсионного программного обеспечения .. 74 

3. МОДЕЛИ  И  АЛГОРИТМЫ  АНАЛИЗА  НАДЕЖНОСТИ 
    ПРОГРАММНО-ИНФОРМАЦИОННЫХ  ТЕХНОЛОГИЙ .................... 80 
3.1. Модель анализа на этапе дизайна архитектуры  
       программного обеспечения .................................................................. 80 
3.2. Анализ надежности программного обеспечения  
       на фазе кодирования .............................................................................. 83 
3.3. Анализ надежности программного обеспечения  
       на фазе тестирования системы ............................................................. 84 
3.4. Операционные профили тестирования компонент ............................ 85 
3.4.1. Ведение таблиц параметров профилей ..................................... 86 
3.4.2. Пример применения операционных профилей ........................ 87 
3.5. Модели надежности объектно-ориентированного  
       программного обеспечения .................................................................. 89 
3.5.1. Формирование архитектуры объектно-ориентированного 
          программного обеспечения ........................................................ 89 
3.5.2. Кодирование и тестирование объектно-ориентированного 
          программного обеспечения ........................................................ 92 
3.5.3. Модель оценки транзакционной надежности   
          объектно-ориентированного  программного обеспечения ..... 92 
3.5.4. Пример расчета транзакционной надежности ......................... 95 

Оглавление 

5 

4. СИСТЕМА  МОДЕЛЬНО-АЛГОРИТМИЧЕСКОЙ  ПОДДЕРЖКИ 
    МНОГОЭТАПНОГО  АНАЛИЗА  НАДЕЖНОСТИ   
    ПРОГРАММНЫХ  СРЕДСТВ ..................................................................... 97 
4.1. Среда разработки ................................................................................... 97 
4.2. Описание системы модельно-алгоритмической поддержки 
       многоэтапного анализа надежности программных средств ............. 97 
4.3. Концептуальная архитектура системы   
       модельно-алгоритмической поддержки  
       многоэтапного анализа надежности программных средств ............. 98 
4.4. Концептуальная архитектура реализации  
       мультиверсионной среды.................................................................... 100 
4.5. Описание функционирования системы ............................................. 102 
4.6. Примеры решения задач и анализ результатов ................................ 104 
 
5. ПРОБЛЕМА  ПОВЫШЕНИЯ  НАДЕЖНОСТИ   
    ПРОГРАММНО-ИНФОРМАЦИОННЫХ  ТЕХНОЛОГИЙ  
    ДЛЯ  КОРПОРАТИВНЫХ  СТРУКТУР .................................................. 111 
5.1. Обеспечение отказоустойчивости и доступности ресурсов 
       программно-информационных технологий ...................................... 111 
5.1.1. Адекватность программно-информационных технологий 
          условиям и требованиям работоспособности ........................ 112 
5.1.2. Обеспечение доступности ресурсов   
          программно-информационных технологий ........................... 115 
5.1.3. Анализ реализации корпоративного портала ......................... 119 
5.2. Обеспечение гарантированной готовности  
       программно-информационных технологий ...................................... 122 
5.2.1. Аппаратно-программная избыточность серверов ................. 122 
5.2.2. Платформа сервера гарантированной готовности ................. 124 
5.2.3. Программно-информационная технология  
          АТМ обеспечения гарантированной готовности ................... 128 
5.3. Задачи управления корпоративными  
       программно-информационными технологиями ............................... 130 
5.3.1. Модель централизованного управления ................................. 131 
5.3.2. Интеграция сетевого и системного администрирования  
          в корпоративных структурах ................................................... 132 
5.3.3. Программно-информационные технологии   
          сетевого администрирования ................................................... 134 
5.3.4. Программно-информационные технологии   
          системного администрирования .............................................. 137 
5.3.5. Возможности современных ПИТ  
          для управления ИТ-услугами в корпорации .......................... 141 

Оценка и повышение надежности программно-информационных технологий 

6 

5.3.6. Анализ проблем управления корпоративными  
          программно-информационными технологиями .................... 143 
 
6. ФОРМИРОВАНИЕ  
    ПРОГРАММНО-ИНФОРМАЦИОННЫХ  ТЕХНОЛОГИЙ  
    ДЛЯ  КОРПОРАТИВНЫХ  СТРУКТУР .................................................. 146 
6.1. Процедуры формирования ПИТ ........................................................ 146 
6.1.1. Обеспечение функциональности ............................................ 147 
6.1.2. Обеспечение надежности и масштабируемости ................... 147 
6.1.3. Формирование ресурсных требований ................................... 148 
6.1.4. Формирование топологии корпоративного кластера ........... 150 
6.1.5. Выбор сервером дисковых подсистем и соединений ........... 151 
6.1.6. Корпоративная операционная система ................................... 153 
6.1.7. RMS – программное обеспечение кластера ............................ 155 
6.1.8. Средства централизованного архивирования  
          и резервирования ...................................................................... 158 
6.1.9. Принципы корпоративной системы ....................................... 159 
6.2. Программная система поддержки  мультиверсионного 
       формирования  программно-информационных технологий .......... 161 
6.2.1. Конструктор структуры мультиверсионных компонент ...... 161 
6.2.2. Функциональные возможности системы ............................... 162 
6.3. Использование программной системы поддержки  
       для повышения доступности ресурсов корпоративной СУБД ....... 165 
6.3.1. Процедуры настройки и оптимизации СУБД ORACLE ....... 165 
6.3.2. Оптимизация быстродействия системы управления   
          базами данных ORACLE .......................................................... 167 
6.3.3. Программная подсистема оптимизации  
          быстродействия СУБД ORACLE ............................................ 168 
 
ЗАКЛЮЧЕНИЕ ............................................................................................... 170 
 
БИБЛИОГРАФИЧЕСКИЙ СПИСОК ........................................................... 172 

Оглавление 

7 

 
ВВЕДЕНИЕ 
 
 
Современные исследования надежности систем управления и систем 
обработки информации показали, что качество их работы напрямую зависит от надежности и безотказности программного обеспечения. 
За прошедшие десятилетия было создано множество методов и моделей исследования надежности программного обеспечения (ПО), однако 
единого подхода к решению этой проблемы предложено не было. Причиной 
этому является уникальность каждой программной системы. Тем не менее 
при разработке ответственных проектов, их создатели стараются в той или 
иной степени получить оценку надежности ПО, как правило, на основе результатов конечных испытаний.  
Современные программные системы используют при работе колоссальный объем данных, проходящих через стандартные модули и функции. 
Поэтому выявить все связи и пути обработки информации, даже для достаточно несложной программы, практически невозможно. Исходя из этого 
детализация элементов расчета надежности (условно называемых программными модулями) должна ограничиваться законченными программными образованиями, которые, взаимодействуя между собой, составляют 
более сложное объединение, надежность которого нас интересует.  
Основными подходами при создании отказоустойчивых систем 
управления и обработки информации являются применение алгоритмов          
и моделей оценки надежности программных средств на каждом шаге жизненного цикла и использование мультиверсионного программного обеспечения. 
Учебное пособие подробно рассматривает различные вопросы, связанные с оценкой надежности программного обеспечения систем управления и обработки информации, а также программно-информационных технологий корпоративных структур. Приведен комплексный подход оценки 
надежности программных средств на основных этапах жизненного цикла    
и обеспечения согласованности разработанных моделей и алгоритмов 
оценки параметров надежности программного обеспечения на основных 
фазах жизненного цикла. 
Методология оценки надежности программных средств, приведенная 
в учебном пособии, создает теоретическую основу для разработки новых 
моделей, методов и алгоритмов, направленных на эффективный анализ 
программных средств на основных фазах жизненного цикла программного 
обеспечения.

Оценка и повышение надежности программно-информационных технологий 

8 

 
1. АНАЛИЗ  МЕТОДОВ  ОЦЕНКИ   
НАДЕЖНОСТИ  ПРОГРАММНЫХ  СРЕДСТВ   
НА  ВСЕХ  ЭТАПАХ  
ЖИЗНЕННОГО  ЦИКЛА 
 
 
1.1. Программное обеспечение и надежность 
 
Интерес к оценке надежности программного обеспечения (ПО) возник одновременно с появлением программ. Он был вызван естественным 
стремлением получить традиционную вероятностную оценку надежности 
технического устройства (ЭВМ или персонального компьютера), работа 
которого в основном и предназначалась для функционирования ПО.          
Последнее было определено как одна из составляющих частей машины, 
поэтому подход к оцениванию надежности программной части первоначально мало отличался от оценивания надежности техники и заключался       
в переносе известных статистических методов классической теории надежности на новую почву, образовав ее отдельную ветвь – теорию надежности 
ПО. В целом этот подход сохранился до сегодняшнего дня. Однако по мере развития вычислительной техники пришло четкое понимание того, что 
ПО – не просто составная часть вычислительной техники. В современных 
условиях развития цифровой техники специализированное ПО перестало 
быть принадлежностью одной вычислительной системы (как это было 
раньше), а стало использоваться на сотнях и тысячах аналогичных компьютеров (в основном – персональных). Даже если не касаться вопросов        
информационной безопасности, проблема обеспечения устойчивого функционирования расчетных программ, выявления их ошибок сегодня крайне 
остро стоит перед разработчиками. 
За прошедшие десятилетия было создано множество методов, методик 
и моделей исследования надежности ПО. Однако, к сожалению, единого 
подхода к решению этой проблемы предложено не было и, по-видимому,  
в ближайшее время не предвидится. Тем не менее при разработке сложных 
программных систем их создатели стараются в той или иной степени         
получить оценку надежности ПО. Более правильный подход заключается  
в последовательном оценивании надежности программ на каждом этапе 
разработки. Основная сложность при использовании статистических методов заключается в отсутствии достаточного количества исходных данных. 

1. Анализ методов оценки надежности программных средств на всех этапах жизненного цикла 

9 

Динамика выявления ошибок должна тщательно фиксироваться и обрабатываться. Важной проблемой является степень детализации элемента расчета надежности. Выявить все связи обработки информации (как это порой 
предлагается), даже для достаточно несложной программы, практически 
нереально. Исходя из этого детализация элементов расчета надежности 
(условно называемых программными модулями) должна ограничиваться 
законченными программными образованиями, которые, взаимодействуя 
между собой, составляют более сложное объединение (комплекс), надежность которого нас интересует. При этом допускается, что надежность       
самой вычислительной техники, операционной системы и среды программирования полная, нас интересует лишь надежность функционирования 
специальных программных средств, решающих основную целевую задачу 
системы. 
 
В данной работе проводится анализ методов, моделей и методологий 
в области создания надежного, отказоустойчивого ПО. Предпринимается 
попытка систематизировать и унифицировать существующие методологии. 
Приводятся новые разработанные авторами модели и алгоритмы для использования на всем жизненном цикле создания гарантоспособного программного обеспечения. 
 
 
1.2. Проблемы в области исследования надежности  
программного обеспечения 
 
В результате анализа многих работ из области исследования           
надежности ПО был выявлен широкий ряд проблем, основной причиной 
которого является отсутствие единого стандарта в области отказоустойчивого ПО.  
Были изучены труды многих зарубежных исследователей, таких как 
А. Авиженис, Г. Майерс, Б. Боэм, И. Соммервилл, и труды отечественных 
авторов: В. В. Липаев, И. А. Ковалев и др. 
Среди множества различных институтов и организаций (ISREE, 
IEEE, NASA), независимых исследователей проблем надежности ПО              
не существует единой терминологии, единых параметров и показателей 
надежности, методологии разработки отказоустойчивого ПО. 
Можно выделить три основные группы проблем в данной области: 
● отсутствие единой методологии создания отказоустойчивого ПО; 
● отсутствие единой методологии тестирования отказоустойчивого 
ПО; 
● отсутствие единого подхода к анализу проблемной области. 
 

Оценка и повышение надежности программно-информационных технологий 

10 

1.2.1. Проблемы терминологии 

Ошибка, сбой и дефект в программном обеспечении 
Программное обеспечение содержит ошибку, если:  
1. Поведение ПО не соответствует спецификациям. 
Недостатки: неявно предполагается, что спецификации корректны.  
Подготовка спецификаций – один из основных источников ошибок. Если 
поведение программного продукта не соответствует его спецификациям, 
ошибка, вероятно, имеется. Однако, если система ведет себя в соответствии со спецификациями, мы не можем утверждать, что она не содержит 
ошибок. 
2. Поведение ПО не соответствует спецификациям при использовании в установленных при разработке пределах. 
Недостатки: если система случайно используется в непредусмотренной ситуации, ее поведение должно оставаться разумным. Если это не так, 
она содержит ошибку. 
3. Программное обеспечение ведет себя не в соответствии с официальной документацией и поставленными пользователю спецификациями. 
Недостатки: ошибки могут содержаться и в программе, и в спецификациях, или в руководстве описана только ожидаемая и планируемая работа  
с системой. 
4. Система не способна действовать в соответствии с исходной спецификацией и перечнем требований пользователя. 
Это утверждение тоже не лишено недостатков, поскольку письменные требования пользователя редко детализированы настолько, чтобы 
описывать желаемое поведение программного обеспечения при всех мыслимых обстоятельствах. 
Окончательное определение: в программном обеспечении имеется 
ошибка, если оно не выполняет того, что пользователю разумно от него 
ожидать. Отказ программного обеспечения – это проявление ошибки                
в нем.  
Термины «ошибка», «сбой» и «дефект» часто используются без разделения по смыслу. В ПО «ошибка» – это действия программиста, которые 
приводят к дефектам в ПО. «Дефект» в ПО влечет за собой сбои во время 
исполнения кода. «Сбой» – отклонение выхода системы от желаемого при 
выполнении кода. 
Дефект влечет за собой сбой только тогда, когда выполняется код, 
содержащий ошибку, и распространяется до выхода системы. Уровень тестируемости дефекта определяется как вероятность обнаружения сбоя на 
случайно выбранном выходе.  
Уровни сбоя: катастрофичный, высокий, средний, низкий, незначительный. Определения этих уровней меняются от системы к системе. 

1. Анализ методов оценки надежности программных средств на всех этапах жизненного цикла 

11 

Простой, или «зависание» – особый вид сбоя, зависящий как от сбоя 
в аппаратной части, так и в программной части системы, или же от некорректных действий пользователя. 

Надежность программного обеспечения 
Организация IEEE определяет надежность как «способность системы 
или компонента выполнять требуемые функции при определенных условиях 
за определенный период времени». Это определение дал Авиженис, и оно 
считается классическим. 
Основной недостаток такого определения – это то, что в нем не учтено различие между ошибками разных типов. 
Надежность программного обеспечения определяется как вероятность функционирования без ошибок за определенный период времени             
в определенной операционной системе.  
Для большинства разработчиков надежность определяется как корректность программного обеспечения, т. е. количество ошибок, которое 
надо исправить во время теста. 
Существует и другое определение надежности – операционная (транзакционная) надежность – способность системы или компонента выполнять требуемые функции при определенных условиях в рамках транзакции. Широко используется в системах обработки и хранения информации 
в базах данных. 
В рамках данной работы будут использоваться понятия классической 
и транзакционной надежности в зависимости от места применения и используемой модели надежности. 

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

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

12 

дам оценки тех или иных количественных показателей, характеризующих  
надежность. 
Надежность – имеет обозначение R (Reliability) – измеряется как вероятность невозникновения сбоя. Надежность используется практически 
во всех моделях как основной показатель. 
Среднее время появления сбоя – имеет аббревиатуру MTTF (Mean 
Time To Failure); измеряет время между двумя последовательными сбоями. 
Интенсивность сбоев – величина, обратная MTTF, определяет количество сбоев в единицу времени. 
Среднее время простоя (TR) – величина, определяющая время, затрачиваемое на выявление, устранение и восстановление системы или компонента системы после сбоя. 
Коэффициент готовности системы – S, определяется как отношение 
разности среднего времени появления сбоя и среднего времени простоя 
системы к среднему времени появления сбоя. 
Количество оставшихся ошибок в коде ПО используется при его разработке. Показывает количество ошибок в коде на каждую тысячу строк 
исходного кода. 
Плотность ошибок в коде обычно измеряется как количество ошибок 
на тысячу строк исходного кода.  
 
 
1.3. Классификация  
моделей оценки надежности ПО 
 
Далее в работе проводится классификация существующих моделей, 
методов и алгоритмов оценки надежности программных средств. 

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

Классификация по используемым формальным методам 
По формальным методам модели можно проклассифицировать следующим образом. 
Формальные математические модели используют какую-либо математическую функцию для экстраполяции параметров надежности, например, 

1. Анализ методов оценки надежности программных средств на всех этапах жизненного цикла 

13 

для оценки плотности ошибок в коде используют экспоненциальную 
функцию. 
Модели поведения ПО делятся на статистические и модели ветвления хода выполнения (path-based).  
Модели ветвления используют описание внутренней структуры архитектуры ПО для оценки надежности, при этом описываются все возможные пути выполнения кода и оценивается надежность каждого пути. 
Статистические модели, использующие исторические данные, аналогично формальным математическим моделям используют статистическую 
функцию для экстраполяции параметров надежности. Самые распространенные модели – использующие регрессию, с помощью которых по накопленным статистическим данным можно достаточно точно оценивать параметры надежности. 
Марковские цепи используют для описания поведения структуры 
программного обеспечения, в таких моделях надежность ПО рассматривается как матрица вероятностей сбоев компонент архитектуры.  
Нейросети используются для экстраполяции параметров надежности. 
Для обучения нейросетей используют исторические данные или выходные 
данные других моделей. 

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

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

Оценка и повышение надежности программно-информационных технологий 

14 

Гибридные модели 
Гибридные модели используют различные комбинации из всех вышеперечисленных классов моделей. Могут применяться для оценки любых 
параметров надежности на разных этапах жизненного цикла программного 
обеспечения. 
 
 
1.4. Методы и средства обеспечения надежности  
программного обеспечения 
 
Методы проектирования надежного программного обеспечения 
Методы проектирования надежного программного обеспечения 
можно разбить на следующие группы: 
1. Предупреждение ошибок – методы, позволяющие минимизировать 
или исключить появление ошибки. 
2. Обнаружение ошибок – методы, направленные на разработку дополнительных функций программного обеспечения, помогающих выявить 
ошибки. 
3. Устойчивость к ошибкам – дополнительные функции программного обеспечения, предназначенные для исправления ошибок и их последствий,  обеспечивающие функционирование системы при наличии ошибок.  

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

Методы обнаружения ошибок 
Методы обнаружения ошибок базируются на введении в программное обеспечение системы различных видов избыточности: 
● Временная избыточность. Использование части производительности аппаратных средств для контроля исполнения и восстановления работоспособности ПО после сбоя. 
● Информационная избыточность. Дублирование части данных информационной системы для обеспечения надежности и контроля достоверности данных. 
● Программная избыточность включает в себя «взаимное недоверие» – 
компоненты системы проектируются исходя из предположения, что другие