Технологии повышения помехоустойчивости программ
Помехой будем называть некорректное значение внешнего воздействия или входной величины. Ранее мы уже определили, что такое корректное внешнее воздействие: его значение должно принадлежать ареалу и поступать оно в программу должно в оговоренное время (можно, по-видимому, рассматривать внешнее воздействие как пару - значение и время появления; тогда и ареал должен состоять из двух компонентов, один из которых оговаривает допустимые значения, размеры воздействия, а другой - допустимые моменты времени).
Уровень помехоустойчивости определяется способностью программы не допустить влияния помех на конечный результат решения задачи. Конечно, более высокий уровень помехоустойчивости требует больших затрат времени, объема памяти и т.п.
Помехоустойчивость программы может быть повышена при использовании различных видов резервирования, т.е. введением избыточности.
Избыточность вводится для обнаружения, изоляции и устранения помех. Избыточность, как и резервирование, может быть временной, информационной, программной (алгоритмической), эргатической.
Временная избыточность предполагает планирование функционирования программы, при котором создается резерв времени для выполнения заданных функций. Этот резерв позволяет в случае необходимости повторять выполнение тех или иных фрагментов программы, включать дополнительный контроль, улучшить сервис при эксплуатации программ.
Информационная избыточность реализуется введением дополнительной информации, сопровождающей основную при передачах, при обработке, при отображении. Это могут бить контрольные суммы, корректирующие кода и т.д. Цель введения избыточной информации - обнаружение помех, а если удастся, то и устранение обнаруженных ошибок.
Программная избыточность является средством для защиты от помех, обнаружения и устранения ошибок. Средство это реализуется программным путем, введением дополнительных алгоритмов контроля в программе решения задачи.
Эргатическая избыточность предполагает выдачу сообщений, которые позволяют человеку повлиять на ход решения задачи с целью устранения всевозможных помех.
Наиболее распространенные методы повышения помехоустойчивости программ используют различные виды избыточности:
· временную, поскольку для реализаций методов требуются дополнительное машинное время;
· информационную, поскольку для проведения контроля необходима дополнительная информация;
· программную, поскольку реализация методов программная;
· эргатическую, поскольку не всегда удается устранить помеху автоматически; в этих случаях может помочь только вмешательство человека.
Помехоустойчивость программы можно повысить применяя способы повторения выполнения фрагментов программ и организации защиты от проникновения помех в программу.
Повторение выполнения
Чаще всего применяются программистами такие два способа повторения выполнения фрагментов - двойной счет и контрольные точки.
Двойной счет организуется обычно по такой схеме. Отдельный фрагмент задачи решается дважды, затем результаты сравниваются, если они совпадают, то решение считается правильным, и переходят к следующему фрагменту программы. Если же результаты не совпадают, то может быть выполнена третья попытка, и если результаты третьей попытки совпадают с одним из ранее полученных результатов, то они считаются правильными.
Здесь мы опять встречаемся с контуром управления. Объектом управления в таком контуре является фрагмент программы. Цель контура - достижение высокой достоверности решения ценой потери времени.
Существуют модификации метода двойного счета, например, второй просчет может бить выполнен по другому алгоритму; делается это в предположении, что помеха может выборочно влиять на конкретный алгоритм, на конкретную операцию.
Контрольные точки организуются в программах, время выполнения которых достаточно велико - несколько десятков минут, например. Цель этого способа - экономия времени выполнения программы при достаточно высоком уровне достоверности полученного результата.
Сам способ заключается в том, что в программе расставляются так называемые контрольные точки, в которые помещается обращение к процедуре "фотографирования" оперативной памяти во внешнюю память. Контрольные точки расставляются таким образом, чтобы время выполнения программы между контрольными точками было в пределах 5-10 минут. Если в какой-то момент в промежутке между контрольными точками произошел сбой оборудования или появилась какая-либо помеха, не позволяющая ожидать достоверный результат решения, то программу можно запустить не с самого начала, потеряв все время решения, а с предыдущей контрольной точки, предварительно восстановив соответствующее состояние оперативной памяти с магнитной ленты. Потеряно будет практически только время, прошедшее после организации соответствующей контрольной точки.
Конечно, организация контрольных точек далеко не всегда такое простое дело, как могло бы показаться. Существует много проблем, которые приходится при этом решать, но чем-то же надо платить за экономию времени решения задачи при неустойчиво работающей аппаратуре.
Технологии защиты от проникновения помехи
Как уже говорилось, проникновение некорректных значений (помех) в программу чревато очень серьезными последствиями. Поэтому обычно предпринимаются те или иные условия по организации контроля. Программисты выполняют эту работу каждый по-своему. В результате оказывается, что даже для одинаковых входных величин средства защиты от помех, построенные разными программистами отличаются как затратами на создание этих средств, так и тщательностью защиты.
К сожалению, первопричиной плохого контроля в программах, является недостаточное представление о последствиях этого плохого контроля, о реальности помех, излишней самоуверенности с одной стороны и удивительной доверчивости с другой.
Программирование с защитой от помех обычно отнимает слишком много времени при подготовке программы (по некоторым оценкам, больше 20%).
Затраты эти можно существенно снизить, если предложить программисту автоматизированный способ подготовки средств контроля.
Ниже мы рассмотрим фильтрацию - автоматизированный процесс, предотвращающий проникновение помех в программу. Выделяя этот процесс из других контролирующих процессов, мы исходим из тезиса необходимости как можно более раннего обнаружения ошибки. Кроме того, мы считаем, что контроль должен быть управляемым со стороны программиста, иначе говоря, программист сам должен определять, что надо контролировать и когда надо контролировать. Мы можем только выдать соответствующие рекомендации.
Технологии фильтрации
Назовем фильтрацией величины Х из программы Р автоматизированный процесс, предотвращающий проникновение некорректных значений величины Х в программу Р. Этот процесс включает проверку корректность значения величины Х и реакции на некорректность такого значения. Программные средства, реализующие процесс фильтрации назовем фильтрами. Существенным для фильтра в применении к практическому программированию является его ориентация на спецификацию контролируемой величины, включающую в себя ареал величины и описание реакций на некорректность значения этой величины.
Ареал. Любая программа ориентирована на явно или неявно заданное множество значений своих входных величин (область определения, множество допустимых значений). Когда программа используется совместно с другими программами (в системе, в комплексе), это множество значений может оказаться более конкретным, более узким.
Ареалом величины Х из программы Р называется множество значений, которые могут быть присвоены Х, исходя из назначения и условия применения программы Р.
Определение подчеркивает, что разные условия применения программы могут определять разные ареалы величины.
Понятие ареала распространяется не только на входные величины, но и на переменные, и на результирующие. Заметим, что для одной и той же величины Х в разных местах программы могут быть заданы разные ареалы.
Реакция на некорректность контролируемой величины может быть разной:
· сообщение об ошибке;
· замена некорректного значения стандартным значением;
· замена ближайшим (по некоторому критерию) значением;
· обращение к подпрограмме пользователя;
· прекращение вычислений и т.д.
В любом случае реакция на некорректность должна быть предусмотрена заранее при составлении спецификации величины.
Фильтр - стандартизованное средство, автоматически настраиваемое на спецификацию (точнее, на ареал) фильтруемой величины. Настройка эта может выполняться как при использовании фильтра, так и при его построении. Для того, чтобы выполнить фильтрацию, необходимо узнать:
· имя фильтруемого объекта или значение объекта;
· спецификацию объекта;
· точку пуска фильтрации.
Реализация фильтра зависит от того, на каком этапе определяется фактическое значение фильтруемой величины. Так, значения параметров макрокоманды определяются на этапе подготовки программы. Могут быть заранее известны и некоторые параметры подпрограмм, процедур. Фильтры, реализующие фильтрацию таких величин, могут быть включены в процессоры подготовки программ - в макрогенераторы, в сборщики (редакторы связей), в компиляторы, в смешанные вычислители. Такие фильтры представляют собой универсальные процедуры (подпрограммы, макроопределения), входной информацией для которых являются контролируемое значение, ареал величин, описание реакции на некорректность значения. Результатом фильтрации является только ответ, корректно ли значение, а в случае некорректности - оговоренная заранее реакция. Время фильтрации на этом этапе не является критическим, если же значение величины при подготовке программ неизвестно, определится оно при выполнении программы, то и фильтрация должна выполняться во время выполнения программы. Появляются новые контуры управления, цель которых - фильтрация переменных величин.
Фильтры, проверяющие переменные величины, включаются в саму программу процессорами подготовки программ: трансляторами, макрогенераторами. Здесь могут быть два варианта:
1) Процессор подготовки программ настраивает универсальную заготовку на ареал фильтруемой величины, и полученный в результате настройки фильтр включается в нужное место строящейся программы. Включаются и сам фильтр, и спецификация объекта, и имя объекта.
2) Процессор подготовки программ включает в программу обращение к стандартному, не настраиваемому фильтру. Это обращение сопровождается ссылкой на спецификацию фильтруемой величины и должно включаться в нужном месте.
Постоянное возрастание объемов и сложности производимого программного обеспечения выдвигает проблему повышения надежности программного обеспечения в ряд основных проблем разработки программных средств.
К сожалению, сегодня не существует не только практических методов оценки надежности программных изделий, но и четкого определения надежности программ. Многочисленные методы, о которых можно интуитивно говорить, как о повышающих надежность программ, не объединены методически и не поддаются сравнению с точки зрения их эффективности.
Контрольные вопросы по теме № 4:
1.Укажите важнейшие аспекты надежности автоматизированных систем.
2.Какие Вы знаете функции АСУ?
3.Дайте определение понятию система.
4.Дайте определение понятию модель.
5.Что такое идеальная модель?
6.Укажите корректные типы моделей.
7.Что такое декомпозиция системы?
8.Какие компоненты можно выделить в каждой программе?
9.Что такое конструктивные средства в программе?
10.Что такое управляющие средства в программе?
11.Какие цели обеспечивает программа как система управления?
12.Укажите возможные внешние воздействия на программу.
13.Укажите возможные источники внешних воздействий на программу.
14.Укажите, какими могут быть внешние воздействия на программу.
15.Какими свойствами должна обладать надежная программа?
16.Что такое отказ программы?
17.Что такое надежность программного обеспечения?
18.Чем определяется надежность программы?
19.Что такое структурное программирование?
20.Что определяет уровень помехоустойчивости программы?
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|