답집합 프로그램 메타주석 언어 LANA
초록
본 논문은 ASP 프로그램에 메타정보를 주석 형태로 삽입하는 LANA 언어를 제안한다. LANA는 규칙을 블록으로 묶고, 시그니처, 타입, 전후조건, 유닛 테스트 등을 기술하게 해 개발자에게 문서화·테스트·검증 도구를 제공한다. ASPDOC과 ASPUNIT이라는 두 도구를 통해 자동 문서 생성과 테스트 실행을 시연하고, Eclipse 기반 IDE인 SeaLion에 통합한다.
상세 분석
LANA는 ASP 코드와 완전히 분리된 메타주석 체계로, 기존 ASP 구문과 충돌하지 않으며 주석 형태이기 때문에 솔버가 무시한다. 핵심 설계는 ‘블록(block)’ 개념이다. 하나의 블록은 논리적으로 연관된 규칙 집합을 의미하며, 블록 선언부에서 블록 이름, 입력·출력 시그니처, 타입 선언을 명시한다. 타입 시스템은 기본 원자, 리스트, 튜플 등을 지원하며, 정적 검증 단계에서 변수와 상수의 일관성을 검사한다. 전후조건(pre/postcondition)은 블록이 호출되기 전후에 만족해야 할 논리식으로, 계약 기반 프로그래밍(contract programming)과 유사한 역할을 한다. 이러한 조건은 자동 검증 도구에 의해 실행 시점에 검증될 수 있어, 논리 오류를 조기에 발견한다.
또한 LANA는 유닛 테스트를 위한 전용 구문을 제공한다. 테스트 케이스는 ‘assert’ 형태로 기대하는 답집합을 명시하거나, ‘fail’ 구문으로 특정 입력에 대해 해가 존재하지 않음을 검증한다. ASPUNIT은 이러한 테스트를 파싱해 각 블록별로 독립 실행하고, 성공·실패 결과를 상세히 보고한다. 테스트 격리와 자동화는 대규모 ASP 프로젝트에서 회귀 오류를 방지하는 데 큰 도움이 된다.
문서화 측면에서는 ASPDOC이 LANA 주석을 분석해 HTML 문서를 생성한다. 블록 구조, 시그니처, 타입, 전후조건, 테스트 사례가 계층적으로 정리되어, 개발자는 코드와 문서를 동시에 유지할 수 있다. 특히, 시그니처와 타입 정보가 자동으로 하이라이트되고, 교차 참조 링크가 생성돼 코드 탐색이 용이해진다.
LANA를 IDE에 통합한 사례로 SeaLion을 들 수 있다. Eclipse 플러그인으로 구현된 SeaLion은 LANA 구문 강조, 자동 완성, 정적 타입 검사, 전후조건 검증 등을 제공한다. 개발자는 코드를 작성하면서 실시간 피드백을 받아 오류를 즉시 수정할 수 있다. 이러한 통합은 전통적인 논리 프로그래밍 환경에서 부족했던 개발 지원 기능을 크게 보강한다.
전체적으로 LANA는 ASP 개발 프로세스에 소프트웨어 공학 기법을 도입함으로써, 가독성, 유지보수성, 신뢰성을 향상시킨다. 주석 기반이기 때문에 기존 ASP 솔버와 완전 호환되며, 도구 체인(ASPDOC, ASPUNIT, SeaLion)과의 연계가 자연스럽다. 향후 연구에서는 타입 시스템을 더 정교화하고, 정형 검증과 모델 체킹을 연동하는 방안이 제시될 수 있다.