<테마특강>MDA 기반 컴포넌트기술 활성화 방안

필자 : 최성운 명지대학교 컴퓨터공학과 교수

 85년 한국외국어대학교 졸업

 92년 미국 오리건 주립대학 박사

 93∼96년 : 현대전자 기술자문

 94∼95년 : 디자인 패밀리·포스데이터 기술자문

 98∼2000년 : 쌍용정보통신 기술자문

 2000∼2001년 : 로코즌·한국정보컨설팅 기술자문

 현 한국 OMG(Object Management Group Korea Special Interest Group) 회장·한국증권전산 기술자문·컴포넌트 포럼 운영위원

 choisw@mju.ac.kr

 

 ◇컴포넌트 기술 적용상의 고려사항=소프트웨어 컴포넌트 기술의 등장은 소프트웨어 산업의 생산성 향상에 새로운 가능성을 제시하고 있다. 이미 제작된 컴포넌트를 조립해 소프트웨어 시스템을 개발할 수 있다면 획기적인 생산성 및 품질 향상을 기대할 수 있기 때문이다.

 하지만 실제로 컴포넌트 기술을 소프트웨어 개발에 적용하기 위해서는 많은 노력이 필요하며 컴포넌트 기술의 이해 부족으로 생산성 향상을 가져오지 못하는 경우도 종종 발생한다.

 그럼에도 불구하고 소프트웨어·하드웨어 시스템의 개발 및 생산 공정은 유사한 구조를 가지고 있으며 하드웨어 산업의 오랜 역사를 통해 컴포넌트 기술은 이미 검증됐다. 다만 소프트웨어 산업에 컴포넌트 기술을 도입하기 위해서는 소프트웨어의 특성을 고려한 보다 체계적이고 조직적인 방법이 요구된다.

 ◇소프트웨어 시스템의 특성=컴포넌트를 조립함으로써 소프트웨어 생산성 향상을 기대할 수 있다는 가정은 소프트웨어 및 하드웨어 시스템 개발시 동일하게 적용될 수 있다.

 하지만 소프트웨어 시스템의 경우 하드웨어 시스템의 조립 생산과는 차이가 있다. 하드웨어 시스템의 조립 생산은 동일한 시스템을 대량 생산하는 단계에 집중돼 있는 반면 복제가 용이한 소프트웨어 시스템의 경우에는 그 초점이 새로운 시스템을 개발하는 단계에 집중돼 있다.

 즉 개발된 소프트웨어 시스템의 대량 생산은 소프트웨어 복제를 통해 쉽게 할 수 있다. 소프트웨어 조립 생산의 문제는 대량생산의 문제가 아니라 특화된 요구에 적합한 다양한 시스템의 개발 문제인 것이다.

 ◇컴포넌트 기술의 본질=소프트웨어 컴포넌트 기술은 다양한 시스템에 개별적으로 적용돼야 하는 기술이기 때문에 서로 다른 기종의 컴퓨터 및 운용체계에 공통적으로 적용할 수 있어야 한다.

 또한 컴포넌트 자체의 개발보다는 컴포넌트를 조립하기 위한 시스템의 구조개발에 초점을 맞춰야 한다. 컴포넌트 구조는 컴포넌트가 조립돼야 할 틀이며 이 구조 속에서 컴포넌트의 역할 및 인터페이스가 정의된다. 즉 컴포넌트 기술은 컴포넌트를 제작하는 기술이 아니라 시스템의 구조에 맞춰 관련 도구를 이용해 컴포넌트를 조립하는 기술로 보는 것이 정확하다.

 ◇미들웨어 프레임워크=미들웨어 프레임워크는 이기종의 컴퓨터 환경, 즉 분산 환경하의 컴포넌트간 연동 및 조립 구조를 제공한다.

 즉 분산된 컴포넌트들이 미들웨어 프레임워크를 통해 서로 통신하고 작동되는 것이다.

 미들웨어 프레임워크의 등장으로 인해 동종의 시스템에서 뿐 아니라 이기종의 시스템에서도 컴포넌트의 재사용이 가능해졌다. 현재 개발된 미들웨어 프레임워크 제품으로는 OMG(Object Management Group)의 코바(CORBA:Common Object Request Broker Architecture) 제품들, 선마이크로시스템스의 J2EE(Java 2 Platform, Enterprise Edition) 제품들, 그리고 마이크로소프트의 닷넷(.NET) 등이 있다.

 ◇미들웨어 프레임워크의 한계=미들웨어 프레임워크의 등장과 함께 컴포넌트 기술은 구조적 체계를 갖추고 재사용성을 향상시킬 수 있게 됐지만 한계도 드러났다. 전체 개발 노력의 30% 미만을 차지하는 구현 단계만의 생산성 향상으로는 전체 소프트웨어 생산성 향상의 문제를 해결할 수 없기 때문이다.

 또한 여러 종류의 미들웨어 프레임워크가 등장함에 따라 또다시 미들웨어 프레임워크간 연동 문제에 봉착하게 됐다. 객체 표준화 기구인 OMG에서는 코바 사양을 중심으로 미들웨어 프레임워크간 연동 구조를 정의하고 있으나 아직 닷넷과의 호환은 이뤄지지 않고 있다.

 컴포넌트 기술의 성공적인 정착을 위해서는 소프트웨어 라이프사이클 전체 및 여러 종류의 미들웨어 프레임워크를 지원하는 표준 모델의 정의가 시급한 실정이다.

 ◇컴포넌트 기술의 방향=컴포넌트 기술은 미시적으로 컴포넌트를 조립할 수 있는 구조 및 관련 컴포넌트 및 이런 구조를 분산환경 하에서 유연하게 구현할 수 있는 미들웨어 프레임워크 등을 포함한다.

 거시적으로는 컴포넌트 기반 시스템의 개발·관리·구현·유지보수·배포 등 소프트웨어 라이프사이클 전반에 걸친 기술을 포함한다. 현재 컴포넌트 기술은 구현뿐 아니라 관련 기술전반을 포함하는 포괄적인 표준구조를 정의하는 데 그 초점을 맞추고 있다.

 미들웨어 프레임워크의 한계에서 보았듯이 구현을 중심으로 컴포넌트 기술의 표준 구조를 정의하는 것은 시장적 측면에서 불가능할 뿐 아니라 호환성에도 문제가 있다. 컴포넌트 기술의 핵심인 기술 요소간 포괄적 호환성을 유지하기 위해서는 이에 관련된 모든 요소을 포함하는 표준 구조의 정의가 필수적이라 할 수 있다.

 ◇MDA(Model Driven Architecture)=현재 컴포넌트 기술의 표준 구조는 OMG의 MDA(Model Driven Architecture)에 의해 제시되고 있다. MDA는 모든 컴포넌트 기술 요소의 표준 메타 모델을 정의하고 이를 기반으로 각 구성요소를 정의함으로써 모든 컴포넌트 기술 요소의 호환성 및 시스템간 작동성을 보장한다.

 MDA의 핵심은 메타 모델을 기반으로 독립적 모델(PIM:Platform dependent Model)을 자동으로 각 구현 환경에 적합한 구현 모델(PSM:Platform Specific Model)로 변환해주는 구조를 정의하는 것이다. 즉 표준 메타 모델을 기반으로 구현 환경에 독립적인 시스템을 개발하고 이를 자동으로 구현 환경에 배치함으로써 구현 단계에서의 생산성 향상뿐 아니라 표준 메타 모델에 기반을 둔 시스템들의 일반적인 호환성을 기대할 수 있게 되는 것이다.

 ◇MDA 구조 및 MDA 기반 개발공정=MDA는 기본적으로 △MOF(Meta Object Facility):객체 및 컴포넌트 기술의 핵심을 정형화한 모델 △UML(Unified Modeling Language):객체 및 컴포넌트 시스템을 표현하기 위한 언어 △XMI(XML Metadata Interchange):XML을 기반으로 정의한 데이터의 표준관리 언어 △CWM(Common Warehouse Metamodel):데이터웨어하우징을 위한 표준 메타 모델 등 네 가지 요소로 구분된다.

 이런 기본 모델을 기반으로 웹·자바·코바 등 각 구현환경으로의 변환구조 및 분산 시스템에 필요한 트랜잭션·이벤트 등 기본 서비스를 정의하고 있다.

 MDA 기반 개발공정은 자동화 도구를 기반으로 다음과 같은 단계로 구성된다.

 1단계에서는 UML을 이용해 구현 독립적인(platform independent) 모델을 작성한다. 이때 기본 서비스나 각 문제 영역에 관련된 모델을 이용해 작성한다.

 2단계는 자동화 도구(mapping tool)를 이용해 구현 독립적인 모델을 구현 종속적(platform specific) UML 모델로 변환한다.

 3단계에서는 자동화 도구(code generation tool)를 활용, 구현환경에 적합한 프로그램을 만들어 내며 구체적인 기능 등은 직접 프로그래밍한다.

 ◇MDA의 장점=MDA기반 시스템 개발공정에서 알 수 있듯이 MDA는 메타 모델을 이용해 대부분의 구현 공정을 자동화할 수 있는 구조를 제공한다. 이러한 MDA기반 개발 방법은 시스템의 구현 결과뿐 아니라 분석설계 관리 등 프로젝트 진행 전체 결과를 재사용할 수 있게 한다.

 또한 시스템이 구현 환경과 독립적으로 정의되므로 이식성(portability)을 증가시키고 시스템 구조가 구현환경으로부터 독립됨으로써 개발된 시스템의 라이프사이클이 구현 종속적인 시스템에 비해 증가한다.

 ◇컴포넌트 기술의 도입 방향=컴포넌트 기술의 도입은 소프트웨어 생산성을 획기적으로 향상시킬 수 있는 유일한 방안으로 대두되고 있다. 하지만 컴포넌트 기술의 도입이 컴포넌트를 몇 개 만든다고 해결될 일은 아니다.

 컴포넌트 기술의 도입 또한 CMM(Capability Maturity Model) 혹은 SPICE(Software Process Improvement and Capability dEtermination) 등 소프트웨어 프로세스 평가 모델이 제시하는 바와 같이 단계를 거쳐 도입돼야 한다.

 컴포넌트 기술의 도입은 조직의 기술적·관리적·재정적·문화적 문제를 수반하기 때문이다. 참고로 버틀러그룹이 제안한 컴포넌트 기술 도입의 단계는 다음과 같다.

  <표> 컴포넌트 기술 도입 단계

 구분 내용

 1단계 사용자 인터페이스 컴포넌트 정도의 이용 단계

  2단계 구현 환경에서의 컴포넌트 이용 단계

  3단계 분석 및 업무에서의 컴포넌트 이용 단계

  4단계 컴포넌트 재사용의 단계

  5단계 기업업무 전반에 걸친 컴포넌트 이용 단계

  6단계 성숙 단계

 현재 국내에서는 한국소프트웨어컴포넌트컨소시엄(KCSC)를 중심으로 컴포넌트 기술을 적극적으로 도입하려는 시도가 이뤄져 관련 기업이 2단계로 진입하고 있고, 미국의 경우는 OMG를 중심으로 많은 기업이 3∼4단계로의 진입을 시도하고 있다.