Ngành công nghiệp phát triển phần mềm có nhiều phương pháp khác nhau — một số là phiên bản mới của các phương pháp cũ, trong khi những phương pháp khác áp dụng các thực hành tương đối mới. Hai phương pháp được sử dụng phổ biến nhất làAgile, chẳng hạn nhưScrum, Kanban và Lean, cùng với mô hình truyền thống Waterfall, chẳng hạn như các phương pháp có cấu trúc hoặc RUP mới hơn.
Hầu hết các công ty phần mềm tuân theo hai mô hình này đều tin rằng phương pháp họ chọn là vượt trội ở một số khía cạnh. Vì vậy, trước khi trả lời câu hỏi ‘Phương pháp nào thành công hơn?’ — hãy cùng xem xét những điểm khác biệt chính của chúng.
Phương pháp Waterfall
Waterfall là một phương pháp tuyến tính trong phát triển phần mềm. Mỗi giai đoạn đại diện cho một giai đoạn riêng biệt trong quy trình, thường được hoàn thành trước khi giai đoạn tiếp theo bắt đầu. Các mốc quan trọng thường xuất hiện giữa mỗi giai đoạn phát triển.
- Được cấu trúc như một dự án lớn theo quy trình tuần tự
- Phù hợp với môi trường mà các thay đổi là hiếm
- Yêu cầu các yêu cầu được xác định đầy đủ ngay từ đầu
Do đó, mô hình Waterfall nhấn mạnh việc chuyển sang giai đoạn tiếp theo chỉ sau khi giai đoạn trước đã được xác minh và xác nhận, như minh họa trong hình bên dưới:

Phương pháp Waterfall
Trong mô hình Waterfall ban đầu của Royce, các giai đoạn sau được thực hiện theo thứ tự:
- Yêu cầu Hệ thống và Phần mềm: Được ghi lại trong tài liệu yêu cầu sản phẩm
- Phân tích: Tạo ra các mô hình, kiến trúc và quy tắc kinh doanh
- Thiết kế: Tạo ra kiến trúc phần mềm
- Viết mã: Phát triển, xác minh và tích hợp phần mềm
- Kiểm thử: Phát hiện và sửa lỗi một cách hệ thống
- Vận hành: Cài đặt toàn bộ hệ thống, di chuyển, hỗ trợ và bảo trì
Phương pháp Agile
Agile được phát triển từ tư duy Lean, áp dụng khái niệm ‘Lean’ trong môi trường CNTT. Trọng tâm chính của các phương pháp Lean là:
- Loại bỏ lãng phí trong quy trình
- Tối thiểu hóa các hoạt động kinh doanh không tạo giá trị
- Tối đa hóa giá trị từ góc nhìn của khách hàng

Các phương pháp Agile
Agile là một phương pháp quản lý dự án đã được chứng minh, khuyến khích các nguyên tắc cốt lõi sau:
- Kiểm tra thường xuyên và điều chỉnh
- Khuyến khích hợp tác nhóm, tự tổ chức và trách nhiệm
- Bộ các thực hành tốt trong kỹ thuật nhằm cung cấp các dự án chất lượng cao một cách nhanh chóng
- Một phương pháp kinh doanh giúp gắn kết quá trình phát triển với nhu cầu khách hàng và mục tiêu công ty
Phát triển Agile – Chu kỳ lặp lại
Phát triển Agile bao gồm các giai đoạn truyền thống như lập kế hoạch, phân tích yêu cầu, thiết kế, mã hóa, kiểm thử và triển khai — nhưng chúng tạo thành một vòng lặp thay vì một đường thẳng. Điều này có nghĩa là quy trình linh hoạt, có thể lặp lại và có thể diễn ra theo bất kỳ thứ tự nào hoặc song song. Điều này cho phép thu thập phản hồi từ người dùng, kiểm thử liên tục trên nhiều môi trường và thay đổi phạm vi dự án trong quá trình chạy.
Cơ sở của phương pháp Agile
- Thực nghiệm:Khả năng thực hiện, dừng lại, phản tư, cải tiến và tiếp tục theo cách tăng dần năng suất.
- Ưu tiên:Giao công việc dựa trên giá trị kinh doanh.
- Tự tổ chức:Nhóm hiểu rõ nhất cách thức hoàn thành công việc với các nguồn lực và giới hạn hiện có.
- Thời gian cố định:Nhóm phải hoàn thành một nhiệm vụ được xác định trong khung thời gian cố định.
- Hợp tác:Nhóm cam kết giao sản phẩm cuối cùng trong thời gian nhất định, khuyến khích hợp tác giữa các nhóm và hoàn thành nhiệm vụ một cách sáng tạo.
Agile so với Waterfall – Giới hạn ba yếu tố
Ưu điểm lớn nhất của phương pháp Waterfall là chi phí cố định và tính dự đoán được. Bạn biết rõ giá cả và ngày giao hàng. Điểm yếu lớn nhất là thiếu tính linh hoạt. Các phương pháp Agile rất linh hoạt và có thể phát triển thành sản phẩm khác biệt đáng kể so với tầm nhìn ban đầu.

