며칠 전에 어린 아들에게 처음으로 심부름을 시켰습니다. 아이는 아직 돈에 대한
개념도 없고, 혼자 집 앞의 가게에서 물건을 사 본적도 없어서 설명하는데 애를
먹었습니다. 우선 아이에게 물건을 사서 집에 돌아오기까지 순서를 이야기해
주었습니다.
1. 10,000원을 주머니에 잘 넣어라.
2. "해피데이" 슈퍼에 가라.
3. 주인 아주머니에게 인사를 하고 "XX아이스크림 주세요" 하고 말해라.
4. 아주머니에게 10,000원을 주어라.
5. 아이스크림과 잔돈을 받아라.
6. 잔돈을 호주머니에 잘 넣어라.
7. 집으로 와라.
아이는 이해는 했지만 어렵고 자신없어 했습니다. 그래서 이번에는 물건을 사오는
순서를 그림으로 그리고 번호를 매겨가며 설명했습니다. 아이는 그 그림을 들고
가더니, 아이스크림을 사서 오는데 성공했습니다. 여기서 그린 그림이 액티비티
다이어그램이라고 할 수 있습니다.
이번에 학습하실 내용은 절차와 순서를 표현할 수 있는 액티비티 다이어그램입니다.
자, 이제 시작해 볼까요? |
|
액티비티 다이어그램은 다양한 목적과 용도로 사용됩니다. 액티비티 다이어그램이
사용되는 분야도 매우 다양합니다. UML의 9개 다이어그램 중 아마도 가장 범용적인
분야에서 다양하게 사용되는 다이어그램도 없을 것입니다.
액티비티 다이어그램을 작성하는 목적과 용도는 다음과 같습니다. |
 |
 |
대상에 상관없이 처리 순서를 표현하기 위해 작성합니다. |
 |
|
액티비티 다이어그램은 액티비티와 액티비티의 순서를 표현할 목적으로 작성됩니다.
그 대상이 비즈니스 영역이든 시스템 영역이든 로직과 처리순서의 표현이 필요할
경우, 액티비티 다이어그램을 사용합니다. 그래서 그 용도는 무척 다양합니다.
시스템 관점에서 프로그램 사양을 작성하는 곳, 비즈니스 관점에서 영업사원의
영업업무 프로세스를 표현하는 곳에도 사용할 수 있습니다. |
 |
 |
비즈니스 프로세스를 정의합니다. |
 |
|
액티비티 다이어그램의 적용 영역에서 가장 훌륭하게 사용되는 대상 중의 하나는
비즈니스 프로세스의 분석입니다. 시스템화 대상영역에 속한 현재 업무분야의
비즈니스 처리흐름을 표현(As-Is 프로세스 분석) 하거나 향후 변화된 비즈니스 처리
흐름(To-Be 프로세스 분석)을 작성할 수 있습니다. |
 |
 |
프로그램 로직을 정의합니다. |
 |
|
액티비티 다이어그램은 프로그램의 사양을 정의하는데 보조적으로 사용됩니다.
프로그램은 다양한 처리 흐름을 가지고 있습니다. 복잡한 처리 흐름을 자연언어로
기술하는 것은 부적절합니다. 작성하는 과정도 어렵거니와 작성된 사양을 정확히
이해하기도 무척 힘이 듭니다. 액티비티 다이어그램은 처리 흐름을 도식화하여
간단하고 명료하게 처리로직을 표현함으로써 작성과 이해가 용이합니다. |
 |
 |
유즈케이스를 실현(Realization)합니다. |
 |
|
프로젝트 초기에 정의된 유즈케이스는 프로그램으로 의해 구현되기 전에 설계되어야
합니다. 유즈케이스를 액티비티 다이어그램을 이용해 실현하는 경우, 객체를
정의하거나 객체간 상호작용을 분석하는 형태가 아니라, 유즈케이스의 처리흐름을
순서도처럼 상세히 기술하는 형태로 작성됩니다. 그러나 이 경우 비슷한 용도로
작성되는 유즈케이스 정의서가 존재하기 때문에 액티비티 다이어그램으로
유즈케이스를 실현하는 것은 흔한 사례는 아닙니다. | | |
|
 |
 |
