- vừa được xem lúc

Định Cỡ Chức Năng Trong Agile

0 0 6

Người đăng: Tran Truong

Theo Viblo Asia

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:

  1. 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.
  2. Đế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).
  3. Đá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).
  4. 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
  1. 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ố).
  2. 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

  1. Đị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ể.
  2. 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ẻ.
  3. 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.
  4. 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.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Các mô hình phát triển phần mềm

1. Định nghĩa. Mô hình phát triển phần mềm hay quy trình phát triển phần mềm xác định các pha/ giai đoạn trong xây dựng phần mềm. Có nhiều loại mô hình phát triển phần mềm khác nhau ví dụ như:.

0 0 130

- vừa được xem lúc

Tìm hiểu về cách thiết kế Class Diagram

Trong 1 dự án, việc tổ chức code cũng như clean code là 1 điều rất quan trọng, nếu cách thiết kế các class hợp lý và rõ ràng sẽ giúp ích rất nhiều cho việc mở rộng và bảo trì sau này. Để làm được điều này chúng ta cần phải có 1 bản thiết kế Class Diagram thật sự hợp lý.

0 0 115

- vừa được xem lúc

Chuyện thay đổi

Thay đổi là một thứ gì đó luôn luôn đáng sợ. Cách đây vài tháng mình có duyên đi làm cho một banking solution tên là X.

0 0 69

- vừa được xem lúc

Tôi trên con đường nỗ lực trở thành Agile Leader - Phần I

Mong muốn chia sẻ với mọi người về những trăn trở, những niềm vui, những bài học tích lũy, những mảnh kiến thức hay góp nhặt được trên con đường phấn đấu trở thành một Agile leader. Phần đầu này tôi muốn chia sẻ về định hướng, hay nói cách khác là điều gì cá nhân cần tập trung để trở thành một Agile

0 0 40

- vừa được xem lúc

9 ý tưởng cho buổi Retrospective hiệu quả!

Với những bạn đang vận hành dự án theo Scrum hoặc ít nhất đang cố gắng thử vận hành, ắt hẳn biết đến một scrum event quan trọng - Retrospective. Một event để scrum team cùng nhìn nhận lại lại cách thức làm việc, hợp tác với nhau hay nói chung là các vấn đề về quy trình, con người trong dự án.

0 0 90

- vừa được xem lúc

Mô hình phát triển phần mềm: Agile

1. Agile là gì. 2. Phát triển phần mềm theo Agile.

0 1 647