1. Tổng quan về Agile:
Agile được hiểu ngắn gọn là quản lý dự án một cách linh hoạt bằng việc chia dự án lớn thành các dự án nhỏ để quản lý đồng đều với mục đích giúp các dự án lớn có thể phát triển và cải tiến một cách nhanh chóng đồng thời bảo trì và nâng cấp các hệ thống dự án nhỏ một cách nhanh chóng mà không ảnh hưởng quá nhiều đến dự án lớn.
2. Lịch sử hình thành:
Trước khi Agile ra đời thì ta không thể không kể đến phương pháp water fall. Phương pháp waterfall ra đời trước thập niên 1970 với công dụng giúp cho các dự án làm việc theo mọi giai đoạn trình tự đến khi thành phẩm và không phải quay lại các bước trước đó vì rất rủi ro.
Agile ra đời vào năm 2001. Cụ thể, vào tháng 2 năm 2001, 17 chuyên gia phát triển phần mềm đã gặp nhau tại Snowbird, Utah (Mỹ) và cùng nhau soạn thảo tài liệu mang tính lịch sử:
Manifesto for Agile Software Development (Tuyên ngôn Phát triển Phần mềm Linh hoạt).
Với 4 phương châm:
- Cá nhân & tương tác hơn là quy trình & công cụ
- Phần mềm chạy được hơn là tài liệu đầy đủ
- Hợp tác với khách hàng hơn là đàm phán hợp đồng
- Phản hồi với thay đổi hơn là làm theo kế hoạch cố định
3. So sánh giữa mô hình Agile và Waterfall:
Hiện nay mô hình Waterfall và mô hình Agile đều rất phổ biến trong cuộc sống. dưới đây là sự so sánh để ta có thể dễ hình dung xem 2 mô hình này khác nhau điểm nào và được ứng dụng vào đâu trong thực tế.
3.1. Mô hình Waterfall:
- Các tiếp cận: Tuần tự (sequential)
- Thứ tự thực hiện: Theo từng giai đoạn cố định: Yêu cầu → Thiết kế → Triển khai → Kiểm thử → Triển khai → Bảo trì
- Tính linh hoạt: Ít linh hoạt – khó thay đổi yêu cầu sau khi bắt đầu
- Giao tiếp với khách hàng: Ít – chủ yếu ở đầu và cuối dự án
- kiểm thử: Diễn ra sau khi hoàn thành lập trình
- Khả năng phản hồi thay đổi: Kém – thay đổi sau giai đoạn đầu gây tốn kém
- Thời gian ra sản phẩm: Cuối dự án mới có sản phẩm hoàn chỉnh
- Tài liệu: Rất quan trọng, thường phải đầy đủ trước khi phát triển
3.2. Mô Hình Agile:
- Các tiếp cận: Lặp lại (iterative) và tăng dần (incremental)
- Thứ tự thực hiện: Chia thành nhiều vòng lặp nhỏ (sprint) – mỗi vòng có đủ: thiết kế, phát triển, kiểm thử
- Tính linh hoạt: Linh hoạt – dễ thay đổi yêu cầu giữa các sprint
- Giao tiếp với khách hàng: Liên tục – khách hàng tham gia thường xuyên
- kiểm thử: Kiểm thử liên tục trong từng sprint
- Khả năng phản hồi thay đổi: Cao – dễ thích nghi với thay đổi
- Thời gian ra sản phẩm: Có thể có phiên bản dùng thử sau mỗi sprint
- Tài liệu: Ưu tiên phần mềm chạy được hơn tài liệu đầy đủ
Ví dụ dễ hiểu:
Waterfall giống như xây nhà: Ta cần bản thiết kế hoàn chỉnh, rồi mới xây từng phần – không thể dễ dàng thay đổi giữa chừng.
Agile giống như làm sản phẩm mẫu (prototype): Ta làm từng phần nhỏ, thử nghiệm, lấy phản hồi, rồi cải tiến tiếp.
Mặc dù Waterfall truyền thống ít linh hoạt, nhưng hiện nay một số tổ chức kết hợp nó với các yếu tố linh hoạt của Agile (ví dụ: mô hình Water-Scrum-Fall) để phù hợp hơn với thực tế.
4. các bước để cấu thành sơ đồ agile:
Để cấu thành một sơ đồ Agile, ta cần hiểu các thành phần chính và quy trình hoạt động trong một chu trình Agile (đặc biệt là theo Scrum, framework phổ biến nhất trong Agile). Dưới đây là các bước chính để xây dựng sơ đồ Agile và mô tả vai trò, quy trình và các hoạt động cần có:
4.1. Xác định vai trò trong Agile:
Product Owner: Người đại diện cho khách hàng, chịu trách nhiệm quản lý Product Backlog và định hướng sản phẩm.
Scrum Master: Người hỗ trợ team tuân thủ Agile/Scrum, loại bỏ rào cản, cải thiện hiệu suất.
Development Team: Nhóm kỹ thuật thực hiện lập trình, kiểm thử, thiết kế, triển khai,…
4.2. Các thành phần và quy trình chính trong sơ đồ Agile:
Product Backlog: Danh sách tất cả các tính năng, yêu cầu, ý tưởng cần phát triển – do PO quản lý.
Sprint Planning: Cuộc họp lập kế hoạch Sprint, chọn các mục từ Product Backlog để đưa vào Sprint Backlog.
Sprint Backlog: Danh sách các công việc cụ thể được chọn để thực hiện trong Sprint.
Sprint: (chu kỳ phát triển) Vòng lặp từ 1–4 tuần. Trong thời gian này, nhóm phát triển tính năng hoàn chỉnh.
Daily Scrum: (Standup) Họp ngắn (~15 phút) mỗi ngày để cập nhật tiến độ, phát hiện trở ngại.
Sprint Review: Trình bày sản phẩm đã hoàn thành, nhận phản hồi từ PO và stakeholders.
Sprint Retrospective: Nhìn lại Sprint, rút kinh nghiệm, cải tiến quy trình cho Sprint sau.
Increment: Phiên bản sản phẩm đã hoàn thành – có thể triển khai hoặc demo.
4.3. Lặp lại quy trình:
Sau mỗi Sprint, nhóm sẽ tiếp tục với Sprint tiếp theo, sử dụng phản hồi và cải tiến từ Sprint Retrospective.
Agile là chu trình lặp, nên sơ đồ thể hiện tính vòng lặp (iterative) và phát triển tăng dần (incremental).
5. Kết luận:
Agile đặc biệt phù hợp với các dự án:
- Có yêu cầu thay đổi thường xuyên
- Cần ra sản phẩm nhanh chóng và cập nhật liên tục
- Cần phản hồi người dùng sớm