주요 워크플로우
자연어 요구사항에서 구현 태스크까지의 전체 파이프라인
전체 파이프라인
HanSpec의 워크플로우는 크게 4단계로 이루어집니다. 각 단계는 이전 단계의 출력을 입력으로 받아 점진적으로 스펙을 구체화합니다.
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 자연어 입력 │ ──→ │ UIA │ ──→ │ PDA │ ──→ │ TMA │
│ │ │ MFR 구조화 │ │ 페이지 정의 │ │ 태스크 분해 │
└──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘
│ │ │
▼ ▼ ▼
Module/Feature/ Page Definitions Role-specific
Requirement + Wireframes Tasks
Step 1: 요구사항 수집
자연어 요구사항 작성
프로젝트 매니저, 기획자, 또는 개발자가 만들고 싶은 서비스를 자연어로 작성합니다. 형식에 대한 제약은 없습니다.
"소셜 북마크 서비스를 만들려고 해.
사용자가 URL을 저장하면 자동으로 제목과 썸네일을 가져오고,
태그를 달아서 분류할 수 있어야 해.
다른 사용자의 북마크도 볼 수 있고, 팔로우 기능도 있으면 좋겠어."
Step 2: UIA — MFR 구조화
UIA 에이전트 실행
자연어를 Module / Feature / Requirement 계층으로 분석합니다.
UIA는 두 가지 모드로 동작합니다:
단건 분석
새로운 요구사항 하나를 기존 MFR 구조에 추가합니다. 기존 구조와의 충돌을 자동 검사합니다.
전체 스캔
전체 요구사항을 한 번에 분석하여 MFR 구조를 처음부터 생성합니다. 프로젝트 초기에 사용합니다.
주요 처리 과정
- 도메인 식별 — 텍스트에서 독립적인 비즈니스 영역(Module)을 추출
- 기능 분류 — 각 모듈 내에서 사용자 대면 기능(Feature)을 분류
- 요구사항 추출 — "What" 관점의 구체적 요구사항(Requirement)을 정의
- 수평 관심사 분리 — 공통 정책(인증, 로깅 등)을 별도 모듈로 분리
- 상태 할당 — 각 요구사항의 확정 수준을 판별
Step 3: PDA — 페이지 정의
PDA 에이전트 실행
MFR 구조를 기반으로 실제 UI 화면을 정의합니다. 이 단계는 선택적이며, 프론트엔드가 있는 프로젝트에서 사용합니다.
주요 산출물
- 페이지 목록 — 전체 섹션별 페이지 번호 체계
- 와이어프레임 — ASCII 아트 기반 레이아웃
- 컴포넌트 매핑 — UI 요소 → 코드 컴포넌트 매핑
- 상태 관리 — 각 페이지의 상태 정의
- 데이터 흐름 — 사용자 액션 → API → 응답
- 네비게이션 — 페이지 간 이동 경로
양방향 참조: 페이지 정의서의 각 요소는 원본 MFR의 Feature/Requirement를 참조하며, MFR 문서에서도 해당 페이지로의 역참조가 자동 생성됩니다.
Step 4: TMA — 태스크 분해
TMA 에이전트 실행
확정된(confirmed) Requirement를 역할별 구현 태스크로 분해합니다.
역할(Role) 정의
프로젝트의 hanspec.config.json에서 역할을 정의합니다:
{
"roles": [
{ "id": "server", "name": "서버 개발" },
{ "id": "frontend", "name": "프론트엔드 개발" },
{ "id": "design", "name": "디자인" }
]
}
태스크 산출 규칙
- 하나의 태스크 = 하나의 커밋/PR 단위
- 각 태스크에는 구체적인 인수 기준(Acceptance Criteria)이 포함
- 태스크 간 의존성이 명시되어 실행 순서가 결정
draft또는undecided상태의 Requirement는 태스크로 분해되지 않음
워크플로우 반복
HanSpec의 워크플로우는 일회성이 아닌 반복적(Iterative) 프로세스입니다:
요구사항 변경/추가
│
▼
┌──────────────┐
│ UIA 재실행 │ ← 기존 MFR에 변경사항 반영
└──────┬───────┘
│
▼
┌──────────────┐
│ PDA 갱신 │ ← 영향받는 페이지만 업데이트
└──────┬───────┘
│
▼
┌──────────────┐
│ TMA 재분해 │ ← 변경된 Requirement만 재분해
└──────────────┘
- 증분 분석 — 변경된 부분만 재분석하여 효율성 확보
- 영향도 추적 — 양방향 참조를 통해 변경의 파급 효과 자동 파악
- 상태 관리 — undecided → confirmed 전환 시 자동으로 태스크 생성 대상에 포함
실제 사용 시나리오
시나리오: 쇼핑몰 프로젝트 시작
기획자가 요구사항 작성
"회원가입/로그인, 상품 조회, 장바구니, 주문/결제 기능이 필요합니다."
UIA full_scan 실행
회원, 상품, 주문, 공통정책 4개 Module과 각 Feature/Requirement 산출
팀 리뷰 & 상태 확정
팀원들이 MFR을 리뷰하고, 각 Requirement의 상태를 confirmed/undecided로 설정
PDA 실행 → 페이지 정의서 생성
12개 페이지 정의서 산출 (로그인, 회원가입, 상품목록, 상품상세, 장바구니, ...)
TMA 실행 → 역할별 태스크 산출
서버 18개, 프론트 15개, 디자인 8개 — 총 41개 태스크 산출
개발 시작
각 역할별로 의존성 순서에 따라 태스크 수행. AI 코드 생성 시 태스크의 Acceptance Criteria를 프롬프트로 활용