[출처] 한국IBM

 

I. UML 2.0 개정의 개요

. 머리말

UML 2.0은 모델 중심의 방식을 위해 존재한다. 스케치 툴로서 사용하고자 하는 사람들도 UML 1 처럼 비공식적으로 사용할 수 있다. 언어의 룩앤필도 별로 변경되지 않았다.
하지만 MDD에서는 이제 표준화 방식으로 사용할 수 있다. UML 2.0은 정확성이 향상되었다. 완전히 자동화된 코드 생성 기능을 사용할 수 있다.
언어 구조는 모듈식과 점진적은 방식으로 채택하도록 구성되었다. 관심 있는 언어의 일부를 공부하고 나머지는 무시해도 된다. 경험과 지식이 늘어날수록 새로운 기능을 선택적으로 사용할 수 있다. 순응성 정의도 상당히 간단해져서 보조 툴들간 상호운용성과 다양한 벤더들의 툴들간 상호 운용성이 향상되었다.
새롭게 추가된 부분은 얼마 안된다. (언어가 팽창되는 것을 방지하기 위해서이다.) 그리고 이 모든 것들은 실제로 매우 크고 복잡한 시스템을 모델링 할 수 있는 반복 원리에 따라 디자인되었다. 특히, 소프트웨어 아키텍쳐, 복잡한 시스템 인터랙션, 플로우 기반 모델이 확장되어 비즈니스 프로세스 모델링과 시스템 엔지니어링 같은 애플리케이션에 이상적으로 쓰이도록 변모하였다.
언어 확장 메커니즘도 단순하게 재구성되었다. UML에 기반하여 도메인 스팩의 언어들을 정의할 때 보다 직접적인 방식을 사용할 수 있다. 이러한 언어들은 UML 툴과 전문성을 활용할 수 있다는 장점이 있다.
전체적으로 볼 때, 고급의 소프트웨어 시스템을 보다 빠르고 신뢰성 있게 구현할 수 있는 차세대 모델링 언어가 되었다. 중요한 것은, 개별 컴포넌트들이 큰 규모에 통합될 때 하드웨어 디자인에서 발생하는 단계들과 견줄 수 있는 고급 레벨의 프로그램 디자인이란 점이다

 

. UML 2.0의 정의

- 보다 수준 높은 자동화를 실행할 수 있는 정확한 언어 정의

. UML 1 개정의 이유

- MDD 툴과 메소드를 보다 잘 지원하기 위함

- 전통적인 CASE 툴 보다 한층 더 수준 높은 자동화를 지원하는 UML 기반의 툴 필요성

- 수준 높은 자동화를 지원하기 위해서는 원래 표준보다 더 정확한 방식으로 UML을 정의해야함

- 웹 기반 애플리케이션과 SOA등 신기술의 등장

 

II. UML 2.0의 향상된 특징

. UML 2.0의 주요 기능

기능

내용

정확한 언어 정의

MDD에 필요한 고급 자동화를 지원

모델의 모호함과 부정확성을 없애고 프로그램이 모델을 변형 및 조작을 가능케함

향상된 언어 구조

사용자가 언어에 보다 쉽게 접근할 수 있고 툴들 간 내부 작동을 활성화 할 수 있는 모듈식

규모가 큰 시스템의 모델링 향상

현대 시스템은 더욱더 복잡해지고 있는 추세=>이를 지원하기 위해 유연한 새로운 계층 기능이 언어에 추가되어 소프트웨어 모델링을 지원

도메인 스팩의 특성화 지원 향상

" 확장" 메커니즘 이용

기본적인 언어가 보다 정확하고 단순해지도록 정리되었음

다양한 모델링 개념들의 정리, 개념화, 정의

보다 단순하고 일관성 있는 언어

중복된 개념을 제거하고, 많은 정의들을 정리하고, 텍스트 정의와 예제를 추가함

. UML 2.0의 상세 설명

1). 정확도

- 초기 소프트웨어 모델링 언어는 비공식적으로 정의=>사람마다 다르게 해석

- 대부분의 모델링 언어들이 문서화나 설계에만 사용되고 상세한 부분은 구현시 기술함

이러한 모호함을 줄이기 위해 UML 첫 표준 정의가 메타모델(metamodel)을 사용하여 정의

