Menu
ESC

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

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

Đang tải...

Bài 30 — Requirements Verification & Validation

Chương Trình Chứng Chỉ Business Analyst Hoàn Chỉnh Bài 30/60

Mở đầu — vì sao bài này quan trọng

Hãy hình dung bạn vừa hoàn thành một tài liệu yêu cầu dày 80 trang cho một dự án ngân hàng số. Bạn tự hào gửi đi, đội phát triển code đúng từng dòng, QA test pass hết. Ba tháng sau, hệ thống go-live và khách hàng phàn nàn: "Tính năng này đúng là chạy như tài liệu, nhưng nó không phải thứ chúng tôi cần." Bạn vừa gặp đúng cơn ác mộng kinh điển của nghề BA: yêu cầu được xây dựng đúng, nhưng xây dựng sai thứ cần xây.

Đây chính là ranh giới giữa hai khái niệm mà bài học hôm nay sẽ mổ xẻ: Verification (kiểm tra: ta có làm đúng cách không?) và Validation (xác nhận: ta có làm đúng thứ cần làm không?). Trong tiếng Việt cả hai đều có thể dịch là "kiểm tra/xác nhận", nên rất dễ nhập nhằng. Nhưng trong nghề BA, nhầm lẫn hai khái niệm này có thể khiến cả dự án đi chệch hướng.

Một thống kê quen thuộc từ các báo cáo của IIBA và Standish Group: phần lớn dự án thất bại không phải vì code dở, mà vì yêu cầu sai, mơ hồ, hoặc không khớp nhu cầu thực sự của doanh nghiệp. Chi phí sửa một lỗi yêu cầu phát hiện ở giai đoạn requirements rẻ hơn gấp hàng chục, thậm chí hàng trăm lần so với khi phát hiện lúc đã production. V&V chính là tấm lưới an toàn bắt lỗi sớm — và là một trong những kỹ năng phân biệt BA giỏi với BA chỉ biết "ghi chép yêu cầu".

Khái niệm cốt lõi

Verification và Validation khác nhau ở đâu

Theo BABOK v3, đây là hai task riêng biệt nằm trong Knowledge Area "Requirements Analysis & Design Definition", và bạn cần ghi nhớ thật rõ sự khác biệt:

  • Verify Requirements — kiểm tra chất lượng nội tại của tài liệu yêu cầu. Câu hỏi cốt lõi: "Yêu cầu này được viết tốt chưa? Có đủ rõ ràng, đầy đủ, nhất quán để đội phát triển dựa vào mà làm không?" Verification là việc soi chính bản thân tài liệu, không cần đối chiếu với nhu cầu kinh doanh.
  • Validate Requirements — xác nhận yêu cầu mang lại giá trị và đúng với nhu cầu thực sự của stakeholder. Câu hỏi cốt lõi: "Nếu ta xây đúng cái này, doanh nghiệp có đạt được mục tiêu không? Đây có đúng là thứ stakeholder cần không?"
Cách ghi nhớ nhanh mà mình hay dạy học viên:
  • Verification = "Are we building the thing right?" (Ta xây đúng cách chưa?)
  • Validation = "Are we building the right thing?" (Ta xây đúng thứ chưa?)
Một yêu cầu có thể verified hoàn hảo (viết cực chuẩn, atomic, testable) nhưng vẫn fail validation vì nó giải quyết sai vấn đề. Ngược lại, một ý tưởng đúng nhu cầu (validated) nhưng viết lủng củng, mâu thuẫn thì fail verification. Bạn cần cả hai.

Verification — checklist chất lượng tài liệu yêu cầu

