Spec trước, code sau (spec-first)
Trước khi viết dòng code nào, AI phải làm rõ yêu cầu thành spec có cấu trúc. Bạn duyệt "làm gì" trước khi tốn công cho "làm thế nào".
Phát triển theo đặc tả: mỗi yêu cầu đi qua cổng kiểm soát cứng và truy vết được tới đúng code và test hiện thực nó — không thể đi tắt, không mất dấu.
Hãy hình dung SDD là quy trình kỹ thuật chuẩn của một đội ngũ dày dạn, được "đóng hộp" và nối thẳng vào AI. Thay vì hy vọng AI làm đúng, ta dựng các chốt kiểm bắt buộc — như dây chuyền lắp ráp có trạm QA ở mỗi công đoạn.
Trước khi viết dòng code nào, AI phải làm rõ yêu cầu thành spec có cấu trúc. Bạn duyệt "làm gì" trước khi tốn công cho "làm thế nào".
Mỗi pha chỉ được đi tiếp khi đạt chuẩn do máy kiểm tra. Trượt là dừng và báo cáo trung thực, tuyệt đối không có chuyện "bỏ qua cho nhanh".
Từ một yêu cầu truy ra đúng đoạn code và bài test hiện thực nó, và ngược lại. Không còn tính năng "mồ côi" hay yêu cầu bị bỏ quên.
Một nền chuẩn, cộng lớp công nghệ của bạn (.NET, Django, Rails, Next.js, ứng dụng LLM…) và lớp nghiệp vụ (tài chính, ERP, thương mại điện tử, SaaS). Đúng ngữ cảnh ngay từ đầu.
AI ra quyết định trong giới hạn cho phép, theo chuỗi heuristic rõ ràng. Mọi lựa chọn đều được ghi lại để bạn soát xét sau, không phải "tin mù quáng".
Mỗi quyết định tự động được niêm phong bằng chuỗi hash; sửa đổi về sau đều bị phát hiện. Bằng chứng kỹ thuật, không phải lời hứa.
Một tính năng đi qua 7 pha, giữa mỗi pha là một cổng kiểm soát cứng do máy chấm. Con người đặt ý định và phán đoán ở đầu pha, SDD + AI thực thi phần nặng, còn cổng chặn lỗi trước khi công việc đi tiếp.
Làm rõ yêu cầu thành spec có cấu trúc, kèm tiêu chí nghiệm thu.
Chốt kiến trúc, NFR và ADR; cổng kiểm tra đồ thị module không vòng.
Phân rã 100% yêu cầu thành task, kiểm DAG phụ thuộc, chia milestone.
Viết test trước rồi mới viết code; task nhỏ, truy vết về từng yêu cầu.
Chạy toàn bộ test, soát truy vết và tiêu chí nghiệm thu.
Ba vòng review độc lập, mở rộng dần phạm vi; AI không tự chấm bài mình.
Tổng kết trung thực: đạt gì, trượt gì, quyết định nào đã ghi vào nhật ký.
Khi một cổng FAIL (hết lượt tự sửa), pipeline nhảy thẳng tới pha 7 REPORT với báo cáo trung thực. Quy trình không bao giờ dừng im lặng, cũng không giả vờ đã xong.
| Pha | PO / BA | Sol. Architect | Tech Lead | Developer | QA / SDET | DevOps | Team Lead |
|---|---|---|---|---|---|---|---|
| Specify | A | C | C | I | C | I | I |
| Plan | C | A | R | C | C | C | I |
| Tasks | C | C | A | R | C | I | I |
| Implement | I | C | C | A | C | C | I |
| Verify | I | C | C | R | A | C | I |
| Review | C | C | A | C | R | I | I |
| Report | I | I | C | I | C | I | A |
R = thực hiện · A = chịu trách nhiệm cuối (đúng một người mỗi pha) · C = được tham vấn · I = được thông báo. SDD / AI luôn là bên thực thi dưới người chịu trách nhiệm.
SDD không phải đường một chiều mà là vòng lặp khép kín: khám phá → đặc tả → xây dưới kiểm soát (SPECIFY→TASKS qua /autopilot, IMPLEMENT→REPORT qua /pipeline) → phát hành → vận hành & học (theo dõi trên bảng KPI chỉ-đọc /sdd-metrics) → chu kỳ kế tiếp.
Phản hồi từ vận hành quay về spec qua kênh /delta; spec sống cùng codebase nên chu kỳ sau không phải "vibe-code" lại từ đầu.
Cùng một AI, hai kết cục khác nhau. Bên trái là cách hầu hết đội đang dùng AI hôm nay; bên phải là cùng công việc đó nhưng chạy dưới kỷ luật SDD.
Niềm tin ở đây không đến từ lời hứa mà từ cấu trúc: sáu bảo đảm dưới đây là hệ quả trực tiếp của cách SDD vận hành, mỗi bảo đảm bám vào một trụ cột đã nêu ở trên.
Mỗi pha chỉ qua khi đạt chuẩn do máy chấm; trượt là dừng, không có ngoại lệ "bỏ qua cho nhanh".
verify-*.pyQuyền tự chủ của AI bị giới hạn và ghi lại; việc chấm do cổng và reviewer đảm nhiệm — reviewer chạy chỉ-đọc ở phạm vi task và milestone, và fresh-context ở vòng dự án.
spec-compliance-reviewerReview đi từ hẹp ra rộng qua nhiều vòng — mỗi vòng là một cổng, không phải một lần liếc qua.
task_lenses = 3Duyệt "làm gì" ở pha spec trước khi tốn công cho "làm thế nào", rồi mới soát chất lượng hiện thực.
spec-compliance → code-quality-reviewerMọi yêu cầu trong phạm vi phải nối được tới code và test hiện thực nó; một script chặn "done" cho tới khi nối đủ.
verify-traceability.py --auto-detectKết quả gate được ghi thẳng vào nhật ký phát hiện can thiệp — sửa về sau là vỡ chuỗi băm và trình kiểm tra báo ngay. Không tô hồng, không giấu lỗi.
tasks/DECISIONS/ verify-decisions.pyVài con số rút thẳng từ chính dự án này — bản thân trang web cũng dựng qua SDD, nên đây là bằng chứng chứ không phải khẩu hiệu.
yêu cầu chức năng (FR) được đặc tả
specs/FUNCTIONAL.md
yêu cầu phi chức năng (NFR)
specs/NON_FUNCTIONAL.md
pha có cổng kiểm soát cứng
SPECIFY → REPORT
vòng review độc lập mỗi thay đổi
reviewer không tự duyệt việc của mình
SDD giải một nỗi lo khác nhau cho mỗi vai trò. Nếu bạn nhận ra mình ở một trong bốn nhóm dưới đây, phần còn lại của trang sẽ nói đúng điều bạn quan tâm.
Tận dụng tốc độ của AI nhưng vẫn giữ quyền kiểm soát, tính dự đoán được và một chuẩn chất lượng đồng nhất cho cả đội.
Cần nhật ký quyết định phát hiện can thiệp (chuỗi băm) và độ phủ truy vết yêu cầu → test để chứng minh tuân thủ khi bị soát.
Duyệt "hệ thống sẽ làm gì" bằng ngôn ngữ nghiệp vụ ngay ở pha spec, minh bạch ở mọi điểm kiểm soát.
Ít phải làm lại, ít hiểu sai yêu cầu, giao hàng nhanh hơn vì drift bị bắt ngay ở commit bằng script thay vì tới lúc khách nghiệm thu.
Để lại thông tin, chúng tôi sẽ liên hệ để tư vấn cách áp dụng SDD cho đội của bạn.