Создание самокорректирующихся программ для решения прикладных задач - page 12

О.В. Казарин, В.Ю. Скиба
12
Поскольку безошибочное программирование почти невозможно,
а ручная отладка для современных программных комплексов почти
немыслима, необходимы средства поиска ошибок и их исправления.
В каждой современной системе программирования существуют спе-
циальные средства отладки программ —
отладчики
, позволяющие в
режиме интерпретации установить контрольные точки, выполнить
отдельные участки программы и посмотреть результаты работы опе-
раторов. В то же время, использование отладчиков в достаточной
степени ограничено, так как легко потеряться в деталях сложных
структур данных и путей исполнения программы. Пошаговый проход
по программе менее продуктивен, чем использование программного
кода, который проверяет сам себя в критических точках.
Самотестирующиеся / самокорректирующиеся процедуры, впро-
чем, как и многие типы простых чекеров, расставленные в крити-
ческих точках программы, в случае получения некорректного резуль-
тата сравнения (следовательно, и в случае наличия программных
ошибок, как и программных дефектов деструктивного типа (тех из
них, которые влияют на правильность результата вычислений)) могут
записывать в специальный файл, который должен периодически про-
сматриваться разработчиками данной программы, различные атрибу-
ты срабатывания, либо могут выдавать сигналы предупреждения (на
периферийные устройства — мониторы, принтеры, динамики и пр.) в
случае появления программной ошибки.
Для повышения надежности отладки разработчиков программ-
ных комплексов можно разделить на две группы:
пишущих целевые программы;
2) пишущих самотестирующиеся/самокорректирующиеся про-
граммные пары для первых.
Вторая группа должна быть наиболее надежной в организациях —
разработчиках программного обеспечения. Исходя из оракульных
свойств самотестирующихся/самокорректирующихся программ, оче-
видно, что разработчикам программных пар необязательно знать внут-
реннюю структуру целевой программы и ее характеристики (например,
управляющий граф программы, глобальные и локальные переменные,
внутренние подпрограммы, процедуры и функции). Достаточно того,
чтобы на вход их оракульной программы подавались входные перемен-
ные, которые должны подаваться на вход целевой программы. Важно
отметить, что один раз написанные чекер, самотестирующаяся/ само-
корректирующаяся программная пара для конкретной вычислительной
задачи будут верны для той же задачи, написанной другим способом
(например, на другом языке программирования или с использованием
другого вычислительного метода/алгоритма). Это, как правило, будет
верно и для программ, которые были модифицированы во время их
эксплуатации, при условии, что расставленные контрольные точки
(самотестирующиеся процедуры) были оставлены в теле измененной
программы.
1...,2,3,4,5,6,7,8,9,10,11 13,14
Powered by FlippingBook