Module nóng, ấm, lạnh (Đầu tư spec theo nhiệt độ)
Đừng cố viết spec cho 100% codebase legacy. Chia code thành ba vùng theo tần suất thay đổi, rồi đầu tư spec/test theo mức độ.
| Vùng | Đặc điểm | Đầu tư |
|---|---|---|
| Nóng | Đổi mỗi sprint | Spec đầy đủ + Characterization Test + AC test |
| Ấm | Vài tháng mới đổi | Spec stub + test khi chuẩn bị đụng |
| Lạnh | Lâu rồi không ai đụng | Để yên, trừ khi có lý do nghiệp vụ thật |
Cách tìm module nóng
git log --since=6.months.ago --name-only | sort | uniq -c | sort -rnFile xuất hiện nhiều nhất trong 6 tháng gần đây là nơi nên bắt đầu.
Nguyên tắc “sống chung với phần chưa hoàn hảo”
Bạn không cần biến toàn bộ legacy thành kiến trúc đẹp. Chỉ cần mỗi lần đụng vào một module, để lại nó rõ hơn một chút so với lúc nhận. Ép Spec Coverage 100% cho toàn bộ legacy là “tốn sai chỗ”.
Khi nào dừng (brownfield)
Ba dấu hiệu “đủ”: (1) dev mới làm việc độc lập trong một module bất kỳ trong 1 tuần; (2) module nóng có spec coverage > 70%, mỗi UC quan trọng có AC test; (3) nghiệp vụ hỏi “có làm được không?” → Tech Lead trả lời trong 1 giờ thay vì 1 tuần.
Liên quan
- Brownfield với SDD - nguyên tắc thực dụng số 1
- Chỉ số đo SDD - mục tiêu Spec Coverage khác nhau theo vùng
- Characterization Test - bọc test cho module nóng