IT 자료/소프트웨어 공학

[UML 2.0] OMG의 새로운 표준 UML 2.0

나림아빠 2007. 9. 27. 20:57
기술표준이슈

2004.08.23 (2004-34호)

 

UML(Unified Modeling Language)은 소프트웨어 시스템에 대한 산출물을 가시화(visualizing), 정의(specifying), 구축(constructing) 그리고 문서화(documenting) 하기 위한 일종의 그래픽적인 표기법을 사용하는 언어이다.

UML
의 변천사
UML
은 원래 Booch, OMT(Object Modeling Technique) OOSE(Object-Oriented Software Engineering)에 의해 객체 모델링 언어로부터 파생되었다. OMG(Object Management Group Inc.)에서 1997년에 UML(Unified Modeling Language)를 처음 표준으로 채택한 이후, UML은 학계와 산업 등 여러 영역에서 상당히 폭넓게 채용되어 사용되며 성공적으로 자리잡았다. UML 1997년에1.1 버전의 발표를 시작으로 1998년에 버전 1.3, 2000년에 버전 1.4를 발표하는 과정에서 그동안 제기되었던 UML 메타모델의 내부 문제를 해결했고, 모호한 표현을 좀 더 명확하게 하고, 명명의 일관성도 증진시켰다. UML 1.0부터 UML 2.0까지의 변화는 다음 그림과 같다.

 



UML 2.0
스펙
UML
은 소프트웨어 시스템의 아키텍처를 묘사하기 위한 사실상의 표준 언어로써 많은 소프트웨어 개발자들이 사용하게 되었다. UML 덕분에 컴포넌트 아키텍처와 다양한 방법론들이 더불어 발전하게 되었으며, 이에 따라 소프트웨어 개발 방법론에서도 특정 경향이 나타났는데, UP(Unified Process) XP(eXtreme Programming)가 바로 그것이다. 또한 비주얼 모델링과 비주얼 프로그래밍 기술이 합쳐지는 추세를 보이는데, 이러한 추세를 기반으로 OMG에서는 UML 2.0에 다음과 같은 네 가지 스펙을 발표하였다.

  • 기초적인 구성요소(Construct)를 재구성하고, 특화(Customizability)를 개선하기 위한 것과 관련된 내부구조(Infrastructure)
  • 컴포넌트(Component), 활동(Activity), 상호작용(Interaction) 등과 같은 응용 구성요소(construct)를 개선하기 위한 상위구조(Superstructure)
  • 기존 UML OCL(Object Constraint Language)의 정확성과 표현력을 개선하기 위한 것과 관련되는 OCL
  • 다양한 툴들 사이의 모델 다이어그램을 교환할 수 있도록 하는 다이아그램 호환(Interchange)

주요 개선사항
UML 1.x
의 문제로 지적된 것은 크기가 너무 크고, 복잡하며, 또한 의미론(Semantics)이 모호하며, 구현과 관련된 부분이 충분하지 못해서 특화(Customizing)가 제한되어 있다는 것이다. 이 외에도 컴포넌트 기반의 개발방법을 제대로 지원하기 어렵고, 모델 다이어그램을 교환하기 위한 수단이 없다는 것도 또다른 문제점으로 나타났다. UML 2.0은 이런 문제가 많던 UML 1.x 전체에 대해 많은 개선을 했고, 주요한 변화사항은 다음과 같다.

  • 구조의 순환적 분해와 컴포넌트 기반 개발방법에 대한 지원이다. UML 2.0은 복합 구조(Composite Structure) 다이아그램과 같은 새로운 주요 다이어그램들을 도입했고 시스템, 서브 시스템, 컴포넌트, 하위 컴포넌트 등 순환적인 분해를 할 수 있게 해주는 파트(Part), 포트(Port) 그리고 커넥터(Connector) 같은 새로운 구성요소들을 포함시켰다.
  • UML 2.0은 활동(Behavior)들을 하위 활동들로 순환적 분해를 할 수 있도록 행위 다이아그램(Activity Diagram)과 순차 다이아그램(Sequence Diagram)을 확장시켰다. 예를 들자면, 액션 노드(Action Node)들을 하위 액션 노드들, 하위-하위 액션 노드들 등으로 분해할 수 있다.
  • 구조적 모델과 행위적 모델 사이의 통합을 개선했다. , 구조 다이아그램과 행위 다이아그램들을 문제없이 통합할 수 있도록 해준다. 예로, 자동차 엔진에 대한 복합 구조 다이아그램 내의 연료 공급 장치 부분은 선박 운행 시스템에 대한 행위 다이아그램 내에서의 동일한 부분에 대해 사용될 수 있다는 것이다.
  • 실행 가능한 모델에 대한 지원이 또한 새롭게 UML 2.0에 추가된 사항이다. UML 2.0은 시뮬레이션과 프로그래밍 코드를 실행할 수 있는 실행 가능한 모델을 지원하는 통합된 행위적 의미(Action Semantics)를 완벽하게 포함하고 있다.

물론 이러한 새로운 부분들로 인해 언어의 크기가 커지는 것은 사실이다. 하지만 UML 2.0에서는 각각이 독립적인 여러 서브언어의 집합으로 모듈화 되어 있다. 따라서 특정 국가의 언어를 말하기 위해서 해당 언어 모두를 다 알고 있지 않아도 되는 것처럼 UML 2.0의 사용자는 자신의 문제를 해결하기 위한 부분만 단지 선택해서 사용할 수 있다.
어떤 점에서는, UML 2.0이 단지 추상화와 자동화의 레벨을 증가시킴에 따라, 그리고 3세대 프로그래밍 언어라 불리는 것에 의해 도입된 성공적인 기술의 패턴을 반복하고 있다. 따라서 UML 2.0은 지난 40여 년간 수렁에 빠진 상태였던 프로그래밍 언어의 올가미로부터 우리를 해방시킬 것을 약속할 수 있을 것이다.

성운 ( 명지대학교 컴퓨터공학과 교수, choisw@mju.ac.kr )