Loading AI tools
위키백과, 무료 백과사전
모델 구동형 아키텍처(Model Driven Architecture, MDA)는 객체 컴포넌트 표준 그룹인 객체 관리 그룹(OMG)에서 내세운 모델 중심의 IT 구조로서 모델을 구조적 선택과 기술적 목표에서 독립시킴으로써 모델의 부가 가치를 강조하는 기술이다. 구조 관련 정보는 모델 분리, 모델 변환 규칙, 생성 규칙, 모델링, 기존 구조에 대한 발전 지침을 통해서 표현되며, 플랫폼 선택의 독립으로 모델 주도형 구조(MDA) 기반의 응용 프로그램들은 상호 운용성, 진취성, 재사용에 유리할 뿐 아니라 새로운 기술을 빠르게 받아들일 수 있다. 모델링을 위한 UML, 모델 교환을 위한 XML/XMI(XML Metadata Interchange), 기본 비즈니스 모델(금융, 의료, e-커머스), 기본 구조 모델(지속성, 트랜잭션, 분배, 보안) 등 OMG가 기존 개발한 표준에 기반을 두고 있으며, MDA 사용은 현재의 시스템에 새로운 응용 프로그램을 통합하는 환경을 제공한다.
OMG의 중심이 CORBA에서 UML로 넘어가는 시점에 OMG 내부에서는 MDA에 대한 구상을 의논하는 그룹들이 생겨나기 시작했다. UML의 시장주도적인 힘을 바탕으로 CORBA가 이뤄내지 못했던 이기종 플랫폼 및 언어독립성을 비교적 받아들이기 쉬운 방법으로 제시하려는 노력들이 모여서 MDA가 탄생하게 되었다. MDA는 2001년 3월 OMG의 CEO인 리차드 솔리(Richard M. Soley)가 ‘OMG Model Driven Architecture’라는 제목의 프리젠테이션을 통해 공식적으로는 처음 세상에 알려지게 되었다. 이 발표를 시작으로 MDA에 대한 구체적인 규격을 논의하기 시작해서 2003년 6월에 공식적인 ‘MDA Guide v 1.0’이 공개되었다.
OMG는 1989년 OMA(Object Management Architecture)을 발표한다. OMA에서 가장 중요한 역할을 하는 것이 CORBA이다. CORBA는 다양한 프로그래밍 언어 간의 상호운용성을 위해 IDL(Interface Definition Language)이라는 것을 도입했으며, 플랫폼 독립적인 프로토콜을 위해 IIOP(Internet Inter-Operable Protocol)와 같은 프로토콜 표준안을 제시한다.
OMA는 크게 분산 객체 명세와 객체간 원격 호출의 신뢰성, 상호운용성, 이식성 등을 보장하는 ORB가 그 핵심에 있다. ORB를 통해 객체(컴포넌트, 서비스 등으로 대치시켜도 무방하다)를 배포할 수 있었고 배포된 객체는 실행 환경에서 (재)사용된다. OMA에서는 비즈니스 처리에 도움을 주는 편의 기능인 퍼실리티(CORBA Facility)를 준비하고 있다. 퍼실리티는 특정 도메인(금융권, 국방, 행정, 모바일)에서 자주 쓰이는 수직적(vertical) 퍼실리티와 소프트웨어 개발시에 일반적으로 사용할 수 있는(데이터 압축, 룰 처리, 워크플로우 처리, 컬렉션 등) 수평적(horizontal) 퍼실리티가 있다. 이로써 개발자들은 일반적으로 사용하는 수평적 편의 기능들과 현재 산업 도메인의 표준으로 정의된 모델인 수직적 편의 기능을 조합해 자신의 애플리케이션에 맞게 최적화, 특화해 개발하게 된다.
플랫폼 독립적인 SW 모델로부터 플랫폼 종속적인 SW 모델로 자동 변환하고, 소스코드를 자동 생성하는 방법으로서 원하는 플랫폼에 맞는 SW를 쉽고 빠르게 개발 가능하다.
UML을 이용해 구현 독립적인 모델(PIM)을 작성, 기본 서비스나 각 문제 영역에 관련된 모델을 이용하여 작성
자동화 도구(Mapping Tool)를 이용해 구현 PIM을 PSM UML 로 변환
자동화 도구(Code Generation Tool)를 활용, 구현환경에 적합한 프로그램을 만들어 내며 구체적인 기능 등은 직접 프로그래밍
MDA에서는 PIM과 PSM을 분리했기 때문에 PIM을 변경하지 않고도 기술 플랫폼의 변화나 요구사항 변화에 발 빠르게 대처할 수 있다. 새로운 플랫폼에 대한 애플리케이션을 배포해야 하는 경우 PIM에는 수정이 필요 없으므로 단지 PIM을 이용해서 새로운 플랫폼에 대한 PSM을 자동으로 만들어내고, 이를 수정해서 코드를 다시 생성하는 과정을 통해 쉽게 새로운 기술 플랫폼에 대한 대응이 가능하다.
플랫폼 의존적인 시스템은 기존의 아키텍처가 새로운 요구사항을 만족시키지 못하는 경우가 많이 발생한다. MDA를 이용하면 기능과 아키텍처를 분리해서 정의하기 때문에 아키텍처의 변화가 있더라도 변환 과정을 거쳐 구현 과정으로 쉽게 진행할 수 있기 때문에 기능과 요구사항 변화에 의한 아키텍처 변경에 비교적 자유롭다. 이런 장점은 시스템의 생명주기를 연장시키며 더 안정된 시스템 유지를 가능하게 한다.
MDA는 모델의 자동화와 변환을 통해 여러 플랫폼을 쉽게 지원하고 시간을 많이 잡아먹는 코드 작성 부분을 줄일 수 있으며 쉽게 유지보수가 되도록 함과 동시에 빨리 버그를 잡을 수 있다. 한 번 작성된 PIM의 경우 비즈니스 핵심 부분에 대한 모델이기 때문에 향후 다른 시스템에서도 쉽게 이용될 수 있으며 재사용성이 높아지게 된다.
MDA에서는 모델과 코드, 문서가 항상 동기화되기 때문에 이러한 문서 작업에 필요한 일의 양을 줄여준다.
MDA 모델 자동화와 테스트 툴을 이용하면 개발자들이 애플리케이션을 모델 수준에서 테스트할 수 있기 때문에 디자인의 문제점이나 애플리케이션 로직의 에러를 빨리 잡을 수 있다. 이를 통해 품질 관리에 들어가는 비용도 감소한다.
PIM의 단순함은 양질의 시스템 구축을 가능하게 한다. 모델링은 팀 멤버들 사이의 의사소통을 원활하게 만들고 동시에 결점이 있을 때 이를 빨리 제거할 수 있도록 도와준다. 또한 MDA의 자동화 도구들은 잘 정리된 코딩 패턴을 모델에 적용하기 때문에 손으로 직접 작성한 코드에 비해 결점이 적을 가능성이 많다.