- 메타모델은 UML의 한 요소를 사용하여 정의되었고 Object Constraint Language (OCL)로 작성된 정식 제약으로 보완

이렇게 조합하여 UML의 추상 신택스에 대한 공식 스팩을 선보임.

 

메타모델 : 각 UML 모델링 개념의 특징과, 다른 모델링 개념들과의 관계를 정의하는 모델

UML 클래스 다이어그램에서 정의된 개념들로 구성된 UML의 하위 세트를 Meta-Object Facility (MOF)라고 한다. 이 하위세트는 다른 모델링 언어를 정의하는데도 사용

이것은 실제 표기법이나 구체적 신택스 (텍스트와 그래픽)와 무관하기 때문에 모델을 표현하는데 사용

다시 말해서 이것은 해당 모델이 잘 구성되었는지 여부를 결정할 때 사용할 수 있는 규칙 세트를 정의한 것.

 

- UML 2.0에서 정확도를 향상시키기위해 추가한 기능

기능

내용

메타모델 인프라의 리팩토링

추상적인 모델링 개념과 패턴들로 구성하여 의미와 규칙을 명확히 표현

신택스와 의미를 개별적으로 정의함

잘 정리된 개념들은 다양한 방식들로 조합되어 보다 복잡한 사용자 레벨의 모델링 개념들을 만듬

확장되고 보다 정확해진 의미 설명

UML 2.0 스팩은 의미를 강조

분명하게 정의된 역할 의미

UML 2.0 스팩은 원 버전의 심각한 의미 차이를 명확히 함

런타임 시 링크와 인스턴스의 구조적 의미

구조와 작동의 관계

현재 UML의 모든 고급 작동 형식에서 공유되고 있는 의미의 기초 또는 일상성 모델(스테이트 머신, 액티비티, 인터랙션)과 잠재적인 미래 모델. 또한 다양한 형식을 사용하여 표현되는 객체의 작동은 서로 인터랙팅 하는지를 확인

그림 1. UML 2.0 의미 구조

 

2). 새로운 언어 아키텍쳐

- 언어의 복잡성 문제를 다루기 위해 UML 2.0은 언어(표 1) 모듈을 선택적으로 사용할 수 있는 방식으로 구성

- 그림 2는 공유 개념들(클래스와 관련 개념)로 이루어진 기초로 구성하고, 그 위에는 하위 언어 또는 언어 단위의 모음들이 수직적으로 구성함

- 수직적 언어 단위들은 최대 세 가지 레벨들로 구성하고 이 레벨들은 아래 레벨에서 사용했던 것에 더 많은 모델링 기능을 추가함


그림 2. UML 2.0의 언어 구조

언어 단위

목적

Actions

정의가 잘된 액션들의 (기본) 모델링

Activities

데이터와 제어 흐름 작동 모델링

Classes

기본 구조들의 (기본) 모델링

Components

컴포넌트 기술을 위한 복잡한 구조 모델링

Deployments

전개 모델링

General Behaviors

일반적인 동작 의미 기초와 시간 모델링 (기본)

Information Flows

추상 데이터 흐름 모델링

Interactions

객체간 동작 모델링

Models

모델 구조

Profiles

언어 커스터마이징

State Machines

이벤트 중심의 동작 모델링

Structures

복잡한 구조 모델링

Templates

패턴 모델링

Use Cases

비공식적인 동작 요구사항 모델링

1. UML 2.0의 언어 단위

 

3). 호환성

- 호환성의 정의와 구조도 UML 2.0에서 매우 단순해짐

- UML 2.0에서, 단 세 개의 호환성 레벨만 정의

- 계층적 언어 단위 레벨에 순응하는 것은 0으로 표시.

- 레벨(n)의 모델이 더 높은 레벨(n+1)에 있는 모델들에도 호환되도록 정의

네 가지 유형의 호환성이 정의

·  추상 신택스 호환

·  구체적 신택스(UML 표기법) 호환

·  추상/구체적 신택스 호환성

·  추상/구체적 신택스에 대한 호환과 다이어그램 교환 표준[OMG03b]에 대한 호환

 

4). 대규모 시스템 모델링 기능

- 대부분의 새로운 모델링 기능들은 기존 기능들의 단순한 확장일 뿐이고, 이것은 대규모의 소프트웨어 시스템을 모델링 하는데 사용됨

