Vì sao chủ đề quan trọng
Bài 5 cho mỗi story lát 1 một bộ tiêu chí nghiệm thu: đơn quá 12:15 thì chuyển Quá hạn giữ, Thứ Bảy không có lựa chọn suất hỗ trợ. Tất cả đều nói hệ thống làm gì. Không câu nào nói hệ thống phải làm tốt tới mức nào: nhanh bao nhiêu, chịu bao nhiêu người, chạy được khi mất mạng không, ai được thấy dữ liệu nào.
Đó là yêu cầu phi chức năng (non-functional requirement, viết tắt NFR). Người dùng gần như không bao giờ nói ra. Minh Anh không nói "trang phải tải dưới hai giây"; cô chỉ đóng ứng dụng và đi xếp hàng. Cô Hạnh không nói "chữ phải cao 1,5 cm"; cô nói "tay đâu mà xem". Thảo Vy không nói "phương thức thanh toán phải bị ẩn"; cô nói "Đưa phiếu hỗ trợ ra giữa hàng người em hơi ngại." Yêu cầu nằm trong câu, bạn phải đọc ra.
Với Căng tin số, bỏ sót NFR không làm hỏng một tính năng, mà làm hỏng cả đợt chạy thử. Một ứng dụng đúng mọi tiêu chí nhưng treo lúc 11:35 sẽ bị bỏ ngay tuần đầu, và Chị Lan sẽ nhận thêm email phàn nàn thay vì bớt đi.
Đầu vào của bài là story và tiêu chí từ bài 5. Đầu ra là danh sách NFR viết đo được, mỗi cái có cách kiểm, gắn vào story hoặc vào Định nghĩa Hoàn thành. Đó cũng là đầu vào của khóa Không bỏ sót: kiểm tra độ đầy đủ.
Bức tranh lớn
Một NFR đo được có bốn phần:
Ngữ cảnh -> khi nào, ở đâu, với ai
Thước đo -> đại lượng gì: giây, phần trăm, số người, xăng-ti-mét
Ngưỡng -> con số phải đạt
Cách kiểm -> ai kiểm, bằng công cụ gì, trước mốc nào
Câu "ứng dụng phải nhanh" chỉ có một phần trong bốn. Câu "trong 11:35–12:15, 95% lượt tra mã đơn ở quầy trả kết quả trong 1 giây, kiểm bằng thử tải trước đợt chạy thử" có đủ bốn.
NFR không tự xuất hiện. Bạn tìm chúng bằng cách đọc lại ghi chép phỏng vấn với một danh sách nhóm câu hỏi: tải, thời gian phản hồi, độ sẵn sàng, riêng tư, khả năng tiếp cận, hoạt động khi mất mạng, và điều kiện vật lý nơi người dùng đứng.
flowchart TD
A[Lớp tan 11 giờ 30] --> N1[Tải dồn lúc 11 giờ 35]
B[Cô Hạnh tay đâu mà xem] --> N2[Màn hình bếp đọc từ 2 mét]
C[Thảo Vy ngại đưa phiếu] --> N3[Ẩn cách thanh toán ở quầy]
D[Thảo Vy dị ứng đậu phộng] --> N4[Bảo vệ dữ liệu sức khỏe]
E[Mã số sinh viên khi đăng nhập] --> N5[Không lộ mã số ở quầy]
F[Quầy đông và ồn] --> N6[Vẫn trao suất khi mất mạng]Ví dụ chi tiết
Tải giờ cao điểm. Căng tin bán khoảng 1.500 suất mỗi trưa, dồn chủ yếu vào khoảng 45 phút quanh cao điểm 11:35–12:15. Trung bình là khoảng 33 suất mỗi phút. Nhưng tải không đều: lớp tan 11:30, nên lúc 11:35 có một đợt dồn. Nhóm giả định đỉnh gấp ba trung bình trong năm phút đầu, khoảng 100 lượt nhận món mỗi phút, và ghi rõ đây là giả định cần đo lại trong đợt chạy thử. Đợt chạy thử chỉ ở quầy cơm, khoảng 600 suất, nhưng NFR viết cho cả 1.500 vì lát 3 sẽ mở rộng ra 6 quầy.
Thời gian phản hồi. Ở quầy, mỗi giây chờ nhân lên với cả hàng người. Nếu tra một đơn mất 5 giây thay vì 1 giây, với 100 lượt mỗi phút thì mỗi phút cao điểm sinh thêm khoảng 400 giây chờ, gần 7 phút, dồn lên hàng người. Vì vậy ngưỡng cho tra mã đơn chặt hơn ngưỡng cho xem thực đơn.
Độ sẵn sàng. Ứng dụng chỉ thật sự quan trọng trong 11:00–13:00 ngày thường. Ngưỡng 99,5% trong khung đó nghĩa là tối đa khoảng 36 giây gián đoạn mỗi ngày. Hệ quả thực tế: không triển khai bản mới và không bảo trì trong khung này. Ngoài khung, yêu cầu có thể nhẹ hơn.
Riêng tư. Hai loại dữ liệu cần bảo vệ. Mã số sinh viên đi theo đăng nhập qua hệ thống của trường, như Chị Lan yêu cầu; nhân viên quầy chỉ cần mã đơn 4 số và tên gọi, không cần mã số. Thông tin dị ứng của Thảo Vy là dữ liệu sức khỏe, thuộc nhóm dữ liệu cá nhân nhạy cảm theo quy định bảo vệ dữ liệu cá nhân của Việt Nam. Chỉ chính sinh viên xem được; báo cáo cho Anh Tuấn chỉ có số lượng. Và P12: màn hình quầy chỉ ghi "Đã thanh toán", không ghi suất hỗ trợ.
Khả năng tiếp cận. Có sinh viên nhìn kém, có người dùng chữ cỡ lớn trên điện thoại. Lấy chuẩn quốc tế WCAG 2.1 mức AA: độ tương phản chữ tối thiểu 4,5 trên 1, phóng chữ 200% không vỡ bố cục, luồng đặt món dùng được bằng trình đọc màn hình.
Mất mạng ở quầy. Wi-Fi giờ cao điểm thường chập chờn khi hàng nghìn điện thoại cùng kết nối. Máy tính bảng ở quầy tải sẵn danh sách đơn trong ngày lúc 10:00, vẫn tra mã và đánh dấu đã nhận khi mất mạng, rồi đồng bộ trong vòng 1 phút khi có mạng lại.
Màn hình bếp đọc từ 2 mét. Cô Hạnh đứng ở bếp, cách màn hình khoảng 2 mét, tay đang làm. Tên món và số suất phải đọc được từ chỗ cô đứng. Áp dụng cả cho bản in lát 1.
Bảng dưới đặt câu mơ hồ cạnh câu đo được:
| Nhóm | Câu mơ hồ | Câu đo được | Cách kiểm |
|---|---|---|---|
| Tải | Chịu được nhiều người | 1.500 suất trong 45 phút, đỉnh 100 lượt nhận mỗi phút lúc 11:35 không lỗi | Thử tải mô phỏng trước đợt chạy thử |
| Phản hồi | Tra đơn nhanh | 95% lượt tra mã đơn ở quầy dưới 1 giây | Đo trên máy tính bảng thật ở quầy cơm |
| Sẵn sàng | Luôn chạy | 99,5% thời gian trong 11:00–13:00 ngày thường, không triển khai trong khung | Theo dõi tự động, báo cáo tuần |
| Riêng tư | Bảo mật dữ liệu | Quầy không thấy mã số sinh viên và cách thanh toán; chỉ sinh viên thấy dị ứng của mình | Kiểm từng màn hình theo vai trò |
| Tiếp cận | Dễ dùng | Tương phản tối thiểu 4,5 trên 1, chữ phóng 200% không vỡ | Công cụ đo tương phản và thử trên điện thoại |
| Mất mạng | Ổn định | Trao suất được khi mất mạng, đồng bộ trong 1 phút | Tắt Wi-Fi giữa buổi thử |
| Bếp | Chữ to | Chữ tên món cao ít nhất 1,5 cm, Cô Hạnh đọc đúng 10 dòng từ 2 mét | Cô Hạnh đọc thử tại bếp |
flowchart TD
Q[Đọc lại ghi chép phỏng vấn] --> F[Tìm câu ngầm chứa yêu cầu]
F --> W[Viết đủ ngữ cảnh, thước đo, ngưỡng, cách kiểm]
W --> X{Áp cho một story hay cho mọi story}
X -->|Một story| S[Thêm vào tiêu chí nghiệm thu]
X -->|Mọi story| D[Thêm vào Định nghĩa Hoàn thành]
X -->|Vận hành| O[Thêm vào quy ước đội]
S --> T[Kiểm trước đợt chạy thử]
D --> T
O --> TLộ trình từng bước
- Đọc lại ghi chép phỏng vấn, gạch dưới mọi câu nói về thời gian, nơi chốn, sự ngại ngùng, sự bất tiện.
- Với mỗi câu, hỏi: nó ngầm đòi hệ thống tốt tới mức nào?
- Đi qua bảy nhóm: tải, phản hồi, sẵn sàng, riêng tư, tiếp cận, mất mạng, điều kiện vật lý.
- Viết mỗi NFR đủ bốn phần, dùng số từ case, không dùng chữ "nhanh", "ổn định", "dễ".
- Ghi rõ giả định nào cần đo lại trong đợt chạy thử.
- Đặt mỗi NFR vào đúng chỗ: story, Định nghĩa Hoàn thành, hoặc quy ước đội.
- Lên kế hoạch kiểm, kể cả kiểm với người thật như Cô Hạnh.
Thói quen & kỷ luật
| Thói quen | Tần suất | Kết quả mong đợi |
|---|---|---|
| Gạch chữ nhanh, ổn định, dễ dùng | Mỗi lần viết yêu cầu | Mọi NFR đều có con số |
| Đọc lại ghi chép tìm câu ngầm | Mỗi khi có phỏng vấn mới | Không bỏ sót yêu cầu người dùng không nói |
| Kiểm NFR tại chỗ thật | Trước mỗi lát phát hành | Biết hệ thống chạy được ở quầy cơm thật |
| Đo lại giả định tải | Mỗi tuần trong đợt chạy thử | Ngưỡng dựa trên số thật, không phải đoán |
Cần luyện tập
Drill một: Đọc lại câu của Anh Tuấn "Cuối ngày tôi mất cả tiếng đối soát tiền mặt với chuyển khoản." Viết hai NFR đo được ngầm trong câu đó, mỗi cái đủ bốn phần, và nói chúng đặt ở story nào.
Drill hai: Mở một ứng dụng bạn dùng giờ cao điểm, như ứng dụng ngân hàng lúc nhận lương. Viết ba NFR mà bạn đoán đội đó đã đặt, đủ ngữ cảnh, thước đo, ngưỡng, cách kiểm.
Drill ba: Đứng cách màn hình máy tính của bạn 2 mét. Thử đọc một danh sách mười tên món ở các cỡ chữ khác nhau. Ghi cỡ nhỏ nhất bạn đọc đúng cả mười dòng. Đó là cách nhóm kiểm NFR bếp trước khi mời Cô Hạnh.
Checklist hành động tuần này
- [ ] Gạch mọi câu ngầm chứa yêu cầu trong sáu bản ghi phỏng vấn
- [ ] Viết ít nhất một NFR đo được cho mỗi nhóm trong bảy nhóm
- [ ] Ghi rõ giả định tải cần đo lại trong đợt chạy thử
- [ ] Đặt mỗi NFR vào story, Định nghĩa Hoàn thành hoặc quy ước đội
- [ ] Hẹn Cô Hạnh một buổi đọc thử màn hình bếp từ 2 mét
Chỉ số cho cách làm
Các con số dưới đây đo cách nhóm làm bước này, không đo app có thành công hay không. Câu hỏi app có hiệu quả không, và làm gì tiếp, là việc của khóa Đo lường thành công.
| Loại chỉ số | Ví dụ | Vai trò |
|---|---|---|
| North Star | Số trưa trong đợt chạy thử không có sự cố làm ngừng trao suất | Cho biết ứng dụng chịu được thực tế quầy cơm |
| Chỉ số hiệu năng | Thời gian tra mã đơn ở mức 95% lúc 11:35 | Báo sớm hàng người sẽ dồn |
| Chỉ số riêng tư | Số màn hình lộ dữ liệu sai vai trò khi kiểm | Phải luôn bằng 0 |
| Chỉ số chất lượng yêu cầu | Tỉ lệ NFR có đủ bốn phần | Đo độ đo được của chính danh sách yêu cầu |
Dấu hiệu bạn đã thành thạo
Bạn nghe "tay đâu mà xem" và nghĩ ngay tới khoảng cách và cỡ chữ. Bạn không viết chữ "nhanh" mà không kèm con số. Bạn biết NFR nào đặt vào story, NFR nào đặt vào Định nghĩa Hoàn thành. Và bạn phân biệt được số đã đo với số còn là giả định.
Cạm bẫy thường gặp
| Cạm bẫy | Biểu hiện | Cách tránh |
|---|---|---|
| NFR không có số | Ứng dụng phải nhanh và ổn định | Viết đủ bốn phần |
| Tính tải theo trung bình | Thiết kế cho 33 lượt mỗi phút | Tính đỉnh lúc 11:35 |
| Coi riêng tư là chuyện sau | Màn hình quầy hiện suất hỗ trợ | Kiểm từng màn hình theo vai trò từ lát 1 |
| Kiểm ở phòng lab | Màn hình bếp chỉ thử trên laptop | Kiểm tại bếp với Cô Hạnh |
| Giả định thành sự thật | Đỉnh gấp ba được ghi như số đo | Đánh dấu giả định và đo lại |
Chốt lại
Yêu cầu phi chức năng là phần người dùng không nói ra nhưng sẽ bỏ ứng dụng nếu thiếu. Với Căng tin số: chịu 1.500 suất trong 45 phút với đỉnh lúc 11:35, tra mã dưới 1 giây, sẵn sàng trong 11:00–13:00, bảo vệ mã số sinh viên và dữ liệu dị ứng, đạt chuẩn tiếp cận, trao suất được khi mất mạng, màn hình bếp đọc được từ 2 mét. Mỗi cái có ngữ cảnh, thước đo, ngưỡng và cách kiểm. Cùng với story map, user story và tiêu chí nghiệm thu, đây là đầu ra của khóa này, và là đầu vào của khóa Không bỏ sót: kiểm tra độ đầy đủ, nơi bạn kiểm xem bộ yêu cầu còn sót chỗ nào.