Definition of Done và Bí quyết Áp Dụng Hiệu Quả Trong Dự Án Agile

definition of done là gì?

Cập nhật lần cuối vào 26/09/2023 bởi Phạm Mạnh Cường

Đối với những người hoạt động trong lĩnh vực quản lý dự án Agile, Definition of Done (Định nghĩa về đã hoàn thành) có thể trở thành một vấn đề hoặc nỗi lo không dễ giải quyết. Không chỉ đơn thuần là một danh sách các tiêu chí kỹ thuật, Definition of Done là một hướng dẫn quan trọng, một phương tiện quản lý chất lượng và cơ hội để tối ưu hóa quy trình làm việc. Trong bài viết này, chúng ta sẽ khám phá sâu hơn về khái niệm này và tại sao nó trở thành trụ cột không thể thiếu trong việc đảm bảo thành công trong các dự án Agile.

Definition of Done là gì?

Trong phương pháp Agile, Definition of Done – DoD là một thỏa thuận của nhóm sản phẩm về tập hợp các điều kiện hoặc tiêu chuẩn cần phải thỏa mãn trước khi coi một mục tiêu trong backlog là thực sự đã hoàn thành. DoD đại diện cho bộ quy tắc mà một sản phẩm hoặc tính năng phải tuân theo để được xem xét là đã hoàn tất.

Nhóm sản phẩm sử dụng Definition of Done để mang lại sự nhất quán cho các hoạt động mà họ thực hiện. 

Xem thêm: Tổng quan về Agile (2023)

Mục tiêu của Definition of Done là gì?

Mục tiêu của Definition of Done (DoD) bao gồm:

  • Xây dựng sự thấu hiểu chung trong nhóm về chất lượng và tính chính trực.
  • Sử dụng danh sách kiểm tra để đảm bảo kiểm tra tất cả các User Story (hoặc Product Backlog Item – PBI).
  • Đảm bảo rằng tất cả sản phẩm được giao trong giai đoạn cuối cùng có chất lượng cao và mọi người tham gia đều hiểu rõ về chất lượng đó.

Lợi ích của Definition of Done là gì?

Giúp nhóm làm việc hiệu quả theo kế hoạch

Khi nhóm làm việc có một danh sách rõ ràng, cụ thể về các tiêu chí mà họ phải đáp ứng để coi công việc của họ đã hoàn thành, nhóm Agile có thể lập kế hoạch công việc của họ một cách hiệu quả hơn. Họ có thể ước tính thời gian hoàn thành. DoD có thể giúp họ tập trung vào những điều quan trọng. Do đó, họ cũng ít có khả năng lạc hướng hoặc phải đối mặt với việc không đáp ứng được thời hạn trong các sprint.

Làm tăng độ chính xác của các ước tính cho nhóm làm việc

Definition of Done nêu rõ ràng và minh bạch về những gì một nhóm Agile cần thực hiện để xem xét dự án là hoàn thành. Điều này giúp tạo sự đồng thuận trong nhóm và cung cấp sự minh bạch cho toàn bộ tổ chức. Nhờ có một hiểu biết chung về quy trình hoàn thiện và phát hành sản phẩm, nhóm có khả năng cung cấp các ước tính thời gian chính xác hơn cho các bên liên quan bên ngoài về thời gian kỳ vọng để hoàn thành dự án.

Giúp nhóm làm việc cùng nhau hiệu quả hơn

Khi họ cùng nhau thảo luận về công việc sắp tới— chẳng hạn như trong quá trình lập kế hoạch Sprint —một nhóm Scrum với Definition of Done đã được thống nhất, đã có sự hiểu biết chung về những gì mỗi hạng mục trong Sprint sẽ yêu cầu. Điều này sẽ giúp nhóm phân công nhiệm vụ dễ dàng hơn, làm việc gắn kết và cuối cùng phát triển các sản phẩm chất lượng cao hơn một cách nhất quán.

