의사결정표 (Decision Table) — 복잡한 조건 로직의 표준 설계
의사결정표 (Decision Table) — 복잡한 조건 로직의 표준 설계
1. 요약
의사결정표는 여러 조건의 조합 과 각 조합에 대응하는 행동 을 표 형태로 표현하는 설계 도구다. 1950년대에 등장해 COBOL 시대 비즈니스 로직 표현의 표준이 됐고, 2014년 OMG의 DMN 1.0 (Decision Model and Notation) 으로 현대화됐다. if-else 중첩이 5개 이상이면 의사결정표를 써라 는 격언이 살아있다.
2. 배경 (이전 도구의 한계)
플로차트는 순차 흐름 표현에는 강하지만 N개 조건의 모든 조합 을 표현할 때 화살표가 폭발한다. 4개 조건이면 분기 16개, 5개면 32개 — 종이에 안 들어간다. 1950년대 보험·세무·은행의 비즈니스 로직은 수십 개 조건의 조합 이 일상이었고, 플로차트로는 감당 불가능했다.
3. 핵심 개념·표기법
전통적 의사결정표는 4사분면으로 구성된다:
| Rule 1 | Rule 2 | Rule 3 | ... | |
|---|---|---|---|---|
| Condition 1 | Y | N | Y | ... |
| Condition 2 | Y | Y | N | ... |
| Action 1 | X | - | - | ... |
| Action 2 | - | X | X | ... |
- 상단: 조건 (Condition Stub + Condition Entry)
- 하단: 행동 (Action Stub + Action Entry)
- 각 열 = 1개의 규칙 (Rule)
- Limited Entry (Y/N) vs Extended Entry (값 직접 기입)
4. 언어·OS 매핑 (★ 강의 핵심)
| 시대 | 언어·OS | 의사결정표 활용 |
|---|---|---|
| 1950s~60s | Assembly, FORTRAN | 보조 설계 |
| 1960s~80s | COBOL + IBM OS/360 | ★ 핵심 설계 도구 (Filetab 등 전용 언어) |
| 1990s | C·C++·Java | 비즈니스 룰 엔진 (Drools 1999) |
| 2010s~ | 모든 언어 + Cloud | DMN 1.0 (OMG 2014) 표준 |
특히 COBOL · CICS · DB2 의 비즈니스 시스템에서는 의사결정표가 코드보다 먼저 작성되는 1차 설계 산출물이었다. 1961~1962년에는 의사결정표를 직접 실행 가능한 코드로 변환 하는 전처리기 (Filetab 등) 가 만들어졌다.
5. 현대까지의 영향
- Drools (1999) — Java 비즈니스 룰 엔진, 의사결정표 입력 지원
- DMN 1.0 (2014, OMG) — Decision Model and Notation 국제 표준
- 테스트 케이스 설계 — Decision Table Testing (ISTQB 표준 기법)
- Camunda · KIE — 클라우드 시대 의사결정 엔진
- TypeScript 패턴 매칭 (ts-pattern) — 함수형 진화
CODASYL System Committee가 1973년 Decision Table Task Group을 만들고 1982년 표준 보고서를 발행한 역사적 계보 가 DMN 1.0 으로 이어진다.
6. 주요 인물·사건
| 연도 | 사건 |
|---|---|
| 1950s 후반 | 의사결정표 등장 (시스템 분석 도구) |
| 1961~62 | Filetab 등 의사결정표 → COBOL 변환 전처리기 등장 |
| 1965~80 | 변환 알고리즘 연구 활발 |
| 1973 | CODASYL Decision Table Task Group 출범 |
| 1982 | CODASYL 표준 보고서 발행 |
| 1999 | Drools 등 룰 엔진 등장 |
| 2014 | OMG DMN 1.0 표준 발표 |
7. 강의 활용
"if-else 중첩으로 망가진 코드" 사례를 보여주고 "이 코드는 1960년대 COBOL 프로그래머들이 의사결정표로 먼저 그렸을 것" 으로 기록한다. 복잡한 조건 로직 = 표로 설계 는 70년 동안 변하지 않은 패턴 — Vibe Coding 시대에도 LLM에게 의사결정표 형태로 명세를 주면 코드 품질이 올라간다.
출처
- Decision table — Wikipedia
- The History of Modeling Decisions using Tables — Business Rules Community
- How to Use Decision Tables for Requirements Analysis — Methods & Tools
- Decision Table Testing — ScaleEngineer Glossary
그룹 시리즈
→ synthesis/group-se_g1 (시대 그룹 종합 카드)