1. Agile là gì?
Agile là một phương pháp phát triển phần mềm linh hoạt. Phương pháp này khuyến khích sự thay đổi khi phát triển dự án và đưa sản phẩm đến tay người dùng một cách nhanh nhất.
Tuyên ngôn (Manifesto)
Agile là một bản tuyển ngôn mà các nhà phát triển đưa ra sau cuộc thảo luận về phương pháp phát triển phần mềm vào tháng 2 năm 2001. Bốn tuyên ngôn của Agile bao gồm:
- Cá nhân và sự tương tác quan trọng hơn quy trình và công cụ
- Phần mềm hoạt động tốt hơn là tài liệu cụ thể ( Tài liệu chỉ được tạo ra khi cần thiết )
- Mối quan hệ với khách hàng sẽ tốt hơn là hợp đồng và yêu cầu
- Việc sẵn sàng cho sự thay đổi tốt hơn là những kế hoạch cố định
Nguyên tắc
Ngoài việc đưa ra những tuyên ngôn về phương pháp phát triển phần mềm, Agile đưa ra 12 nguyên tắc cơ bản của mình:
- Sự hài lòng của khách hàng được đặt lên hàng đầu và liên tục chuyển giao phần mềm có giá trị cho họ
- Chào mừng các yêu cầu thay đổi, ngay cả trong giai đoạn muộn của dự án
- Phần mềm chạy được, được giao thường xuyên (hàng tuần chứ không nên là hàng tháng)
- Người làm bên mảng kinh doanh và người phát triển phần mềm nên gần gũi, hợp tác hàng ngày
- Dự án phần mềm được xây dựng bởi các cá nhân có động lực, những người đáng tin cậy
- Mặt đối mặt khi nói chuyện là cách tốt nhất để liên lạc (làm việc cùng nơi)
- Phần mềm chạy được là thước đo của tiến độ
- Phát triển bền vững, có thể duy trì một tốc độ không đổi
- Liên tục chú ý đến các kỹ thuật mới và thiết kế tốt
- Đơn giản hóa – nghệ thuật của việc tối đa hóa số việc không cần phải làm – là điều cần thiết
- Kiến trúc, yêu cầu và thiết kế tốt tạo nên nhóm tự tổ chức tốt
- Thường xuyên phản ánh việc làm thế nào để nhóm làm việc hiệu quả hơn và điều chỉnh cho phù hợp
Trong số 12 nguyên tắc này, nguyên tắc số 1, 7 và 10 là những nguyên tắc có độ ưu tiên cao nhất và nên tập trung giữ vững nguyên tắc này trước tiên trong bất kỳ trường hợp nào.
Đặc trưng của Agile
Agile là tuyển ngôn và những nguyên tắc để phục vụ việc phát triển phần mềm, vậy nên nó không phải là một quy trình cụ thể. Từ Agile, nhiều quy trình, framework cụ thể đã được phát triển ra để phù hợp với từng mục tiêu trong việc phát triển, xây dựng phần mềm cũng như phương pháp làm việc. Tuy nhiên, cho dù bao nhiêu quy trình, framework được phát triển đi nữa thì chúng đề có những đặc trưng cụ thể của Agile. Bao gồm:
- Tính lặp (Iterative)
- Tính tiệm tiến (Incremental) và tiến hóa (Evolutionary)
- Tính thích ứng (hay thích nghi – adaptive)
- Nhóm tự tổ chức và liên chức năng
- Quản lý tiến trình thực nghiệm (Empirical Process Control)
- Giao tiếp trực diện(face-to-face communication)
- Phát triển dựa trên giá trị (value-based development)
2. Scrum là gì?
Scrum là một framework được phát triển dựa trên tuyên ngôn và những nguyên tắc của Agile. Scrum được xây dựng dựa trên thuyết thực nghiệp, có nghĩa là lấy kinh nghiệm từ thực tế để giảm thiểu rủi ro và tăng tính chính xác.
Giá trị cốt lõi của Scrum
a. Minh bạch (transparency)
Tính minh bạch đảm bảo rằng tất cả những khía cạnh quan trọng của tiến trình đều phải được thể hiện rõ ràng cho mọi người có liên quan trong quá trình phát triển sản phẩm. Điều đó giúp giảm thiểu rủi ro, nâng cao chất lượng, tăng tính tin cậy và tính chính xác trong các quyết định
b. Thanh tra (inspection)
Người tham gia, sử dụng Scrum phải liên tục thanh tra, kiểm tra tiến độ nhằm tìm ra những vấn đề, điểm bất thường ngoài ý muốn nhằm xử lý, thay đổi, sửa chữa những vấn đó một cách tốt nhất.
c. Thích nghi (adaptation)
Nếu vấn để trong việc thanh tra, kiểm tra được đánh giá là lớn và ảnh hướng tới chất lượng sản phẩm thì quy trình, tài liệu đang được xử lý phải được thay đổi và điều chỉnh một cách sớm nhất có thể.
Ngoài ra, nếu yêu cầu mới, ý tưởng mới được đưa ra để cải tiến sản phẩm thì cũng cần phải đánh giá lại quy trình và điều chỉnh một cách hợp lý.
Lợi ích của việc sử dụng Scrum
Đương nhiên, để trở thành một framework nổi bật thì Scrum phải mang lại những lợi ích cụ thể trong quá trình phát triển sản phẩm. Và dưới đây là những lợi ích đó:
- Scrum cho phép việc tự do triển khai
- Dễ học và dễ sử dụng
- Chấp nhận sự thay đổi
- Làm giảm rủi ro khi xây dựng sản phẩm
- Tối ưu hóa hiệu quả và nỗ lực của đội phát triển
- Cho phép khách hàng sử dụng sản phẩm sớm hơn
- Cải tiến liên tục
Trên đây là những khái niệm, đặc trưng cơ bản về Agile và Scrum mà mình tìm hiểu được. Mình sẽ tiếp tục tìm hiểu chi tiết hơn về Agile và các framework được phát triển dựa trên Agile cũng như là tìm hiểu sâu hơn về mô hình Scrum trong các bài viết sau này.
Tài liệu tham khảo: