1291.14 대규모 상태 머신의 가독성 저하
1. 가독성의 공학적 의의
소프트웨어 시스템에서 가독성(readability)은 설계자, 개발자, 검토자가 시스템의 구조와 동작을 정확하게 이해하는 데 소요되는 인지적 비용(cognitive cost)의 역수로 측정된다. 가독성이 높은 시스템은 코드 리뷰, 결함 탐지, 요구사항 검증, 팀 간 지식 전달에서 효율적이며, 장기적 유지보수 비용의 절감에 직결된다.
유한 상태 머신(FSM)의 가독성은 시스템의 상태 수와 전이 수에 의하여 결정적으로 영향을 받으며, 대규모 FSM에서는 가독성이 급격히 저하되어 설계의 실용적 가치가 감소한다.
2. 상태 전이 다이어그램의 시각적 한계
FSM의 주요 표현 형식인 상태 전이 다이어그램(State Transition Diagram, STD)은 상태를 노드로, 전이를 방향성 간선으로 표현한다. STD의 시각적 가독성은 노드 수와 간선 수에 의하여 제한된다.
2.1 간선 교차 문제
n개의 노드와 t개의 간선을 가진 유향 그래프(directed graph)에서 간선 교차(edge crossing)의 수는 그래프의 평면성(planarity)에 의존한다. 밀접하게 연결된 FSM에서 t \gg n인 경우, 간선 교차가 다수 발생하여 전이 경로의 시각적 추적이 불가능해진다.
그래프 이론에서 n개의 노드를 가진 완전 그래프(complete graph) K_n은 n \geq 5일 때 비평면(non-planar)이며, 간선 교차 수(crossing number)는 O(n^4)에 비례한다. FSM은 일반적으로 완전 그래프보다 간선 수가 적으나, 긴급 전이와 공통 이벤트가 다수 존재하면 간선 밀도가 급증한다.
2.2 인지적 한계
인지 심리학의 연구에 따르면, 인간의 작업 기억(working memory)은 7±2개의 정보 항목을 동시에 처리할 수 있다 (Miller, 1956). 이 제한을 FSM의 가독성에 적용하면, 설계자가 동시에 파악할 수 있는 상태와 전이의 수는 약 5–9개로 제한된다. 상태 수가 15–20개를 초과하면 단일 STD에서 전체 행동 로직을 파악하는 것이 인지적으로 어려워지며, 30개를 초과하면 사실상 불가능해진다.
2.3 시각적 밀도의 정량적 임계값
실무적 경험에 기반하여 STD의 가독성 임계값을 다음과 같이 추정할 수 있다:
| 상태 수 | 전이 수 (추정) | 가독성 수준 |
|---|---|---|
| 5–10 | 10–30 | 우수: 전체 구조를 한 눈에 파악 가능 |
| 10–20 | 30–100 | 보통: 시간을 투자하면 이해 가능 |
| 20–50 | 100–500 | 불량: 부분적으로만 이해 가능 |
| 50 이상 | 500 이상 | 판독 불능: 사실상 해석 불가 |
3. 텍스트 기반 표현의 가독성 저하
STD의 한계를 극복하기 위하여 FSM을 코드(switch-case, 상태 테이블)나 스크립팅 언어로 텍스트 기반 표현하는 경우에도 가독성 문제는 잔존한다.
3.1 switch-case 구현의 복잡도
C/C++에서 FSM을 switch-case 구문으로 구현할 때, 상태 수 n에 비례하여 case 절의 수가 증가하며, 각 case 내부에서 이벤트별 전이를 분기하는 중첩 switch-case가 추가된다. 총 코드 라인 수는 O(n \times |\Sigma|)에 비례하며, 100개의 상태와 10개의 이벤트를 가진 FSM은 수천 줄의 코드를 생성한다.
3.2 상태 테이블의 크기
상태 테이블(state table) 형식에서 행은 상태, 열은 이벤트에 대응하며, 각 셀에 다음 상태와 행동이 기록된다. n \times |\Sigma| 크기의 테이블은 n = 100, |\Sigma| = 15일 때 1,500개의 셀을 가지며, 이 테이블의 전체적 파악은 비실용적이다.
4. 계층적 분해에 의한 부분적 완화와 잔존 문제
계층적 상태 머신(HSM)은 복합 상태를 통한 추상화 수준 도입으로 개별 계층 수준에서의 가독성을 향상시킨다. 그러나 전체 시스템의 동작을 이해하려면 모든 계층을 관통하는 전이 경로를 추적해야 하며, 계층 깊이가 증가할수록 이러한 추적의 인지적 비용이 증가한다. 특히 계층 횡단 전이와 이력 상태의 복원이 관련된 경우, 복수의 계층 수준을 동시에 참조해야 하므로 가독성의 향상 효과가 상쇄될 수 있다.
5. 문서화와 지식 전달의 어려움
대규모 FSM의 가독성 저하는 문서화와 팀 간 지식 전달에도 심각한 영향을 미친다:
- 신규 팀원의 학습 비용: 대규모 FSM을 새로운 팀원이 이해하기 위해서는 상당한 시간이 필요하며, 이 과정에서 오해(misunderstanding)가 발생할 위험이 높다.
- 설계 의도의 불투명성: FSM의 전이 규칙만으로는 설계자의 원래 의도—왜 특정 상태에서 특정 전이가 정의되었는가—를 파악하기 어렵다.
- 코드 리뷰의 비효율성: 대규모 FSM의 수정에 대한 코드 리뷰는 수정된 전이뿐만 아니라 해당 전이와 관련된 모든 경로를 검토해야 하므로, 리뷰 비용이 수정 크기에 비례하지 않고 초선형적으로 증가한다.
6. 행동 트리의 가독성 장점
행동 트리는 트리 구조의 본질적 특성에 의하여 높은 가독성을 제공한다. 트리 구조에서 각 노드는 정확히 하나의 부모만을 가지므로, 실행 흐름이 루트에서 리프까지 단일 경로를 따른다. 이는 FSM에서의 임의적 전이 경로와 대비되는 구조적 단순성이다.
행동 트리의 가독성은 다음과 같은 요인에 의하여 강화된다:
- 상향식/하향식 읽기: 트리를 상향식 또는 하향식으로 읽으면서 행동 로직을 자연스럽게 파악할 수 있다.
- 시각적 도구의 지원: Groot 등의 시각적 편집 도구에서 트리 구조는 직관적으로 표현되며, FSM의 STD에서 발생하는 간선 교차 문제가 원천적으로 발생하지 않는다.
- 국소적 이해 가능성: 특정 서브트리의 동작을 이해하기 위하여 전체 트리를 파악할 필요가 없으며, 해당 서브트리와 그 부모만 참조하면 충분하다.
7. 참고 문헌
- Colledanchise, M., & Ögren, P. (2018). Behavior Trees in Robotics and AI: An Introduction. CRC Press.
- Miller, G. A. (1956). “The Magical Number Seven, Plus or Minus Two: Some Limits on Our Capacity for Processing Information.” Psychological Review, 63(2), 81–97.
v0.1.0