MFR 도메인
Module / Feature / Requirement — 요구사항을 구조화하는 3단계 계층
MFR은 HanSpec의 핵심 데이터 모델입니다. 자연어로 작성된 요구사항을 3단계 계층으로 분류하여, AI 에이전트와 개발자 모두가 이해할 수 있는 구조화된 스펙으로 변환합니다.
┌─────────────────────────────────────────────┐
│ Module (모듈) │
│ ┌─────────────────────────────────────────┐ │
│ │ Feature (기능) │ │
│ │ ┌─────────────────────────────────────┐ │ │
│ │ │ Requirement (요구사항) │ │ │
│ │ │ • entity │ │ │
│ │ │ • happy_path │ │ │
│ │ │ • edge_case │ │ │
│ │ │ • ux │ │ │
│ │ │ • data │ │ │
│ │ └─────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────┘ │
└─────────────────────────────────────────────┘
Module (모듈)
시스템의 최상위 도메인 영역입니다. 비즈니스 관점에서 독립적으로 관리될 수 있는 단위를 나타냅니다.
| 속성 | 설명 | 예시 |
|---|---|---|
| 이름 | 도메인 영역의 한글 명칭 | 회원, 주문, 상품 |
| 설명 | 모듈이 담당하는 범위 | "회원 가입, 로그인, 프로필 관리" |
공통 정책 모듈: 인증, 권한, 로깅, 에러 처리 등 여러 모듈에 걸친 수평적 관심사는 자동으로 "공통 정책" 모듈로 분리됩니다.
Feature (기능)
모듈 내의 사용자 대면 기능 단위입니다. 하나의 Feature는 사용자가 인식할 수 있는 하나의 기능 묶음을 의미합니다.
| 속성 | 설명 |
|---|---|
| 이름 | 기능의 한글 명칭 (예: 로그인, 회원가입) |
| 상태 | confirmed / undecided / draft |
| 소속 모듈 | 상위 Module 참조 |
상태 시스템
confirmed— 명확하게 정의됨, 구현 가능 상태undecided— 방향은 정해졌으나 세부사항 미확정draft— 아이디어 수준, 구현 미승인
Requirement (요구사항)
Feature 내의 구체적인 기능 명세입니다. 각 Requirement는 "사용자가 무엇을 할 수 있는가"를 한 문장으로 정의합니다.
요구사항 유형
| 유형 | 설명 | 예시 |
|---|---|---|
entity | 데이터 모델 정의 | "회원은 이메일, 비밀번호, 이름을 가진다" |
happy_path | 정상 시나리오 | "이메일과 비밀번호로 로그인할 수 있다" |
edge_case | 예외 상황 | "이메일이 틀리면 에러 메시지가 표시된다" |
ux | UI/UX 관련 | "비밀번호 입력 시 눈 아이콘으로 표시/숨김 전환" |
data | 데이터 흐름 | "로그인 시 세션이 유지된다" |
예시: 회원 모듈
Module: 회원
├── Feature: 회원가입
│ ├── [entity] 회원은 이메일, 비밀번호, 이름, 가입일을 가진다
│ ├── [happy_path] 이메일과 비밀번호로 회원가입할 수 있다
│ ├── [edge_case] 이미 가입된 이메일로는 가입할 수 없다
│ └── [ux] 비밀번호 강도 표시기가 실시간으로 표시된다
│
└── Feature: 로그인
├── [happy_path] 이메일과 비밀번호로 로그인할 수 있다
├── [edge_case] 비밀번호가 틀리면 에러 메시지가 표시된다
└── [data] 로그인 성공 시 세션이 생성된다