Công cụ SDD (Tooling)
Đừng dành hai tuần chỉ để chọn tool “chuẩn”. Chọn một tool, làm một use case từ spec → code → test, rồi đánh giá. SDD tốt ở chỗ spec vẫn nằm trong repo (Markdown), nên tool có thể đổi sau.
Các tool chính
| Tool | Mạnh ở | Khi nào chọn |
|---|---|---|
| GitHub Spec Kit | Luồng /specify → /plan → /tasks → /implement. Hỗ trợ nhiều AI agent, ít khóa vào một tool | Team mới làm SDD, cần khung rõ |
| OpenSpec | Quy trình dựa trên artifact: proposal, delta specs, design, tasks; có specs/ (baseline) + changes/ | Muốn quy trình nhẹ, linh hoạt, nhiều thay đổi song song, audit lịch sử → Spec hiện tại và Spec thay đổi |
| Claude Code + AIUP marketplace | Slash command theo phase: /requirements, /entity-model, /use-case-spec, /reverse-engineer | Team đã dùng Claude Code, muốn đi sâu |
| IntelliJ AIUP Navigator | Link spec ↔ test qua annotation @UseCase | Stack JVM (Java/Kotlin) |
| Cursor / Copilot / Codex CLI | Làm việc với spec Markdown trong IDE quen | Không muốn đổi tool chính của dev |
Tool phụ trợ
- PlantUML / Mermaid - diagram trong spec.
- LaunchDarkly / Unleash - feature flag, rất hữu ích cho brownfield (chạy code cũ/mới song song).
- git archaeology (
git log -L,git blame) - tìm lịch sử “vì sao có dòng này”. - AST-based refactor (jscodeshift, rope, OpenRewrite) - refactor cơ học an toàn hơn.
Git convention
<type>(UC-XXX): <description>
feat(UC-042): implement QR expiry validation
fix(UC-019): correct overlap detection edge case
Nền tảng đáng đọc thêm
DDD (Eric Evans, Vaughn Vernon - đọc Vernon trước dễ hơn) · Hexagonal Architecture (Alistair Cockburn) · Clean Architecture (Robert C. Martin) · Working Effectively with Legacy Code (Michael Feathers - nguồn của Characterization Test).
Liên quan
- Spec hiện tại và Spec thay đổi - cách nghĩ của OpenSpec
- Greenfield với SDD · Brownfield với SDD - tool xuất hiện trong tình huống thật
- Traceable - git convention