UML[2/4]

|

UML 강좌 #2. (ver 0.1)

                                                        

 

 

 

                                                      Written by 원도

1998 2 1

                                                                                      copyright  Plasticsoftware. Co.

                                                                                      www.plasticsoftware.com

 

앞의 강좌에서 우리는 UML 정의와 전반적인 면을 살펴보았습니다. 이번에는 시스템의 정적인 면을 설계할 사용하는 Static Structure Diagram 관하여 알아보도록 하겠습니다. 시스템의 정적인 설계는 시스템의 분석과 설계초기에 먼저 기술 되어야 하는 부분이므로 가장 중요한 부분이라 감히 있을 것입니다. 또한 시스템의 전체 설계시 실제로 가장 많이 사용되는 부분이기도 합니다.

 

1.       Static Structure Diagram

 

Static Structure Diagram 시스템의 정적 구조를 기술하는 다이어그램 전반을 지칭하며 내부에 class, interface, relationship등의 여러가지 요소로 구성되어있다. 이러한 내부의 요소에 관해 표기법과 의미를 알아봄으로써 Static Structure Diagram 전체적인 이해를 도울 있을 것이다.

 

2.       Class

 

n         Notation


 


클래스의 표기는 그림과 같다. 직사각형 안에 영역을 세부분으로 나누고 가장 부분은 클래스의 이름, 중간 부분은 attribute들을, 하단 부분은 operation들을 기입한다. 여기서 attribute부분과 operation부분은 생략이 가능하다. 결과적으로 다음의 그림과 같은 형태도 가능하다.


 

 


n         Semantics

 

클래스는 객체의 type 나타내며 객체가 가져야 정보와 행위를 담고 있다. 클래스들사이의 relationship 함께 클래스 다이어그램을 이루는 중요한 요소이다.

 

n         Attributes

 

Prototype : visibility name : type-expression = initial-value

위의 prototype 같은 형태로 attribute 클래스의 인스턴스인 객체가 가져야 정보를 나타낸다. 여기서 initial-value부분은 생략이 가능하다. class 아닌 interface 표기에서 attribute initial-value 반드시 나타나야 한다.

 

n         Operations

 

Prototype : visibility name (parameter-list) : return-type-expression

Operation 클래스의 인스턴스인 객체의 행위를 나타내고 위의 형태로 표기된다.

 

n         Visibility

 

Visibility 클래스 멤버의 접근(access) 범위를 나타내는 요소이다. 접근의 허용은 크게 세가지로 private, public, protected 나뉜다. Visibility 표기는 operation attribute prototype 나타나는 것과 같이 member 앞에 표기를 한다.

 

-  : private member 나타내고, 클래스 member 내의 operation만이 접근할 있다.

#  : protected member 나타내고, 클래스 member뿐만 아니라 클래스를 상속받은 subclass에서도 member 접근이 가능하다.

+  : public member 나타내고, 어느 곳에서나 member 접근이 허용된다.

 

n         Example


 

 


Class 예로 그림에서는 Toolbar 예를 들고 있다. attribute currentSelection toolCount   protected member 정의되어 있다. 그리고 operation들이 각각의 특성에 맞게 visibility 나타나있다.

 

3.       Relationships

 

당신은 집을 지을 문과 창문, 캐비닛, 그리고 조명과 같은  여러가지 내부 구조물을 생각하게 된다. 이러한 것들은 각각 독립적으로 존재하지만 창문과 문이 벽에 붙어있어야 되고 조명이 천장에 있어야 하는 것처럼 서로서로 연관성을 가지고 있다. 처럼 각각의 구조물을 클래스와 인터페이스 등등으로 비유한다면 그것들의 연관성이 바로 지금 말하고자 하는 Relationship이다.

Relationship에는 크게 Dependency, Associations, Generalization, Refinment으로 나뉘어지는데 여기서 Association내부에 Composition,  Aggregation 주제로 나뉘어 진다.

 

1)        Association

 

n        
Notation

 


Association 표기는 그림과 같이 클래스 사이를 실선으로 표기한다.

Association 연결된 클래스 사이의 관계를 나타낼 있는 이름을 가질 있고 또한 클래스는 관계에서 적합한 이름으로 role name으로 나타내어질 있다.

 

n         Semantics

 

Association 하나의 객체와 다른 객체들 사이가 관련되어있을   특징을 구체화하기 위해 사용된다.

 

n        
Example

 

 


그림의 예에서 보는 바와 같이 person company내에서 일을 하게된다. 이와 같이 company person 관련이 있고 이것을 나타내기 위해 association relationship 사용하였다. Relationship이름으로 ‘works for’ 나타내었고 이에 해당하는 클래스의 역할로 employee employer 사용하였다. 연결상태에서 다중의 연결이 가능한 관계일 경우 그림처럼 ‘1..*’ ‘*’등으로 다중의 표시를 하게 된다.

 

2)        Aggregation

 

n         Notation

 


 


그림과 같이 aggregation 다이아몬드 머리를 가진 실선으로 표기한다. 외의 표기규칙은 association 같다.

 

n         Semantics

 

Aggregation association 일종이다. Association 전체와 부분의 관계를 표시하기 위해서 Aggregation relationship 사용한다.  예를 들어 회사와 업무부서의 관계일 경우 업무부서는 회사의 부분이 되고 회사는 업무부서의 전체가 된다.

 

n         Example


 


회사와 업무부서의 관계를 표시하기 위해 aggregation relationship 사용하였다.

여기서 다이아몬드 도형이 나가는 쪽이 부분이 되고 다이아몬드 도형이 들어가는 쪽이 전체가 되도록 표기한다. 그외에 나머지 표기는 association 같다.

 

3)        Composition

 

n         Notation


 

 


Composition 표기는 그림과 같이 속인 다이아몬드 도형을 머리로 하는 실선으로 표시한다.

 

n         Semantics

 

Composition aggregation 형태이다. 단순한 aggregation 경우 부분이 여러 개의 전체에 의해 공유될 있는 반면에 composition 경우 전체에 대해 부분이 강한 소속감을 가지고 동일한 생명기간을 가질 때를 나타내다.

 

n        
Example

 


그림의 예에서 보는 바와 같이 윈도우 시스템에서 하나의 프레임은 하나의 윈도우에 속하게 된다. 이처럼 반드시 하나의 윈도우에 소속되고 윈도우와 생명을 같이 하게 되므로 경우 composition으로 나타낸다. 여기서 다이아몬드 도형의 머리가 나가는 쪽이 부분이 되고 들어가는 쪽이 전체가 된다. 외에 표기법은 aggregation 같다.

 

4)        Refinment

 

n        
Notation

 


Refinment 표기는 삼각형 점선 화살표 표기를 한다.

 

n         Semantics

 

Refinment relationship 동일한 것에 대하여 다른 추상화 레벨들에서 기술할 나타난다.

 

n        
Example

 


그림의 예에서 보는 바와 같이 analysis 추상화 레벨과 design추상화 레벨에서의 다른 기술을 보일 refinment relationship 사용한다.

 

5)        Generalization

 

n        
Notation

 


Generalization 표기는 삼가형 실선 화살표 한다.

 

n         Semantics

 

Generalization 일반적인(general) 것과 일반적인 것에서 특화된(specific) 사이의 관계를 나타낼 사용한다. 객체 지향 언어에서 흔히 있는 상속(inheritance) 의미와 동일하다. 상속의 시점에서 일반적인 것은 parent 되고 특화된 것은 child 되는 것이다. 그러므로 특화된 것은 일반적인 것의 모든 attribute operation 가지게 된다.

 

n         Example

 


 


그림의 예에서 볼수 있듯이 shape에서 특화된 rectangle, circle, polygon 있고 rectangle에서 특화된 square 있다. shape 모든 attribute operation rectangle, circle, polygon 가지고 있고 각기 자기만의 정보를 attribute operation으로 개별적으로 가지고 있다.

