알고리즘 프로그램 디버깅
Algorithmic program debugging알고리즘 디버깅(선언형 디버깅이라고도 함)은 서브컴퓨팅의 결과를 프로그래머가 의도한 것과 비교하는 디버깅 기법입니다.이 기술은 버그가 있는 프로그램을 실행하는 동안 수행되는 모든 계산과 하위 계산의 내부 표현을 구성하고 프로그래머에게 이러한 계산의 정확성에 대해 묻습니다.프로그래머에게 질문을 하거나 정식 사양을 사용함으로써 시스템은 프로그램에서 버그가 어디에 있는지 정확하게 식별할 수 있습니다.디버깅 기술을 사용하면 디버깅에 소요되는 시간과 노력을 크게 줄일 수 있습니다.
개요
프로그램 디버깅은 소프트웨어 개발의 극히 일반적인 부분입니다.1980년대까지 모든 프로그래머에 의해 실행되었던 프로그램 디버깅 기술은 이론적인 근거가 [1]없었다.1980년대 초에 프로그램 디버깅에 대한 체계적이고 원칙적인 접근법이 개발되었습니다.일반적으로 버그는 프로그래머가 프로그램이 무엇을 해야 하는지에 대해 특정한 의도를 가지고 있을 때 발생하지만 실제로 작성된 프로그램은 특정한 경우에 의도된 것과는 다른 행동을 보인다.디버깅 프로세스를 구성하는 방법 중 하나는 알고리즘 디버깅 기술을 [2]통해 프로세스를 자동화하는 것입니다(적어도 부분적으로).알고리즘 디버깅의 개념은 프로그래머에게 대화식으로 디버깅 프로세스를 안내하는 도구를 갖는 것입니다.프로그래머에게 버그 발생원에 대해 물어봄으로써 그렇게 합니다.알고리즘 디버깅 기술은 버그가 있는 프로그램(실행 트리)의 실행 중에 실행되는 모든 계산 및 하위 계산의 내부 표현을 구성합니다.그런 다음 프로그래머에게 그러한 계산의 정확성에 대해 묻습니다.프로그래머는 결과가 올바르면 "YES"라고 대답하고 결과가 틀리면 "NO"라고 대답합니다.일부 알고리즘 디버거는 프로그래머가 답변을 줄 수 없을 때(예를 들어 질문이 너무 복잡하기 때문에) "모르겠습니다"라는 답을 받아들입니다.따라서 프로그래머의 답변은 프로그램의 올바른 부분을 폐기함으로써 버그가 분리될 때까지 버그 검색을 안내합니다.알고리즘 디버깅 프로세스에서는 한 번에1개의 버그가 검출됩니다.다른 버그를 검출하려면 , 다른 버그 마다 프로세스를 재기동할 필요가 있습니다.
출처, 현재 및 미래 방향
알고리즘 디버깅은 1982년 ACM 저명한 논문으로 선정된 박사 [3]논문에서 소개된 대로 에후드 샤피로가 예일 대학교에서 박사 연구를 하는 동안 처음 개발했다.Shapiro는 논리 프로그램의 디버깅을 위해 Prolog(일반 목적 로직 프로그래밍 언어)에서[4] 알고리즘 디버깅 방법을 구현했습니다.논리 프로그램의 경우, 프로그램의 의도된 동작은 모델(단순한 참 스테이트먼트 세트)이며, 버그는 프로그램의 불완전성(참 스테이트먼트를 증명할 수 없음) 또는 부정확성(허위 스테이트먼트를 증명할 수 있음)으로 나타난다.이 알고리즘은 프로그램 내의 잘못된 문장을 식별하고 이에 대한 반례를 제공하거나 프로그램에 그 또는 그 일반화를 추가해야 한다는 누락된 참 문장을 제공합니다.또한 비종단 처리 방법도 개발되었습니다.알고리즘 디버깅 분야에서의 연구개발은 Prolog 및 기타 디버깅을 위한 원래 알고리즘보다 크게 개선되었으며, 기능적 언어 및 객체 지향 [5]언어 등의 다른 언어 패러다임으로 아이디어를 확장했습니다.도입된 지 30년이 지났지만 알고리즘 디버깅은 여전히 컴퓨터 과학 연구의 활발한 분야이며 만병통치약이 보이지 않기 때문에 수십 년 동안 계속될 것입니다.
레퍼런스
- ^ 실바, 호세프"알고리즘 디버깅 전략에 대한 조사"엔지니어링 소프트웨어 42.11(2011): 976-991/
- ^ 젤러, 안드레아스프로그램이 실패하는 이유: 체계적인 디버깅 가이드.Elsevier, 2009년
- ^ 샤피로, 에후드 Y.(1983)알고리즘 프로그램 디버깅케임브리지, 매사추세츠: MIT 프레스. ISBN0-262-19218-7
- ^ 클락신, 윌리엄 F., 크리스토퍼 S. 멜리쉬.PROLOG에서의 프로그래밍 Vol.4 베를린 등:스프링거, 1987년
- ^ 나이쉬, 리선언형 디버깅스킴1995년 멜버른 대학교 컴퓨터 공학부
- ^ 카발레로, 라파엘, 리에스코, 아드리아, 실바, 호세프알고리즘 디버깅 조사ACM Computing Surveies, Volume 50 제4호, 2017년.