0
0
Lập trình
TT

Phát triển dựa trên đặc tả (SDD) - Đánh giá ban đầu

Đăng vào 7 tháng trước

• 6 phút đọc

Giới thiệu về Phát triển Dựa trên Đặc tả (Spec Driven Development - SDD)

Từ khi "vibe coding" ra đời vào đầu năm 2025, các nhà phát triển đã tạo ra các ứng dụng hoàn chỉnh thông qua các công cụ lập trình hỗ trợ AI. Các số liệu thống kê cho thấy 25% nhóm khởi nghiệp mùa đông 2025 của Y Combinator có mã nguồn được tạo ra 95% bởi AI. Nguyên tắc của vibe coding là đơn giản: thay vì định nghĩa mục tiêu dưới dạng mã, chúng ta diễn đạt chúng bằng ngôn ngữ tự nhiên.

Nhưng cách tiếp cận này thường chỉ hiệu quả cho các mẫu thử nghiệm. Mã sản xuất không chỉ cần trông đẹp - nó cần phải không có lỗi, có kiến trúc hợp lý, an toàn và chức năng. Để đạt được điều này, các nhà phát triển cần định nghĩa hướng dẫn chi tiết với nhiều quy tắc và viết các lệnh rõ ràng cho LLM (Large Language Models). Thật không may, nhiều nhà phát triển thường đánh giá thấp công sức cần thiết cho việc thiết lập này và việc tạo lệnh. Đây chính là nơi mà Phát triển Dựa trên Đặc tả (SDD) xuất hiện.

Các giai đoạn của Phát triển Dựa trên Đặc tả

SDD chia quy trình phát triển thành bốn giai đoạn riêng biệt, mỗi giai đoạn có mục tiêu và kết quả cụ thể. Trong suốt các giai đoạn này, chúng ta dựa vào công cụ lập trình AI đã chọn để hỗ trợ. Trách nhiệm của chúng ta là diễn đạt mục tiêu bằng ngôn ngữ tự nhiên. Mã cuối cùng được tạo ra chỉ là sản phẩm của những đặc tả rõ ràng này.

1. Đặc tả

Trong giai đoạn này, bạn cung cấp mô tả tổng quát về những gì bạn đang xây dựng và lý do tại sao. Công cụ lập trình sẽ tạo ra một đặc tả chi tiết. Điều này không liên quan đến ngăn xếp công nghệ hay thiết kế ứng dụng, mà là về hành trình của người dùng, trải nghiệm và tiêu chí thành công. Bạn sẽ xác định ai sẽ sử dụng sản phẩm của bạn, vấn đề mà nó giải quyết cho họ, cách họ tương tác với nó, và những kết quả quan trọng nhất.

2. Lập kế hoạch

Giai đoạn này là nơi bạn đi vào chi tiết kỹ thuật. Bạn sẽ cung cấp cho công cụ lập trình thông tin về ngăn xếp công nghệ, kiến trúc và các ràng buộc mà bạn mong muốn, và nó sẽ tạo ra một kế hoạch kỹ thuật toàn diện. Hãy chi tiết hóa bất kỳ sự tích hợp nào với hệ thống kế thừa, yêu cầu tuân thủ hoặc mục tiêu hiệu suất mà bạn cần đạt được.

3. Nhiệm vụ

Công cụ lập trình sẽ biến đặc tả và kế hoạch thành các công việc có thể thực hiện bằng cách tạo ra các phần nhỏ mà mỗi phần giải quyết một thành phần cụ thể. Mỗi nhiệm vụ nên có thể được thực hiện và kiểm tra một cách độc lập.

4. Triển khai

Công cụ lập trình thực hiện các nhiệm vụ theo thứ tự tuần tự hoặc song song khi thích hợp. Sự khác biệt chính ở đây là thay vì xem xét các khối mã lớn, bạn - nhà phát triển - sẽ đánh giá các thay đổi cụ thể mà giải quyết các vấn đề cụ thể.

Giới thiệu về GitHub Spec Kit

Để hỗ trợ việc theo dõi SDD, GitHub đã phát hành một CLI mã nguồn mở gọi là Spec Kit nhằm đơn giản hóa việc tạo các tệp cần thiết. Spec Kit có thể được cài đặt theo hai cách khác nhau. Phương pháp đầu tiên là sử dụng uvx, một trình quản lý gói Python hoạt động tương tự như npm với npx.

Cài đặt Spec Kit

Copy
uvx --from git+https://github.com/github/spec-kit.git specify init <TÊN_DỰ_ÁN>