화살표 방향의 표기에 있어서 일반적인 클래스로 화살표가 들어가고 특화된 쪽에서 화살표가 나오게 표기함을 알수 있다.

 

6)        Dependency

 

n         Notation


 

 


Dependency 표기는 점선 화살표 표기한다.

 

n         Semantics

 

Dependency 하나의 특징이 변화함에 따라 다른 하나에 영향을 미칠 때의 관계를 표시할 사용한다. 예를 들어 event클래스의 변화는 window 클래스에 바로 영향을 미침으로 둘의 관계를 dependency 표시할 있다.

 

n         Example

 


 


그림의 예에서 보는 바와 같이 의존을 하게 되는 클래스로부터 화살표가 나가고 의존성을 가지게 하는 클래스로 화살표가 들어가게 된다.

FilmClip에서 playOn operation argument channel 타입이 들어가게 된다. 이로써 channel  변화는 FilmClip 영향을 주게 되는 것이다.

 

4.       Notes

 

n         Notation


 

 


그림 처럼 Notes 표시는 꼭지가 접혀진 사각형으로 표시한다.

 

n         Semantics

 

Notes Static Structure 다이어그램만 적용되는 것이 아니라 다이어그램 전반적으로 사용되며 다이어그램에 대한 주석이 필요한 경우 사용한다.

 

5.       Constraint

 

n         Notation and Semantics

 

Constraint 특별한 형태의 표기를 가지고 있지 않고 무형의 text 표시하게 된다. Constraint UML에서 의미를 갖는 모든 것에 새로운 의미를 부여하거나 존재하는rule들을 변화시킬 사용한다.  또한 Constraint 참인 상황을 포함하는 조건을 나타낼때도 사용된다.

 

n         Example


 


그림에서 보는 바와 같이 portfolio bankAccount association relationship {secure} Constraint 첨가하여 의미를 더하게 된다. 그리고  bankaccount corporation, person과의 관계를  {or} constraint 사용하여 의미를 더하게 된다.

처럼 기존의 것에 constraint 의미를 더하게 된다.

 

6.      
Example

실제로 모든 요소를 포함해서 하나의 회사에 대한 정적인 구조를 diagram으로 나타내었다. Company department, office 관계는 composition으로 관계를 이루고 있다.

Department Person 두가지의 association관계로 이루어져 있다. 하나는 person 역할이 manager로서 하나는 member로서 이루어져 있다. 여기에 Constraint 첨가하여 manager로서의 관계가 member로서의 관계의 부분 집합이라는 의미를 더하였다.

Person operation getContactInformation(), getPersonalRecords() ContactInformation personnelRecord 변화에 따라 영향을 받게 됨으로 Person ContactInformation, PersonnelRecord dependency 관계를 이루고 있다.

실제로 이외에 여러가지 부분을 추가하고 삭제함으로써 더욱 완벽한 회사의 정적인 구조를 만들 있다.

 

 

v 여기서 두번째 강좌를 마칠까 합니다. 여러가지 일이 바쁘다는 핑계  때문에 두번째의 강좌가 늦어진 같습니다.  이번 강좌는 정적인 구조를 나타내는 다이어그램의 기본적인 요소에 대해 알아보았습니다. 다음 강좌는 정적인 구조를 나타내는 다이어그램의 깊은 부분을 다뤄볼려고 합니다. 다음의 강좌도 기다려 주세요.

 

v 이글을 인용하거나 포스팅하실분은 저한테 연락주세요.  또한 오타나 잘못된 점이 있으면 이리로 메일 주세요.

   

wideeye@www.plasticsoftware.com

'SE' 카테고리의 다른 글

UML[4/4]  (0) 2008.07.25
UML[3/4]  (0) 2008.07.25
UML[1/4]  (0) 2008.07.25
Pattern[4/4]  (0) 2008.07.25
Pattern[3/4]  (0) 2008.07.25
And