1291.7 상태 머신의 모듈성 부족 문제

1. 모듈성의 정의와 소프트웨어 공학적 의의

모듈성(modularity)은 소프트웨어 공학에서 시스템을 독립적으로 설계, 구현, 테스트, 유지보수할 수 있는 구성 단위(module)로 분해하는 설계 원칙이다. 높은 모듈성을 가진 시스템에서 각 모듈은 명확하게 정의된 인터페이스를 통하여 다른 모듈과 상호작용하며, 모듈 내부의 구현 세부사항은 외부에 은폐(encapsulation)된다. 모듈 간의 결합도(coupling)가 낮고 모듈 내부의 응집도(cohesion)가 높을수록 시스템의 유지보수성, 확장성, 재사용성이 향상된다 (Parnas, 1972).

로봇 행동 제어 아키텍처에서 모듈성은 복잡한 임무 로직을 관리 가능한 단위로 분해하여 팀 단위 개발, 점진적 기능 추가, 독립적 테스트를 가능하게 하는 핵심 속성이다.

2. 유한 상태 머신의 구조적 결합

유한 상태 머신(FSM)에서 모듈성이 근본적으로 부족한 원인은 상태와 전이 간의 구조적 결합(structural coupling)에 있다. FSM에서 각 상태 q_i는 단독으로 존재하는 것이 아니라, q_i로 진입하는 전이(incoming transition)와 q_i로부터 발생하는 전이(outgoing transition)에 의하여 전체 시스템과 밀접하게 연결되어 있다.

상태 q_i의 의존성 집합(dependency set)을 다음과 같이 정의할 수 있다:

\text{Dep}(q_i) = \{q_j \in Q \mid \exists \sigma \in \Sigma, \delta(q_j, \sigma) = q_i\} \cup \{q_k \in Q \mid \exists \sigma \in \Sigma, \delta(q_i, \sigma) = q_k\}

이는 q_i로 전이를 보내거나 q_i로부터 전이를 받는 모든 상태의 집합이다. FSM에서 하나의 상태를 독립적 모듈로 추출하려면, 이 의존성 집합에 속하는 모든 상태와의 전이 관계를 함께 추출하거나 재정의해야 한다.

3. 행동 단위의 비분리성

FSM에서 “장애물 회피“라는 행동을 모듈로 추출하는 시나리오를 고려한다. 이 행동이 FSM 내에서 다음과 같은 3개의 상태로 구현되어 있다고 가정한다:

  • q_{\text{detect}}: 장애물 감지
  • q_{\text{plan}}: 회피 경로 계획
  • q_{\text{execute}}: 회피 기동 실행

이 3개의 상태가 모듈로서 독립성을 가지려면, 이 상태들 간의 내부 전이(internal transition)만으로 행동이 완결되어야 한다. 그러나 실제 FSM에서는 다음과 같은 외부 의존성이 존재한다:

  1. 진입 전이: 다른 상태(예: “이동 중”, “순찰 중”)에서 q_{\text{detect}}로의 전이가 정의되어 있으며, 이 전이들의 조건은 원래 FSM의 맥락에 의존한다.
  2. 퇴출 전이: q_{\text{execute}}에서 회피 완료 후 복귀하는 상태(예: “이동 재개”, “순찰 재개”)로의 전이가 원래 FSM의 특정 상태를 참조한다.
  3. 교차 전이: 회피 도중 배터리 부족, 통신 단절 등의 이벤트에 의하여 회피 행동 외부의 상태로 직접 전이하는 규칙이 존재할 수 있다.

이러한 외부 의존성으로 인하여 “장애물 회피” 행동을 FSM에서 독립적 모듈로 추출하여 다른 FSM에 이식하는 것이 불가능하거나, 이식 시 모든 진입/퇴출/교차 전이를 새로운 맥락에 맞추어 재정의해야 한다.

4. 인터페이스의 부재

모듈화된 소프트웨어 컴포넌트는 명확하게 정의된 인터페이스(interface)를 통하여 외부와 상호작용한다. FSM에서 상태 그룹을 모듈로 취급할 때, 이 모듈의 인터페이스에 해당하는 것은 모듈로의 진입 전이와 모듈로부터의 퇴출 전이이다. 그러나 FSM은 이러한 진입/퇴출점을 명시적 인터페이스로 정의하는 메커니즘을 제공하지 않는다.

계층적 상태 머신(HSM)에서 복합 상태(composite state)가 이 문제를 부분적으로 해결한다. 복합 상태는 내부 상태를 캡슐화하고, 복합 상태의 경계를 통과하는 전이를 진입/퇴출 인터페이스로 기능하게 한다. 그러나 복합 상태 간의 깊은 전이(deep transition)—복합 상태의 내부 상태를 직접 참조하는 전이—가 허용되면 캡슐화가 파괴되며, 이는 HSM에서도 모듈성이 완전하게 보장되지 않는 원인이 된다.

5. 모듈 간 결합도 분석

FSM의 모듈 간 결합도(inter-module coupling)를 정량적으로 분석할 수 있다. FSM 전체를 k개의 모듈 M_1, M_2, \ldots, M_k로 분할하였을 때, 모듈 간 전이(cross-module transition)의 수 T_{\text{cross}}와 모듈 내 전이(intra-module transition)의 수 T_{\text{intra}}의 비율

\rho = \frac{T_{\text{cross}}}{T_{\text{cross}} + T_{\text{intra}}}

는 모듈 간 결합도의 척도가 된다. 이상적인 모듈화에서 \rho는 0에 근접해야 하나, 실제 FSM에서는 긴급 전이, 공유 상태, 공통 이벤트 등에 의하여 \rho가 상당히 높은 값을 가지는 경향이 있다.

6. 행동 트리의 구조적 모듈성

행동 트리(Behavior Tree)에서 모듈성은 구조적으로 보장된다. 각 노드와 서브트리는 부모 노드와의 관계에서만 결합되며, 형제 노드(sibling node)나 원거리 노드와의 직접적 결합이 존재하지 않는다. 서브트리를 다른 위치로 이동하거나 다른 행동 트리로 이식할 때, 서브트리 내부의 구조는 변경 없이 그대로 유지되며, 부모 노드와의 연결만 재설정하면 된다.

이는 FSM에서 상태 그룹의 이식 시 모든 진입/퇴출/교차 전이를 재정의해야 하는 것과 근본적으로 상이한 구조적 특성이며, 행동 트리의 노드 단위 모듈성이 FSM 대비 우수한 핵심적 근거이다.

7. 참고 문헌

  • Colledanchise, M., & Ögren, P. (2018). Behavior Trees in Robotics and AI: An Introduction. CRC Press.
  • Harel, D. (1987). “Statecharts: A Visual Formalism for Complex Systems.” Science of Computer Programming, 8(3), 231–274.
  • Parnas, D. L. (1972). “On the Criteria To Be Used in Decomposing Systems into Modules.” Communications of the ACM, 15(12), 1053–1058.

v0.1.0