Khi verify, bạn soi từng yêu cầu (và toàn bộ tập yêu cầu) qua một bộ tiêu chí chất lượng. BABOK gọi đây là các "characteristics of requirements quality". Mình tóm gọn thành checklist thực dụng:

  • Atomic (nguyên tử) — mỗi yêu cầu chỉ diễn đạt một ý, đứng độc lập được. Câu "Hệ thống cho phép người dùng đăng nhập bằng OTP khóa tài khoản sau 5 lần sai" thực ra là hai yêu cầu trộn vào nhau. Tách ra để dễ trace, dễ test, dễ ước lượng.
  • Complete (đầy đủ) — yêu cầu chứa đủ thông tin để hành động, không để lại lỗ hổng buộc người đọc phải đoán. Nếu nói "hiển thị thông báo lỗi" thì phải rõ: lỗi gì, nội dung gì, ở đâu.
  • Consistent (nhất quán) — không mâu thuẫn với yêu cầu khác. Yêu cầu A nói "khách rút tối đa 50 triệu/ngày", yêu cầu B nói "khách VIP rút tối đa 100 triệu/ngày" — phải làm rõ điều kiện, tránh xung đột.
  • Concise (súc tích) — không thừa chữ, không lan man, không chứa thông tin không cần thiết.
  • Feasible (khả thi) — thực hiện được trong giới hạn ngân sách, thời gian, công nghệ hiện có.
  • Unambiguous (không mơ hồ) — chỉ có một cách hiểu. Tránh các từ "co giãn" như "nhanh", "thân thiện", "đủ tốt", "thường xuyên".
  • Testable / Verifiable (kiểm thử được) — phải có cách chứng minh yêu cầu đã được đáp ứng, tức là có acceptance criteria rõ ràng. "Trang load nhanh" không testable; "Trang load dưới 2 giây với kết nối 4G" thì testable.
  • Prioritized (đã ưu tiên) — biết yêu cầu nào must-have, nào nice-to-have.
  • Understandable (dễ hiểu) — viết bằng ngôn ngữ stakeholder hiểu được, không lạm dụng thuật ngữ kỹ thuật khi đối tượng là người nghiệp vụ.
Mẹo nhỏ: chữ cái đầu của các tiêu chí tiếng Anh (Atomic, Complete, Consistent, Concise, Feasible, Unambiguous, Testable...) tạo thành một bộ kiểm tra mà bạn có thể đóng dấu lên từng dòng requirement.

Validation — đối chiếu với giá trị và mục tiêu

Validation kéo bạn ngẩng đầu lên khỏi tài liệu để nhìn bức tranh lớn. Các góc độ chính:

  • Định nghĩa được lợi ích đo lường được — yêu cầu này đóng góp vào KPI/mục tiêu kinh doanh nào? Ví dụ: tính năng "lưu giỏ hàng" góp phần giảm tỷ lệ bỏ giỏ từ 70% xuống 60%.
  • Liên kết với business case và mục tiêu chiến lược — yêu cầu phải truy ngược được về một nhu cầu, một mục tiêu (trace ngược lên). Nếu một yêu cầu không gắn với mục tiêu nào, hãy nghi ngờ: có thể nó là "gold-plating" — làm thêm thứ không ai cần.
  • Xác định giả định và ràng buộc — yêu cầu dựa trên giả định gì? Nếu giả định sai, yêu cầu có còn đúng?
  • Đánh giá sự đồng thuận của stakeholder — đúng người (người ra quyết định, người dùng cuối) đã xác nhận chưa, hay chỉ một bên ký?
Lưu ý quan trọng: Validation gắn chặt với V&V phần 2 — bạn thường validate bằng cách cho stakeholder thấy thứ gì đó cụ thể (prototype, mô hình, walkthrough) chứ không chỉ đọc văn bản. Con người validate tốt hơn nhiều khi nhìn thấy hình hài thực tế.

Tình huống thực tế

Tình huống 1 — Ví điện tử VN: yêu cầu "verified" nhưng "không validated"

Một ví điện tử lớn tại Việt Nam (gọi là VíPay cho dễ hình dung) triển khai tính năng "chuyển tiền theo lịch định kỳ". BA viết yêu cầu rất chuẩn về mặt verification: atomic, có acceptance criteria đầy đủ ("Người dùng đặt lịch chuyển X đồng vào ngày D hàng tháng tới số tài khoản Y; hệ thống gửi thông báo trước 24 giờ; nếu số dư không đủ, hủy giao dịch và báo lỗi"). Đội dev build đúng từng chi tiết, QA pass 100% test case.

