Nassi-Shneiderman 다이어그램 — GOTO 없는 플로차트
Nassi-Shneiderman 다이어그램 — GOTO 없는 플로차트
1. 요약
Nassi-Shneiderman 다이어그램 (NSD, structogram) 은 1972년 Isaac Nassi와 Ben Shneiderman이 Stony Brook University 대학원생 시절 에 만든 구조화 프로그래밍 전용 플로차트 다. GOTO 를 표현할 방법이 없도록 설계됐다 — 즉 구조화 라는 규율을 도식 차원에서 강제한다. 일부 국가 (독일·체코·헝가리) 에서는 교육 표준 으로 채택됐다.
2. 배경 (이전 도구의 한계)
1968년 Dijkstra의 Go To Statement Considered Harmful 발표 이후 구조화 프로그래밍이 학계 표준이 됐다. 하지만 ANSI 플로차트는 화살표가 어디로든 갈 수 있어 GOTO를 그대로 표현했다. "플로차트로 그렸는데 GOTO 가 있으면 안 된다" 는 모순. NSD는 그림에서 GOTO를 그릴 수 없게 만들었다.
Isaac Nassi는 ACM 뉴욕 학회에서 Michael Jackson의 구조화 프로그래밍 강연을 듣고 영감을 받았고, 친구 Ben Shneiderman과 함께 상자 안에 상자가 들어가는 표기법을 1972년에 발표했다.
3. 핵심 개념·표기법
NSD의 핵심은 중첩 박스 다:
| 구조 | 표기 |
|---|---|
| 순차 (Sequence) | 상자가 위에서 아래로 쌓임 |
| 분기 (If-Then-Else) | 삼각형 분할 + 좌우 박스 |
| 반복 (While, For) | 외곽 박스가 내부 본문을 감쌈 |
| 다중 분기 (Case) | 상자를 수직 분할 |
전제: GOTO를 그릴 수 있는 화살표가 없다. 박스를 빠져나갈 수 없다 → 구조화 보장.
4. 언어·OS 매핑 (★ 강의 핵심)
| 시대 | 언어 | NSD 활용 |
|---|---|---|
| 1970s | Pascal·Modula-2 | ★ 핵심 설계 도구 (구조화 프로그래밍 짝) |
| 1980s | Ada | NSD 가 표준 설계 표기 (군용·항공) |
| 1990s | C·C++ | 교육 도구로 잔존 |
| 현재 | 다양 | 독일·체코·헝가리 컴퓨터공학 국가 표준 |
NSD는 Pascal·Modula-2 와 짝이었고, 그 시대의 객체지향 OOP 흐름을 만나면서 자연스럽게 시퀀스 다이어그램·액티비티 다이어그램 으로 진화했다.
5. 현대까지의 영향
- UML Activity Diagram (1997) — NSD의 객체지향 후예
- 독일 DIN 66261 — NSD 국가 표준
- structorizer (오픈소스 도구) — NSD 편집기
- 알고리즘 교육 — 일부 국가에서 여전히 1학년 필수
NSD는 구조화 프로그래밍의 시각적 강제 도구 로서 원래 의도가 너무 강해서 자유도를 잃은 사례이기도 하다. 하지만 그림으로 규율을 강제 한다는 발상은 1970년대 가장 큰 발명 중 하나였다.
6. 주요 인물·사건
| 연도 | 사건 |
|---|---|
| 1968 | Dijkstra, Go To Statement Considered Harmful |
| 1972 | Nassi-Shneiderman, Stony Brook 대학원에서 NSD 고안 |
| 1973 | Flowchart techniques for structured programming, SIGPLAN Notices XII |
| 1985 | 독일 DIN 66261 표준화 |
| 1997 | UML 통합 — Activity Diagram이 NSD 사상 계승 |
| 현재 | 일부 국가 교육 표준으로 잔존 |
7. 강의 활용
"플로차트는 자유로워서 GOTO 도 그릴 수 있다 → 그래서 NSD는 그림 차원에서 막아버렸다" 의 사례로 기록한다. 구조화는 코드만의 문제가 아니라 설계 도구 자체에서 강제되어야 한다 — 이 교훈은 Vibe Coding 시대 Plan-First 와 동형이다. 설계 도구가 규율을 강제 하는 패턴.
출처
- Nassi-Shneiderman diagram — Wikipedia
- A short history of structured flowcharts — Ben Shneiderman
- Yoder & Schrag, Nassi-Shneiderman Charts as an Alternative to Flowcharts
그룹 시리즈
→ synthesis/group-se_g1 (시대 그룹 종합 카드)