Định Cỡ Chức Năng Trong Agile: COSMIC
chúng ta sẽ tiếp tục với phương pháp định cỡ chức năng COSMIC (Common Software Measurement International Consortium). Đây là một phương pháp "thế hệ thứ hai" của Function Point, được thiết kế để đơn giản hơn, linh hoạt hơn và phù hợp với nhiều loại phần mềm khác nhau, đặc biệt là trong môi trường Agile.
COSMIC Method Là Gì?
COSMIC là một phương pháp tiêu chuẩn hóa (ISO/IEC 19761) để đo lường kích thước chức năng của phần mềm. Cốt lõi của COSMIC dựa trên một nguyên tắc rất cơ bản: hầu hết chức năng của phần mềm đều liên quan đến việc di chuyển dữ liệu (data movement).
Đơn vị đo của COSMIC là 1 CFP (COSMIC Function Point), tương ứng với một lần di chuyển dữ liệu.
Các Nguyên Tắc và Thành Phần Cốt Lõi
COSMIC xác định kích thước phần mềm bằng cách đếm số lượng các lần di chuyển dữ liệu qua một "ranh giới" (boundary) của một quy trình chức năng.
1. Các Loại Di Chuyển Dữ Liệu (Data Movements)
Có bốn loại di chuyển dữ liệu cơ bản, đây là trái tim của phương pháp COSMIC:
- Entry (E): Di chuyển một nhóm dữ liệu từ người dùng vào quy trình chức năng. Ví dụ: Người dùng nhập thông tin vào form "Tạo tài khoản mới".
- Exit (X): Di chuyển một nhóm dữ liệu từ quy trình chức năng ra cho người dùng. Ví dụ: Hệ thống hiển thị thông báo "Tạo tài khoản thành công".
- Read (R): Di chuyển một nhóm dữ liệu từ bộ nhớ bền vững (persistent storage) vào quy trình chức năng. Ví dụ: Quy trình cần đọc thông tin "Danh sách các tỉnh thành" từ cơ sở dữ liệu để hiển thị.
- Write (W): Di chuyển một nhóm dữ liệu từ quy trình chức năng vào bộ nhớ bền vững. Ví dụ: Hệ thống lưu thông tin tài khoản mới vào cơ sở dữ liệu.
2. Quy Trình Chức Năng (Functional Process)
Một quy trình chức năng là một tập hợp các bước mà phần mềm thực hiện để đáp ứng một yêu cầu của người dùng. Mỗi quy trình được kích hoạt bởi một sự kiện kích hoạt (triggering event) từ người dùng.
Ví dụ: Trong chức năng "Đăng nhập", sự kiện kích hoạt là khi người dùng nhấn nút "Đăng nhập". Quy trình chức năng bao gồm việc nhận thông tin đăng nhập, kiểm tra thông tin đó với cơ sở dữ liệu và trả về kết quả.
Quy Trình Đo Lường Bằng COSMIC
Việc đo lường bằng COSMIC rất logic và có cấu trúc, thường bao gồm các bước sau:
- Xác định Phạm vi (Scope): Quyết định phần mềm hoặc thành phần nào sẽ được đo.
- Xác định Người dùng Chức năng (Functional Users): Xác định các tác nhân (người dùng, hệ thống khác) tương tác với phần mềm.
- Xác định Sự kiện Kích hoạt (Triggering Events): Liệt kê các sự kiện từ người dùng chức năng khởi động các quy trình.
- Mô tả các Quy trình Chức năng: Với mỗi sự kiện kích hoạt, mô tả các bước mà phần mềm thực hiện.
- Đếm các Lần Di chuyển Dữ liệu: Đây là bước quan trọng nhất. Với mỗi quy trình chức năng, bạn sẽ đếm:
- Mỗi Entry (E) được tính là 1 CFP.
- Mỗi Exit (X) được tính là 1 CFP.
- Mỗi Read (R) được tính là 1 CFP.
- Mỗi Write (W) được tính là 1 CFP.
- Tổng hợp Kích thước: Kích thước của một quy trình chức năng là tổng số CFP của các lần di chuyển dữ liệu trong quy trình đó. Kích thước của toàn bộ phần mềm là tổng CFP của tất cả các quy trình chức năng.
Ví dụ Thực tế: Chức năng "Thêm Sản Phẩm vào Giỏ Hàng"
Hãy xem xét một User Story trong Agile: "Là một người mua hàng, tôi muốn thêm một sản phẩm vào giỏ hàng để có thể mua nó sau này."
-
Sự kiện kích hoạt: Người dùng nhấn nút "Thêm vào giỏ hàng".
-
Quy trình chức năng:
- Người dùng cung cấp thông tin về sản phẩm và số lượng muốn thêm (ví dụ: ID sản phẩm, số lượng).
- Hệ thống kiểm tra xem sản phẩm có còn trong kho không.
- Hệ thống lưu thông tin sản phẩm và số lượng vào giỏ hàng của người dùng.
- Hệ thống hiển thị thông báo thành công và cập nhật số lượng sản phẩm trong biểu tượng giỏ hàng.
-
Đếm CFP:
- E (Entry): 1 CFP cho việc nhận
ID sản phẩm
vàsố lượng
từ người dùng. - R (Read): 1 CFP cho việc đọc thông tin
tồn kho
của sản phẩm từ CSDL. - W (Write): 1 CFP cho việc ghi/cập nhật thông tin
giỏ hàng
vào CSDL. - X (Exit): 1 CFP cho việc hiển thị
thông báo thành công
vàsố lượng giỏ hàng
mới.
- E (Entry): 1 CFP cho việc nhận
➡️ Tổng kích thước chức năng này = 4 CFP.
COSMIC so với FPA và Story Points
Tiêu chí | COSMIC | FPA (truyền thống) | Story Points |
---|---|---|---|
Nguyên tắc | Dựa trên sự di chuyển dữ liệu đơn giản. | Phân loại phức tạp thành 5 loại (ILF, EIF, EI, EO, EQ). | Ước tính nỗ lực tương đối (phức tạp, rủi ro, không chắc chắn). |
Độ chi tiết | Có thể áp dụng ở nhiều mức độ chi tiết (từ Epic đến User Story). | Cần yêu cầu tương đối chi tiết và ổn định. | Rất linh hoạt, có thể ước tính ở mức cao. |
Tính khách quan | Rất cao. Các quy tắc đếm rõ ràng, ít mơ hồ. | Tương đối cao, nhưng việc đánh giá độ phức tạp (Low/Avg/High) có thể chủ quan. | Thấp. Hoàn toàn chủ quan và phụ thuộc vào từng đội. |
Sự phù hợp | Rất phù hợp với Agile, phần mềm thời gian thực, ứng dụng nghiệp vụ. | Phù hợp hơn với các dự án Waterfall truyền thống. | Là phương pháp định cỡ chính trong nhiều framework Agile. |
Tại sao COSMIC phù hợp với Agile?
- Đơn giản và nhanh chóng: Việc đếm 4 loại di chuyển dữ liệu dễ hiểu và áp dụng nhanh hơn nhiều so với việc phân loại phức tạp của FPA.
- Linh hoạt: Bạn có thể đo kích thước của một User Story, một Feature hay một Epic đều được. Khi yêu cầu thay đổi hoặc được làm rõ, việc cập nhật số CFP cũng rất dễ dàng.
- Hỗ trợ phân rã yêu cầu: Nguyên tắc của COSMIC giúp các BA và Product Owner suy nghĩ về cách chia nhỏ một yêu cầu lớn thành các quy trình chức năng nhỏ hơn, dễ quản lý hơn.
- Cung cấp thước đo khách quan: COSMIC cung cấp một con số ổn định về "kích thước", giúp đo lường năng suất (velocity tính bằng CFP/sprint) một cách khách quan và có thể so sánh giữa các đội hoặc các dự án khác nhau.
Tóm lại, COSMIC là một phương pháp hiện đại, tinh gọn và mạnh mẽ để đo lường kích thước phần mềm. Trong Agile, nó là một công cụ tuyệt vời để bổ sung cho Story Points, giúp đội ngũ có được những dự báo chính xác hơn, lập kế hoạch tốt hơn và đo lường hiệu suất một cách minh bạch.
All rights reserved