Алгоритмическая отладка программы
Алгоритмическая отладка (также называемая декларативной отладкой ) — это метод отладки , который сравнивает результаты дополнительных вычислений с тем, что задумал программист . Этот метод создает внутреннее представление всех вычислений и подвычислений, выполненных во время выполнения программы с ошибками , а затем запрашивает программиста о правильности таких вычислений. Задавая программисту вопросы или используя формальную спецификацию , система может точно определить, где в находится . программе ошибка Методы отладки могут значительно сократить время и усилия, затрачиваемые на отладку .
Обзор
[ редактировать ]Отладка программ — чрезвычайно распространенная часть разработки программного обеспечения. До 1980-х годов искусство отладки программ, которым занимался каждый программист, не имело никакой теоретической основы. [1] В начале 1980-х годов были разработаны системные и принципиальные подходы к отладке программ. Как правило, ошибка возникает, когда у программиста есть определенное намерение относительно того, что должна делать программа, однако фактически написанная программа демонстрирует поведение, отличное от предполагаемого в конкретном случае. Одним из способов организации процесса отладки является его автоматизация (по крайней мере частично) с помощью алгоритмической техники отладки. [2] Идея алгоритмической отладки состоит в том, чтобы иметь инструмент, который интерактивно направляет программиста в процессе отладки: он делает это, задавая программисту вопросы о возможных источниках ошибок. Методика алгоритмической отладки создает внутреннее представление всех вычислений и подвычислений, выполняемых во время выполнения программы с ошибками (дерево выполнения). Затем он спрашивает программиста о правильности таких вычислений. Программист отвечает «ДА», если результат правильный, или «НЕТ», если результат неправильный. Некоторые алгоритмические отладчики также принимают ответ «Я не знаю», когда программист не может дать ответ (например, потому что вопрос слишком сложен). Таким образом, ответы программиста направляют поиск ошибки до тех пор, пока она не будет изолирована путем отбрасывания правильных частей программы. Процесс алгоритмической отладки находит одну ошибку за раз. Чтобы найти разные ошибки, процесс следует перезапускать заново для каждой отдельной ошибки.
Истоки, текущие и будущие направления
[ редактировать ]Алгоритмическая отладка была впервые разработана Эхудом Шапиро во время его докторской диссертации в Йельском университете, как описано в его докторской диссертации: [3] выбран в качестве выдающейся диссертации ACM 1982 года. Шапиро реализовал метод алгоритмической отладки на Прологе. [4] (язык логического программирования общего назначения) для отладки логических программ . В случае логических программ предполагаемое поведение программы представляет собой модель (набор простых истинных утверждений), а ошибки проявляются как неполнота программы (неспособность доказать истинное утверждение) или некорректность (способность доказать ложное утверждение). Алгоритм выявит ложное утверждение в программе и предоставит ему контрпример или отсутствующее истинное утверждение, которое следует добавить в программу. Также был разработан метод обработки незавершенного завершения . Исследования и разработки в области алгоритмической отладки позволили существенно улучшить исходные алгоритмы отладки Пролога и других, а также распространить эти идеи на другие языковые парадигмы, такие как функциональные языки и объектно-ориентированные языки . [5] Спустя три десятилетия с момента своего появления алгоритмическая отладка по-прежнему остается активной областью исследований в области информатики. [6] и, вероятно, останется таковым на протяжении десятилетий, поскольку панацеи не видно.
Ссылки
[ редактировать ]- ^ Сильва, Хосеп. «Обзор стратегий алгоритмической отладки». Достижения в области инженерного программного обеспечения 42.11 (2011): 976-991/
- ^ Целлер, Андреас. Почему программы терпят неудачу: руководство по систематической отладке . Эльзевир, 2009./
- ^ Шапиро, Эхуд Ю. (1983). Алгоритмическая отладка программы . Кембридж, Массачусетс: MIT Press. ISBN 0-262-19218-7
- ^ Клоксин, Уильям Ф. и Кристофер С. Меллиш. Программирование на ПРОЛОГ . Том. 4. Берлин и др.: Шпрингер, 1987.
- ^ Нэйш, Ли. Декларативная схема отладки . Кафедра компьютерных наук, Мельбурнский университет, 1995 г.
- ^ Кабальеро, Рафаэль, Риеско, Адриан, Сильва, Хосеп. Обзор алгоритмической отладки . Обзоры ACM Computing, том 50, выпуск 4, 2017 г.