여러분은 복잡한 시스템을 어떻게 이해하시나요? 수많은 데이터가 이곳저곳으로 움직이는 모습을 상상해 보세요. 마치 복잡한 교통 시스템처럼 말이죠! 자료 흐름도(DFD)는 이러한 데이터의 이동을 시각적으로 표현해주는 도구입니다. 오늘은 DFD의 각 요소별 표기법에 대해 알아보겠습니다.
등장 배경
과거에는 시스템 분석이나 설계 시 텍스트로만 설명하거나 복잡한 도식을 사용했습니다. 하지만 이런 방식은 시스템의 전체적인 흐름을 직관적으로 파악하기 어려웠습니다. 1970년대 Larry Constantine과 Ed Yourdon이 구조적 분석 및 설계를 위해 DFD를 개발했고, 이후 Tom DeMarco가 이를 발전시켰습니다. DFD는 시스템 내부에서 데이터가 어떻게 처리되고 이동하는지 시각적으로 표현하는 도구로, 복잡한 시스템을 이해하기 쉽게 만드는 데 큰 도움을 줍니다.
DFD가 해결하는 문제:
- 복잡성 관리: 복잡한 시스템을 계층적으로 간단하게 표현
- 의사소통 개선: 기술적 배경이 다른 이해관계자들 간의 소통 촉진
- 시스템 경계 명확화: 시스템의 범위와 외부 환경과의 상호작용 명확히 정의
핵심 원리: DFD 요소별 표기법
DFD에는 네 가지 기본 요소가 있습니다: 프로세스(Process), 데이터 저장소(Data Store), 외부 개체(External Entity), 데이터 흐름(Data Flow)입니다. 각 요소는 고유한 기호로 표현되며, Yourdon and Coad, Gane and Sarson 등 여러 표기법이 존재합니다.
1. 프로세스(Process) 🔄
프로세스는 데이터 변환이 일어나는 곳을 나타냅니다. 입력 데이터를 받아 처리하고 출력 데이터를 생성합니다.
표기법:
- Yourdon & DeMarco: 동그라미 또는 둥근 모서리의 사각형
- Gane & Sarson: 둥근 모서리를 가진 사각형
내부 표기:
- 프로세스 번호 (상단)
- 프로세스 이름 (중앙)
- 실행 위치/담당자 (선택적, 하단)
예시:
┌───────────┐
│ 1.0 │
│ 주문 검증 │
│ 주문팀 │
└───────────┘
2. 데이터 저장소(Data Store) 💾
데이터 저장소는 시스템 내에서 데이터가 저장되는 위치를 나타냅니다. 데이터베이스, 파일, 임시 저장소 등이 이에 해당합니다.
표기법:
- Yourdon & DeMarco: 평행선 또는 열린 직사각형
- Gane & Sarson: 한쪽이 닫힌 직사각형
내부 표기:
- 식별자 (D1, D2 등)
- 저장소 이름
예시:
┌─────────────┐
│D1 고객 데이터│
└─────────────┘
3. 외부 개체(External Entity) 🏢
외부 개체는 시스템 외부에 있으면서 시스템과 상호작용하는 사람, 조직, 다른 시스템 등을 의미합니다. 데이터의 출처나 목적지가 됩니다.
표기법:
- Yourdon & DeMarco: 사각형
- Gane & Sarson: 얇은 그림자가 있는 사각형
내부 표기:
- 개체 이름
예시:
┌─────────┐
│ 고객 │
└─────────┘
4. 데이터 흐름(Data Flow) ➡️
데이터 흐름은 한 요소에서 다른 요소로 이동하는 데이터를 나타냅니다. 화살표로 표시되며 데이터의 방향을 보여줍니다.
표기법:
- 모든 표기법: 화살표 (→)
내부 표기:
- 데이터 이름/설명
예시:
주문 정보
───────────→
DFD 레벨 구분 📊
DFD는 여러 레벨로 구성될 수 있습니다. 각 레벨은 시스템의 상세 정도를 나타냅니다.
- 컨텍스트 다이어그램(Level 0): 시스템 전체를 하나의 프로세스로 표현하고 외부 개체와의 상호작용만 보여줌
- Level 1 DFD: 주요 프로세스, 데이터 저장소, 데이터 흐름을 보여줌
- Level 2+ DFD: 각 프로세스를 더 세부적으로 분해하여 표현
DFD 레벨 표기 예시:
┌─────────┐
│ 고객 │
└────┬────┘
│ 주문 제출
▼
┌───────────────────────────┐
│ │
│ 주문 처리 시스템 │
│ │
└───────────────────────────┘
│ 배송 정보
▼
┌─────────┐
│ 배송부 │
└─────────┘
[Level 0: 컨텍스트 다이어그램]
DFD 작성 규칙 표
규칙 설명 예시
이름 부여 | 모든 요소에 고유한 명칭 부여 | '고객 정보 검증', '주문 데이터' |
프로세스 번호 | 계층적 번호 체계 사용 | 1.0, 1.1, 1.2, 2.0 등 |
균형 유지 | 상위 DFD와 하위 DFD 간 일관성 유지 | 같은 입출력 데이터 유지 |
블랙홀 방지 | 데이터가 사라지는 곳 없어야 함 | 모든 입력은 출력이나 저장으로 연결 |
기적 방지 | 입력 없이 출력만 있는 프로세스 금지 | 모든 출력에 대응하는 입력 필요 |
주의사항 및 팁 💡
⚠️ 이것만은 주의하세요!
- 지나친 복잡성
- 한 다이어그램에 너무 많은 요소 포함 시 이해하기 어려움
- 해결 방법: 7±2 규칙 적용 (한 다이어그램에 5-9개 프로세스만 포함)
- 일관성 부족
- 상위 레벨과 하위 레벨 간 불일치
- 해결 방법: 분해 후 데이터 흐름 검증
- 불명확한 레이블
- "데이터", "정보" 같은 모호한 표현
- 해결 방법: 구체적인 데이터 내용 명시 ("고객 주문 번호", "결제 정보")
💡 꿀팁
- 컨텍스트 다이어그램부터 시작해 점진적으로 상세화하세요
- 색상 코드를 활용해 다른 유형의 요소를 구분하면 가독성이 높아집니다
- CASE(Computer-Aided Software Engineering) 도구를 활용하면 DFD 작성과 유지보수가 쉬워집니다
- 번호 체계는 계층을 나타내도록 설계하세요 (예: 1.1, 1.2, 1.2.1 등)
DFD 실제 적용 예시
┌───────┐ 주문 정보 ┌───────────┐
│ 고객 │ ───────────────────────→ │ 1.0 │
└───────┘ │ 주문 접수 │
↑ └─────┬─────┘
│ │
│ │ 유효한 주문
│ ▼
주문 상태 알림 ┌───────────┐
│ │ 2.0 │
│ │ 재고 확인 │
│ └─────┬─────┘
│ │
┌───────────────┐ │ 재고 정보
│ 4.0 │ 결제 확인 ▼
│ 주문 상태 업데이트│ ←───────────── ┌───────────┐
└───────┬───────┘ │ 3.0 │
│ │ 결제 처리 │
│ └─────┬─────┘
│ │
│ │ 결제 정보
▼ ▼
┌────────────┐ ┌────────────┐
│D1 주문 DB │ ◀───────────────→ │D2 결제 DB │
└────────────┘ └────────────┘
마치며
지금까지 자료 흐름도(DFD)의 각 요소별 표기법에 대해 알아보았습니다. 처음에는 복잡하게 느껴질 수 있지만, 기본 요소들과 표기법을 익히면 시스템의 데이터 흐름을 명확하게 표현할 수 있습니다. DFD는 시스템 분석과 설계에서 핵심적인 도구이며, 기술적 배경이 다른 팀원들 간의 의사소통을 원활하게 해주는 강력한 도구입니다. 여러분의 시스템 분석 작업에 이 지식이 도움이 되길 바랍니다! 🙋♀️
참고 자료 🔖
- IBM - Data Flow Diagram
- Visual Paradigm - What is Data Flow Diagram
- Lucidchart - Data Flow Diagram Guide
#자료흐름도 #DFD #시스템분석 #데이터모델링 #소프트웨어설계