- 해당 유형의 모델 엘리먼트들을 조합하여 단위로 만들고 다음 추상화 레벨에서 같은 방식으로 조합

프로그래밍 언어의 프로시저가 다른 프로시저 안에서 중첩되는 방식과 비슷

다음 모델링 기능들은 위에 설명한 방식으로 확장됨.

  • 복잡한 구조(Complex structures)
  • 액티비티(Activities)
  • 인터랙션(Interactions)
  • 상태 머신(State machines)

위 세가지 요소는 UML 2.0에서 거의 90% 이상을 차지.

 

5). 복잡한 구조(Complex structures)

- 다양한 아키텍쳐 디스크립션 언어들에 기반하고 그래프로 개념을 나타냄

- 한 개 이상의 포트(port)를 갖고 있는 파트(part)라고 하는 기본 구조적 노드들은 커넥터(connector)라고 하는 통신 채널을 통해 서로 연결

- 자신의 포트를 갖고 있는 더 높은 레벨 안에서 캡슐화 되어 다른 상위 레벨에 조합됨(그림3)


그림 3. 복잡한 구조 모델링 개념
  그림 3에서 /a:A 파트와 /b:B 는 파트 /c:C 내에서 중첩된다. 이것은 합성 구조 클래스 C의 인스턴스를 나타냄.

- 모두 포트, 파트, 상호연결 등의 개념을 갖고 있고 이 세 가지 기본 개념을 반복적으로 적용하는 것으로 임의의 복잡한 소프트웨어 아키텍쳐를 모델링이 가능함

 

액티비티(Activities)

다양한 종류의 흐름들을 모델링하는데 사용

신호(signal)나 데이터(data) 흐름 뿐만 아니라, 알고리즘 (algorithmic) 흐름 또는 절차적(procedural) 흐름을 모델링

UML 2.0은 상태 머신 기초를 훨씬 더 일반적인 의미로 바꾸어 그 모든 제한사항을 제거함

다른 액티비티들과 이들을 결합하여 보다 복잡한 액티비티를 구성

인터랙션(Interactions)

보다 확장된(고급 레벨의) 시퀀스에서 반복될 수 있는 재사용 시퀀스 기능

복잡한 시스템의 인터랙션을 표현하는 다양한 복잡한 제어 흐름의 모델링 기능(반복적인 연속 발생, 대안 실행 경로, 동시성, 순서와 무관한 실행 등)

그림 4. 복잡한 인터랙션 모델 참조

상태 머신(State machines)

변환 엔트리와 변환 종료점을 분명히 묘사

재사용 가능한 개별적인 상태 머신 스팩에 의해 그 상태의 내부 분해를 정의


그림 4. 복잡한 인터랙션 모델
그림 4는 확장된 인터랙션 모델을 묘사하고 있다. 이 경우, ATMAccess 인터랙션은 CheckPIN 이라고 하는 저수준 트랜잭션을 처음으로 호출한다. 나중에 발생하는 인터랙션은 매개변수를 갖고 있다. (이 경우, 무효 PIN이 트랜잭션이 취소되기 전에 입력될 수 있는 회수). 그 후, 클라이언트는 어떤 종류의 인터랙션이 필요한지, DispenseCash 인터랙션이나 PayBill 인터랙션중 어떤 것을 수행할지를 지정하는 비동기식 메시지를 보낸다.

 

6).언어 부분의 기능들

액션과 액티비티

액션의 개념적 모델은 데이터 흐름과 제어 흐름 컴퓨팅 모델을 모두 수용

액션과 액티비티에 대한 일반적인 문법 및 의미 구조를 제공

전체적인 단순함과 명확성에 기여

템플릿(Templates)

UML 2.0의 템플릿 메커니즘은 분류자, 연산, 패키지로 제한

컴포넌트 기반 디자인 개념(Component-based design concepts)

UML 2.0에서 컴포넌트는 일반적인 클래스의 특별한 경우로서 정의

하위시스템들도 컴포넌트 개념 중에 단지 특별한 경우

의미와 표기법 스팩도 강화

각 메타클래스 스팩에는 의미상의 변이 포인트, 표기법 옵션, UML 1 스팩과의 관계 등을 분명히 정의

 

+ Recent posts