1291.8 상태 머신 구성 요소의 재사용 어려움

1291.8 상태 머신 구성 요소의 재사용 어려움

1. 소프트웨어 재사용의 원칙

소프트웨어 재사용(software reuse)은 이미 검증된 구성 요소를 새로운 맥락에서 수정 없이 또는 최소한의 수정으로 활용하는 공학적 원칙이다. 재사용 가능한 컴포넌트는 다음 속성을 만족해야 한다 (Krueger, 1992):

  1. 자기 완결성(self-containment): 컴포넌트가 독립적으로 동작 가능해야 한다.
  2. 맥락 독립성(context independence): 컴포넌트의 동작이 특정 시스템 맥락에 의존하지 않아야 한다.
  3. 명확한 인터페이스: 컴포넌트의 입출력이 명시적으로 정의되어야 한다.
  4. 매개변수화(parameterization): 컴포넌트의 행동이 외부 매개변수에 의하여 구성 가능해야 한다.

유한 상태 머신(FSM)의 구성 요소—상태, 전이, 상태 그룹—는 이러한 재사용 조건을 구조적으로 충족하기 어렵다.

2. 상태의 맥락 의존성

FSM에서 개별 상태 q_i는 그 자체로는 의미 있는 재사용 단위가 아니다. 상태의 의미는 해당 상태에서 수행되는 행동(action)뿐만 아니라, q_i로 진입하는 조건(guard condition), q_i에서 다른 상태로 전이하는 규칙, 그리고 q_i의 진입/퇴출 행동(entry/exit action)에 의하여 결정된다. 이러한 전이 규칙은 FSM 전체의 상태 집합 Q와 입력 알파벳 \Sigma에 밀접하게 결합되어 있으므로, 하나의 상태를 다른 FSM으로 이식하면 원래의 전이 맥락이 상실된다.

예를 들어, 순찰 로봇의 FSM에서 “장애물 회피” 상태가 다음과 같은 전이 규칙을 가진다고 가정한다:

상태: 장애물_회피
  진입 조건: 순찰_중 + 장애물_감지 이벤트
  행동: 회피 기동 수행
  퇴출 전이 1: 회피 완료 → 순찰_중
  퇴출 전이 2: 배터리 부족 → 충전_복귀
  퇴출 전이 3: 비상 정지 → 정지

이 “장애물 회피” 상태를 배달 로봇의 FSM에 재사용하려면, 진입 조건의 원본 상태(“순찰_중”)를 배달 로봇의 해당 상태(“배달_이동_중”)로 교체하고, 퇴출 전이의 대상 상태(“순찰_중”, “충전_복귀”, “정지”)를 배달 로봇의 상태 집합에 맞추어 재정의해야 한다. 즉, 상태 자체의 행동 로직은 동일하더라도 전이 규칙의 전면적 재작성이 불가피하다.

3. 전이 규칙의 비이식성

FSM에서 전이 규칙 \delta(q_i, \sigma) = q_j는 원본 상태 q_i, 입력 \sigma, 대상 상태 q_j의 세 요소로 구성된다. 이 전이를 다른 FSM으로 이식하려면, q_iq_j가 대상 FSM에 동일한 의미로 존재해야 하며, \sigma의 해석이 대상 FSM에서 동일해야 한다. 이러한 조건이 충족되지 않으면 전이 규칙은 의미를 상실하며, 새로운 맥락에 맞추어 전면적으로 재정의되어야 한다.

이는 함수형 프로그래밍에서 함수가 입력과 출력에 의해서만 정의되어 맥락과 무관하게 재사용 가능한 것과 대비된다. FSM의 전이 규칙은 본질적으로 특정 상태 집합에 결합되어 있으므로, 함수형 추상화 수준의 재사용성을 달성할 수 없다.

4. 상태 그룹의 재사용 시도와 한계

복수의 관련 상태를 그룹으로 묶어 재사용을 시도하는 접근이 가능하다. 예를 들어, “장애물 회피” 행동을 구성하는 3개의 상태 {감지, 계획, 실행}과 이들 간의 내부 전이를 하나의 상태 그룹으로 추출한다. 그러나 이 상태 그룹이 재사용 가능한 모듈로 기능하려면, 그룹의 경계를 명시적으로 정의하고, 경계를 통과하는 전이를 인터페이스로 추상화해야 한다.

기본 FSM은 이러한 그룹 경계와 인터페이스 추상화 메커니즘을 제공하지 않는다. 계층적 상태 머신(HSM)의 복합 상태(composite state)가 이를 부분적으로 지원하나, 다음과 같은 한계가 있다:

  1. 깊은 전이(deep transition): 복합 상태의 내부 상태를 외부에서 직접 참조하는 전이가 허용되면, 캡슐화가 파괴되어 재사용성이 저하된다.
  2. 이력 상태 의존: 복합 상태가 이력 상태(history state)를 사용할 경우, 재진입 시의 동작이 이전 실행 이력에 의존하므로, 새로운 맥락에서 이력 정보가 의미 없을 수 있다.
  3. 전이 재매핑(transition remapping): 복합 상태를 다른 FSM에 이식할 때, 복합 상태의 경계를 통과하는 전이의 원본/대상 상태를 새로운 상태 집합에 매핑하는 체계적 메커니즘이 부재하다.

5. 재사용 비용의 정량적 분석

상태 그룹 G가 내부 상태 n_G개, 진입 전이 t_{\text{in}}개, 퇴출 전이 t_{\text{out}}개를 가질 때, G를 새로운 FSM M'에 이식하기 위한 재작업(rework) 비용은 다음과 같이 추정된다:

  • 진입 전이의 재정의: t_{\text{in}} 건의 전이 규칙 재작성
  • 퇴출 전이의 재정의: t_{\text{out}} 건의 전이 규칙 재작성
  • 교차 전이의 검토: G 내부에서 외부로의 비정규 전이(예: 긴급 전이) 탐지 및 처리
  • 이벤트/변수의 재매핑: G가 참조하는 이벤트와 변수가 M'에 존재하는지 확인 및 대응

재사용 비용이 상태 그룹을 처음부터 새로 설계하는 비용에 근접하거나 초과하는 경우, 재사용의 경제적 이점이 소멸한다. 실무적으로 중간 규모 이상의 FSM 상태 그룹에서 이러한 상황이 빈번하게 발생한다.

6. 행동 트리의 노드 단위 재사용

행동 트리(Behavior Tree)에서 노드와 서브트리는 맥락 독립적인 재사용 단위로 설계된다. 액션 노드는 실행 행동을 자기 완결적으로 정의하며, 부모 노드의 제어 흐름 규칙에 의하여 실행 여부가 결정된다. 노드 간의 데이터 교환은 블랙보드(Blackboard)의 키-값 인터페이스를 통하여 간접적으로 이루어지므로, 노드 자체가 특정 시스템의 상태 집합이나 전이 규칙에 결합되지 않는다.

서브트리를 다른 행동 트리에 이식할 때, 서브트리 내부의 노드 구조와 로직은 변경 없이 유지되며, 블랙보드 포트의 재매핑(port remapping)을 통하여 새로운 맥락에 적응한다. 이는 함수 호출의 매개변수 전달과 유사한 추상화 수준을 제공하며, FSM의 전이 규칙 재정의에 비하여 근본적으로 낮은 재사용 비용을 달성한다.

7. 참고 문헌

  • Colledanchise, M., & Ögren, P. (2018). Behavior Trees in Robotics and AI: An Introduction. CRC Press.
  • Krueger, C. W. (1992). “Software Reuse.” ACM Computing Surveys, 24(2), 131–183.
  • 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