Nhưng sau 2 tháng, tỷ lệ sử dụng chỉ 0,3%. Khi phỏng vấn lại người dùng, đội phát hiện thứ khách thực sự cần không phải "chuyển tiền định kỳ cho người khác" mà là "tự động thanh toán hóa đơn điện/nước/internet định kỳ" — một bài toán khác hẳn về tích hợp nhà cung cấp dịch vụ.

Bài học: Yêu cầu được verified hoàn hảo nhưng fail validation. BA đã không validate sớm với đúng nhóm người dùng cuối — chỉ làm việc với phòng sản phẩm. Nếu họ làm một buổi validation bằng prototype với 10 khách hàng thật trước khi code, họ đã tiết kiệm được cả một sprint phát triển. Verification mà không có validation = xây cây cầu hoàn hảo bắc qua sai con sông.

Tình huống 2 — Sàn TMĐT: mâu thuẫn nội tại bị verification bắt được

Một sàn thương mại điện tử khu vực Đông Nam Á (kiểu Shopee/Lazada) xây tính năng "voucher giảm giá". BRD có hai dòng nằm cách nhau 30 trang:

  • Yêu cầu R-112: "Mỗi đơn hàng được áp dụng tối đa 1 voucher."
  • Yêu cầu R-247: "Người dùng có thể kết hợp 1 voucher của sàn và 1 voucher của shop trên cùng một đơn."
Hai yêu cầu này mâu thuẫn trực tiếp (consistency fail). Vì BA của dự án này có quy trình verification nghiêm túc — họ chạy một buổi peer review đọc chéo toàn bộ tài liệu trước khi bàn giao — lỗi được phát hiện ngay ở giai đoạn requirements. Khi truy lại, hóa ra phòng Marketing muốn cho phép kết hợp voucher (để đẩy doanh số), còn phòng Tài chính muốn giới hạn 1 voucher (để kiểm soát chi phí khuyến mãi). Đây thực chất là một xung đột stakeholder bị "đóng băng" thành mâu thuẫn trong tài liệu.

Bài học: Verification không chỉ là việc "bắt lỗi chính tả" của yêu cầu — nó là cơ chế phát hiện sớm những xung đột nghiệp vụ ẩn. Nếu lỗi này lọt xuống tới dev, đội sẽ build một logic, rồi phải đập đi làm lại khi một trong hai phòng phản đối lúc nghiệm thu. Phát hiện ở bước verify, chi phí xử lý chỉ là một cuộc họp 1 tiếng giữa Marketing và Tài chính.

Tình huống 3 — Bệnh viện số: validation bằng prototype cứu một module

Một dự án số hóa quy trình khám bệnh tại một bệnh viện tư ở TP.HCM có yêu cầu: "Bác sĩ nhập chẩn đoán và đơn thuốc trên màn hình khám." Yêu cầu này verified ổn — rõ ràng, testable. Nhưng BA quyết định validate bằng một prototype Figma click-through cho 5 bác sĩ trải nghiệm trước khi code.

Trong buổi đó, các bác sĩ phản hồi: màn hình bắt nhập đơn thuốc sau khi lưu chẩn đoán, nhưng thực tế họ thường vừa nghĩ chẩn đoán vừa kê thuốc song song, và một bệnh nhân có thể có nhiều chẩn đoán cùng lúc (ví dụ vừa tiểu đường vừa cao huyết áp). Luồng tuyến tính trong yêu cầu gốc sẽ khiến bác sĩ mất gấp đôi thời gian mỗi ca khám — với một bệnh viện khám 300 ca/ngày thì đây là thảm họa về năng suất.

