##########0*0 Sequence Diagram vs. Collaboration Diagram |
2 .0 Sequence Diagram |
3 .0 Sequence Diagram 만들기 |
4 .0 Collaboration Diagram 만들기 |
##########1* |
이번 강좌에서는 시퀀스 다이어그램과 코레보레이션 다이어그램을 배우도록 하겠습니다. 우선 이들 다이어그램이 무엇이고, 왜 필요한지 살펴보고 작성 방법을 알아 보도록 하죠.
Sequence Diagram vs. Collaboration Diagram
시퀀스 다이어그램과 코레보레이션 다이어그램은 둘 다 객체의 상호작용(Object Interaction)을 나타냅니다. 유즈케이스를 뽑아내면 사용자가 원하는 것이 무엇인가를 알 수 있고, 이것이 어떠한 흐름으로 일어날지를 기술하는 시나리오가 뒤따릅니다.
시나리오는 결국 객체들의 상호작용으로 나타내어지게 됩니다. 결국 객체들이 모여서 프로그램, 소프트웨어 혹은 시스템을 이루게 되니까요.
따라서, 객체들의 상호작용을 정확하게 파악하는 일은 매우 중요합니다. 세세한 사항을 글로 나열하면 전체적인 내용을 이해하기가 어려워집니다. 이러한 이유로 객체의 상호작용을 표현하는 다이어그램들이 필요한 것이죠.
이들 두 다이어그램의 가장 큰 차이는 시퀀스 다이어그램은 이름에서도 알 수 있듯이 시간의 흐름에 따른 객체의 상호작용을 보여주는 반면, 코레보레이션 다이어그램은 상호작용의 내용과 순서만을 나타낸다는 것이죠.
그림 10-1. Sequence Diagram의 예
그림 10-1과 10-2는 각각 객체의 동일한 상호작용에 대한 시퀀스 다이어그램과 코레보레이션 다이어그램입니다.
그림 10-2. Collaboration Diagram의 예
##########5*
1 .0 Sequence Diagram vs. Collaboration Diagram |
##########6*0 Sequence Diagram |
3 .0 Sequence Diagram 만들기 |
4 .0 Collaboration Diagram 만들기 |
##########7* |
Sequence Diagram
시퀀스 다이어그램은 앞에 설명한 것처럼 객체간의 상호작용을 시간의 흐름에 따라 보여줍니다. 시퀀스 다이어그램에는 객체, 클래스 혹은 객체나 클래스가 될 후보들이 나타나고, 유즈케이스 혹은 시나리오에 나타나는 기능들을 수행하기 위해 교환되는 메시지들이 표현됩니다.
모호한 용어들을 좀 정리하고 진도를 나가도록 하죠. 후보(Candidate)의 의미를 아시겠습니까? RUP를 설명할 때 언급을 한 것처럼 객체지향 방법론을 적용하여 개발하는 경우에는 반복적인 개발이 일어납니다. 초기에 클래스나 객체로 뽑은 것들도 개발이 진행되면서 사라지거나, 쪼개지는 경우가 자주 발생할 것입니다. 이러한 연유로 초기의 클래스나 객체는 후보가 되기도 하는 것입니다.
다음으로 메시지에 대해서 좀 더 말씀을 드리죠. 실제 구현이 된 연후에 메소드 혹은 함수가 불려짐으로 해서 기능이 수행됩니다. 모델링 단계에서 메소드 혹은 함수를 호출하는 과정이 메시지의 교환으로 나타나는 것입니다. 그림 10-2의 경우를 예로 들면, 강좌를 입력하기 위한 폼(a course form)이 강좌를 관리하는 객체(the manager)에게 강좌를 추가해 달라는 메시지(add course)를 전달합니다. 구현 시에는 manager.addCourse(…)와 같은 식이 되는 것이죠.
그림 10-3. Sequence Diagram에서 객체의 표기
그림 10-3은 각각 식별을 위한 객체의 이름만 있는 객체, 객체의 이름과 클래스 이름이 붙여진 객체와 클래스 이름만 있는 익명(Anonymous) 객체의 UML 표기법입니다.
객체는 자신의 타임라인을 갖습니다. 타임라인에 객체의 수명이 표현되기도 하죠. 이러한 타임라인은 점선으로 표시합니다. 객체 사이에서 오고 가는 메시지는 화살표로 표시합니다. 화살표는 그림 9-1과 같이 메시지를 보내는 객체의 타임라인에서 메시지를 받는 타임라인으로 향하게 됩니다.
##########10*
1 .0 Sequence Diagram vs. Collaboration Diagram |
2 .0 Sequence Diagram |
##########11*0 Sequence Diagram 만들기 |
4 .0 Collaboration Diagram 만들기 |
##########12* |
Sequence Diagram 만들기
이제 시퀀스 다이어그램을 작성해 볼까요? 그림 10-4와 같이 유즈케이스 리얼리제이션을 선택한 상태에서 오른쪽 마우스를 클릭하여 팝업 메뉴가 나타나게 합니다. 팝업 메뉴에서 New – Sequence Diagram 메뉴를 선택합니다.
그림 10-4. 시퀀스 다이어그램 만들기
NewDiagram이라는 이름으로 나타나는 새로운 시퀀스 다이어그램을 선택하고 적당한 이름으로 수정합니다.
이제 다이어그램에 객체와 메시지를 표현할 차례군요. 우선 새로 만든 시퀀스 다이어그램을 더블클릭하여 다이어그램 윈도우에 해당 시퀀스 다이어그램이 나타나게 합니다. 많은 경우 액터가 시퀀스를 시작하게 되죠. 브라우저에서 액터를 선택하여 이를 다이어그램 윈도우로 드래그 합니다. 객체의 경우 툴바에서 객체 아이콘을 선택하고, 객체가 놓일 위치를 클릭하면 새로운 객체가 표현됩니다.
객체는 자신의 타임라인과 함께 나타나게 됩니다. 메시지는 툴바에서 화살표를 선택한 상태에서 메시지를 보내는 객체의 타임라인에서 클릭을 하고, 메시지를 받는 객체의 타임라인까지 드래그 합니다.
그림 10-5. 시퀀스 다이어그램 작성
개발 과정이 진행되면 발견되어진 객체들에 의해서 클래스가 정의되는 경우도 있고, 반대로 이미 정의된 클래스를 객체에 할당할 필요성이 생기게 됩니다. 이러한 경우 시퀀스 다이어그램에도 이를 적용할 수 있습니다. 브라우저에서 할당할 클래스를 선택하여 해당 객체까지 드래그합니다.
그림 10-6. 객체에 클래스 할당하기
1 .0 Sequence Diagram vs. Collaboration Diagram |
2 .0 Sequence Diagram |
3 .0 Sequence Diagram 만들기 |
##########17*0 Collaboration Diagram 만들기 |
##########18* |
Collaboration Diagram 만들기
Rose에서는 시퀀스 다이어그램을 작성하면 코레보레이션 다이어그램을 자동으로 생성해줍니다. 이미 시퀀스 다이어그램에는 코레보레이션 다이어그램 작성에 필요한 모든 정보가 포함되어 있으니까요. 물론 반대도 가능합니다.
브라우저에서 더블클릭 해서 시퀀스 다이어그램을 열고 난 후 메뉴바에서 Browse – Create Collaboration Diagram 메뉴를 선택합니다. 단축키는 F5 기능키입니다. 두 가지 다이어그램이 이미 존재할 때는 F5키를 누르면 두 다이어그램을 번갈아 보여줍니다.
'UML' 카테고리의 다른 글
[펌] [안영회의 UML 강좌12] - Iterative Development (0) | 2010.07.12 |
---|---|
[펌] [안영회의 UML 강좌11] - Relationship 찾아내기(2) (0) | 2010.07.12 |
[펌] [안영회의 UML 강좌9] - Object Interaction(1) (0) | 2010.07.12 |
[펌] [안영회의 UML 강좌8] - 클래스 다이어그램 (0) | 2010.07.12 |
[펌] [안영회의 UML 강좌7] - 클래스 다이어그램 (0) | 2010.07.12 |