Ví dụ về Definition of Done 

Dưới đây là một ví dụ về một Definition of Done trong một dự án phần mềm:

User Story: “Người dùng cần phải có thể đăng nhập vào ứng dụng bằng tên đăng nhập và mật khẩu.”

Definition of Done cho User Story này có thể bao gồm các yêu cầu sau:

  • Mã nguồn đã được viết và kiểm tra kỹ lưỡng.
  • Tất cả các unit test (kiểm thử đơn vị) liên quan đến tính năng đăng nhập đã được viết và chạy thành công.
  • Tính năng đã được kiểm tra với các trường hợp kiểm thử tự động (automated test cases) để đảm bảo tính ổn định.
  • Giao diện người dùng (UI) đã được thiết kế và triển khai, bao gồm cả trang đăng nhập và quá trình quên mật khẩu (nếu có).
  • Tính năng đã được tích hợp vào phiên bản hoàn chỉnh của ứng dụng và chạy mượt mà trên môi trường phát triển (development environment).
  • Tài liệu hướng dẫn người dùng cuối (end-user documentation) đã được cập nhật để bao gồm thông tin về cách sử dụng tính năng đăng nhập.
  • Code đã được kiểm tra bởi đồng đội và đã được phê duyệt.
  • Tính năng đã được kiểm tra lại bởi Product Owner hoặc người đại diện của khách hàng và đã được chấp nhận.

Khi tất cả các điều kiện trong Definition of Done đã được đáp ứng, tính năng đăng nhập này được xem xét là đã hoàn thành và có thể được triển khai vào sản phẩm cuối cùng.

Có những loại Definition of Done nào?

Định nghĩa về Definition of Done – DoD đóng một vai trò quan trọng trong việc đảm bảo sự rõ ràng và vai trò trách nhiệm của team trong dự án phát triển phần mềm. Nó giúp các thành viên trong nhóm phân biệt rõ ràng các nhiệm vụ của họ, duy trì một hiểu biết chung và tạo điều kiện thuận lợi cho việc tự đánh giá hiệu quả. Thông thường, có ba loại chính của DoD: Definition of Done cho User Story, Definition of Done cho Sprint và Definition of Done cho Release.

Definition of Done cho User Story

  • Mỗi user story phải có tiêu chí chấp nhận (acceptance criteria) được xác định rõ ràng; nếu không, nó không thể được thêm vào Bảng Sprint trong buổi Sprint Planning.
  • Mã nguồn cần phải được kiểm tra đánh giá chéo và kết quả kiểm tra phải được ghi chép.
  • User story dùng phải vượt qua kiểm thử đơn vị (unit tests), đạt được ít nhất 70% số lượng các trường hợp kiểm thử (tùy thuộc vào khả năng của nhóm và đặc thù của dự án).
  • Mã nguồn phải được hoàn thiện và triển khai lên máy chủ và phải chạy mà không gây ra lỗi với các công cụ kiểm thử tự động.
  • Không được phép tồn tại bất kỳ lỗi (bug) nào liên quan đến tính năng của user story.
  • Product Owner phải tiến hành kiểm tra và chấp nhận khi user story đáp ứng tiêu chí chấp nhận (acceptance criteria).

Definition of Done cho Sprint

  • Product Owner phải xác định mục tiêu cụ thể cho Sprint.
  • Tất cả user story phải hoàn thành và được Product Owner chấp nhận.
  • Nhóm phát triển phải triển khai sản phẩm lên máy chủ trước thời hạn của Sprint Review.
  • Nhóm phát triển phải thực hiện demo sản phẩm thành công.
  • Các tính năng liên quan đến các user story đã chọn để phát triển không được gây lỗi cho các tính năng đã phát hành trước đó.
  • Một số tài liệu thiết kế phải được bàn giao trước thời hạn của Sprint Review.

