지금까지의 단계를 반복하여 기존의 시스템이나 개발해야될 새로운 시스템에 대한 분석하였다면, "무엇을"에 해당하는 부분을 이해했다고 생각할 수 있습니다. 보통의 프로세스들에서 지금까지의 단계는 일치합니다. 허나 이제 부터는 프로젝트의 성격에 따라서 많은 차이가 생기게 됩니다. 오늘 강좌에서는 여러 갈림길들 중에서 하나를 따라가기 전에 왜 제가 지금까지 "분석"을 그렇게 강조하였는지 쉬어가는 페이지겸해서 MDA (Model Driven Architecture)에 대해서 설명해보도록 하겠습니다.
1. MDA ?
OMG그룹에서 MDA Overview는 다음과 같이 간략하게 MDA가 무엇인지에 대해서 설명해주고 있습니다.
OMG members voted to establish the MDA as the base architecture for our organization's standards in late 2001. Software development in the MDA starts with a Platform-Independent Model (PIM) of an application's business functionality and behavior, constructed using a modeling language based on OMG's MetaObject Facility (MOF). This model remains stable as technology evolves, extending and thereby maximizing software ROI. MDA development tools, available now from many vendors, convert the PIM first to a Platform-Specific Model (PSM) and then to a working implementation on virtually any middleware platform: Web Services, XML/SOAP, EJB, C#/.Net, OMG's own CORBA, or others. Portability and interoperability are built into the architecture. OMG's industry-standard modeling specifications support the MDA: The MOF; UML, now at Version 2.0; the Common Warehouse Metamodel (CWM); and XML Metadata Interchange (XMI). OMG Task Forces organized around industries including Finance, Manufacturing, Biotechnology, Space technology, and others use the MDA to standardize facilities in their domains.
대충 핵심만 번역하자면, MDA라는 것은 시스템을 설계할때 그 비지니스 로직과 비지니스 객체를 중심으로 설계대상의 영역을 비지니스에 국한시킵니다. 이것을 플랫폼 독립적인 모델이다라고 해서 PIM이라고 부릅니다. 그리고 이 플랫폼 독립적인 모델에 웹서비스 환경이던지, 클라이언트/서버모델이던지, 닷넷, 자바, 등등 플랫폼을 적용시킨 모델을 PSM이라고 하는데 PIM에서 PSM으로의 변환을 프로그램에서 자동적으로 처리하거나 매뉴얼로 변환가능하게 하는 새로운 설계개념을 의미합니다.
이때 변환을 위해서는 변환법칙이라는게 필요한데 이 역할을 하는것이 MOF라고 보시면 됩니다.
조금더 쉽게 설명해보겠습니다.
지금 IT업계에서 수행되고 있는 대부분의 SI프로젝트들은 크게 두가지 종류입니다.
하나는 이미 동작하고 있는 시스템에서 새로운 기술을 적용시켜 업그레이드 시키는 종류와
이전에는 없었지만 새로운 요구나 필요에 의해서 무에서 새로운 시스템을 개발하는 종류입니다.
간단히 말해서 유->새로운 유, 무->유, 새로운 유 라고 할 수 있겠군요.
이러한 프로젝트는 IT업계의 기술발전이 정지하지 않는 한 결코 멈추지 않을 것입니다. 바꿔말하면 두 종류의 프로젝트는 무한히 계속된다는 것이죠. 그런데 가만히 생각해보면, 기술의 변화는 상당히 자주 일어나는데 반해서 비지니스 로직의 변화는 더딘것이 일반적입니다.
즉, 금융업무나 증권업무나 병원, 법원, 행정등등 IT기술이 적용될수 있는 대부분의 분야의 업무처리나 기능들은 아주 점차적인 변화인 반면, IT기술은 상당히 빠르고 진보적으로 발전되고 있습니다.
그래서 가끔은 구현해야할 기능은 동일한데 단순히 적용되는 기술이 다른 프로젝트도 있습니다.
예를들어 아무문제없이 멀쩡히 잘 돌아가는 물류관리 시스템을 웹이 유행이라는 이유만으로 웹상에서 동작하도록 구축하는 프로젝트도 보았습니다.
즉 구현해야할 What과 수단인 How를 분리하는 것입니다.
한번 MDA 개념을 사용해서 비지니스 기능을 설계해 PIM을 잘 구축해놓았다면, 엄청난 비지니스 로직의 변경이 없는한 관련된 새로운 프로젝트에서 설계단에서부터의 재활용이 가능해집니다. (단순 소스코드나 바이너리의 재사용이 아닌, 설계 단계에서부터 재사용이 가능해집니다)
그럼 이제 아주 간단한 MDA식 예제를 한번 보도록 합시다.
아주 아주 간단한 MDA의 핵심 개념만 보여주는 것이기 때문에 "이게 무슨 MDA냐 라고 딴지 거시지 마시길 바랍니다." 보다 자세한 개념들은 차차 살펴보도록 합시다.
위의 그림은 제가 첫 강좌에서 사용한 예제그립니다. 아주 평범한 Domain 객체 분석모델입니다.
우선 MDA개념을 적용하기 위해서는 Domain Model자체가 잘 분류되고 정의될 필요가 있습니다. 그래서 비지니스 객체들에게 스테레오 타입을 이용해서 약간의 카테고리를 지정해보았습니다.
머 별거 없는 예제입니다. 우선 스테레오타입을 이용해서 각각의 성질을 지정하였습니다. 일단 여기까지의 결과물을 PIM이라고 해봅시다. 그리고 지금부터 PSM을 적용해보도록 하겠습니다.
음... 웹 기반의 프로젝트라고 가정을 해서 PSM은 웹환경이 되겠습니다. 그리고 EJB를 사용한다고 합시다.
우리는 PIM을 재사용하기를 원합니다. 분류와 정의를 잘 다루어 놓았기 때문에 간단한 수준에서는 가능합니다. Persistance로 분류가 된것들은 퍼시스턴스 빈, Logic으로 분류가 된것들은 세션빈으로 충분히 변환이 가능합니다.
그리고 기타 EJB를 위해서 필요한 각종 인터페이스가 파인더 메소드, PK관련 설정등을 자동적으로 추가해줄 수 있습니다. 지금까지의 설계툴에서 보여줬던 여타다른 단순 EJB 코드 생성보다 훨씬더 설계가 유기적으로 결합된 느낌입니다.
반대로 EJB말고 서블릿 모델 2를 적용해서 DAO패턴을 적용시킬수도 있습니다.
C/S환경에서 DB Table 설계결과를 생성할 수도 있습니다. (정규화나 테이블 튜닝은 별개로 하고)
즉 PIM으로 부터 수 많은 PSM을 적용한 결과물을 산출해 낼 수 있습니다.
이런 일이 가능한 핵심이 바로 스테레오 타입에서 기술한 모델의 분류였습니다.
이 모델의 분류를 보다 체계적이고 구체화한 것이 MOF (MetaObject of Facility)입니다.
OMG에서 이러한 간단한 그림으로 표현했네요.. 지금까지의 설명으로 이해한 MDA의 개념과 아래의 그림을 통해서 한번 정리해보세요.
이것이 MDA의 핵심이라고 할 수 있습니다.
그리고 보다 더 자세한 MDA에 관한 내용은 OMG의 홈페이지에 가보시면 지금까지 정의된 MOF는 물론 기타 관련 자료를 얻으실 수 있을 것입니다.
'UML' 카테고리의 다른 글
선배 - Implement가 뭐에요? (부제:후배들에게 듣는 객체지향 질문) (0) | 2007.12.26 |
---|---|
About UML #06 - 쉬어가는 페이지, 좋은 문서화란.. (0) | 2006.11.22 |
About UML #04 - Domain Modeling 2. (0) | 2006.10.27 |
About UML #04 - Domain Modeling 1. (0) | 2006.10.22 |
About UML #03 - Usecase (0) | 2006.10.10 |