Agile là một tập hợp các nguyên lý dành cho phát triển phần mềm, trong đó khuyến khích việc lập kế hoạch thích ứng, phát triển tăng dần, chuyển giao sớm, và cải tiến liên tục. Agile cũng chủ trương thích ứng nhanh chóng với các thay đổi. Những nguyên lý này được chia sẻ trong
Tuyên ngôn Phát triển Phần mềm Linh hoạt và 12 Nguyên lý phía sau.
Agile không định nghĩa một phương pháp cụ thể để đạt được những điều này, nhưng lại có nhiều phương pháp phát triển phần mềm khác nhau thỏa mãn và hướng theo các tiêu chí đó.
Mục đích của các phương pháp Agile là giúp các doanh nghiệp đạt được sự linh hoạt (Agility), từ đó nâng cao sức cạnh tranh và phát triển bền vững. Các phương pháp Agile đã thay đổi diện mạo thế giới không chỉ trong Phát triển phần mềm mà còn đang thể hiện giá trị trong các lĩnh vực khác như Marketting (Agile Marketting), giáo dục (EduScrum, Lean Edu, v.v.), thiết kế (Lean UX, Design Thinking), khởi nghiệp (Lean Startup) và Phần cứng.
Lịch sử
Trong giai đoạn trước những năm 90 của thế kỷ 20, trên thế giới xảy ra cuộc khủng hoảng về phương pháp phát triển phần mềm. Lí do của việc này đó là phương pháp truyền thống ngày càng bộc lộ nhiều nhược điểm và tỉ thệ các dự án bị thất bại quá cao. Có rất nhiều các cá nhân và công ty riêng lẻ đã tự tìm tòi và phát triển những phương pháp khác nhau để thích ứng với tình hình mới, ở đó những yếu tố môi trường kinh doanh và công nghệ thay đổi nhanh chóng, khiến cho phương pháp phát triển truyền thống không còn phù hợp. Những phương pháp riêng lẻ này phần nào giải quyết được một số vấn đề, nhưng lại nảy sinh những vấn đề khác về sự chia sẻ, cộng tác, các kỹ thuật, công cụ, sự mở rộng, hướng phát triển,…
Do đó, Tháng 2 năm 2001, 17 lập trình viên là đại diện cho những phương pháp phát triển mới này đã gặp nhau tại Utah. Họ đã đi đến thống nhất về quan điểm chung giữa các phương pháp và cho ra đời một tài liệu được gọi là:
Tuyên ngôn Phát triển Phần mềm Linh hoạt kèm với 12 nguyên lý phía sau. Đây chính là thời điểm mà thuật ngữ Agile được sử dụng hiện nay ra đời, mặc dù các phương pháp riêng lẻ thì đã có trước đó.
Đặc điểm
- Lặp, tăng trưởng: Phần lớn các phương pháp Agile đều phân chia công việc thành các chu trình nhỏ và không lập một kế hoạch dài hạn. Mỗi chu trình đều thực hiện đầy đủ các công đoạn, từ lập kế hoạch cho đến phân tích và thiết kế, viết mã, kiểm thử, tích hợp để chuyển giao một phần tăng trưởng của sản phẩm.
- Giao tiếp thường xuyên và hiệu quả: Mỗi nhóm đều cần đến một người đại diện khách hàng làm việc cùng (chẳng hạn, trong Scrum thì là Product Owner). Người này đại diện cho quyền lợi của những người liên quan và có trách nhiệm làm rõ tất cả các yêu cầu cho các nhà phát triển.
- Vòng phản hồi ngắn và thích ứng thường xuyên: Các nhà phát triển thường xuyên trao đổi với nhau để cập nhật và đồng bộ công việc, phát hiện sớm các trở ngại và thích ứng với tình huống mới.
- Hướng chất lượng: Nhiều kỹ thuật và công cụ được sử dụng để hướng đến việc nâng cao chất lượng sản phẩm, chẳng hạn như: Tích hợp Liên tục, Kiểm thử Đơn vị Tự động, Lập trình cặp, Phát triển Hướng Kiểm thử, Mẫu Thiết kế, Tái cấu trúc mã nguồn, v.v..
Các phương pháp Agile
Sau đây là danh sách các phương pháp Agile phổ biến (ngoài ra còn có một số phương pháp khác ít phổ biến hơn):
- ASD – Adaptive Software Development
- Agile Modeling
- AUP – Agile Unified Process
- Crystal Clear
- DSDM – Dynamic System Development Method
- XP – Extreme Programming
- FDD – Feature Driven Development
- Lean Software Development
- Kanban
- Scrum
- Scrumban
- …
Theo AgiPedia
إرسال تعليق