Bài học: Validation đúng cách = cho đúng người dùng cuối trải nghiệm thứ cụ thể, không chỉ đưa văn bản cho họ đọc. Bác sĩ sẽ không bao giờ phát hiện ra vấn đề luồng nếu chỉ đọc dòng chữ "nhập chẩn đoán và đơn thuốc". Họ chỉ nhận ra khi click thử. Đây là lý do prototype/walkthrough là vũ khí validation mạnh nhất của BA.

Hướng dẫn từng bước

Đây là quy trình V&V thực dụng bạn có thể áp dụng ngay cho dự án của mình:

Bước 1 — Verify từng yêu cầu (self-check). Trước khi gửi cho ai, tự bạn rà từng requirement qua checklist Atomic / Complete / Consistent / Unambiguous / Testable. Mẹo: đọc to từng yêu cầu — nếu bạn phải dừng lại để giải thích "ý tôi là...", yêu cầu đó chưa đủ rõ.

Bước 2 — Verify toàn tập (cross-check). Soi cả tập yêu cầu để tìm mâu thuẫn, trùng lặp, lỗ hổng. Một kỹ thuật tốt: lập ma trận đối chiếu các yêu cầu liên quan (như voucher ở ví dụ 2) để phát hiện consistency fail.

Bước 3 — Peer review. Nhờ một BA hoặc kiến trúc sư đọc chéo. Mắt người thứ hai luôn thấy thứ bạn bỏ sót vì đã "quá quen" với tài liệu của mình.

Bước 4 — Gắn acceptance criteria. Với mỗi yêu cầu, viết rõ tiêu chí nghiệm thu (thường dạng Given-When-Then). Đây vừa là một phần của verification (testability), vừa là cầu nối sang đội QA. Nếu bạn không viết nổi acceptance criteria cho một yêu cầu, đó là dấu hiệu yêu cầu chưa đủ rõ.

Bước 5 — Validate với stakeholder. Chọn hình thức phù hợp: walkthrough tài liệu, demo prototype, hoặc structured walkthrough theo kịch bản. Ưu tiên cho stakeholder thấy thứ cụ thể. Đặt câu hỏi validation: "Nếu chúng tôi xây đúng cái này, nó có giúp anh/chị đạt mục tiêu X không?"

Bước 6 — Trace ngược về mục tiêu. Với mỗi yêu cầu, hỏi: nó phục vụ business objective nào? Yêu cầu nào "mồ côi" (không trace được lên mục tiêu) cần được chất vấn — có thể loại bỏ.

Bước 7 — Ghi nhận đồng thuận (sign-off). Lấy xác nhận từ đúng người có quyền quyết định, không phải bất kỳ ai. Lưu lại bằng văn bản/email để có cơ sở khi tranh chấp về sau.

Bước 8 — Lặp lại khi có thay đổi. V&V không phải làm một lần. Mỗi khi yêu cầu thay đổi, chạy lại verify (để giữ consistency) và validate (để chắc nó vẫn đúng nhu cầu).

Lỗi thường gặp & mẹo

Lỗi 1 — Nhầm lẫn verification với validation. Nhiều BA mới làm cẩn thận verification (viết tài liệu cực chuẩn) rồi tưởng đã xong, bỏ qua validation. Kết quả là xây đúng cách một thứ sai. Mẹo: luôn tự hỏi cả hai câu — "viết đúng chưa?" và "đúng thứ cần chưa?".

Lỗi 2 — Validate với sai người. Lấy sign-off từ trưởng phòng IT cho một yêu cầu nghiệp vụ mà người dùng cuối chưa từng xem. Mẹo: dùng kết quả phân tích stakeholder để xác định đúng người validate — người dùng thật, người ra quyết định, người chịu tác động.

Lỗi 3 — Tin rằng "stakeholder đọc rồi gật đầu" là đã validate. Người ta thường gật đầu cho qua khi đọc văn bản dài. Mẹo: validate bằng thứ cụ thể (prototype, mô hình quy trình, ví dụ số liệu), buộc họ phản ứng với một hình hài thực.

