Kế hoạch Phát hành trong Scrum

Trong Agile/Scrum, việc lập kế hoạch phát hành là một việc đơn giản hơn rất nhiều so với sử dụng Gantt Chart trong các mô hình truyền thống. Một cách phổ biến để lập kế hoạch phát hành là sử dụng tốc độ của nhóm và biểu đồ Release Burndown dựa trên Product Backlog đầy đủ, các hạng mục đã được ước lượng theo ước tính linh hoạt.

release burndown chart

Hình 1. Biều đồ Release Burndown

Vận tốc nhóm là số điểm mà nhóm hoàn thành được trong một sprint. Vận tốc của nhóm trong Hình 1 là 50/8= 6.25 điểm/sprint.
Bài này sẽ xem xét một số trường hợp của kế hoạch phát hành:

  1. Khi có một deadline định sẵn
    Nhóm Scrum cùng làm việc để biết được tốc độ của nhóm. Sau đó xem xét những tính năng nào có thể hoàn thành được tới thời điểm đó.
    Ví dụ, Hình 1 và deadline là ở sprint 12, lúc đó nhóm được ước lượng là sẽ hoàn thành khoảng 12 * 6.25 = 75 điểm. Vậy PO phải làm việc để tái ưu tiên lại các hạng mục để tới thời điểm đó có một tập các tính năng mang lại nhiều giá trị nhất.
  2. Khi cần phải hoàn thành một tập nhất định những tính năng để có thể phát hành
    Lúc này nhóm sẽ tìm xem mất bao nhiêu sprint nữa để hoàn thành được những tính năng đó.
    Ví dụ dữ liệu ở Hình 1, nhóm phải hoàn thành một tập các tính năng với 80 điểm, như vậy nhóm ước lượng cần phải tới 80/6.25 = 13 sprint để hoàn thành tập tính năng
  3. Có một deadline định sẵn với một tập tính năng nhất định nằm trong khả năng của nhóm
    Quay lại trường hợp 1 để xem.
  4. Có một deadline định sẵn với một tập tính năng nhất định nằm ngoài khả năng của nhóm
    PO nên xem xét tăng khả năng của nhóm, nếu không thì PO nên xem xét giảm tập tính năng và sử dụng cách làm việc của trường hợp 1.

Quy trình thực nghiệm là gì trong Scrum?

Quy trình thực nghiệm (empirical process) là quy trình mà kế hoạch và hành động dựa trên kinh nghiệm, không dựa trên yếu tố tiên lượng. Để quy trình thực nghiệm phát huy tác dụng, những tính chất sau phải được đảm bảo:

  • Minh bạch (transparency)
  • Thanh tra (inspection)
  • Thích nghi (adaptation)

Những tính chất này gọi là các chân hoặc trụ của quy trình thực nghiệm. Trong khi triển khai, nếu nhóm/tổ chức chỉ mất một trong những tính chất trên thì quy trình thực nghiệm không hiệu quả. Ví dụ: khi thông tin không minh bạch thì các bên không thể thanh tra quy trình, tiến trình đang diễn ra, do đó không thể đưa ra hành động thích nghi phù hợp, do đó vấn đề không được giải quyết; nếu nhóm chỉ biết là sản phẩm đang đạt chất lượng không tốt vì khách hàng đang phàn nàn có quá nhiều lỗi phần mềm, nhưng không biết lỗi do khâu nào trong quá trình phát triển vì tất cả các giai đoạn đều báo cáo là đã hoàn thành tốt công việc, do đó nhóm không thể đưa ra hành động thích nghi tương ứng.

Theo mô hình ra quyết định Cynefin thì các quy trình thực nghiệm phù hợp với những vấn đề phức tạp như phát triển sản phẩm mới.

Xem thêm:

3 trụ cột trong Scrum

5 giá trị Scrum

Scrum có phù hợp với bạn?

Biểu đồ Sprint Burndown có vai trò gì trong Scrum?

Biểu đồ Sprint Burndown thể hiện các ước tính cập nhật hàng ngày về khối lượng công việc còn lại tới khi hoàn thành. Biểu đồ Sprint Burndown lấy dữ liệu ước tính từ Sprint Backlog.

Ví dụ với bảng công việc như Hình 1 thì ta có Biểu đồ Sprint Burndown như Hình 2.
Cập nhật Sprint Backlog

Hình 1. Bảng công việc

Biểu đồ sprint burndown

Hình 2. Biểu đồ sprint Burndown

Biểu đồ Sprint Burndown giúp nhóm biết được trạng thái công việc hiện tại. Nếu xu hướng công việc đang tiến triển đang chậm hơn so với kỳ vọng, một dự báo rằng Sprint này có thể không thể hoàn thành hết công việc, như vậy Nhóm nên tập trung hoàn thành những nội dung quan trọng nhất để đạt mục tiêu Sprint và thậm chí làm việc với PO. Cũng trong trường hợp chậm này, Nhóm cũng nhìn thấy rằng mình đang gặp một số trở ngại để tiến tới mục tiêu Sprint. Lúc này Nhóm có thể cùng thanh tra để tìm ra nguyên nhân của những trở ngại và hành động thích nghi phù hợp.

Tuy nhiên, biểu đồ này chỉ thể hiện một ước lượng, do đó Nhóm không nên quá tin tưởng vào biểu đồ mà nên liên tục thanh tra và thích nghi dựa vào những công việc thực tế khác.

 

Phần tăng trưởng có vai trò gì trong Scrum?