|
액티비티 다이어그램을 작성하는 시기는 그 적용 영역이 다양한 것처럼 한정되어 있지
않고, 다음의 시기에 작성될 수 있습니다. |
 |
 |
업무 프로세스 정의 시점 |
|
비즈니스 프로세스를 정의하는 용도로 액티비티 다이어그램을 작성할 수 있습니다. |
 |
 |
유즈케이스 정의서(Use case Description) 작성 시점 |
|
유즈케이스 정의서에서 유즈케이스의 처리절차를 기술하는 부분에 액티비티
다이어그램을 작성할 수 있습니다. |
 |
 |
오퍼레이션 사양 정의 시점 |
|
클래스 오퍼레이션의 사양을 액티비티 다이어그램을 적용하여 작성할 수 있습니다. |
 |
 |
기타 |
|
기타 처리흐름이나 처리절차가 필요한 시점이면 언제나 액티비티 다이어그램이
작성될 수 있습니다. | |
 |
액티비티 다이어그램을 작성하기 위해서 준비물 및 선행과정은 특별히 없습니다. | |
2.구성요소
|
액티비티 다이어그램의 구성요소는 다음과 같습니다. |
 |
 |
Things 혹은 심볼 : 액티비티(Activity), 시작점(Initial State), 종료점(Final State), |
|
판단(Decision,Branch), Synchronization Bar |
 |
 |
Relationships : 전이(Transition) |
 |
 |
기타 요소 : Swim Lane | | | |
|
 |
액터의 표기 |
 |
|
|
 |
 |
액터의 정의 |
 |
|
 |
액티비티는 행위나 작업을 의미합니다. |
 |
 |
액티비티의 크기는 작성 대상에 따라 유동적이며, 한 액티비티 다이어그램에서는 |
|
액티비티의 크기가 균일한 것이 바람직합니다. |
 |
 |
액티비티는 최소 단위가 아니며 내부적으로 구조를 가질 수 있는 단위입니다. |
 |
 |
액티비티는 해당 작업의 종료 시점을 명확히 정의하기가 힘듭니다. | |
 |
 |
액터의 예 |
 |
|
결재 시스템 |
결재내용입력, 결재자 지정, 결재상신, 기안 내용조회, 결재,
반려, 통보 등 |
전자 상거래 시스템 |
상품조회, 구매결정, 결재, 배달 등 | | |
|
판단(Decision)에는 행위가 포함되어 있을까요?
판단에는 행위가 포함되지 않습니다. 단순히 분기가 일어나는 곳입니다. 분기에
필요한 행위는 판단 바로 전의 액티비티가 수행합니다. 예를 들어 사과 값이 1000원
이하면 사고, 그렇지 않으면 사지 않는다는 분기를 생각해 볼 때, 사과 값이
얼마인지 확인하는 행위는 판단(Decision)이 수행하지 않습니다. 이를 액티비티
다이어그램으로 표현하면 다음과 같습니다. |
 |
| |

3.사례연구
|
아래에 기술된 문제영역은 모델링의 대상이 되는 주제와 이것과 관련된 주변정보를
제공합니다. 이 문제영역을 분석하여 액티비티 다이어그램을 작성해 보세요.
그런 다음 다이어그램 보기 버튼을 클릭하여 액티비티 다이어그램과 비교해 보시기
바랍니다. |
|
 |
 |
사례 2와 동일한 업무절차에 대해 swim lane을 추가하여 생각해 봅시다. 업무의
역할(조직)은 sales person, consultant , corporate technician의 3자가
존재한다고 가정해 봅시다.
sales person은 고객과 접촉하여 약속을 잡고, 고객과 미팅을 가지고, 후속서한을
발송하는 액티비티를 담당합니다. consultant는 회의실을 준비하고 고객과 미팅을
가지고, 제안서를 만들고, 고객에 발송하는 일을 책임집니다.
corporate technician은 노트북을 준비하는 일을 책임집니다. 이상과 같은 역할이
추가된 액티비티 다이어그램을 작성해 봅시다. 역할은 swim lane으로 표현하도록
합니다. | | | | |
사례 2에 swim lain을 추가하여 모델링한 예입니다.
4. 작성단계 및 주의사항
|
다음은 액티비티 다이어그램 작성 시 주의사항입니다. |
 |
| |