VIATRA2 로 Hello World 구현
초록
본 논문은 모델 변환 대회 TTC 2011의 “Hello World! 인스트럭티브 케이스”를 VIATRA2 도구로 해결한 사례를 제시한다. VTCL 스크립트와 ASM·GT 규칙을 활용해 모델 생성, 매핑, 카운팅, 엣지 역전, 마이그레이션, 삭제, 전이 엣지 삽입 등 7개의 서브태스크를 각각 여러 변형으로 구현하고, 재사용 가능한 패턴, 재귀 매칭, 매치 카운팅 등 VIATRA2의 핵심 기능을 강조한다.
상세 분석
논문은 VIATRA2 프레임워크의 전반적인 구조와 특징을 먼저 소개한다. VIATRA2는 VPM(Visual and Precise Metamodeling)이라는 다중 레벨 메타모델링 방식을 채택해, MOF 기반 메타모델링의 한계를 넘어 서로 다른 도메인의 모델을 하나의 메타모델 공간에 통합할 수 있다. 이 접근법은 BPM, UML, XSD, EMF 등 다양한 포맷의 모델을 손쉽게 가져올 수 있게 하며, 변환 도구가 다루는 모델의 범위를 크게 확장한다.
변환 언어인 VTCL은 그래프 변환(GT)과 추상 상태 기계(ASM)를 결합한 하이브리드 형태이다. GT 규칙은 LHS와 RHS 패턴을 명시적으로 정의해 구조적 변환을 선언적으로 기술하고, ASM 규칙은 순차적 명령어와 임시 변수, 함수 등을 이용해 세밀한 제어 흐름을 구현한다. 논문에서는 각 서브태스크를 두 가지 구현 방식(ASM 버전, GT 버전)으로 제공함으로써, 두 패러다임의 장단점을 비교한다. 예를 들어 “Hello World!” 태스크에서는 ASM으로는 객체 생성·속성 설정을 순차적으로 기술하고, GT로는 전체 객체·관계 구조를 한 번에 매핑한다.
특히 매치 카운팅과 재귀 패턴 매칭 기능을 강조한다. 매치 카운팅은 현재는 부분 지원이지만, 향후 릴리즈에서 완전 구현될 예정이며, 이를 이용하면 “특정 속성을 가진 매치 수 세기”와 같은 작업을 간결하게 표현할 수 있다. 재귀 패턴 매칭은 전이 관계 삽입 태스크에서 활용되었으며, 2‑hop 도달성을 찾는 단순 패턴에서부터 전체 전이 폐쇄를 한 번에 찾는 복합 패턴까지 구현한다. 다만 현재 증분 매처는 사이클이 있는 그래프에서 정확히 동작하지 않아, 로컬 서치 매처를 사용해야 하는 제약이 있다.
또한 변환 재사용성을 위해 공통 그래프 패턴을 별도 VTCL 파일에 정의하고, 이를 여러 변환에서 import 하는 방식을 채택했다. 이는 패턴 라이브러리화와 모듈화의 좋은 예시이며, 복잡한 변환을 작은 단위로 분리해 유지보수성을 높인다.
성능 측면에서는 두 가지 매처(로컬 서치, 증분 매처)를 제공함으로써 메모리 사용량과 실행 속도 사이의 트레이드오프를 선택할 수 있다. 논문에서는 대부분의 태스크에서 증분 매처를 사용했으며, 메모리 절약이 중요한 경우 로컬 서치를 선택하도록 권고한다.
마이그레이션 태스크에서는 복사 방식과 인플레이스(in‑place) 방식 두 가지 접근을 제시한다. 복사 방식은 새로운 메타모델 인스턴스를 생성해 기존 모델을 복제하고, 인플레이스 방식은 요소들의 타입을 동적으로 변경해 메타모델 자체를 변형한다. 후자는 VIATRA2가 메타모델을 런타임에 수정할 수 있는 강력한 기능을 보여준다.
전체적으로 논문은 VIATRA2가 제공하는 고수준 추상화와 저수준 제어를 동시에 활용할 수 있는 유연성을 강조한다. 다만 EMF 모델을 직접 지원하지 않아 import/export 단계가 필요하고, VTCL의 문법이 다소 장황해 보일 수 있다는 단점도 언급한다.
댓글 및 학술 토론
Loading comments...
의견 남기기