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

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

0 0 6

Người đăng: Tran Truong

Theo Viblo Asia

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)

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. Đế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.
  6. 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:

    1. 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).
    2. Hệ thống kiểm tra xem sản phẩm có còn trong kho không.
    3. 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.
    4. 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ẩmsố 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ôngsố lượng giỏ hàng mới.

➡️ 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.

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