Phần tăng trưởng là tên gọi ngắn của Phần tăng trưởng Sản phẩm Có khả năng Chuyển giao được (Potentially Shippable Product Increment) là phần sản phẩm Nhóm Phát triển tạo ra cuối mỗi Sprint. Đây là một khái niệm quan trọng trong Scrum tạo ra sự khác biệt lớn về mặt sản phẩm so với các phương pháp truyền thống. Scrum không chỉ đơn giản tách quá trình phát triển thành các Sprint nhỏ liên tiếp nhau, mà cuối mỗi Sprint đòi hỏi Nhóm Phát triển phải chuyển giao một phần tính năng “hoàn chỉnh” của sản phẩm. Hoàn chỉnh ở đây được hiểu theo nghĩa được Product Owner chấp nhận dựa theo Định nghĩa Hoành thành đã được thống nhất trước đó.

Đối với sản xuất phần mềm, điều đó có nghĩa là cuối mỗi Sprint, Nhóm Phát triển cần bàn giao một gói tính năng hoạt động tốt, đã được kiểm thử, tích hợp vào hệ thống và có đầy đủ tài liệu người dùng theo yêu cầu. Nhờ vậy, ở bất cứ thời điểm cuối Sprint nào thì sản phẩm đều đạt được trạng thái sẵn sàng phát hành mà không cần làm thêm bất cứ công việc nào liên quan đến đóng gói, tích hợp hay tinh chỉnh nhỏ. Điều này mang lại lợi ích cho nhiều phía từ các góc độ khác nhau, chẳng hạn như gia tăng sự minh bạch, sớm chuyển giao được giá trị kinh doanh và giảm thiểu rủi ro…

Khái niệm “chuyển giao được” ở đây không có nghĩa là sản phẩm phải được phát hành ngay. Việc có phát hành sản phẩm hay không là phụ thuộc vào quyết định liên quan đến kinh doanh. Còn trạng thái “chuyển giao được” thể hiện sự “tin tưởng” vào tính sẵn sàng của sản phẩm.

Có thể nói, việc chuyển giao được một Phần tăng trưởng ở cuối mỗi Sprint là nhiệm vụ cốt lõi và không hề dễ dàng đối với Nhóm Phát triển. Thông thường thì đối với các nhóm mới sử dụng Scrum, họ thường thất bại trong những Sprint đầu tiên. Bởi vì, để đạt được kết quả mong muốn này, Nhóm Phát triển cần phải áp dụng rất nhiều kỹ năng, công cụ, cộng tác và đưa ra các quyết định tốt trong suốt quá trình diễn ra Sprint. Có thể kể đến một số yếu tố ảnh hưởng đến việc này như:

  • Nhóm Phát triển có đảm bảo tính liên chức năng để thực hiện các công việc như được thống nhất trong Định nghĩa Hoàn thành không?
  • Nhóm Phát triển có biết cách lập kế hoạch Sprint để đảm bảo thuận lợi cho việc tạo ra phần tăng trưởng không?
  • Nhóm Phát triển có được trang bị các công cụ tự động để giúp cho quá trình phát triển, kiểm thử, tích hợp,… được diễn ra nhanh chóng không?
  • Nhóm Phát triển có vận hành tốt để đạt được mục tiêu chung hay không?
  • Khung thời gian của Sprint có đủ dài để hoàn thành các công việc hay không?

Sprint Backlog là gì?

Sprint Backlog là bảng công việc được Nhóm Phát triển sử dụng để quản lý quá trình phát triển trong một Sprint. Sprint Backlog được Nhóm Phát triển tạo ra trong buổi Lập kế hoạch Sprint và cập nhật trong suốt Sprint. Sprint Backlog chứa danh sách các hạng mục được phát triển trong Sprint và các công việc cần làm tương ứng với từng hạng mục để hoàn thành nó. Một Sprint Backlog cơ bản có cấu trúc như sau:

Sprint Backlog

Cấu trúc của Sprint Backlog

Trong đó, cột “Hạng mục trong Product Backlog” chứa danh sách các hạng mục được phát triển trong Sprint. Cột “Công việc trong Sprint” là danh sách công việc cần thực hiện tương ứng với từng hạng mục Product Backlog. Cột “Ước tính khối lượng công việc ban đầu” chứa giá trị ước tính mà Nhóm Phát triển đã đưa ra ở đầu Sprint. Sau mỗi ngày làm việc, nhóm sẽ cập nhật lại các giá trị này tương ứng với lượng công việc còn lại cần thực hiện cho từng nhiệm vụ. Ví dụ, sau 3 ngày thì Sprint Backlog có thể được cập nhật như sau:

Cập nhật Sprint Backlog

Cập nhật Product Backlog

Các công việc trong Sprint Backlog có thể được cập nhật (thêm, chỉnh sửa, loại bỏ,….) tùy theo tình hình phát triển hiện tại.

Nhóm Phát triển có thể sử dụng công cụ chuyên nghiệp, excel hay các bảng vật lý để thể hiện Sprint Backlog. Lý tưởng nhất vẫn là một bảng vật lý đặt ngay tại không gian làm việc của Nhóm Phát triển để giúp các thành viên luôn luôn nắm rõ được tình hình phát triển của Sprint.

Dựa trên Sprint Backlog, nhóm có thể sử dụng thêm Biểu đồ Sprint Burndown (Sprint Burndown Chart) để thể hiện tiến độ của Sprint qua từng ngày.