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

Là một quy trình phát triển phần mềm theo mô hình linh hoạt (agile). Với nguyên tắc chủ đạo là chia nhỏ phần mềm cần sản xuất ra thành các phần nhỏ để phát triển (các phần nhỏ này phải đọc lập và Release được), lấy ý kiến khách hàng và thay đổi cho phù hợp ngay trong quá trình phát triển để đảm bảo sản phẩm release đáp ứng những gì khách hàng mong muốn. Scrum chia dự án thành các vòng lặp phát triển gọi là các sprint. Mỗi sprint thường mất 2- 4 tuần (30 ngày) để hoàn thành. Nó rất phù hợp cho những dự án có nhiều sự thay đổi và yêu cầu tốc độ cao.

1. Đặc điểm của Quy trình phát triển phần mềm SCRUM

  • Scrum (hay agile nói chung) được xếp vào nhóm “Feature-driven development”. Sản phầm được phát triển theo tính năng, chứ không phát triển sản phẩm theo kiến trúc hệ thống.
  • Scrum giảm thiểu tài nguyên dành cho việc quản lý mà tập trung nhiều hơn cho những công việc liên quan trực tiếp đến việc làm ra sản phẩm. Bằng cách giảm vai trò quản lý (PM) bằng cách đẩy việc quản lý tới từng người.
  • Giảm thời gian dành cho việc viết tài liệu bằng cách tăng thời gian trao đổi trực tiếp. Thông thường khi estimate công việc, thì team estimate cả thời gian dành cho communication để hoàn thành task đó nữa.
  • Tập trung vào sản phẩm, sản phẩm mới là đích cuối cùng chứ không phải qui trình.

2. Ưu điểm, nhược điểm của mô hình Scrum

ƯU ĐIỂM:

  • Một người có thể làm nhiều việc ví dụ như dev có thể test
  • Phát hiện lỗi sớm hơn rất nhiều so với các phương pháp truyền thống
  • Khách hàng nhanh chóng thấy được sản phẩm qua đó đưa ra phản hồi sớm.
  • Có khả năng áp dụng được cho những dự án mà yêu cầu khách hàng không rõ ràng ngay từ đầu.

NHƯỢC ĐIỂM:

  • Trình độ của nhóm là có một kỹ năng nhất định
  • Phải có sự hiểu biết về mô hình aglie .
  • Khó khăn trong việc xác định ngân sách và thời gian.
  • Luôn nghe ý kiến phản hồi từ khách hàng và thay đổi theo nên thời gian sẽ kéo dài khi có quá nhiều yêu cầu thay đổi từ khách hàng.
  • Vai trò của PO (Product Owner) rất quan trọng, PO là người định hướng sản phẩm. Nếu PO làm không tốt sẽ ảnh hưởng đến kết quả chung.

3. Các nhân tố cấu tạo nên quy trình phát triển phần mềm theo mô hình Scrum

Một cách đơn giản có 03 thành tố quan trọng cấu thành nên SCRUM: Tổ chức (Organization), Qui trình (Process),  Tài liệu (Atifacts). Trong mỗi thành tố có 03 thành tố con. Như vậy, chúng ta chỉ cần hiểu và áp dụng được 9 thành tố này là có thể áp dụng SCRUM.

  • Tổ chức (Organization): Tổ chức nhóm dự án và Roles (Vài trò)
    • Product Owner (Người sở hữu sản phẩm)
    • ScrumMaster (Người điều phối )
    • Development Team (Nhóm phát triển)
  • Tài liệu (Atifacts):  các kết quả đầu ra
    • Product Backlog  (Danh sách các chức năng cần phát triển của sản phẩm)
    • Sprint Backlog (Danh sách các chức năng cần phát triển cho mỗi giai đoạn)
    • Estimation (Kết quả ước lượng của Team)
  • Qui trình(Process):  Qui định cách thức vận hành của SCRUM
    • Sprint Planning meeting (Họp để hoạch định cho mỗi giai đoạn)
    • Sprint Review (Họp để tổng kết cho mỗi giai đoạn)
    • Daily Scrum Meeting (Họp review hàng ngày)

3.1 Tổ chức của dự án(Organization)

Quy trình phát triển phần mềm
  • Product Owner

Product Owner là người sở hữu sản phẩm, người quyết định sản phẩm có những chức năng nào và là người quyết định Product Backlog, họ sẽ tham gia 1 phần vào quy trình phát triển phần mềm. Thông thường Role này được khách hàng hoặc người đại diện cho khách hàng đảm nhận.

  • ScrumMaster

Scrum Master là người đảm bảo các qui trình của Scrum được thực hiện đúng và thuận lợi, giúp đỡ cho Team thực hiện công việc phát triển sản phẩm một cách tốt nhất.

  • Development Team (Nhóm phát triển)