Lỗi 4 — Bỏ qua testability. Để lọt các yêu cầu kiểu "hệ thống phải dễ dùng", "phản hồi nhanh". Mẹo: mọi tính từ mơ hồ phải được lượng hóa thành con số đo được, nếu không thì không phải requirement mà chỉ là mong muốn.

Lỗi 5 — Verify một lần rồi quên. Tài liệu thay đổi nhưng không ai rà lại consistency, dẫn tới mâu thuẫn tích lũy dần. Mẹo: coi V&V là hoạt động liên tục, gắn vào mỗi lần cập nhật yêu cầu.

Lỗi 6 — Gold-plating. Thêm yêu cầu "cho hay" mà không trace được về mục tiêu nào. Mẹo: mỗi yêu cầu phải trả lời được câu "ai cần cái này và để đạt mục tiêu gì?".

Bài tập thực hành

Bài 1 — Verify. Cho yêu cầu sau, hãy chỉ ra nó vi phạm những tiêu chí chất lượng nào và viết lại cho đạt chuẩn: > "Hệ thống phải xử lý thanh toán nhanh, an toàn, và thân thiện với người dùng, đồng thời gửi email xác nhận." Gợi ý: tìm các vi phạm về atomic, unambiguous và testable. Bạn sẽ tách được tối thiểu 3 yêu cầu và phải lượng hóa "nhanh", định nghĩa "an toàn", "thân thiện".

Bài 2 — Phát hiện mâu thuẫn. Lấy một tài liệu yêu cầu (hoặc tự viết 10 yêu cầu) cho tính năng giỏ hàng. Cố tình cài 2 yêu cầu mâu thuẫn, rồi đưa cho đồng nghiệp peer review xem họ có bắt được không. Ghi lại thời gian họ cần để phát hiện.

Bài 3 — Thiết kế buổi validation. Chọn một tính năng bất kỳ trong dự án của bạn. Lập kế hoạch validation: (a) ai là đúng người cần validate, (b) bạn sẽ cho họ thấy thứ gì cụ thể (văn bản, prototype, hay mô hình), (c) 3 câu hỏi validation bạn sẽ đặt để chắc đây là "đúng thứ cần xây".

Bài 4 — Acceptance criteria. Viết acceptance criteria dạng Given-When-Then cho yêu cầu: "Khách hàng đặt lại mật khẩu qua email." Nếu bạn không viết nổi tiêu chí nghiệm thu, đó là dấu hiệu yêu cầu gốc chưa đủ rõ — hãy bổ sung.

Tóm tắt

  • Verification kiểm tra chất lượng nội tại của tài liệu yêu cầu: "Ta xây đúng cách chưa?" Dùng checklist Atomic, Complete, Consistent, Concise, Feasible, Unambiguous, Testable, Prioritized, Understandable.
  • Validation xác nhận yêu cầu đúng nhu cầu và mang lại giá trị: "Ta xây đúng thứ chưa?" Trace ngược về mục tiêu kinh doanh và lấy đồng thuận từ đúng stakeholder.
  • Một yêu cầu cần cả hai: verified hoàn hảo mà fail validation là xây đúng cách một thứ sai (ví dụ VíPay); ngược lại đúng nhu cầu mà viết mâu thuẫn thì cũng không dùng được.
  • Verification giỏi nhất nhờ peer review và acceptance criteria; validation mạnh nhất khi cho đúng người trải nghiệm prototype/walkthrough cụ thể, không chỉ đọc văn bản (ví dụ bệnh viện).
  • V&V là hoạt động liên tục, lặp lại mỗi khi yêu cầu thay đổi — không phải làm một lần rồi xong.
  • Phát hiện lỗi yêu cầu sớm rẻ hơn gấp nhiều lần so với phát hiện ở production. V&V chính là tấm lưới an toàn đó, và là kỹ năng phân biệt BA chuyên nghiệp với người chỉ "ghi chép yêu cầu".