QVT
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
QVT(Queries/Views/Transformations)는 OMG(Object Management Group)가 모델 중심 아키텍처(MDA)를 위해 제정한 표준으로, 모델 변환을 위한 언어이다. 2002년에 제안되어 여러 버전으로 발전했으며, MOF(Meta-Object Facility) 2.0 메타모델을 준수하는 모델에서 작동하는 세 가지 언어(QVT-Operational, QVT-Relations, QVT-Core)를 정의한다. QVT는 명령형 언어인 QVT-Operational, 선언적 언어인 QVT-Relations, QVT-Core, 그리고 다른 언어의 변환 기능을 호출하는 QVT-BlackBox로 구성된다. QVT는 모델 간의 변환에 초점을 맞추고 있으며, 구현체로는 보어랜드 투게더, 이클립스 M2M, 매직드로우 등이 있다. 하지만 QVT는 요구 사항의 애매함, 적용 범위의 제한, 시기상조의 표준화, 위원회형 사양 제정 등의 이유로 비판을 받기도 한다.
더 읽어볼만한 페이지
QVT |
---|
2. 역사
2002년, OMG는 모델 중심 아키텍처 (MDA) 권장 제품군(UML, MOF, OCL 등)과 호환되는 표준을 찾기 위해 MOF 질의/보기/변환(QVT)에 대한 제안 요청(RFP)을 발표했다.
모델 변환은 모델 중심 아키텍처(MDA)의 핵심 기술이며, QVT(Queries/Views/Transformations)는 OMG가 이러한 모델 변환, 뷰 생성, 쿼리 실행을 위해 표준화한 것이다. 넓은 의미에서 모델 쿼리와 뷰도 특수한 종류의 모델 변환으로 간주될 수 있다. 즉, 모델 변환은 모델을 조작하는 프로그램이다.
영국의 연구원인 로렌스 트라트 박사의 초안을 기반으로, 여러 회사와 연구 기관에서 여러 답변이 제시되었고, 이는 3년에 걸쳐 진화하여 공통 제안을 만들었다. 첫 번째 버전은 2005년에 제출되어 승인되었다. QVT 버전 1.1은 2011년 1월에 출시되었다.
3. QVT 언어
QVT 표준은 MOF 2.0 메타모델을 준수하는 모델들을 대상으로 하며, 변환 과정에서 사용되는 메타모델을 명시해야 한다. QVT로 작성된 변환 자체도 MOF 메타모델을 따르는 모델로 취급될 수 있다. QVT 언어들은 OCL 2.0 표준을 기반으로 하며, 이를 명령형 기능으로 확장한다.
QVT 표준은 주로 세 가지 모델 변환 언어를 정의한다:
이 언어들은 때때로 계층적 아키텍처로 설명되기도 한다. Relations와 Core는 다른 추상화 수준을 가진 선언적 언어이며, Operational은 이들의 확장으로 볼 수 있는 명령형 언어이다.
또한, QVT 표준은 '''QVT-BlackBox''' 메커니즘을 통해 XSLT나 XQuery 등 다른 언어로 작성된 기존 변환 기능을 QVT 환경 내에서 호출하고 통합할 수 있도록 지원한다.
QVT는 모델 변환의 표준적 방법을 제시하지만, 모든 종류의 변환을 포괄하지는 않는다. 현재 QVT는 MOF 2.0 메타모델을 준수하는 모델 간의 변환만을 대상으로 하며, 모델에서 XML이나 SQL 같은 텍스트 형식으로 또는 그 반대로 변환하는 것은 직접 지원하지 않는다. 이러한 모델-텍스트 변환은 OMG에서 MOFM2T라는 별도 표준으로 다루고 있다.
3. 1. QVT-Operational
QVT-Operational은 단방향 모델 변환을 작성하기 위해 설계된 명령형 언어이다.
3. 2. QVT-Relations
QVT-Relations는 모델 변환을 위한 QVT 표준의 세 가지 언어 중 하나로, 단방향 및 양방향 모델 변환을 모두 작성할 수 있도록 설계된 선언적 언어이다. 이 언어는 모델 집합 간의 일관성 관계를 정의하고 검증하는 데 중점을 둔다.
QVT-Relations 변환은 두 가지 모드로 실행될 수 있다. 'checkonly' 모드에서는 주어진 모델 집합이 정의된 관계에 따라 일관성이 있는지 확인하여 참(True) 또는 거짓(False)을 반환한다. 반면, 'enforce' 모드에서는 모델들이 일관성을 유지하도록 대상 모델을 수정할 수 있다. 이러한 특징 덕분에 모델 간의 관계 정의, 일관성 검증, 모델 동기화 등에 유용하게 사용된다.
QVT-Relations는 텍스트 구문과 그래픽 구문을 모두 지원하여 사용자가 편한 방식으로 변환 규칙을 정의할 수 있도록 한다. 그래픽 구문은 시각적으로 변환 관계를 파악하는 데 도움을 준다.
QVT 표준 아키텍처에서 QVT-Relations는 QVT-Core와 함께 선언적 계층을 이룬다. 원래 QVT-Core는 QVT-Relations의 변환 대상으로 설계되었으나, 실제 구현에서는 QVT-Relations보다 표현력이 부족하고 둘 사이의 변환이 의미를 완전히 보존하지 못한다는 한계가 지적되었다. 또한 명령형 언어인 QVT-OperationalMapping은 QVT-Relations와 QVT-Core의 확장으로 정의된다.
3. 3. QVT-Core
QVT-Core는 QVT 표준에서 정의된 세 가지 모델 변환 언어 중 하나이다. 이 언어는 QVT-Relations에서 번역 대상으로 작동하도록 설계된 단순한 선언적 언어이다. 그러나 QVT-Core는 완전한 구현을 가진 적이 없으며, 실제로는 QVT-Relations만큼 표현력이 뛰어나지 않다는 한계가 있다. 이러한 이유로, QVT 표준에서 제시된 QVT-Relations에서 QVT-Core로의 변환 과정이 의미를 완전히 보존하지 못하기 때문에, 일반적인 QVT 아키텍처 그림은 오해의 소지가 있을 수 있다.
3. 4. QVT-BlackBox
QVT-BlackBox는 QVT 표준의 일부로, 다른 언어로 작성된 변환 기능을 호출하기 위한 메커니즘이다. 예를 들어 XSLT나 XQuery와 같은 언어로 표현된 변환 기능을 QVT 환경 내에서 사용할 수 있게 해준다. 이는 QVT 사양에서 중요한 부분을 차지하며, 특히 기존에 개발된 QVT 외의 변환 라이브러리를 통합하고자 할 때 유용하게 활용될 수 있다.
4. 구현
OMG의 QVT 표준은 다양한 도구와 프레임워크를 통해 구현되고 있다. 대표적인 예로 이클립스 재단의 M2M (이클립스) 프로젝트가 있으며, 이는 QVT 표준의 여러 측면(명령형, 선언형)에 대한 구현을 포함하거나 목표로 한다. M2M 프로젝트는 ATL 변환 언어, 컴퓨웨어사의 선언형 QVT 구현, 보어랜드사의 명령형 QVT 구현 등을 통합하려는 노력을 보여준다. 이 외에도 여러 상용 및 오픈 소스 도구들이 QVT의 각 사양(QVT-Operational, QVT-Relations, QVT-Core) 또는 이와 유사한 기능을 구현하여 제공하고 있으며, 세부적인 구현 내용은 하위 섹션에서 다룬다.
4. 1. QVT-Operational
- 보어랜드 투게더는 QVT-Operational 구현을 포함하고 있으며, 이는 이클립스 재단에 기여되어 현재 이클립스 M2M 운영 QVT 프로젝트로 개발되고 있다.[1] 일부 QVT 표준을 준수한다.
- 이클립스 M2M 운영 QVT는 QVT-Operational의 공식 이클립스 오픈 소스 구현이다.
- 매직드로우는 이클립스 M2M 프로젝트에서 제공하는 운영 QVT 구현을 사용하는 QVT 플러그인을 가지고 있다.
- 스마트QVT는 프랑스 텔레콤 라니옹(Orange Labs)에서 개발한 QVT-Operational 언어의 이클립스 오픈 소스 구현이다.
4. 2. QVT-Relations
- '''ModelMorf''': 타타 컨설턴시 서비스에서 개발한 독점 도구이다. QVT-Relations 언어와 완벽하게 호환된다. 평가판은 XMI 형식으로 모델을 사용하고 생성하는 명령줄 유틸리티를 제공하며, 정식 버전은 독점 모델링 프레임워크의 일부로 사용할 수 있다.
- '''MediniQVT''': EMF 기반 변환 엔진으로, 베를린의 ikv++사에서 개발하였다. 엔진은 EPL 라이선스를 따르며, 편집기/디버거는 비상업용 라이선스로 제공된다. QVT-Relations 구문을 사용하지만, OMG 표준의 의미론과는 의도적으로 차이가 있다. 비영리 목적 사용은 무료이다.
- 이클립스 M2M 프로젝트: QVT-Core 및 QVT-Relations의 구현을 목표로 한다.
- '''Echo''': 알로이 모델 찾기 위에 구축된 오픈 소스 EMF 기반 도구이다. 모델 복구 및 변환 기능을 제공하며, QVT-Relations 구문을 구현하지만 OMG 사양의 의미론과는 의도적으로 차이가 있다.
4. 3. QVT-Core
- 옵티멀J: 컴퓨웨어의 옵티멀J 버전 3.4에 QVT-Core 언어의 초기 구현이 포함되었으나, 현재는 단종되었다.
4. 4. QVT 유사 언어
- jQVT: OCL 대신 Xbase를 사용하는 자바용 컴파일된 QVT 엔진이다. QVT-관계 변환을 먼저 자바 소스 코드로 컴파일하며, 이후 변환 규칙 재해석 없이 런타임에 소스 모델에서 대상 모델을 직접 생성한다. EMF 모델뿐만 아니라 일반 자바 객체도 지원한다.
- 테프캇: QVT와 유사한 테프캇 언어의 오픈 소스 구현이다.
- ATL: 이클립스의 M2M (이클립스) 프로젝트 구성 요소이다. ATL은 광범위한 사용자 커뮤니티와 오픈 소스 변환 라이브러리를 갖춘 QVT 유사 변환 언어 및 엔진이다.
- Model Transformation Framework (MTF): IBM 알파웍스 프로젝트로, 2007년에 마지막으로 업데이트되었다. 부분적으로 QVT와 호환되는 모델 변환 프로토타입이며, 오픈 소스이지만 이클립스 환경에서는 작동하지 않는다.
5. 비판
QVT는 OMG가 권장하는 표준 규격이지만, 다음과 같은 비판을 받고 있다.
- '''애매한 요구 사항''': QVT의 핵심 목표인 플랫폼 독립 모델(PIM)에서 플랫폼 특화 모델(PSM)로의 변환과 관련하여, OMG의 MDA 가이드 자체에 PIM과 PSM에 대한 명확한 정의가 부족하다. 이로 인해 QVT의 요구 사항 자체가 모호하다는 지적이다.
- '''제한된 적용 범위''': QVT는 MOF 모델 간 변환에만 국한된다. 하지만 MOF 모델이 산업계에서 널리 쓰이지 않아 실제 활용 가능한 범위가 좁다. 실용성을 높이려면 모델-텍스트 간 변환 기능 지원이 필요하다는 의견이 있다.
- '''시기상조의 표준화''': QVT와 같은 모델 변환 기술이 산업계에서 충분히 검증되거나 널리 사용된 경험이 없는 상태에서 표준화가 이루어졌다. 이는 월드 와이드 웹 컨소시엄(W3C)의 XML 기반 표준인 XSLT 및 XQuery와의 경쟁을 의식해 서둘러 추진된 결과라는 시각도 존재한다.
- '''위원회 방식 정의의 한계''': QVT 표준은 여러 참여 기업의 제안을 조합하는 방식으로 만들어졌다. 이 과정에서 전체적인 일관성이 부족할 수 있으며, 이는 위원회 방식 표준 제정의 일반적인 문제점으로 지적되기도 한다.
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com