[ 제어 모델링 ]
UML은 정적 관점, 동적 관점 모델링 외에도
흐름도처럼 ‘제어 흐름(Control Flow)’ 을 표현하는
다이어그램을 제공한다.
그 대표가 바로
액티비티(Activity) 다이어그램이다.
액티비티 다이어그램이란?
액티비티 다이어그램은
알고리즘/프로세스의 작업 절차를 모델링한다.
- 기본 느낌은 흐름도(Flowchart) 와 유사
- 단, 예외 처리 흐름까지 포함해 더 명확하게 표현 가능
- 동시성(병렬 수행) 도 표현 가능
즉, '프로그램이 실제로 어떤 순서로 진행되는지'를
작업 단위 중심으로 정리하는 모델이다.
상호작용 다이어그램과의 차이
액티비티 다이어그램은
상호작용 다이어그램을 보완한다.
- 상호작용 다이어그램
객체에서 객체로 제어가 이동하는 흐름을 모델링
- 액티비티 다이어그램
'무슨 작업'이 '어떤 순서'로 이어지는가 같은 작업 흐름을 모델링
또한 액티비티 다이어그램은
처음부터 객체를 확정하지 않아도
‘할 일(액티비티)’을 먼저 모델링하고,
나중에 객체/역할이 식별되면
그 책임을 추가로 할당하는 방식으로도 활용된다.
기본 요소 정리 (표로 보기)
액티비티 다이어그램에서 자주 쓰는
핵심 요소는 아래 4가지가 기본이다.
| 요소 | 의미 | 핵심 포인트 |
| Activity | 계산/처리/프로세스(작업) | '무슨 일을 하는지'를 나타내는 단위 |
| Transition | 액티비티 간 제어 이동 | 한 작업이 끝나고 다음 작업으로 흐름이 넘어감 |
| Branch | 조건 분기 | 조건이 true인 경로를 따라감 (가드 조건 표기) |
| Merge | 분기 흐름 합류 | 분기된 흐름을 다시 하나로 합쳐 단일 흐름으로 진행 |
Branch / Merge 규칙
Branch(분기) 는 조건에 따라
흐름이 갈라지는 지점이다.
- 분기에서 나가는 전환에는
보통 [조건] 같은 가드가 붙는다. - true로 계산된 조건의 분기를 따른다.
- 분기점을 떠나는 조건들은 서로 겹치지 않아야 한다.
(조건이 겹치면 '어느 쪽으로 가야 하는지'가 모호해짐)
Merge(병합) 는 분기된 흐름을 다시 합쳐서
이후에는 단일 제어 흐름으로 이어지게 만든다.
어디에 쓰나?
액티비티 다이어그램은
크게 두 가지 상황에서 많이 쓴다.
1. 문제 영역(Problem Domain)의 워크플로 모델링
현실 업무 절차(예: 도서관 대출, 주문 처리)를 흐름으로 정리
2. 솔루션 도메인(Solution Domain)의 소프트웨어 제어 흐름 모델링
실제 시스템 내부 로직이 어떤 순서/조건으로 동작하는지 명확히 표현
또한 유스케이스를 액티비티 다이어그램으로 모델링할 수도 있다.
유스케이스는 서술 형태라 세부 사항이 누락되기 쉬운데,
액티비티 다이어그램은 더 정형화된 흐름으로 보여줄 수 있다.
예시 흐름 (도서관 대출 시나리오)
도서 대출 흐름을 액티비티로 풀면
보통 이렇게 정리된다.
- 대출 요청
- 대출 가능 여부 확인 (Branch)
- [제한 미도달] → 대출 권수 증가 → 대출자 기록
- [제한 도달] → 제한 안내(실패 처리)
- Merge 후 종료
코드 관점에서는 보통
if/else 분기로 구현되는 형태와 대응된다.
스윔레인(Swimlane): 책임 분리
액티비티 다이어그램에는 스윔레인이 있어
각 액티비티가 '누가 담당하는지(책임)\'를 나눠 표현할 수 있다.
- 스윔레인 = 담당 주체(구성 요소/조직 단위)
- 같은 흐름이라도 '부서/역할별 업무 분장'이 명확해진다.
병렬 수행: Fork / Join
액티비티 다이어그램은
병렬 처리(동시에 진행되는 작업) 도 표현한다.
- Fork: 하나의 흐름이 여러 흐름으로 갈라져 동시에 수행
- Join: 동시에 수행되던 여러 흐름이 다시 모여 다음 단계로 진행
예를 들어 '주문 처리'에서
배송 준비 / 송장 발행 / 결제 처리 같은 작업이 병렬로 진행되고,
모두 끝나면 '주문 마감'으로 넘어가는 구조를 표현할 수 있다.
마무리 정리
제어 모델링은 흐름도처럼
'제어 흐름을 모델링'하는 관점이다.
그 핵심 도구가 액티비티 다이어그램이다.
액티비티 다이어그램은
- 작업 절차를 명확히 보여주고
- 조건 분기(Branch/Merge)를 구조적으로 표현하며
- 스윔레인으로 책임을 나누고
- Fork/Join으로 병렬 수행까지 모델링할 수 있다.
'개주 훈련일지 > 📚 코살대 교본 학습' 카테고리의 다른 글
| SQL) 서브쿼리 (0) | 2026.01.25 |
|---|---|
| 모델 검증 (0) | 2026.01.24 |
| SQL) 계층형 질의와 셀프 조인 (0) | 2026.01.24 |
| SQL) 집합연산자 (0) | 2026.01.24 |
| SQL) 표준 조인 (0) | 2026.01.24 |