본문 바로가기
UML

[펌] [안영회의 UML 강좌8] - 클래스 다이어그램

by 사우람 2010. 7. 12.

##########0*
##########1*0 클래스와 스테레오 타입
2 .0 클래스에 주석 달기
3 .0 패키지(Package)
##########2*
##########3*
유즈케이스를 공부할 때 스테레오타입에 대해 언급했었죠. 앞 절에서 살펴 봤던 클래스의 다양한 유형들도 스테레오타입을 이용하여 표현할 수 있습니다. Rose에서는 클래스에 대하여 기본적으로 엔터티 클래스, 바운더리 클래스 및 컨트롤 클래스를 포함하여 11개의 스테레오타입을 지원합니다. 그러나, 이들 외에도 필요에 따라 얼마든지 스테레오타입을 정의하여 사용할 수 있습니다.

스테레오타입 지정은 클래스 스페시퍼케이션 윈도우에서 할 수 있습니다. 클래스를 더블 클릭하거나 오른쪽 마우스를 클릭하여 ‘Open Specification…’을 클릭하면 스페시퍼케이션 윈도우가 나타납니다. 스테레오타입 텍스트 필드에 원하는 스테레오타입을 타이핑 합니다. Rose에서 지원하는 스테레오타입은 드롭다운 버튼을 눌러 선택할 수 있습니다.

##########4*
그림 8-1. 클래스의 스테레오타입 결정하기


Rose에서 지원하는 스테레오타입들은 클래스의 모양이 RUP에서 사용하는 아이콘으로 변형됩니다. 사용자 정의 스테레오타입은 이중 꺽쇠(<<>>; guillemets)로 표기됩니다. 그림 8-2는 다양한 스테레오타입의 적용 예입니다.

##########5*
그림 8-2. 여러 가지 스테레오 타입


 

1 .0 클래스와 스테레오 타입
##########6*0 클래스에 주석 달기
3 .0 패키지(Package)
##########7*
##########8*
다른 UML 요소와 마찬가지로 클래스에 설명을 붙일 수 있습니다. 클래스가 선택된 상테에서 다큐멘테이션 윈도우에 직접 설명을 입력해 넣을 수도 있고, 스페시퍼케이션 윈도우에서 타이핑 할 수도 있습니다.

클래스가 어떠한 상태와 행위를 갖는 지를 기술하는 우를 범하는 경우가 많습니다. 그러나, 이러한 것들은 UML을 통해 충분히 시각적으로 표현되기 때문에 굳이 기술할 필요가 없습니다.

주석 내용은 클래스의 목적을 명기하는 것이 가장 중요합니다. 개발과정이 진행됨에 따라 클래스는 더욱 복잡해지기도 하고, 불필요하게 여겨져서 없어지기도 하고, 생겨나기도 합니다. 당연히 수많은 고민에 부딪히게 되겠죠. 많은 의사결정을 해야 하니까요.

이때 클래스가 왜 필요한지 목적을 명확하게 하는 것이 의사결정자의 도움을 한결 덜게 해줄 것입니다. 그림 8-3 은 주석을 달아놓은 클래스 예제입니다.

##########9*
그림 7-3. 클래스에 주석 달기


 

1 .0 클래스와 스테레오 타입
2 .0 클래스에 주석 달기
##########10*0 패키지(Package)
##########11*
##########12*
시스템의 클래스가 많지 않을 때는 관리하는데 큰 어려움이 없습니다. 그러나, 복잡한 시스템의 경우 클래스가 많아지면 난처하게 됩니다. 컴퓨터를 사용하면서 디렉토리(폴더)에 파일이 너무 많으면 관리하기가 힘들어 디렉토리를 만들어 클래스를 정리하죠.

패키지는 디렉토리와 동일한 개념입니다. 다만, 디렉토리에는 파일이 들어있지만 패키지에는 클래스가 들어가는 것이 차이죠.

UML 표기법은 윈도우의 폴더 아이콘과 유사합니다.

##########13*
그림 8-4. 패키지의 UML 표기법



Rose에서 패키지를 사용하는 방법은 간단합니다. 우선 패키지를 만드는 것은 클래스를 만드는 방법과 마찬가지로 Logical View에서 오른쪽 마우스 클릭을 합니다. 팝업 메뉴에서 [New]-[Package] 순으로 선택하면 NewPackage라는 패키지 이름이 반전 상태가 되는데 이때 원하는 패키지 이름을 입력하면 됩니다.

##########14*
그림 8-5. 패키지 만들기



클래스를 패키지에 넣는 방법은 그야말로 탐색기에서 파일을 폴더에 넣는 것과 동일합니다. Logical View가 아닌 패키지를 선택한 상태에서 클래스를 만들면 해당 패키지에 속하는 클래스가 만들어집니다.

##########15*
그림 8-6. 패키지로 정리된 클래스들



그림 8-6은 패키지를 이용하여 클래스들을 정리한 후 브라우저의 모습입니다. 패키지를 만들게 되면 클래스 단위가 아닌 패키지 단위로 모델을 살펴볼 수 있게 됩니다. 복잡한 시스템을 개발하는 경우에는 이렇게 패키지 단위의 다이어그램을 통해 세밀한 기능보다는 전체적인 구조나 주요 기능을 가늠해 볼 수 있게 됩니다.

또한, 각 패키지에 의사소통을 담당하게 될 인터페이스 역할을 하는 클래스를 둔다면 패키지 단위의 재사용까지도 가능해집니다. 쉽게 생각하면 작은 레고 블록을 모아서 성을 만들어둔다면 레고 블록을 처음부터 쌓을 필요 없이 성이 필요할 때 미리 마련해둔 성을 꼽으면 되는 이치죠. 이때, 다른 레고 블록과 성이 맞닿는 지점이 바로 인터페이스가 되는 것입니다. 그림 8-7은 패키지 단위의 다이어그램입니다. Rose에는 패키지 다이어그램이 따로 있는 것이 아니라, 클래스 다이어그램에 패키지를 놓는 방식으로 그릴 수 있습니다.

##########16*
그림 8-7. 패키지 단위의 다이어그램