Введение
1 Проблемы проектирования высоконадежных программно-информационных систем 11
1.1 Проблемы проектирования надежного программного обеспечения 11
1.2 Проблемы проектирования распределенных информационных систем 16
2 Методы обеспечения отказоустойчивости программного обеспечения 20
2.1 Структура и алгоритмы программного обеспечения 20
2.2 Обнаружение ошибок 22
2.3 Обработка исключений 26
2.4 Контрольные точки и рестарт 27
2.5 Парные процессы 28
2.6 Разнообразие Данных 29
2.7 Проблемы использования контрольных точек 31
2.8 Выводы 34
3 Применение методологии мультиверсий для обеспечения отказоустойчивости программного обеспечения 35
3.1 Блоки восстановления 35
3.2 N-версиошюе программирование 37
3.3 N-версионное программирование с самоконтролем 38
3.4 Блоки восстановления с согласованием 39
3.5 Проблемы мультиверсиошюго программного обеспечения 41
3.5.1 Разработка мультиверсиошюго программного обеспечения 41
3.5.2 Алгоритмы выбора вывода 44
3.6 Отказоустойчивость в операционных системах 48
3.7 Выводы 50
4 Модульные принципы построения программного обеспечения 52
4.1 Требования, предъявляемые к модулям программного обеспечения 52
4.1.1 Динамическое подключение модулей 53
4.1.2 Инкапсуляция 53
4.1.3 Защита модуля 55
4.1.4 Независимость от языка 57
4.2 Объектно-ориентированные методы проектирования модулей программного обеспечения 58
4.3 Проблемы разработки модулей программного обеспечения с использованием объектно-ориентированных методов проектирования 60
4.3.1 Проблемы распространения программного обеспечения 61
4.3.2 Проблемы стандартизации на двоичном уровне 65
4.3.3 Проблемы инкапсуляции 67
4.4 Технологии компонентного проектирования 72
4.4.1 Компонентная объектная модель (Component Object Model, COM). 75
4.4.2 Общая архитектура брокеров объектных запросов (Common Object Request Broker Architecture, CORBA) 83
4.5 Выводы 91
5 Построение мультиверсионного программного обеспечения с использованием технологии компонентного проектирования (СОМ) 93
5.1 MVS комплекс. Детали и составные части 94
5.1.1 Клиентский ЕХЕ-модуль 100
5.1.2 Компонент MvsEnvelope 101
5.1.3 Компонент MvsIO 102
5.1.4 Компоненты MvsProg[l, 2, ., N] 102
5.1.5 Компонент MvsSolver 102
5.1.6 Компонент MvsUserlnterface 103
5.2 MVS комплекс в работе 103
5.3 Результаты тестирования MVS комплекса 104
5.4 Выводы 112
4 Заключение 113
Список использованных источников ".. 115


