Основные факторы, определяющие надежность программ.
Надежность функционирования комплексов программ зависит от многих факторов, которые можно объединить в три группы (табл.. 12).
n факторы,непосредственно определяющие возникновение отказов, и характеристики надежности программ;
n методы, способствующие проектированию корректных программ, снижающие вероятность программных ошибок и отказовых ситуаций при исполнении программ;
n метод, активно влияющие на повышение надежности функционирования программ позволяющие контролировать и поддерживать заданные показатели надежности.
Таблица 12.
Факторы, непосредственно определяющие надежность программ | Методы проектирования корректных программ | Методы контроля и обеспечения надежности программ |
Особенности внешних абонентов и пользователей результатов программ | Структурное проектирование программ и данных | Методы использования избыточности |
Требования к показателям надежности | Структурное проектирование программных модулей | Временной Информационной Программной |
Инерционность внешних абонентов | Структурное проектирование взаимодействия модулей | Методы контроля программ, данных и вычислительного процесса |
Необходимое время отклика на входные данные | Структурирование данных | Предпусковой контроль Оперативный контроль |
Искажения исходных данных | Тестирование программ | Методы программного восстановления |
Искажения данных поступающих от человека | Детерминированное тестирование | Восстановление текстов программ Исправление данных |
Искажения данных поступающих по телекодовым каналам связи | Статистическое тестирование | Корректировка вычислительного процесса |
Искажения данных в процессе накопления и хранения в ЭВМ | Динамическое тестирование и контроль пропускной способности в реальном времени | Методы испытаний на надежность Форсированные испытания |
Ошибки в программах и их проявление | Испытания в нормальных условиях эксплуатации | |
Статистические характеристики ошибок и искажений: | Расчетно-экспериментальные методы определения надежности | |
Программ | Методы обеспечения надежности при сопровождении | |
массивов данных | Обеспечение сохранности программ эталонных версий | |
Вычислительного процесса | Обеспечение корректности внесения изменений и развития версий |
Отказы при функционировании программ возникают вследствие взаимодействия данных и ошибок в программе. Характеристики ошибок в значительной степени определяются методами проектирования программ.Активные методы обнаружения и локализации программных ошибок базируются на тестировании различных видов: детерминированном, статистическом и динамическом. Однако все виды тестирования не гарантируют отсутствие ошибок в комплексах программ и высокую надежность. Для этого применяются методы контроля и обеспечения надежности программ путем использования программной, временной и информационной избыточности.
Ситуации проявления ошибок при исполнении программ можно разделить на три группы:
n Отказ - искажения вычислительного процесса, данных или программ, вызывающие полное прекращение выполнения функций системой;
n Искажения, кратковременно прерывающие функционирование системы - отказовые ситуации или сбои, характеризующиеся быстрым восстановлением без длительной потери работоспособности;
n Искажения, мало отражающиеся на вычислительном процессе - сбои и искажения, не создающие отказовые ситуации.
Основным показателем при классификации конкретных видов искажений является возможное время восстановления и степень проявления последствий произошедшего сбоя или отказовой ситуации:
n зацикливание, т.е. последовательная повторяющаяся реализация некоторой группы команд, не прекращающаяся без внешнего (для данного цикла) вмешательства;
n останов исполнения программ и прекращение решения функциональных задач;
n полная самоблокировка вычислительного процесса (клинч) из-за последовательного прекрестного обращения разных программ к одним и тем же ресурсам ЭВМ без освобождения ранее занятых ресурсов;
n прекращение или значительное снижение темпа решения некоторых задач вследствие перегрузки ЭВМ по пропускной способности;
n значительное искажение или полная потеря накопленной информации о текущем состоянии управляемого процесса или внешних абонентов;
n искажение процессов взаимного прерывания программ, приводящее к блокировке возможности некоторых типов прерываний.