151 lines
5.9 KiB
Markdown
151 lines
5.9 KiB
Markdown
# RTM — Requirements Traceability Matrix — <PROJECT>
|
|
|
|
| | |
|
|
|---|---|
|
|
| **Cập nhật** | YYYY-MM-DD |
|
|
| **Chạy bởi** | skill `ba-traceability` |
|
|
| **Tài liệu đã quét** | *(liệt kê kèm version)* |
|
|
| **Tài liệu thiếu** | *(và phép kiểm nào không chạy được vì thiếu nó)* |
|
|
|
|
---
|
|
|
|
## 1. Bảng coverage tổng hợp
|
|
|
|
| # | Phép kiểm | Chiều | Tổng | Đã phủ | Coverage | Ngưỡng | ☐/✅ | Chặn gate |
|
|
|---|---|---|---|---|---|---|---|---|
|
|
| 1 | RQ → US | xuôi | | | | 100% | | G2 |
|
|
| 2 | US → RQ | ngược | | | | 100% | | G2 |
|
|
| 3 | US → AC (**đủ 4 nhóm**) | xuôi | | | | 100% | | G3 |
|
|
| 4 | BR → áp dụng ở US/field | xuôi | | | | 100% | | G3 |
|
|
| 5 | AC → test case | xuôi | | | | 100% | | G4 |
|
|
| 6 | Tham chiếu → định nghĩa | — | | | | 100% | | mọi gate |
|
|
|
|
**Không làm tròn lên.** Coverage 99% vẫn là chặn khi ngưỡng là 100% — cái 1% đó là một yêu
|
|
cầu thật, của một người thật.
|
|
|
|
---
|
|
|
|
## 2. Ma trận chính
|
|
|
|
*Một dòng cho mỗi mắt xích. Ô trống = lỗ hổng.*
|
|
|
|
| RQ | MoSCoW | US | BR | AC | Field | Mã lỗi | Test case | Kết quả test | CR |
|
|
|---|---|---|---|---|---|---|---|---|---|
|
|
| RQ-001 | Must | US-001 | BR-003 | AC-01, AC-05 | F01, F02 | E-STL-0001 | TC-001..004 | ✅ | — |
|
|
| RQ-005 | Should | 🔴 — | | | | | | | |
|
|
|
|
---
|
|
|
|
## 3. Chi tiết từng lỗ hổng
|
|
|
|
*Mỗi dòng nêu đích danh ID, nơi định nghĩa, và **skill nào cần chạy để sửa**.*
|
|
|
|
### 3.1 🔴 RQ chưa có US nào phủ *(yêu cầu bị bỏ quên — chặn G2)*
|
|
|
|
| RQ | MoSCoW | Định nghĩa tại | Vì sao chưa phủ | Sửa bằng |
|
|
|---|---|---|---|---|
|
|
| RQ-005 | Should | `BRIEF_…_v1.0.md` §6 | *(bị bỏ sót? đã hoãn nhưng chưa ghi DEC?)* | `/ba-2-analysis <P>` |
|
|
|
|
### 3.2 🔴 US không truy về RQ nào *(scope creep — chặn G2)*
|
|
|
|
| US | Định nghĩa tại | Từ đâu ra | PO quyết | Sửa bằng |
|
|
|---|---|---|---|---|
|
|
| US-018 | `BACKLOG_…_v1.0.md` | | Giữ / Bỏ / Hoãn | `/ba-2-analysis <P>` |
|
|
|
|
### 3.3 🔴 US thiếu AC *(chặn G3)*
|
|
|
|
*Đủ 4 nhóm mới tính là phủ. Chỉ có nhóm 1 ⇒ **chưa phủ**, không phải "phủ một phần".*
|
|
|
|
| US | Thành công | Validation | Lỗi hệ thống | Phân quyền | Sửa bằng |
|
|
|---|---|---|---|---|---|
|
|
| US-013 | ✅ AC-20 | ✅ AC-21 | 🔴 — | 🔴 — | `/ba-3-specification US013` |
|
|
|
|
### 3.4 🟠 BR mồ côi *(không được áp dụng ở đâu)*
|
|
|
|
| BR | Định nghĩa tại | Vì sao mồ côi | Sửa bằng |
|
|
|---|---|---|---|
|
|
| BR-030 | `BR_…_v1.0.md` | *(rule của phase sau? hay SRS quên áp?)* | `/ba-3-specification <US>` |
|
|
|
|
### 3.5 🔴 AC không có test case *(chặn G4)*
|
|
|
|
| AC | US | Nhóm | Sửa bằng |
|
|
|---|---|---|---|
|
|
| AC-09 | US-011 | Lỗi hệ thống | `/ba-4-delivery-support US011 --part c` |
|
|
|
|
### 3.6 🔴 Tham chiếu gãy
|
|
|
|
*ID được nhắc tới nhưng **không có nơi định nghĩa**.*
|
|
|
|
| ID được tham chiếu | Nhắc ở đâu | Có thể là | Sửa bằng |
|
|
|---|---|---|---|
|
|
| BR-021 | `SRS_US011_v1.2` §1.3 | Đổi số? `BR` chưa cập nhật? | `/ba-2-analysis <P> --only br` |
|
|
|
|
🔴 Tham chiếu gãy nghĩa là dev đọc spec, thấy "theo BR-021", đi tìm không ra, rồi **tự
|
|
quyết**. Đó là cách một business rule bốc hơi khỏi sản phẩm.
|
|
|
|
---
|
|
|
|
## 4. Kiểm tra nhất quán
|
|
|
|
| # | Phép kiểm | Phát hiện | Mức | Xử lý |
|
|
|---|---|---|---|---|
|
|
| 1 | **Version lệch** — `Source:` trích version cũ | `SRS_US011` khai `BR_v1.0`, thực tế `BR` đã v1.2 | 🔴 | Rà lại SRS theo BR mới |
|
|
| 2 | **Ràng buộc lệch** — field vs. API | F01 max 20 ký tự (SRS) vs. 50 (API) | 🔴 | |
|
|
| 3 | **Mã lỗi lệch** — SRS vs. API | `E-STL-0007` không endpoint nào sinh ra | 🟠 | |
|
|
| 4 | **Trạng thái lệch** — BR vs. SRS/RBAC | RBAC phân quyền cho trạng thái `LOCKED` không có trong BR | 🔴 | |
|
|
| 5 | **Thành phần lệch** *(screen)* — SRS §2.3.1 vs. WF §3.x.2 / `data-c` | `C07` có trong WF (prototype vẽ nút Xuất) nhưng SRS không đặc tả | 🔴 G3 | PO quyết ở WF §5 |
|
|
| 6 | **Quy ước lệch** *(screen)* — SRS vs. UICONV không có dòng §12 | SRS_US011 phân trang cursor, UICONV §3 offset | 🟠 | Sửa SRS hoặc thêm UICONV §12 |
|
|
|
|
**Lệch prototype ↔ SRS còn mở** *(screen — đọc từ `WF` §5, chỉ loại Tồn tại/Hành vi)*
|
|
|
|
| WF | # | Màn hình | Nội dung lệch | Ai quyết | Từ ngày | Chặn |
|
|
|---|---|---|---|---|---|---|
|
|
| `WF_US011` | 1 | SCR-03 | Prototype không có nút Huỷ, SRS có C07 | Designer | | 🔴 G3 |
|
|
|
|
---
|
|
|
|
## 5. Open Question & Change Request tồn đọng
|
|
|
|
*Sắp theo số ngày quá hạn giảm dần.*
|
|
|
|
| ID | Nội dung | Hỏi ai | Từ ngày | Số ngày | Chặn ID nào | Mức |
|
|
|---|---|---|---|---|---|---|
|
|
| OQ-014 | | | | 9 | AC-05, F03 | 🔴 quá hạn |
|
|
|
|
| CR | Tóm tắt | Chờ ai quyết | Từ ngày | Số ngày | Mức |
|
|
|---|---|---|---|---|---|
|
|
|
|
**`TBD` / `TODO` còn lại:**
|
|
|
|
| Tài liệu | Mục | Nội dung | Chặn gate |
|
|
|---|---|---|---|
|
|
| `SRS_US011` | §2.3.3 F01 | Độ dài chưa chốt | 🔴 G3 |
|
|
|
|
---
|
|
|
|
## 6. Kết luận gate
|
|
|
|
```
|
|
G1: ✅ / 🔴 CHẶN — <lý do>
|
|
G2: ✅ / 🔴 CHẶN — <lý do>
|
|
G3: ✅ / 🔴 CHẶN — <lý do>
|
|
G4: ✅ / ⏳ Chưa đánh giá được — <thiếu gì>
|
|
G5: —
|
|
```
|
|
|
|
| Gate | Trạng thái | Blocker | Chạy gì để gỡ |
|
|
|---|---|---|---|
|
|
| G2 | 🔴 | RQ-005 chưa phủ · US-018, US-019 scope creep | `/ba-2-analysis <P>` |
|
|
| G3 | 🔴 | 6/18 US thiếu AC nhóm lỗi · 4 TBD trong bảng field | `/ba-3-specification <US...>` |
|
|
|
|
---
|
|
|
|
## 7. Lịch sử chạy
|
|
|
|
| Ngày | Coverage RQ→US | US→AC | AC→TC | Số blocker | Ghi chú |
|
|
|---|---|---|---|---|---|
|
|
| | | | | | |
|
|
|
|
*Chạy sau **mỗi giai đoạn**, không chỉ trước gate. Lỗ hổng phát hiện sớm thì rẻ; phát hiện
|
|
hôm trước ngày họp duyệt thì chỉ để hoãn họp.*
|