Чтобы глубже понять проблемы надежности функционирования комплексов программ остановимся на уточнении фундаментальных понятий, таких как сбой, отказ, восстановление.
Отказ при функционировании комплекса программ может проявляться как следствие нарушения кодов записи программ в памяти команд, стирания или искажения данных в оперативной или долговременной памяти ЭВМ, нарушения нормального хода вычислительного процесса. Отказ может проявляться в виде программного останова или зацикливания, систематического пропуска исполнения некоторой группы программ, однократного или систематического искажения накопленных данных и т.д. Первопричиной нарушения работоспособности программ при безотказности вычислительных средств, всегда является конфликт между реальными исходными данными, подлежащими обработке, и программой, осуществляющей эту обработку. При этом под исходными данными понимается вновь поступившие сообщения или вся информация, накопленная за время предыдущего функционирования программ.
Сбой - это самоустраняющийся отказ, не требующий внешнего вмешательства. Основным принципом классификации сбоев и отказов в программе является разделение по временному показателю длительности восстановления после любого искажения программ, данных или вычислительного процесса, регистрируемого как нарушение работоспособности. При длительности восстановления меньшей порога, аномалии при функционировании программ следует относить к сбоям, а при восстановлении, превышающем по длительности пороговое значение, происходящие искажения соответствуют отказу.
Сделаем следующее важное замечание. Между понятиями правильная и надежная программа отсутствует тождественность. Понятие правильной или корректной программы может рассматриваться статически вне временного функционирования. Корректная программа должна обеспечивать выходные данные соответствующие эталонным в области изменения исходных данных, заданных требованиями технического задания или спецификации. Надежная программа, прежде всего, должна обеспечивать низкую вероятность отказа в процессе функционирования. Быстрое реагирование на искажение программ, данных или вычислительного процесса и восстановление работоспособности за время меньшее, чем порог, позволяют обеспечить высокую надежность программ. При этом некорректная программа может функционировать в принципе абсолютно надежно.
Для решения задачи восстановления в комплексе программ должны быть средства, позволяющие:
· проводить систематический контроль и оперативно обнаруживать аномалии процесса функционирования или состояния программ и данных;
· диагностировать обнаруженные искажения;
· вырабатывать решения и выбирать методы и средства восстановления;
· реализовывать оперативное восстановление нормальной работоспособности;
· регистрировать каждый сбой или отказ и обобщать с данными предыдущих искажений для выявления систематических случаев, требующих доработки программ или аппаратуры.
Таблица 2.3.
Факторы, определяющие надежность программ
Методы проектирования корректных программ
Методы контроля
Особенности внешних абонентов и пользователей:
· требования к показателям надежности;
· инерционность внешних абонентов;
· необходимое время отклика на входные данные.
Искажения исходных данных:
· искажения данных, поступающих от человека;
· искажение данных, поступающих по телекодовым каналам связи;
· искажение данных в процессе накопления и хранения в ЭВМ.
Ошибки в программах и их проявление:
· статистические характеристики ошибок и искажений:
· программ;
· массивов данных;
· вычислительного процесса.
Структурное проектирование программ и данных:
· структурное проектирование программных модулей;
· структурное проектирование взаимодействия модулей;
· структурирование данных
Тестирование программ:
· детерминированное тестирование;
· статистическое тестирование;
· динамическое тестирование и контроль пропускной способности в реальном времени.
Методы использованияизбыточности:
· временной;
· информационной;
· программной.
Методы контроля программ, данных и вычислительного процесса:
· предпусковой контроль;
· оперативный контроль.
Методы программного восстановления:
· восстановление текстов
программ;
· исправление данных;
· корректировка
вычислительного процесса.
Методы испытаний нанадежность:
· испытания в нормальных
условиях эксплуатации;
· форсированные испытания;
· расчетно-экспериментальные
методы определения
надежности.
Методы обеспечения надежности при сопровождении:
· обеспечение сохранности
программ эталонных версий;
· обеспечение корректности
внесения изменений и
развитии версий.