Definition of Done cho Release

  • Sản phẩm phải hoàn thành trước ngày phát hành.
  • Phải có tài liệu ghi thông tin về phiên bản phát hành và hướng dẫn cài đặt.
  • Phải có tài liệu hướng dẫn sử dụng cho người dùng cuối liên quan đến các tính năng có trong kế hoạch phát hành.
  • Tất cả user story trong phiên bản phát hành đã hoàn thành và đã được kiểm tra và chấp nhận.
  • Không được còn tồn đọng bất kỳ lỗi nào liên quan đến phiên bản phát hành.
  • Sản phẩm đã hoàn thành kiểm thử trên môi trường thử nghiệm độc lập.

Cách tạo Definition of Done trong dự án?

Tạo cuộc họp

Tập hợp nhóm cùng lại và giải thích mục đích của buổi họp là đồng thuận về các hoạt động cần thực hiện để một mục trong danh sách công việc chưa hoàn thành được xem xét là “đã hoàn thành.”

Đóng góp ý kiến

Khuyến khích các thành viên trong nhóm đóng góp ý kiến về những công việc và tiêu chí nào cần được đáp ứng khi giao một mục trong danh sách công việc chưa hoàn thành.

Nếu cuộc họp diễn ra trực tiếp, cung cấp các tờ ghi chú dán và bút viết để các thành viên ghi ý kiến của họ, một công việc trên một tờ.

Nếu cuộc họp diễn ra từ xa, yêu cầu mọi người nhập ý kiến của họ vào không gian cộng tác trực tuyến.

Đánh giá và Hiệu chỉnh

Khi sự tương tác giảm đi và không còn ý kiến mới, quay lại xem xét danh sách.

Yêu cầu nhóm xem xét xem có hợp lý để mong đợi tất cả các mục công việc đã được đề xuất cho mỗi mục trong danh sách công việc chưa hoàn thành hay không.

Phân nhóm các mục trùng lặp lại và làm rõ các mục mà thành viên viết mà không có sự không chắc chắn.

Tiếp tục hiệu chỉnh

Tiếp tục điều chỉnh danh sách cho đến khi nhóm cảm thấy thoải mái với danh sách kết quả, thường sẽ ngắn hơn so với danh sách ban đầu. Danh sách cuối cùng này sẽ tạo nên Definition of Done ban đầu của nhóm.

Sử dụng Definition of Done

Theo dõi và kiểm tra Definition of Done để xác định xem một mục công việc chưa hoàn thành có thể giao cho các bên liên quan hay không trong quá trình phát triển tiếp theo.

Sai lầm thường gặp với Definition of Done?

3 Sai lầm của các Nhóm Agile khi sử dụng Definition of Done:

Bao gồm những yêu cầu nằm ngoài tầm kiểm soát của nhóm

Một sai lầm phổ biến mà các nhóm Agile thường mắc phải là việc đưa yêu cầu đã chấp thuận từ các bên liên quan bên ngoài nhóm sản phẩm vào Definition of Done. Nếu Definition of Done yêu cầu phải có sự chấp thuận từ các bên liên quan bên ngoài, thì nhóm sản phẩm sẽ không có quyền kiểm soát cuối cùng về thời điểm hoặc khả năng hoàn thành công việc của họ.

Scrum.org giải thích rằng điều này thể hiện sự khác biệt giữa khả năng giao hàng (shippable) và khả năng phát hành (releasable). Một nhóm có thể muốn cả hai. Một user story hoặc một sản phẩm tăng cường khác sẽ được coi là có khả năng giao hàng khi nhóm sản phẩm hoàn thành tất cả các công việc đã thỏa thuận liên quan đến mục đó. Nhưng ở giai đoạn này, mục đó vẫn cần phải trải qua quy trình chấp thuận từ các bên liên quan bổ sung. Nhóm có thể thậm chí mô tả giai đoạn này là Definition of Almost Done của họ.

