프로그램 아키텍쳐/UML

모델과 모델링 언어 그리고 UML(Unified Modeling Language)

본클라쓰 2009. 7. 30. 17:30

 

모델과 모델링 언어

 

모델이라는 용어는 많은 분야에서 저마다의 의미를 가지며 사용되고 있다. 소프트웨어 개발 프로세스에서의 모델은 상세(specification), 디자인(design), 시스템(system) 등을 특별한 관점에서 추상화시킨 표현이라고 할 수 있다. 모델을 사용하는 목적은 개발에 참여한 사람들이 동일한 목적으로 문제와 해결책에 대해서 생각하고 논의할 수 있는 도구를 제공하는 것이다. 즉, 동일한 모델을 사용함으로써 개발에 참여한 사람들은 공통된 추상화 표현으로 문제를 바라볼 수 있는 것이다. 모델은 보통 다이어그램을 사용하여 표현된 모델이 직관적으로 이해할 수 있도록 하고 있다.

 

모델링 언어는 모델 요소들의 사용에 대하여 구문(syntax)과 의미(semantics)를 부여한 것으로 볼 수 있다. 따라서 모델링 언어를 사용하면 단순히 모델을 사용하여 분석/설계할 때보다 그 의미를 명확히 할 수 있게 된다. 소프트웨어 개발 프로세스의 모델링 언어도 일반적으로 다이어그램의 모습을 가지며 UML(unified modeling language)도 바로 소프트웨어 개발 프로세스에 있어서의 모델링 언어 중에 하나이다.

 

 

 

UML(Unified Modeling Language)

 

UML(Unified Modeling Language)는 OMG 표준기구로부터 인정받은 표준화 된 그래픽 언어로 객체지향적인 소프트웨어 개발 과정에서 분석/설계 단계의 내용을 모델링하는데 도움을 주는 도구로 개발과정 이외에도 여러 종류의 기술 문서, 논문 등에서 표준 모델링 언어로 많이 사용되고 있다. UML은 기호(Symbol)과 도식(Diagram)을 사용한 언어로 2003년 UML2.0을 발표하여 13개의 다이어그램을 규정하였다.

 

UML를 사용하면 개발자들의 의사소통을 원할하게 하고, 기업 간의 시스템 통합을 가능하게 한다. UML을 사용하는 목적은 의사소통과 유지보수를 쉽게 하기 위함이다. UML를 사용하여 개발 시스템과 관련된 사람들에게 비전으로 공유하고, 의견을 수렴할 수 있다. 

 

UML은 객체지향 모델링 언어 중의 하나로써 다음과 같은 특징을 가진다.

 

1. 표현력이 풍부하다

유스케이스 모델(use case model), 정적 모델(static model), 동적 모델(dynamic model), 상태 모델(state model), 구현 모델(implementation model)을 적용할 수 있다.

 

2. 사용하고 이해하기 쉽다.

 

3. 표현시 모호한 점이 적다.

프로그래밍 언어처럼 완전한 형식을 가지고 정의되어 있지는 않지만 준형식을 갖추어 정의되어 그 의미가 상당 부분 명확하다.

 

4. 지원 CASE 도구가 많다.

 

5. 실무에 많이 적용되고 있다.

 

6. 산업계 표준이다.

국제 표준화 단체 중의 하나인 Object Management Group(OMG)의 모델링 언어 표준이다.

 

 

UML은 객체지향적인 사고방식이 분석과 설계 내용을 모델링할 수 있도록 고안된 모델링 언어이다. 따라서 UML 사용에는 객체지향 패러다임에 대한 이해가 반드시 선행되어야 하며, 그 다음에는 UML을 적용하려는 소프트웨어 개발 프로세스에 대한 이해가 되어야 한다.  

 

UML이 핵심 구성요소는 객체(things)와 관계(relationships)이다. 객체지향 언어를 기반으로 하기 때문에 객체와 관곌르 기반으로 표현한다. 객체 요소에는 명사형인 구조사물(structural thing), 동사형인 행동사물(behavioral thing), 그룹 사물(grouping thing), 주해 사물(annotation thing) 이 있다.

 

관계 요소에는 의존 관계(dependency, 한 클래스가 다른 클래스를 사용하는 관계로 한 클래스의 변화가 다른 클래스에 영향을 주는 관계), 일반화 관계(association, 일반적인 협력 관계로 집합연관과 복합연관으로 구성됨), 연관관계(generalization, 상속관계), 실체화(realization, 실현화관계로 인터페이스와 실제 구현된 클래스 간의 관계)가 있다.

 

 

 

모델링 범위 에 따른 분류

 

 모델링 범위  UML 다이어그램   UML 다이어그램의 표현 범위   비고 
 요구사항   Use Case   요구사항을 Actor와 Use Case의 관계로 표현   
 시스템 정적구조  Class, Object   시스템의 정적구조를 클래스와 클래스의 객체가 받아들일 수 있는 메시지로 표현   
 시스템 동적구조  Collaboration, Sequence  시스템을 구성하는 클래스로부터 프로그램 실행 시간에 인스턴스된 객체들 사이의 메시지 교환을 기술함으로써 객체의 상호작용이 요구사항을 만족시키고 있는지 표현   
 객체의 상태  StateChart, Activity   객체 또는 시스템의 프로그램 실행시간의 상태를 표현   
 구현 내용

 Componet,

Deployment

 구현된 시스템이 배포되어 구동되는 모습을 컴포너트 수준에 표현  

 

참조 : 책 about 객체지향, UML, 디자인패턴, 이승일 저, 영진닷컴

 

'프로그램 아키텍쳐 > UML' 카테고리의 다른 글

Collaboration Diagram 과 Deployment Diagram  (0) 2010.08.28
Sequence Diagram  (0) 2010.08.28
State Diagram  (0) 2010.08.28
유즈케이스 다이어그램(Use Case Diagram)  (0) 2010.08.28
클래스 다이어그램(Class Diagram)  (0) 2010.08.26