Смекни!
smekni.com

Базовые сведения о надежности информационных технологий управления (стр. 10 из 13)

Такая система управления схематично показана на рис. 4.11.



Рис. 4.11. Модель программы

N - внешние воздействияX - входные величиныY - результатR - конструктивные средства S - управляющие средстваM - модель результатаA - блок выбора реакцииC1, C2 - управляющие воздействия

Рассмотрим внешние воздействия N, показанные на схеме. Они могут быть запланированными или неожиданными.

Внешние воздействия могут быть разного происхождения:

· от технических средств;

· от человека (оператора);

· из других программ (подпрограмм);

· вводимая в динамике выполнения информации.

Внешнее воздействие будем называть корректным, если значение его принадлежит ареалу - заранее оговоренному множеству допустимых значений - и поступает оно в программу в оговоренное время. В противном случае воздействие будем называть некорректным. Аналогично, и значения входных величин могут быть корректными и некорректными.

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

Застраховаться от таких ситуаций можно только повышением надежности всего вычислительного процесса и, в частности, программного обеспечения.

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

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

Рассмотрим управляющие средства контура. Они осуществляют управление программой, олицетворяя и обратные связи в программе.

М - модель результата. Здесь проверяется, соответствует ли результат работы средств R спланированной ранее модели, например, удовлетворяет ли он условию 0 £ Y £ 1.

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

А - блок выбора реакции. В зависимости от результата, выдаваемого моделью, выбирается тот или иной метод воздействия на ход выполнения программы.

Реализация выбранного метода управляющего воздействия показана блоками С1, С2. Таких блоков в сложных случаях может быть больше, но в каждый конкретный момент может выполняться только один из них.

Управляющее воздействие может заключаться в передаче управления тому или иному участку программы (иначе говоря, к изменению значений счетчика адреса команд), в изменении значения какой-то переменной величины (чаще всего - логической), в формировании той или иной конструкции. В отдельных случаях это может быть и сообщение оператору.

Простейшим примером управляющего средства может служить оператор 1F. Например, 1F (Х=1) ТНЕN GО ТО А, ЕLSЕ В:=1

Здесь роль блока М играет вычисление предиката (Х=1), блок А определяет, какой из путей THEN или ЕLSЕ выбрать, а управляющие воздействия: GO TO A и B:=1. Как уже говорилось, целью программы, как системы управления может быть повышение достоверности результата или, по крайней мере, достижение приемлемого уровня достоверности. Для этого программа должна иметь достаточно мощные управляющие средства, обеспечивающие кроме измерения нужных характеристик, выбора и реализации управляющих воздействий, еще и повышение надежности программ.

Само выражение "повышение надежности" предполагает знание того, что такое надежность и как ее измерить (чтобы убедиться, что надежность повысилась). К сожалению, единой точки зрения на надежность программы и способы ее измерения пока нет.


Надежность программ. Разные подходы

Вопрос определения и повышения надежности программ приобретает в последнее время особую важность в связи с возросшим уровнем сложности применения ЭВМ.

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

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

Существует и другой подход, ориентированный на анализ структуры программы с учетом специфики ее применения. Важную роль при таком подходе играет управляющий граф программы. Управляющий граф (граф переходов) программы определяется как ориентированный граф, вершины которого соответствуют одному или нескольким операторам этой программы, а дуги отражают возможности передач управления между соответствующими операторами.

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

В литературе можно встретить различные определения надежности программ. Одну группу определений можно свести к такому определению: надежность программы есть качество ее отладки или число оставшихся в программе ошибок.

Вторую группу определений подытоживает определение, приводимое Г.Майерсом: Надежность программного обеспечения есть вероятность его работы без отказов в течение определенного периода времени, рассчитанная с учетом стоимости (важности) для пользователя каждого отказа.

Наличие таких различных подходов, как к самой проблеме надежности программ, так и к определению надежности, неизбежно демонстрирует, что это - понятие не простое, включающее различные аспекты.

Надежная программа должна обладать двумя основными свойствами:

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

Такое свойство программы назовем безошибочностью.

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

2. Программа должна однозначно реагировать на некорректную внешнюю среду. Для каких-то случаев она должна продолжать функционирование (отметив, что столкнулась с некорректностью), для каких-то должны быть выбраны обходные пути, для каких-то может быть выбран путь снижения производительности (деградации). В каких-то случаях программа может прекратить выполнение, но в любом случае не должно быть непредсказуемого поведения, все отклонения от нормы должны быть заранее предусмотрена, недопустимо распространение некорректностей в другие программы.

Такое свойство программы назовем помехоустойчивостью.