Отладка алгоритмической программы - Algorithmic program debugging

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

Обзор

Отладка программы - чрезвычайно распространенная часть разработки программного обеспечения. До 1980-х годов искусство отладки программ, которым занимался каждый программист, не имело никакой теоретической основы.[1] В начале 1980-х были разработаны систематические и принципиальные подходы к отладке программ. Как правило, ошибка возникает, когда программист имеет конкретное намерение относительно того, что программа должна делать, однако фактически написанная программа демонстрирует поведение, отличное от предполагаемого в конкретном случае. Один из способов организации процесса отладки - автоматизировать его (хотя бы частично) с помощью алгоритмической техники отладки.[2] Идея алгоритмической отладки состоит в том, чтобы иметь инструмент, который интерактивно направляет программиста в процессе отладки: он делает это, спрашивая программиста о возможных источниках ошибок. Методика алгоритмической отладки создает внутреннее представление всех вычислений и подсчетов, выполненных во время выполнения программы с ошибками (дерево выполнения). Затем он спрашивает программиста о правильности таких вычислений. Программист отвечает «ДА», если результат правильный, или «НЕТ», если результат неправильный. Некоторые алгоритмические отладчики также принимают ответ «Я не знаю», когда программист не может дать ответ (например, потому что вопрос слишком сложный). Таким образом, ответы программиста направляют поиск ошибки до тех пор, пока она не будет устранена путем отбрасывания правильных частей программы. В процессе алгоритмической отладки обнаруживается по одной ошибке. Чтобы найти разные ошибки, процесс должен быть перезапущен снова для каждой отдельной ошибки.

Истоки, текущие и будущие направления

Алгоритмическая отладка была впервые разработана Эхуд Шапиро во время его докторской диссертации в Йельском университете, как было указано в его докторской диссертации,[3] выбран в качестве почетной диссертации ACM 1982 года. Шапиро реализовал метод алгоритмической отладки на Прологе[4] (язык логического программирования общего назначения) для отладки логические программы. В случае логические программы, предполагаемое поведение программы является моделью (набором простых истинных утверждений), а ошибки проявляются как программа незавершенность (неспособность доказать истинность утверждения) или неправильность (способность доказать ложное утверждение). Алгоритм идентифицирует ложное утверждение в программе и предоставит контрпример к нему или отсутствующее истинное утверждение, что это или его обобщение следует добавить в программу. Способ обработки непрекращение также был разработан. Исследования и разработки в области алгоритмической отладки внесли значительные улучшения по сравнению с исходными алгоритмами для отладки Prolog и других, а также распространили идеи на другие языковые парадигмы, такие как функциональные языки и объектно-ориентированные языки.[5]Спустя три десятилетия с момента своего появления алгоритмическая отладка по-прежнему является активной областью компьютерных исследований. [6] и, вероятно, останется таковой на десятилетия, поскольку панацеи не предвидится.

Рекомендации

  1. ^ Сильва, Жозеп. «Обзор алгоритмических стратегий отладки». Достижения в инженерном программном обеспечении 42.11 (2011): 976-991/
  2. ^ Целлер, Андреас. Почему программы не работают: руководство по систематической отладке. Эльзевир, 2009./
  3. ^ Шапиро, Эхуд Ю. (1983). Отладка алгоритмической программы. Кембридж, Массачусетс: MIT Press. ISBN  0-262-19218-7
  4. ^ Clocksin, Уильям Ф. и Кристофер С. Меллиш. Программирование в PROLOG. Vol. 4. Берлин и др .: Springer, 1987.
  5. ^ Нейш, Ли. Схема декларативной отладки. Департамент компьютерных наук, Мельбурнский университет, 1995 г.
  6. ^ Кабальеро, Рафаэль, Риеско, Адриан, Сильва, Хосеп. Обзор алгоритмической отладки. ACM Computing Surveys, том 50, выпуск 4, 2017.