들어가며
MBSE(Model-Based Systems Engineering)를 학습하다 보면 Activity Diagram과 함께 자주 등장하는 모델이 State Machine Diagram(상태 머신 다이어그램)이다. 두 다이어그램 모두 시스템의 동작을 표현하지만, 바라보는 관점에는 분명한 차이가 있다.
Activity Diagram이 작업의 순서와 절차를 중심으로 표현한다면, State Machine Diagram은 시스템이 어떤 상태(State)에 있으며 어떤 이벤트를 통해 다른 상태로 전환되는지를 표현하는 데 초점을 맞춘다.
실제 시스템은 항상 하나의 상태만 유지하지 않는다. 자동차는 시동이 꺼진 상태에서 시동이 켜지고, 주행 중에는 다양한 기능을 수행하다가 이상이 발생하면 오류 상태로 전환될 수 있다. 드론 역시 대기 상태에서 이륙하고, 임무를 수행한 뒤 착륙하며, 배터리가 부족하면 자동 복귀 모드로 변경된다.
이처럼 상태 변화가 중요한 시스템에서는 State Machine Diagram이 매우 유용하다.
State Machine Diagram이란?
State Machine Diagram은 시스템 또는 구성요소가 시간의 흐름에 따라 어떤 상태를 가지며, 어떤 조건이나 이벤트에 의해 상태가 변경되는지를 표현하는 SysML 다이어그램이다.
여기서 상태(State)는 시스템이 특정 시점에 가지고 있는 동작 모드를 의미한다.
예를 들어 스마트 도어락이라면 다음과 같은 상태를 가질 수 있다.
- 대기
- 인증 중
- 잠금 해제
- 자동 잠금
- 오류
사용자의 입력이나 센서 정보에 따라 시스템은 하나의 상태에서 다른 상태로 이동한다.
왜 상태를 모델링해야 할까?
복잡한 시스템은 같은 기능이라도 현재 상태에 따라 다른 동작을 수행한다.
예를 들어 차량의 자동 제동 기능은 차량이 주행 중일 때만 동작한다.
차량이 주차 상태라면 동일한 제동 명령이 입력되어도 실제 동작 방식은 달라질 수 있다.
또한 산업용 설비에서는 다음과 같은 상태가 존재할 수 있다.
- 전원 꺼짐
- 초기화
- 정상 운전
- 유지보수
- 비상 정지
각 상태마다 허용되는 동작이 다르므로 이를 명확하게 모델링하는 것이 중요하다.
State Machine Diagram의 주요 구성 요소
Initial State
시스템이 처음 시작하는 상태를 나타낸다.
일반적으로 검은색 원으로 표현하며 시스템의 시작점을 의미한다.
State
시스템이 일정 시간 동안 유지하는 상태이다.
상태 내부에는 필요한 경우 수행되는 작업이나 조건을 함께 표시할 수 있다.
예를 들어
- Standby
- Running
- Charging
- Error
등이 하나의 상태가 된다.
Transition
한 상태에서 다른 상태로 이동하는 연결선이다.
Transition에는 상태가 변경되는 조건이나 이벤트를 함께 작성할 수 있다.
예를 들어
- Start 버튼 입력
- 센서 감지
- 타이머 만료
- 오류 발생
등이 전이 조건이 될 수 있다.
Event
상태 전환을 발생시키는 사건이다.
사용자의 입력일 수도 있고 센서 정보나 내부 제어 신호일 수도 있다.
Guard Condition
특정 조건을 만족할 때만 상태가 변경되도록 하는 조건식이다.
예를 들어
[배터리 잔량 > 20%]
라는 조건이 만족될 때만 이륙 상태로 전환하도록 표현할 수 있다.
Final State
상태 머신이 종료되는 상태를 의미한다.
드론 시스템으로 살펴보는 예시
드론의 비행 과정을 상태 머신으로 표현하면 다음과 같이 구성할 수 있다.
- 전원 꺼짐
- 시스템 초기화
- 대기
- 이륙
- 임무 수행
- 자동 복귀
- 착륙
- 종료
여기서 배터리 부족 이벤트가 발생하면
임무 수행 → 자동 복귀
로 상태가 변경될 수 있다.
또한 GPS 오류가 발생하면
임무 수행 → 비상 모드
로 전환하는 것도 가능하다.
이처럼 상태 중심으로 시스템의 동작을 표현하는 것이 State Machine Diagram의 특징이다.
Activity Diagram과의 차이
많은 입문자가 Activity Diagram과 State Machine Diagram을 혼동한다.
두 다이어그램은 표현 대상이 다르다.
Activity Diagram
- 작업의 순서를 표현한다.
- 프로세스 중심이다.
- 업무 절차를 이해하기 쉽다.
예를 들어
센서 측정 → 데이터 처리 → 제어 명령 생성 → 모터 제어
와 같은 기능 흐름을 표현한다.
State Machine Diagram
- 시스템의 상태를 표현한다.
- 이벤트 중심이다.
- 상태 변화와 제어 로직을 이해하기 쉽다.
예를 들어
대기 → 운전 → 오류 → 복구
와 같은 상태 변화를 표현한다.
실무에서는 두 다이어그램을 함께 사용하는 경우가 많다.
실무 활용 사례
자동차
자동차에는 다양한 상태 기반 기능이 존재한다.
예를 들어 전기차의 충전 시스템은
- 충전 대기
- 충전 중
- 충전 완료
- 오류
상태를 반복적으로 변경한다.
산업용 로봇
산업용 로봇은
- 초기화
- 대기
- 작업 수행
- 작업 완료
- 비상 정지
등의 상태를 가진다.
비상 스위치가 눌리면 즉시 비상 정지 상태로 전환되도록 모델링할 수 있다.
항공우주
위성 시스템은
- 발사 준비
- 발사
- 궤도 진입
- 임무 수행
- 안전 모드
등의 상태를 관리한다.
예상하지 못한 오류가 발생하면 안전 모드(Safe Mode)로 자동 전환하도록 설계하는 사례가 많다.
의료기기
자동 분석 장비도
- 대기
- 검사 준비
- 검사 수행
- 결과 출력
- 오류 처리
와 같은 상태를 모델링하여 안정적인 운용을 지원한다.
State Machine Diagram 작성 시 유의할 점
효율적인 상태 모델을 만들기 위해서는 다음 사항을 고려하는 것이 좋다.
상태를 명확하게 정의한다
상태 이름만 보고도 시스템의 현재 상황을 이해할 수 있어야 한다.
이벤트를 구체적으로 작성한다
"버튼 입력"보다
"Start 버튼 입력"
처럼 명확하게 작성하는 것이 좋다.
불필요한 상태를 만들지 않는다
너무 많은 상태를 정의하면 모델이 복잡해지고 관리가 어려워질 수 있다.
실제 제어 로직에 필요한 상태를 중심으로 구성하는 것이 효율적이다.
오류 상태도 함께 고려한다
정상 운전뿐 아니라 오류와 복구 과정도 함께 모델링하면 시스템의 신뢰성을 높이는 데 도움이 된다.
MBSE에서 State Machine Diagram의 역할
MBSE에서는 State Machine Diagram도 다른 모델과 연결된다.
예를 들어
- 요구사항
- BDD
- IBD
- Activity Diagram
- 시험 시나리오
등과 함께 관리하면 상태 변경이 전체 시스템에 어떤 영향을 미치는지 쉽게 추적할 수 있다.
특히 안전성이 중요한 프로젝트에서는 상태 전이와 시험 항목을 연결하여 검증하는 경우가 많다.
마무리
State Machine Diagram은 시스템이 어떤 상태를 가지며, 어떤 조건에서 상태가 변경되는지를 표현하는 핵심 모델이다.
기능의 순서를 설명하는 Activity Diagram과는 달리 상태 중심으로 시스템을 이해할 수 있으며, 제어 로직과 예외 상황을 설계하는 데 큰 도움이 된다.
MBSE에서는 여러 다이어그램이 서로 경쟁하는 것이 아니라 서로를 보완한다. 구조는 BDD와 IBD로, 기능은 Activity Diagram으로, 상태 변화는 State Machine Diagram으로 표현하면 시스템을 다양한 관점에서 체계적으로 관리할 수 있다.
다음 글에서는 Sequence Diagram을 활용해 시스템 구성요소 간 메시지와 시간 흐름을 모델링하는 방법을 살펴본다.
FAQ
Q1. State Machine Diagram과 Activity Diagram 중 어느 것이 더 중요한가요?
두 다이어그램은 목적이 다르다. 작업 절차를 표현할 때는 Activity Diagram이 적합하고, 상태 변화와 제어 로직을 표현할 때는 State Machine Diagram이 더 효과적이다.
Q2. 모든 시스템에 State Machine Diagram이 필요한가요?
단순한 시스템에서는 필요하지 않을 수도 있다. 하지만 여러 상태를 반복적으로 변경하거나 이벤트에 따라 동작이 달라지는 시스템에서는 매우 유용하다.
Q3. 오류 상태도 반드시 모델링해야 하나요?
가능하면 포함하는 것이 좋다. 오류 발생과 복구 절차를 함께 모델링하면 시스템의 안정성을 검토하고 시험 시나리오를 작성하는 데 도움이 된다.