액티비티(Activity) 다이어그램
Activity diagram with Plant UML
정의 및 목적
- 액티비티 다이어그램은 액티비티(activity) 및 액션(action)을 표현
- 반복, 조건, 병렬 등을 표현
- 전체적의 제어 흐름을 보여주는 것이 주요 목적
- 필요에 따라 데이터의 흐름도 보여줄 수 있음.
액티비티 다이어그램 주요 표현
- 검정색 원은 시작점
- 이중선이 있는 검정색 원은 종료점
- 타원은 액션(action), 다이아몬드 또는 육각형은 결정(decision)을 표현
- 바(bar)는 병렬 액티비티의 시작(split) 및 종료(join)를 표현
- 컬럼(swimlane)은 각 각 컴포넌트를 의미
- 추상화된 레벨에서 전체 컴포넌트 간의 액션의 흐름을 보기 용이함.
- 복잡한 서비스의 경우에는 액션의 흐름을 미리 파악할 필요가 있음.
- 개발자들간의 잘못된 소통을 사전에 방지해줄 수 있음.

액티비티 다이어그램 그리기
- Plant UML 을 이용하여 아래와 같은 절차를 통해서 그릴 수 있음.
- 본 섹션에서는 서비스 설계에 필요한 최소화를 설명하며 Plant UML 설명 을 참고
- 메인 컴포넌트에서 확장해나가는 방식으로 그릴 수 있음.
관련 컴포넌트 정의
- 다수 컴포넌트가 포함된 엑티비티를 그릴 경우에만 해당됨.
- 엑티비티 다이어그램은 하나의 컴포넌트에 대한 상세 흐름을 정의하는 경우가 다수이므로 본 단계를 수행하지 않을 수 있음.
skinparam backgroundcolor transparent
|컴포넌트1|
|메인컴포넌트|
|컴포넌트2|
|메인컴포넌트|
start
stop

메인 컴포넌트의 결정 로직 정의
- 메인 컴포넌트의 로직을 중심으로 프로세스를 크게 그림.
- 다른 컴포넌트와 연동은 표시하는 정도 수준
- 결정 및 병렬 로직등은 상세하게 보여야 함.
skinparam backgroundcolor transparent
|컴포넌트1|
|메인컴포넌트|
|컴포넌트2|
|메인컴포넌트|
start
if (조건을 만족하는지?) then (예)
:위의 조건을 만족하는경우
병렬 프로세스를 시작;
fork
:컴포넌트1에 요청;
fork again
:컴포넌트2에 요청;
end fork
else (아니요)
:틀렸을때 수행할 프로세스;
endif
stop

메인 컴포넌트의 로직 상세화
- 결정 로직 이후의 로직을 조금씩 상세화 수행
- 실패시 장애 조치(failover) 로직 등에 대해서 상세화 수행
skinparam backgroundcolor transparent
|컴포넌트1|
|메인컴포넌트|
|컴포넌트2|
|메인컴포넌트|
start
if (조건을 만족하는지?) then (예)
:위의 조건을 만족하는경우
병렬 프로세스를 시작;
fork
:컴포넌트1에 요청;
fork again
:컴포넌트2에 요청;
end fork
else (아니요)
repeat :다음 failover;
:재시도 수행;
repeat while (end of failovers?)
endif
stop

타컴포넌트의 처리 로직 상세화
- 타컴포넌트와 연동되는 부분에 대한 상세화
- 타컴포넌트에서 요구되는 처리를 기반으로 작성
- 해당 컴포넌트의 흐름을 컴포넌트 개발자들 간의 합의 및 설계
- 타컴포넌트에서 요구되는 처리를 기반으로 작성
skinparam backgroundcolor transparent
|컴포넌트1|
|메인컴포넌트|
|컴포넌트2|
|메인컴포넌트|
start
if (조건을 만족하는지?) then (예)
:위의 조건을 만족하는경우
병렬 프로세스를 시작;
fork
:컴포넌트1에 요청;
|컴포넌트1|
:처리;
|메인컴포넌트|
:요청처리;
fork again
:컴포넌트2에 요청;
|컴포넌트2|
:처리;
|메인컴포넌트|
:요청처리;
end fork
else (아니요)
repeat :다음 failover;
:재시도 수행;
repeat while (end of failovers?)
endif
stop