Khi các bên liên quan đã ký duyệt, sau đó nhóm mới xem xét câu chuyện người dùng hoặc mục khác có khả năng phát hành. Điều này sẽ là Definition of Done của họ.

Đưa quá nhiều chi tiết vào danh sách yêu cầu

Sai lầm khác mà các nhóm Agile thường mắc phải là việc đưa ra danh sách các tiêu chí cực kỳ chi tiết để đưa các mục trong danh sách công việc chưa hoàn thành đạt trạng thái Đã hoàn thành. Bao gồm quá nhiều yêu cầu và quá nhiều chi tiết có thể làm chậm tiến trình của nhóm và gây ra sự hiểu nhầm và tranh cãi về khi nào một mục được xem là Đã hoàn thành thực sự.

Một DoD hiệu quả nên chỉ mô tả các bước tối thiểu cần thiết để chuyển một user story tiêu chuẩn hoặc một mục trong danh sách công việc chưa hoàn thành từ trạng thái đang thực hiện sang hoàn thành. Để làm cho quá trình này hiệu quả và có thể lặp lại, nhóm nên duy trì danh sách yêu cầu của họ ở mức cao cấp. Nơi để bao gồm một tập hợp chi tiết yêu cầu cho một dự án cụ thể là tiêu chí chấp nhận của nhóm, mô tả những yêu cầu cụ thể cần thiết cho từng công việc cụ thể.

Lưu ý: Definition of Done của nhóm có thể thay đổi theo thời gian và bao gồm nhiều yêu cầu hơn khi nhóm trở nên kỹ năng và đoàn kết hơn. Nhưng khi họ phát triển danh sách yêu cầu ban đầu, nhóm nên tuân theo cách tiếp cận tối thiểu này và chỉ bao gồm các tiêu chí mà sẽ giúp họ đưa một mục sản phẩm tới Đã hoàn thành.

Chỉ dựa vào danh sách yêu cầu bằng lời nói

Để phương pháp Definition of Done hiệu quả, nhóm Agile phải làm cho danh sách yêu cầu của họ trở nên rõ ràng. Lý tưởng nhất, hãy giữ danh sách được đăng tải ở nơi nổi bật để nhóm có thể xem xét nó hàng ngày.

Agile Alliance giải thích, nếu nhóm chỉ có sự đồng thuận bằng lời nói về ý nghĩa của việc hoàn thành một công việc, thì Definition of Done của nhóm có thể mất một phần đáng kể của tính hiệu quả của nó. Một phần quan trọng của giá trị của phương pháp này phụ thuộc vào việc nó phải là một thỏa thuận của nhóm được viết ra định nghĩa các tiêu chí cần thiết để xem xét một dự án là hoàn thành. Nhóm cũng nên có khả năng xem xét các tiêu chí đó một cách đều đặn.

Kết luận 

Chúng ta đã tìm hiểu về khái niệm “definition of done” và tầm quan trọng của nó trong quá trình phát triển phần mềm. Không chỉ là một danh sách các tiêu chí hoàn thành, “definition of done” còn là một công cụ quản lý chất lượng và cải tiến liên tục. Để đảm bảo dự án phát triển thành công, việc hiểu và áp dụng chính xác khái niệm này là điều rất quan trọng. Tôi hy vọng bài viết này đã giúp bạn hiểu rõ hơn về “definition of done” và cách nó có thể giúp tối ưu hóa quy trình phát triển phần mềm của bạn.

PMA luôn trân trọng sự tin tưởng và ủng hộ từ cựu học viên. Chính vì vậy, chúng tôi triển khai chính sách referral hấp dẫn dành cho tất cả các khóa học tại PMA
– Tặng ngay 300k cho cựu học viên giới thiệu thành công 1 khách hàng mới.
– Giảm ngay 300k cho học viên đăng ký học mà được cựu học viên giới thiệu.
Chia sẻ cơ hội học tập tuyệt vời này với bạn bè và đồng nghiệp của bạn ngay hôm nay!