Tìm Hiểu Về Function Point Analysis (FPA)
Function Point Analysis (FPA) là một phương pháp tiêu chuẩn hóa để đo lường kích thước chức năng của một hệ thống phần mềm, dựa trên góc nhìn của người dùng. Thay vì đếm dòng code (vốn phụ thuộc vào ngôn ngữ và lập trình viên), FPA định lượng "những gì" phần mềm làm, chứ không phải "cách" nó được làm ra. Trong bối cảnh Agile, FPA cung cấp một thước đo khách quan, bổ sung cho phương pháp định cỡ tương đối như Story Points.
Các Thành Phần Cốt Lõi của FPA
FPA phân loại các chức năng của phần mềm thành năm loại, chia làm hai nhóm chính:
1. Nhóm Chức Năng Dữ Liệu (Data Functions)
Đây là các chức năng liên quan đến việc lưu trữ và truy xuất dữ liệu.
- Internal Logical File (ILF): Các nhóm dữ liệu logic được duy trì và quản lý bên trong phạm vi của ứng dụng. Ví dụ: Bảng
Danh sách Sinh viên
trong một hệ thống quản lý sinh viên. - External Interface File (EIF): Các nhóm dữ liệu logic được ứng dụng tham chiếu đến nhưng lại được duy trì và quản lý bởi một ứng dụng bên ngoài. Ví dụ: Ứng dụng của bạn đọc dữ liệu
Tỷ giá ngoại tệ
từ một hệ thống của ngân hàng khác.
2. Nhóm Chức Năng Giao Dịch (Transactional Functions)
Đây là các chức năng xử lý dữ liệu, thể hiện các quy trình nghiệp vụ.
- External Input (EI): Các quy trình nghiệp vụ nhận dữ liệu từ bên ngoài vào để thêm mới, sửa đổi hoặc xóa dữ liệu trong một ILF. Ví dụ: Chức năng "Thêm sinh viên mới" nhập thông tin và lưu vào bảng
Danh sách Sinh viên
. - External Output (EO): Các quy trình nghiệp vụ gửi dữ liệu ra bên ngoài, thường dưới dạng báo cáo hoặc tệp tin, và có chứa logic xử lý hoặc tính toán. Ví dụ: Chức năng "In bảng điểm trung bình của lớp", hệ thống phải tính toán điểm trung bình trước khi xuất ra.
- External Inquiry (EQ): Các quy trình nghiệp vụ truy xuất và hiển thị dữ liệu mà không thực hiện tính toán hay cập nhật dữ liệu nào. Ví dụ: Chức năng "Tìm kiếm sinh viên theo mã số" chỉ đơn giản là tìm và hiển thị thông tin.
Quy Trình Tính Toán Function Point
Quá trình tính toán FPA gồm các bước chính sau:
- Xác định Phạm vi và Ranh giới: Xác định rõ ứng dụng nào đang được đo và ranh giới (boundary) giữa nó và các ứng dụng bên ngoài.
- Đếm các Thành phần: Đếm số lượng của từng loại trong năm thành phần (ILF, EIF, EI, EO, EQ).
- Đánh giá Độ phức tạp: Mỗi thành phần được phân loại độ phức tạp là Thấp (Low), Trung bình (Average), hoặc Cao (High) dựa trên các quy tắc chuẩn (ví dụ: số lượng trường dữ liệu, số lượng tệp tham chiếu).
- Tính Unadjusted Function Point (UFP): Mỗi cặp (thành phần, độ phức tạp) sẽ tương ứng với một trọng số điểm nhất định. UFP là tổng điểm của tất cả các thành phần.
Loại Chức Năng | Thấp | Trung bình | Cao |
---|---|---|---|
ILF | 7 | 10 | 15 |
EIF | 5 | 7 | 10 |
EI | 3 | 4 | 6 |
EO | 4 | 5 | 7 |
EQ | 3 | 4 | 6 |
- Tính Hệ số Điều chỉnh (Value Adjustment Factor - VAF): Đánh giá 14 yếu tố đặc tính chung của hệ thống (như hiệu năng, khả năng tái sử dụng, bảo mật) theo thang điểm từ 0 (không ảnh hưởng) đến 5 (ảnh hưởng lớn). VAF được tính theo công thức:
VAF = 0.65 + (0.01 * Tổng điểm 14 yếu tố)
. - Tính Function Point cuối cùng (Adjusted FP):
FP = UFP * VAF
.
Áp Dụng FPA trong Môi trường Agile
Việc áp dụng FPA "nguyên bản" vào Agile có một số thách thức do FPA đòi hỏi yêu cầu phải đủ rõ ràng, trong khi Agile chấp nhận sự thay đổi và hoàn thiện yêu cầu theo thời gian. Tuy nhiên, FPA vẫn mang lại nhiều giá trị nếu được điều chỉnh hợp lý.
So Sánh FPA và Story Points
Tiêu chí | Function Point (FP) | Story Point (SP) |
---|---|---|
Bản chất | Thước đo kích thước tuyệt đối, khách quan. | Thước đo nỗ lực tương đối, chủ quan theo từng đội. |
Đơn vị | Đơn vị chuẩn hóa, có thể so sánh giữa các dự án. | Đơn vị riêng của mỗi đội, không thể so sánh trực tiếp. |
Yếu tố đo | Chỉ đo chức năng nghiệp vụ (functional). | Thường bao gồm cả độ phức tạp, rủi ro, sự không chắc chắn. |
Thời điểm đo | Cần yêu cầu tương đối chi tiết. | Có thể ước tính sớm với yêu cầu ở mức cao. |
Mục đích | Lập kế hoạch dài hạn, dự toán ngân sách, đo lường năng suất. | Lập kế hoạch Sprint, đo vận tốc (velocity) của đội. |
Cách Thức Áp Dụng FPA trong Agile
- Định cỡ cho Release và Epic: FPA rất phù hợp để ước tính kích thước tổng thể của một Release hoặc các Epic lớn. Dựa trên số FP, người quản lý có thể dự toán ngân sách và thời gian ở mức cao, độc lập với đội ngũ phát triển cụ thể.
- Phân tích User Story:
- Một User Story có thể không tương ứng 1-1 với một chức năng giao dịch (EI, EO, EQ). Một chức năng hoàn chỉnh có thể được chia thành nhiều Story.
- Cách tiếp cận: Khi phân tích một Story, BA hoặc cả đội sẽ xác định xem nó đóng góp vào chức năng giao dịch nào và liên quan đến các tệp dữ liệu (ILF/EIF) nào. Việc đếm FP sẽ được thực hiện trên các chức năng nghiệp vụ hoàn chỉnh thay vì trên từng Story riêng lẻ.
- Sử dụng "Estimated FPA": Trong giai đoạn đầu khi yêu cầu chưa chi tiết, có thể sử dụng phương pháp FPA ước tính nhanh (như NESMA Estimated FPA) để có cái nhìn tổng quan về quy mô mà không cần đi sâu vào chi tiết độ phức tạp.
- Kết hợp cả hai:
- Dùng FPA cho Kế hoạch Release: Ước tính toàn bộ backlog bằng FP để có dự báo tổng thể.
- Dùng Story Points cho Kế hoạch Sprint: Đội ngũ phát triển sử dụng Story Points để lên kế hoạch cho từng Sprint.
- Xây dựng mối tương quan: Sau vài Sprint, đội có thể xác định được một tỷ lệ tương quan trung bình, ví dụ: "1 FP ≈ 8 Story Points" đối với đội của họ. Mối tương quan này giúp liên kết kế hoạch chiến lược (dựa trên FP) và kế hoạch thực thi (dựa trên SP).
Tóm lại, Function Point Analysis không phải là sự thay thế cho Story Points trong Agile, mà là một công cụ bổ trợ mạnh mẽ. Nó giúp mang lại tính khách quan, khả năng đo lường và dự báo tốt hơn ở cấp độ dự án và danh mục đầu tư, trong khi vẫn giữ được sự linh hoạt của Story Points ở cấp độ đội nhóm.