Product Management
Đăng nhập
ESC

Nhập từ khóa để tìm kiếm

↑↓ Di chuyển
Enter Mở
ESC Đóng

Nghiệm thu: Yêu cầu phi chức năng, những thứ người dùng không nói ra

Đã đọc 0/11 mục · còn khoảng 8 phút
Cách chúng tôi ghi nhận

Một mục được tính là đã đọc khi nó nằm giữa màn hình đủ lâu so với độ dài của nó (bảng và sơ đồ tính một nửa), bạn vẫn đang cuộn hoặc bấm phím, và bạn đã thấy tới cuối mục. Lướt nhanh hoặc để tab mở không được tính. Chúng tôi chỉ lưu thời gian đọc từng mục — không lưu gì khác.

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ómCâu mơ hồCâu đo đượcCách kiểm
TảiChịu được nhiều người1.500 suất trong 45 phút, đỉnh 100 lượt nhận mỗi phút lúc 11:35 không lỗiThử tải mô phỏng trước đợt chạy thử
Phản hồiTra đơn nhanh95% 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àngLuôn chạy99,5% thời gian trong 11:00–13:00 ngày thường, không triển khai trong khungTheo dõi tự động, báo cáo tuần
Riêng tưBảo mật dữ liệuQuầ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ìnhKiểm từng màn hình theo vai trò
Tiếp cậnDễ dùngTươ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 địnhTrao suất được khi mất mạng, đồng bộ trong 1 phútTắt Wi-Fi giữa buổi thử
BếpChữ toChữ tên món cao ít nhất 1,5 cm, Cô Hạnh đọc đúng 10 dòng từ 2 métCô Hạnh đọc thử tại bếp
NFR sống ở đâu. Có ba chỗ. NFR gắn với một story thì thành tiêu chí nghiệm thu của story đó, ví dụ tra mã dưới 1 giây gắn vào story "tìm đơn bằng mã 4 số". NFR áp cho mọi màn hình, như tương phản, vào Định nghĩa Hoàn thành từ bài 5. NFR về vận hành, như không triển khai trong 11:00–13:00, vào quy ước của đội.

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 --> T

Lộ 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 quenTần suấtKết quả mong đợi
Gạch chữ nhanh, ổn định, dễ dùngMỗi lần viết yêu cầuMọi NFR đều có con số
Đọc lại ghi chép tìm câu ngầmMỗi khi có phỏng vấn mớiKhông bỏ sót yêu cầu người dùng không nói
Kiểm NFR tại chỗ thậtTrước mỗi lát phát hànhBiết hệ thống chạy được ở quầy cơm thật
Đo lại giả định tảiMỗ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 StarSố trưa trong đợt chạy thử không có sự cố làm ngừng trao suấtCho biết ứng dụng chịu được thực tế quầy cơm
Chỉ số hiệu năngThời gian tra mã đơn ở mức 95% lúc 11:35Bá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ểmPhải luôn bằng 0
Chỉ số chất lượng yêu cầuTỉ 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ẫyBiểu hiệnCách tránh
NFR không có sốỨng dụng phải nhanh và ổn địnhViết đủ bốn phần
Tính tải theo trung bìnhThiết kế cho 33 lượt mỗi phútTính đỉnh lúc 11:35
Coi riêng tư là chuyện sauMà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 labMàn hình bếp chỉ thử trên laptopKiể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.

Học xong bài này rồi? Tạo tài khoản miễn phí để lưu lại — lần sau vào là biết ngay đang dở ở đâu, và học hết khóa thì có chứng chỉ. Lưu tiến độ của tôi