Một nhóm từ 4-7 kỹ sư phần mềm chịu trách nhiệm phát triển sản phẩm. Nhóm dự án phải làm việc với Product Owner để quyết định những gì sẽ làm trong Sprint (giai đoạn )này và kết quả sẽ ra sao. Đồng thời nhóm cũng thảo luận để đưa ra các giải pháp, ước lượng thời gian thực hiện công việc, họp đánh giá kết quả công việc. Nếu dự án lớn chúng ta cần chia ra thành các dự án nhỏ.

3.2 Tài liệu (Atifacts)

  • Product Backlog

Product Backlog là danh sách các chức năng cần được phát triển của sản phẩm trong quy trình phát triển phần mềm. Danh sách này do Product Owner quyết định. Nó thường xuyên được cập nhật để đáp ứng được nhu cầu thay đổi của khách hàng cũng như các điều kiện của dự án.

Quy trình phát triển phần mềm
  • Sprint Backlog

Sprint là một giai đoạn phát triển trong quá trình phát triển sản phẩm, nó được khuyến khích có chiều dài từ 2 – 4 tuần. Mỗi Sprint được xác định bằng thời gian phát triển, danh sách các chức năng phát triển (Sprint Backlog).

Sprint Backlog là danh sách chức năng phát triển trong Sprint, nó được quyết định bởi cuộc họp Sprint Planning. Sprint Backlog là các chức năng được chọn từ Product Backlog dựa trên mức độ ưu tiên và khả năng của team phát triển.

Quy trình phát triển phần mềm
  • Estimation (ước lượng)

Trong SCRUM thì các thành viên của Team sẽ tự lựa chọn Task cho mình và ước lượng thời gian phát triển dự  kiến và chịu trách nhiệm với ước lượng này. Sau khi hoàn thành sẽ cập nhật vào bảng Sprint Backlog.

Quy trình phát triển phần mềm

3.3 Quy trình(Process)

Quy trình phát triển phần mềm
  • Sprint Planning meeting  (Họp lập kế hoạch cho mỗi Sprint)

Như  chúng ta đã biết ở trên Sprint là một giai đoạn phát triển có thời gian từ 2-4 tuần. Để chuẩn bị cho mỗi Sprint team cần phải họp để xác định những chức năng nào (story) sẽ phát triển trong giai đoạn này (sprint backlog), kết quả đầu ra dự kiến (Goal, kết quả Release), Estimate (ước lượng ai làm việc gì) và thảo luận các giải pháp. Tất cả được ghi thành biên bản để có cơ sở thực hiện và Review sau này.

  • Sprint Review

Là cuộc họp để đánh giá lại kết quả thực hiện của Sprint vừa qua, xác định những chức năng được Release, những chức năng tiếp tục sửa hoặc phát triển thêm, xác định những vấn đề phát sinh và bàn phương án giải quyết, bổ sung Product Backlog v….

  • Daily Scrum Meeting (hay còn gọi là Standup Meeting)
    • Daily Scrum Meeting là cuộc họp hàng ngày và được đề nghị không quá 15 phút và họp đứng để đảm bảo thời gian họp không bị kéo dài vào đầu mỗi ngày, mỗi thành viên chỉ trả lời 3 câu hỏi:
    • Phát sinh vấn đề gì trong quy trình phát triển phần mềm?
    • Hôm nay bạn sẽ làm gì
    • Hôm qua bạn làm được gì?
    • Nếu thành viên gặp vấn đề thì nên làm việc riêng để giải quyết để không mất nhiều thời gian của các thành viên.  Scrum Master phải đảm bảo cuộc họp này được thực hiện đúng qui định.
    • Các Sprint sẽ được lặp đi lặp lại cho tới khi nào các hạng mục trong Product Backlog đều được hoàn tất hoặc khi Product Owner quyết định có thể dừng dự án căn cứ tình hình thực tế. Do sử dụng chiến thuật “có giá trị hơn làm trước” nên các hạng mục mang lại nhiều giá trị hơn cho chủ dự án luôn được hoàn tất trước. Do đó Scrum luôn mang lại giá trị cao nhất cho người đầu tư cho dự án. Do quy trình luôn luôn được cải tiến, nhóm Scrum thường có năng suất lao động rất cao. Đây là hai lợi ích to lớn mà quy trình phát triển phần mềm Scrum mang lại cho tổ chức.

4. So sánh mô hình Scrum và mô hình waterfall, Sprial

Đặc điểmWaterfallSpiralScrum
Xác định các giai đoạn phát triểnBắt buộcBắt buộcChỉ có giai đoạn lập kế hoạch và kết thúc
Sản phẩm cuối cùngĐược xác định trong quá trình lập kế hoạchĐược xác định trong quá trình lập kế hoạchXác định trong suốt quá trình dự án
Chi phí sản xuấtĐược xác định trong quá trình lập kế hoạchThay đổi cục bộXác định trong quá trình xây dựng dự án
Ngày hoàn thành sản phẫmĐược xác định trong quá trình lập kế hoạchThay đổi cục bộXác định trong quá trình xây dựng dự án

(Thao khao: topdev.vn)

Bình luận bài viết