Agile so với Waterfall
Waterfall truyền thốngdựa trên giới hạn ba yếu tố thời gian, chi phí và phạm vi. Việc điều chỉnh bất kỳ biến nào trong số này sẽ buộc phải thay đổi ít nhất một biến khác. Việc hoàn thành một dự án thành công phụ thuộc vào việc cân bằng các biến mâu thuẫn này. Nhưng như chúng ta biết, việc đơn thuần thêm nguồn lực vào một dự án không phải lúc nào cũng đạt được kết quả mong muốn. Thậm chí, việc thêm nguồn lực vào giai đoạn cuối của một dự án phần mềm có thể gây ảnh hưởng tiêu cực.
Phương pháp Agileáp dụng một cách tiếp cận khác, đảo ngược giới hạn ba yếu tố. Thay vì coi phạm vi là cố định từ đầu, Agile xác định thời gian (vòng lặp) và chi phí (thành viên nhóm) là cố định, sau đó điều chỉnh phạm vi để tập trung vào các mục ưu tiên cao nhất. Agile giả định rằng phạm vi sẽ thay đổi theo thời gian. Mục tiêu là đáp ứng các yêu cầu quan trọng nhất của khách hàng trong ngân sách và thời gian. Khi dự án tiến triển, Agile cho phép bổ sung yêu cầu mới hoặc điều chỉnh lại thứ tự ưu tiên.

Chất lượng Agile so với Waterfall
Agile hay Waterfall? Xem các số liệu
Báo cáo mới nhất từ nhóm Standish bao gồm các dự án được nghiên cứu từ năm 2013 đến năm 2017. Tỷ lệ thành công, thách thức và thất bại của các dự án Agile và Waterfall được thể hiện bên dưới. Các dự án Agile có khả năng thành công cao gấp khoảng hai lần, và khả năng thất bại thấp hơn ba lần so với các dự án Waterfall.

Agile so với Waterfall – Tỷ lệ thành công của dự án
Mái che Agile
Kể từ khi ra đời Tuyên ngôn Agile năm 2001, Agile đã thu hút được sức mạnh đáng kể. Thực tế, Agile không phải là một phương pháp duy nhất mà là một tư duy giúp các đội và tổ chức đổi mới, phản ứng nhanh chóng trước những thay đổi trong nhu cầu và giảm thiểu rủi ro. Các tổ chức có thể linh hoạt áp dụng nhiều khung tham chiếu sẵn có như Scrum, Kanban, Lean, XP và nhiều hơn nữa.

Mái che Agile
Cách tiếp cận Lean
Các tổ chức Lean hiểu rõ giá trị đối với khách hàng và tập trung vào các quy trình cốt lõi để cải tiến liên tục. Mục tiêu cuối cùng là cung cấp giá trị hoàn hảo cho khách hàng thông qua một quy trình tạo giá trị lý tưởng, không có lãng phí.
Quy trình tư duy năm bước dẫn dắt việc triển khai Lean dễ nhớ nhưng không phải lúc nào cũng dễ thực hiện:
- Xác định giá trị từ góc nhìn của khách hàng cuối cùng.
- Xác định tất cả các bước trong luồng giá trị cho từng sản phẩm, loại bỏ các bước không tạo giá trị mỗi khi có thể.
- Đảm bảo các bước tạo giá trị chảy trôi và tuần tự về phía khách hàng.
- Cho phép khách hàng lấy giá trị từ hoạt động tiếp theo ở phía thượng nguồn khi cần thiết.
- Cải tiến liên tục bằng cách xác định các luồng giá trị, loại bỏ lãng phí, đưa vào luồng và phương pháp lấy giá trị, và lặp lại quy trình cho đến khi đạt được sự hoàn hảo — nơi giá trị hoàn hảo được cung cấp mà không có lãng phí nào.

5 bước tiếp cận Lean
Cách tiếp cận Scrum
Scrum là một cách tiếp cận Agile để quản lý các dự án, thường được áp dụng trong phát triển phần mềm. Việc sử dụng Scrum cho phát triển phần mềm Agile thường được xem như một phương pháp — nhưng thay vì coi Scrum là một phương pháp, nó nên được nhìn nhận như một khung để quản lý quy trình.

Bản đồ quy trình Scrum
Cách tiếp cận Kanban
Kanban là tiếng Nhật nghĩa là “tín hiệu trực quan” hay “thẻ”. Các công nhân dây chuyền của Toyota đã sử dụng Kanban để biểu diễn các bước trong quy trình sản xuất. Là một phần của Lean, tính trực quan cao của hệ thống giúp các đội dễ dàng trao đổi về việc cần làm và khi nào cần làm. Nó cũng chuẩn hóa quy trình làm việc và tinh chỉnh quy trình, giúp giảm lãng phí và tối đa hóa giá trị. Giống như bảng Scrum sprint, Kanban theo dõi các hoạt động “Phải làm – Đang làm – Đã xong”, nhưng nó giới hạn số lượng công việc đang thực hiện (được xác định bởi trưởng nhóm và không được vượt quá).

Cách tiếp cận Kanban
Có bốn nguyên tắc cốt lõi của Kanban:
- Trực quan hóa công việc để tăng cường giao tiếp và hợp tác.
- Giới hạn công việc đang thực hiện để tránh các chuỗi vô hạn các công việc mở chưa được ưu tiên.
- Đo lường và tối ưu hóa luồng công việc — thu thập các chỉ số, dự đoán các vấn đề trong tương lai.
- Cải tiến liên tục thông qua phân tích và phản hồi.