Программное обеспечение как надежная система технологий управления

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

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

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

Поэтому, рассматривая программу как систему управления, можно сформулировать такие цели управления:

· повышение достоверности результата при ограничениях на время выполнения программы, на стоимость решения, на конфигурацию внешней памяти и т.п.;

· снижение времени решения при приемлемом уровне достоверности ;

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

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

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

N - внешние воздействия

X - входные величины

Y - результат

R - конструктивные средства

S - управляющие средства

M - модель результата

A - блок выбора реакции

C1, C2 - управляющие воздействия

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

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

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

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

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

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

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

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

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

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

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

Перейти на страницу: 1 2