Quy trình phát triển phần mềm Agile và Scrum
1. Agile là gì?
Agile là một nguyên lý phát triển phần mềm dựa trên 4 giá trị cốt lõi:
4 giá trị cốt lõi (Values/Manifesto)
- Sự tương tác của mỗi cá nhân quan trọng hơn quy trình và công cụ.
- Bỏ qua sự phức tạp trong khâu thiết kế tài liệu, mà thay vào đó là tập trung vào sự vận hành của phần mềm.
- Khuyến khích khách hàng tham gia vào quá trình phát triển dự án.
- Đáp ứng dễ dàng với các tình huống phát sinh và thay đổi kế hoạch.
Bên cạnh đó, Agile còn dựa trên 12 quy tắc:
12 Quy tắc (Principles)
- Làm hài lòng khách hàng luôn là ưu tiên cao nhất trong xuyên suốt quá trình phát triển dự án.
- Chấp nhận mọi yêu cầu thay đổi chức năng, thậm chí ở cuối giai đoạn phát triển.
- Các chức năng được hoàn thiện và bàn giao đến khách hàng liên tục sau mỗi khoảng thời gian cố định (thường từ 2 tuần đến 1 tháng)
- Khách hàng và các thành viên phải làm việc cùng nhau mỗi ngày.
- Môi trường làm việc duy trì động lực cho mỗi thành viên, hỗ trợ họ khi cần thiết và tin tưởng họ sẽ hoàn thành công việc.
- Thảo luận trực tiếp (mặt đối mặt) là phương pháp hiệu quả nhất để truyền đạt thông tin.
- Tiến độ được đo lường dựa trên mức độ hoàn thiện thực tế của sản phẩm.
- Thúc đẩy quá trình phát triển ổn định và lâu dài.
- Tư duy cải tiến liên tục để sản phẩm ngày càng tốt hơn.
- Đơn giản hóa quy trình. Loại bỏ các khâu cồng kềnh không cần thiết.
- Nhóm tự tổ chức. Nghĩa là mỗi thành viên sẽ tự quyết định việc mình cần làm, tự cam kết và tự chịu trách nhiệm.
- Thường xuyên đánh giá lại tình hình dự án để có thể đưa ra điều chỉnh phù hợp.
Tuy nhiên, để thực hiện nguyên lý Agile trong thực tế, chúng ta cần phải có từng bước rõ ràng và cụ thể. Hiện nay, có rất nhiều công cụ (frameworks) giúp bạn làm việc này, như là: Scrum, Kanban, Lean, DSDM,… Trong số đó, Scrum là một trong những frameworks được sử dụng phổ biến nhất.
2. Scrum
Scrum chia quá trình phát triển dự án thành nhiều giai đoạn giống nhau.
Mỗi giai đoạn có tên gọi là Sprint.
Sprint
1 Sprint thường kéo dài khoảng từ 2 đến 3 tuần và bao gồm các hoạt động (events) như sau:
- Planning: Lên kế hoạch.
- Daily Scrum: Họp ngắn mỗi ngày.
- Review: Kiểm tra chức năng vừa hoàn thành.
- Retrospective: Tổng kết và rút kinh nghiệm cho Sprint kế tiếp.
Trước khi tìm hiểu nội dung chi tiết của mỗi events, bạn cần phải nắm rõ vai trò của mỗi thành viên trong Scrum.
3. Vai trò (Roles)
Bạn lưu ý, vai trò của mỗi thành viên có thể linh động thay đổi trong quá trình phát triển dự án. Cụ thể là một thành viên có thể đóng nhiều vai trò khác nhau. Sau đây là các vai trò trong Scrum:
3.1. Product Owner
Product owner là người quyết định sản phẩm sẽ có những chức năng gì và thứ tự ưu tiên thực hiện của các chức năng. Bên cạnh đó, product owner cũng là người thấu hiểu khách hàng cuối nhất.
3.2. Scrum Master
Scrum master có trách nhiệm hướng dẫn và đảm bảo các thành viên thực hiện đúng quy trình Scrum.
3.3. Development Team
Đây là những người trực tiếp gia công phần mềm: phân tích yêu cầu, thiết kế, viết mã, testing,… Tiếp theo, chúng ta sẽ quay lại tìm hiểu chi tiết về các hoạt động (events) trong Scrum.
4. Events
Scrum chia quá trình phát triển dự án thành nhiều Sprint. Mỗi Sprint bao gồm các hoạt động (events) như sau:
4.1. Planning
Trước khi planning diễn ra, product owner sẽ lên kế hoạch và xác định những mục tiêu cần hoàn thành trong Sprint này. Product owner cũng xem xét lại những vấn đề của Sprint trước đó để có thể đưa ra giải pháp khắc phục.
Khi planning diễn ra, product owner cùng các thành viên còn lại sẽ phân tích và thống nhất cụ thể những đầu công việc cần làm:
- Nội dung mô tả chi tiết chức năng.
- Thời hạn hoàn thành.
- Tiêu chuẩn đầu ra.
4.2. Daily Scrum
Daily Scrum là hoạt động diễn ra thường xuyên nhất trong một Sprint. Bạn có thể hiểu đơn giản Daily Scrum là những buổi họp ngắn được tổ chức mỗi ngày (thời lượng tối đa 15 phút). Mục tiêu của Daily Scrum là để các thành viên chia sẻ nhanh về tiến độ và những khó khăn phát sinh trong dự án, từ đó có thể đưa ra giải pháp khắc phục kịp thời.
4.3. Review
Review thường là buổi họp kéo dài khoảng từ 30 phút đến 1 tiếng. Mục tiêu của hoạt động này là nhằm đánh giá lại các chức năng vừa hoàn thành có hoạt động đúng hay không. Sau đó là lấy ý kiến phản hồi từ product owner để cải thiện tốt hơn cho Sprint kế tiếp.
4.4. Retrospective
Đây là hoạt động cuối cùng của một Sprint:
- Xem xét lại tiến độ và chất lượng thực tế của Sprint vừa rồi.
- Xác định điều gì được và điều gì chưa được.
- Cùng nhau thảo luận tìm ra giải pháp cải thiện cho Sprint kế tiếp.
- Retrospective thường có thời lượng kéo dài khoảng từ 2 đến 4 giờ.
Agile là một nguyên lý (ý tưởng) phát triển phần mềm dựa trên 4 giá trị cốt lõi (values) và 12 quy tắc (principles). Để áp dụng Agile vào thực tế, chúng ta có thể sử dụng nhiều công cụ (frameworks) và Scrum là một trong những công cụ phổ biến nhất hiện nay. Agile và Scrum cũng được đưa vào nội dung đào tạo trong Khóa Học Frontend và Khóa Học Backend.