들어가며
앞선 글에서는 MBSE(Model-Based Systems Engineering)에서 많이 사용하는 구조 중심의 다이어그램인 BDD(Block Definition Diagram)와 IBD(Internal Block Diagram)를 살펴봤다. 두 다이어그램은 시스템이 무엇으로 구성되어 있는지, 그리고 각 구성요소가 어떻게 연결되는지를 이해하는 데 중요한 역할을 한다.
하지만 시스템을 구성하는 요소만 안다고 해서 시스템을 완전히 이해할 수 있는 것은 아니다. 실제 개발에서는 어떤 순서로 기능이 수행되는지, 어떤 조건에서 다음 단계로 진행되는지, 여러 작업이 동시에 실행되는지와 같은 동작 흐름도 함께 정의해야 한다.
이러한 내용을 표현하는 대표적인 SysML 다이어그램이 바로 Activity Diagram이다. 이름 그대로 시스템의 활동(Activity)과 작업 흐름을 시각적으로 표현하는 모델이며, 요구사항 분석부터 상세 설계까지 폭넓게 활용된다.
이번 글에서는 Activity Diagram의 개념과 주요 구성 요소, 실제 활용 사례를 중심으로 살펴본다.
Activity Diagram이란?
Activity Diagram은 시스템이나 사용자가 수행하는 작업의 흐름을 표현하는 SysML 다이어그램이다.
쉽게 말하면 "어떤 일이 어떤 순서로 진행되는가"를 보여주는 흐름도(Flow Chart)에 가까운 모델이다.
예를 들어 다음과 같은 업무를 표현할 수 있다.
- 차량 시동 과정
- 드론 자동 이륙 절차
- 생산 설비의 작업 순서
- 철도 신호 제어 절차
- 자율주행 기능 수행 과정
복잡한 기능도 단계별로 표현할 수 있기 때문에 개발자뿐 아니라 프로젝트 관계자들도 이해하기 쉽다는 장점이 있다.
Activity Diagram이 필요한 이유
복잡한 시스템에서는 하나의 기능도 여러 단계로 나누어 수행된다.
예를 들어 자동 주차 기능을 생각해 보자.
단순히 "주차한다"는 기능처럼 보이지만 실제 내부에서는 다음과 같은 절차가 진행된다.
- 주변 환경 인식
- 주차 공간 탐색
- 주차 가능 여부 판단
- 경로 생성
- 차량 조향
- 속도 제어
- 주차 완료 확인
이처럼 하나의 기능을 세부 작업으로 나누어 표현하면 설계와 검증이 훨씬 쉬워진다.
Activity Diagram의 주요 구성 요소
Initial Node
활동의 시작점을 나타낸다.
일반적으로 검은색 원으로 표현하며 프로세스가 시작되는 위치를 의미한다.
Action
실제로 수행되는 작업이다.
예를 들어 다음과 같은 작업이 Action이 될 수 있다.
- 센서 데이터 수집
- 속도 계산
- 브레이크 제어
- 영상 분석
- 메시지 전송
Activity Diagram에서는 가장 많이 등장하는 요소이다.
Decision Node
조건에 따라 작업이 분기되는 지점을 표현한다.
예를 들어
"배터리 잔량이 충분한가?"
라는 조건을 판단하여
- 예 → 임무 수행
- 아니오 → 충전소 복귀
와 같이 흐름을 나눌 수 있다.
Merge Node
분기된 흐름을 다시 하나로 합치는 역할을 한다.
조건이 끝난 후 다음 작업을 계속 진행할 때 사용한다.
Fork Node
하나의 작업 이후 여러 작업을 동시에 수행할 때 사용한다.
예를 들어 차량 시동 후
- 계기판 초기화
- 센서 점검
- 통신 연결
을 동시에 수행하는 상황을 표현할 수 있다.
Join Node
동시에 수행되던 작업이 모두 끝난 뒤 다음 단계로 진행하는 지점이다.
병렬 작업을 하나의 흐름으로 다시 합치는 역할을 한다.
Final Node
프로세스가 종료되는 지점을 의미한다.
자율주행 차량으로 살펴보는 예시
자율주행 차량의 긴급 제동 기능을 Activity Diagram으로 표현하면 다음과 같은 흐름이 될 수 있다.
- 차량 주행 시작
- 전방 센서 데이터 수집
- 장애물 존재 여부 판단
- 장애물이 없으면 계속 주행
- 장애물이 있으면 거리 계산
- 충돌 위험 분석
- 브레이크 제어
- 차량 정지
- 종료
이러한 흐름을 모델로 작성하면 시스템의 기능을 직관적으로 이해할 수 있다.
병렬 처리도 표현할 수 있다
현대 시스템은 여러 작업을 동시에 수행하는 경우가 많다.
예를 들어 드론이 비행하는 동안에는
- GPS 위치 계산
- 자세 제어
- 카메라 촬영
- 배터리 상태 확인
- 통신 유지
가 동시에 이루어진다.
Activity Diagram에서는 Fork와 Join을 이용하여 이러한 병렬 작업을 표현할 수 있다.
이는 단순한 순차 흐름도와 비교했을 때 큰 장점이다.
요구사항과의 연결
MBSE에서는 Activity Diagram도 요구사항과 연결하여 관리한다.
예를 들어
요구사항
"장애물을 감지하면 0.5초 이내에 감속을 시작해야 한다."
↓
Activity Diagram
- 장애물 감지
- 거리 계산
- 감속 명령 생성
- 브레이크 제어
↓
시험
감속 시작 시간 측정
이처럼 요구사항과 기능 모델이 연결되면 추적성과 변경 관리가 쉬워진다.
실무에서 Activity Diagram을 활용하는 사례
Activity Diagram은 다양한 산업에서 기능 분석과 절차 설계에 활용된다.
대표적인 사례는 다음과 같다.
자동차
- 자동 주차
- 긴급 제동
- 차선 유지 기능
항공우주
- 비행 절차
- 착륙 과정
- 임무 수행 순서
철도
- 열차 운행 절차
- 신호 제어 과정
스마트팩토리
- 생산 공정
- 로봇 작업 순서
- 설비 점검 절차
의료기기
- 진단 장비의 검사 절차
- 자동 분석 과정
산업 분야는 달라도 작업의 흐름을 명확하게 표현해야 한다는 점은 동일하다.
Activity Diagram 작성 시 유의할 점
효율적인 모델을 만들기 위해서는 몇 가지 원칙을 고려하는 것이 좋다.
작업 단위를 적절하게 나눈다
너무 큰 작업은 흐름을 이해하기 어렵고, 반대로 너무 세분화하면 다이어그램이 복잡해질 수 있다.
조건을 명확하게 표현한다
Decision Node에서는 누구나 같은 의미로 이해할 수 있는 조건을 사용하는 것이 중요하다.
병렬 작업을 무리하게 사용하지 않는다
동시에 수행되는 작업만 Fork와 Join으로 표현하고, 실제 순차 작업은 순서대로 작성하는 것이 이해하기 쉽다.
요구사항과 연결성을 유지한다
Activity Diagram의 주요 작업은 관련 요구사항과 연결해 두면 변경 관리와 검증 과정에서 도움이 된다.
Activity Diagram의 한계
Activity Diagram은 작업 흐름을 표현하는 데 매우 효과적이지만, 시스템의 상태 변화까지 상세하게 설명하기에는 한계가 있다.
예를 들어 장비가
- 대기
- 운전
- 오류
- 복구
와 같이 상태를 반복적으로 변경하는 시스템은 State Machine Diagram으로 표현하는 것이 더 적합하다.
각 SysML 다이어그램은 목적이 다르기 때문에 상황에 맞게 선택하는 것이 중요하다.
마무리
Activity Diagram은 MBSE에서 시스템의 기능과 업무 흐름을 표현하는 핵심 도구다.
복잡한 작업을 단계별로 나누어 표현하고, 조건 분기와 병렬 처리까지 모델링할 수 있어 요구사항 분석과 기능 설계에 폭넓게 활용된다.
BDD와 IBD가 시스템의 구조를 설명한다면, Activity Diagram은 시스템이 실제로 어떻게 동작하는지를 보여주는 역할을 한다. 여러 다이어그램을 함께 활용하면 시스템을 다양한 관점에서 이해하고 관리할 수 있다.
다음 글에서는 State Machine Diagram을 중심으로 시스템의 상태 변화와 이벤트 기반 동작을 모델링하는 방법을 알아본다.
FAQ
Q1. Activity Diagram과 일반적인 순서도(Flow Chart)는 같은 것인가요?
비슷한 개념이지만 완전히 같지는 않다. Activity Diagram은 병렬 처리, 객체 흐름, 요구사항과의 연결 등 시스템 엔지니어링에 필요한 기능을 보다 체계적으로 표현할 수 있다.
Q2. 모든 기능을 Activity Diagram으로 표현해야 하나요?
필수는 아니다. 프로젝트에서 중요하거나 복잡한 기능을 중심으로 작성하는 경우가 많으며, 단순한 기능은 다른 모델이나 문서로 관리하기도 한다.
Q3. Activity Diagram은 개발 이후에도 활용되나요?
그렇다. 유지보수, 기능 개선, 교육 자료 작성, 변경 영향 분석 등 다양한 단계에서 지속적으로 활용할 수 있다.