Lệnh này tạo ra một thư mục mới với tên đã định nghĩa. Bạn sẽ xác nhận công cụ lập trình AI mà bạn muốn sử dụng. Hiện tại, bạn không thể chuyển đổi giữa các công cụ đã chọn sau khi khởi tạo.

Cấu hình dự án

Để minh họa Spec Kit, tôi sẽ tạo một dự án mới sử dụng GitHub Copilot làm trợ lý lập trình AI của tôi. Đối với ngăn xếp công nghệ của tôi, tôi sẽ sử dụng Angular với ESLint, Prettier và TypeScript APIs mới nhất.

Tổng quan về tệp Spec Kit

Dựa trên công cụ bạn đã chọn, Spec Kit tạo ra nhiều tệp trong các thư mục cụ thể. Hiểu cấu trúc này là rất quan trọng cho việc triển khai hiệu quả.

Thư mục Prompt

Thư mục này chứa các lệnh có thể tái sử dụng để thực thi thông qua GitHub Copilot. Chúng tôi sẽ sử dụng các lệnh này để tạo đặc tả ban đầu, kế hoạch triển khai kỹ thuật và cuối cùng là các nhiệm vụ mà chúng tôi có thể thực hiện từng bước.

Thư mục Ký ức

Thư mục memory/ chứa constitution.md, định nghĩa các nguyên tắc của bạn như kiến trúc ưa thích, các mẫu API, cách tiếp cận TDD, thư viện, công nghệ và tiêu chuẩn lập trình. Bạn nên điền tệp này một cách chi tiết trước khi chạy bất kỳ lệnh nào.

Thư mục Scripts

Thư mục này chứa các tập lệnh shell được thực hiện bởi công cụ lập trình để giúp nó hiểu các đặc tả, tạo nhánh và tạo các tệp khác cần thiết.

Thư mục Templates

Thư mục này chứa các mẫu markdown cho các tệp mà công cụ lập trình sẽ tạo ra sau này.

Tạo Đặc tả đầu tiên của bạn

Sau khi định nghĩa bản hiến pháp, đã đến lúc tạo đặc tả đầu tiên của bạn. Bước này rất quan trọng để xác định mục tiêu của ứng dụng của bạn. Hãy cụ thể nhất có thể.

Chạy lệnh /specify trong công cụ AI của bạn:

Copy
/specify NG Pokedex là một ứng dụng dành cho những người hâm mộ Pokémon muốn một cách đơn giản và thú vị để khám phá và tìm hiểu về những sinh vật yêu thích của họ.

Tạo Kế hoạch Kỹ thuật

Sau khi hoàn thiện đặc tả không kỹ thuật, đã đến lúc tạo kế hoạch kỹ thuật cho việc triển khai. Từ kinh nghiệm của tôi, bạn có thể tối ưu hóa quá trình này bằng cách thiết lập cấu trúc ứng dụng mặc định ngay từ đầu.

Copy
/plan Ứng dụng sẽ được phát triển bằng Angular 20 cùng với Angular Material, theo các hướng dẫn của Material Design v3.

Định nghĩa Nhiệm vụ Triển khai

Đây là bước cuối cùng trong quá trình đặc tả, nơi Spec Kit giúp chúng ta tạo các định nghĩa nhiệm vụ cho công cụ lập trình mà bạn đã chọn. Chỉ cần chạy lệnh /tasks và chờ trong khi công cụ lập trình định nghĩa tất cả các nhiệm vụ cần thiết để thực hiện đặc tả bạn đã định nghĩa.

Giới hạn và Cân nhắc Hiện tại

Tính đến tháng 9 năm 2025, Spec Kit vẫn đang trong giai đoạn thử nghiệm và có một số hạn chế cần xem xét. GitHub đã định vị Spec Kit như một thử nghiệm trong phát triển hỗ trợ AI có cấu trúc.

Kết luận

Phát triển Dựa trên Đặc tả hứa hẹn một cách tiếp cận có cấu trúc đối với lập trình hỗ trợ AI, giải quyết các vấn đề về chất lượng và khả năng bảo trì vốn có trong "vibe coding." Spec Kit của GitHub đơn giản hóa quy trình này thông qua các lệnh và mẫu được định nghĩa trước, cung cấp các rào cản cho việc tạo mã AI.

Hãy tiếp tục thử nghiệm với Phát triển Dựa trên Đặc tả trong các dự án của bạn và cập nhật khi phương pháp và công cụ phát triển.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào