Agile là một thuật ngữ được dùng để mô tả một phương pháp phát triển phần mềm nhấn mạnh vào việc giao hàng từng phần, hợp tác giữa các đội, lập kế hoạch liên tục và học hỏi liên tục, thay vì cố gắng giao tất cả mọi thứ cùng một lúc gần cuối.
Agile tập trung vào việc giữ cho quy trình gọn nhẹ và tạo ra một Sản phẩm Tối thiểu Khả thi (MVP), trải qua nhiều lần lặp lại trước khi kết quả cuối cùng xuất hiện. Phản hồi được thu thập và triển khai liên tục. Nói tóm lại, đây là một quy trình linh hoạt hơn nơi mọi người cùng hướng đến một mục tiêu chung.

Phát triển Phần mềm Agile
Scrum và Các Phương Pháp Agile Hàng Đầu Khác
Agile là một tư duy — một tập hợp các giá trị và nguyên tắc. Đó là một cách suy nghĩ và hành động. Agile có nghĩa là các chu kỳ ngắn, giao hàng theo từng giai đoạn và lặp lại, thất bại nhanh, thu thập phản hồi, cung cấp giá trị kinh doanh sớm, và tập trung vào con người, hợp tác và tương tác. Agile là một tư duy về minh bạch, kiểm tra và thích nghi. Tuy nhiên, Agile không bao gồm bất kỳvai trò, sự kiện, hoặcsản phẩm. Đó là một tư duy. Ví dụ, Scrum là một trong những khung công tác được sử dụng rộng rãi dưới mái nhà Agile, giúp bạn trở nên linh hoạt hơn. Tuy nhiên, phong trào Agile bao gồm nhiều khung công tác khác, chẳng hạn như Kanban,XP, Crystal và nhiều khung khác, như được hiển thị bên dưới:

Mái nhà Agile Scrum
Scrum
Scrum là một khung công tác mà con người sử dụng để giải quyết các vấn đề phức tạp và thích nghi, đồng thời giao hàng các sản phẩm có giá trị cao một cách hiệu quả và sáng tạo. Nó được dùng để quản lý các dự án phần mềm và phát triển sản phẩm hoặc ứng dụng. Trọng tâm của nó là các chiến lược phát triển sản phẩm thích nghi, nơi các đội đa chức năng cùng nhau làm việc hướng đến một mục tiêu chung trong vòng 2–4 tuần (Sprint). Nó bao gồm một loạt các giá trị, sản phẩm, vai trò, nghi lễ, quy tắc và các thực hành tốt nhất.
Lean
Lean bắt nguồn từ Hệ thống Sản xuất Toyota (TPS), đã cách mạng hóa sản xuất hàng hóa vật chất vào những năm 1950, 1960 và các thập kỷ tiếp theo. Mặc dù Lean vẫn giữ vững vị trí trong sản xuất, nó cũng đã tìm thấy những ứng dụng mới trong công việc tri thức, giúp các doanh nghiệp ở mọi ngành **loại bỏ lãng phí, cải thiện quy trình và thúc đẩy đổi mới**. Phát triển phần mềm là một phù hợp tự nhiên với các phương pháp Lean, vì nó, giống như sản xuất, thường tuân theo các quy trình đã được thiết lập, có các tiêu chí chấp nhận rõ ràng và dẫn đến việc giao hàng giá trị cụ thể. Các khái niệm cốt lõi dẫn dắt mọi thực hành Lean được gọi là các trụ cột Lean. Chúng bao gồm:
- Cải tiến liên tục
- Tôn trọng con người
- Lãnh đạo nhẹ nhàng
Kanban
Kanban là một phương pháp quản lý quy trình làm việc rất trực quan, được áp dụng rộng rãi trong các đội Lean. Trên thực tế, 83% các đội sản xuất Lean sử dụng Kanban để trực quan hóa và quản lý tích cực quá trình tạo sản phẩm, tập trung vào việc giao hàng liên tục mà không làm quá tải đội phát triển. Giống như Scrum, Kanban là một quy trình được thiết kế để giúp các đội hợp tác hiệu quả hơn.
Kanban dựa trên ba nguyên tắc cốt lõi:
- Trực quan hóa công việc của bạn hôm nay (quy trình làm việc): Xem xét tất cả các mục trong bối cảnh với nhau có thể cung cấp thông tin phong phú và sâu sắc.
- Công việc đang thực hiện (WIP) giới hạn: Điều này giúp cân bằng các phương pháp dựa trên luồng để các đội không bắt đầu và cam kết quá nhiều công việc ngay lập tức.
- Cải thiện quy trình: Khi một nhiệm vụ được hoàn thành, mục tiếp theo có độ ưu tiên cao nhất trong danh sách công việc chờ sẽ được kích hoạt.
Kanban thúc đẩy sự hợp tác liên tục bằng cách xác định luồng làm việc tối ưu cho đội nhóm và khuyến khích học tập tích cực, liên tục và cải tiến.
Phương pháp phát triển hệ thống động (DSDM)
DSDM là một khung gồm tám nguyên tắc, bao gồm vòng đời và sản phẩm, vai trò và trách nhiệm, cùng một số kỹ thuật thực hành tốt nhất. Những nguyên tắc này hỗ trợ và tạo điều kiện cho việc cung cấp sớm các lợi ích kinh doanh mang tính chiến lược, từ đó mang lại lợi suất đầu tư (ROI) cao nhất cho tổ chức.
DSDM là một phương pháp ưu tiên lên kế hoạch và chất lượng hơn là tính năng. Nó xác định chi phí, chất lượng và thời gian ngay từ đầu và sử dụng kỹ thuật phân loại ưu tiên MoSCoW để chia nhỏ yêu cầu dự án thành bốn loại:
- MPhải có
- SNên có
- CCó thể có
- WKhông có
Tám nguyên tắc hỗ trợ của DSDM Atern [13] hướng dẫn các đội về thái độ và tư duy mà họ cần áp dụng để liên tục tạo ra giá trị.
- Tập trung vào nhu cầu kinh doanh
- Giao hàng đúng hạn
- Hợp tác
- Không bao giờ đánh đổi chất lượng
- Xây dựng từng bước từ nền tảng vững chắc
- Phát triển lặp lại
- Giao tiếp rõ ràng liên tục
- Thể hiện sự kiểm soát
Lập trình cực đoan (XP)
Ban đầu được mô tả bởi Kent Beck,Lập trình cực đoan (XP) đã trở thành một trong những phương pháp Agile phổ biến và gây tranh cãi nhất. XP là một phương pháp có kỷ luật nhằm cung cấp phần mềm chất lượng cao một cách nhanh chóng và liên tục. Nó nhằm mục đích cải thiện chất lượng phần mềm và khả năng phản hồi trước nhu cầu thay đổi của khách hàng. XP thúc đẩy sự tham gia cao của khách hàng, các chu kỳ phản hồi nhanh, kiểm thử liên tục, lập kế hoạch liên tục và hợp tác chặt chẽ giữa các thành viên trong đội, mang lại phần mềm hoạt động ở các khoảng thời gian rất ngắn (thường là mỗi 1–3 tuần).
Tên của phương pháp này bắt nguồn từ ý tưởng lấy những yếu tố có lợi từ các thực hành truyền thống trong kỹ thuật phần mềm và đẩy chúng đến mức “cực đoan”. Ví dụ, việc kiểm tra mã nguồn được coi là một thực hành có lợi. Trong hình thức cực đoan, mã nguồn được kiểm tra liên tục thông qua thực hành lập trình cặp đôi.
Khung XP ban đầu dựa trên bốn giá trị cốt lõi — Đơn giản, Giao tiếp, Phản hồi và Dũng cảm.
Nó cũng bao gồm mười hai thực hành hỗ trợ:
- Trò chơi lập kế hoạch
- Phát hành nhỏ
- Kiểm thử chấp nhận của khách hàng
- Thiết kế đơn giản
- Lập trình cặp đôi
- Phát triển dựa trên kiểm thử
- Tái cấu trúc
- Tích hợp liên tục
- Sở hữu mã nguồn tập thể
- Tiêu chuẩn lập trình
- Ẩn dụ
- Phát triển bền vững

Lập trình cực đoan
Phát triển dựa trên tính năng (FDD)
Phát triển dựa trên tính năng (FDD) được Jeff De Luca giới thiệu vào năm 1997 trong một dự án phát triển phần mềm tại một ngân hàng lớn ở Singapore. Đây là một quy trình phát triển phần mềm lặp lại và tăng dần, đồng thời là một cách tiếp cận Agile để xây dựng phần mềm. FDD tích hợp nhiều thực hành tốt nhất trong ngành được công nhận rộng rãi thành một toàn thể thống nhất. Các thực hành này được thúc đẩy từ góc nhìn giá trị của khách hàng — các tính năng. Mục tiêu chính của nó là cung cấp phần mềm hoạt động thực tế, có thể sử dụng được, một cách đều đặn và đúng hạn. Một lợi thế chính khi sử dụng FDD là nó có thể mở rộng đến các nhóm lớn nhờ vào khái niệm “Thiết kế Vừa Đủ” (JEDI). Nhờ quy trình tập trung vào tính năng, FDD là một giải pháp tuyệt vời để duy trì kiểm soát đối với các dự án Agile, tăng dần và vốn dĩ phức tạp. Nó bao gồm năm hoạt động cốt lõi:
- Phát triển một mô hình tổng thể
- Xây dựng danh sách tính năng
- Lập kế hoạch theo tính năng
- Thiết kế theo tính năng
- Xây dựng theo tính năng

Phát triển dựa trên tính năng (FDD)
Mỗi dự án có một mô hình riêng biệt, tạo ra danh sách tính năng. Ba hoạt động cuối cùng là các vòng lặp ngắn, mỗi vòng kéo dài không quá hai tuần. Nếu một nhiệm vụ kéo dài hơn hai tuần, nó sẽ được chia nhỏ thành các tính năng nhỏ hơn.
Crystal
Các phương pháp Crystal được phát triển bởi Alistair Cockburn vào giữa những năm 1990 như một loạt các cách tiếp cận (gia đình Crystal). Các phương pháp này bắt nguồn từ nhiều năm học hỏi và phỏng vấn các đội nhóm của Cockburn. Nghiên cứu của Cockburn cho thấy các đội nhóm mà ông phỏng vấn không tuân theo các phương pháp hình thức, nhưng vẫn hoàn thành thành công các dự án. Gia đình Crystal là cách thức của Cockburn để ghi chép lại những điều mà các đội nhóm thành công đã làm. Các phương pháp Crystal chủ yếu tập trung vào:
- Con người
- Tương tác
- Cộng đồng
- Kỹ năng
- Tài năng
- Giao tiếp
Tuyên ngôn Agile
Thuật ngữ “Agile” được đưa ra trong Tuyên ngôn Agile năm 2001. Tuyên ngôn này nhằm thiết lập các nguyên tắc hướng dẫn các phương pháp phát triển phần mềm tốt hơn. Tuyên ngôn Agile bao gồm bốn giá trị cốt lõi. Việc đọc Tuyên ngôn Agile không có nghĩa là các mục ở bên phải vô giá trị — thay vào đó, Agile coi trọng các mục ở bên trái hơn.

Tuyên ngôn Agile
Hãy cùng xem xét dòng đầu tiên trong Tuyên ngôn Agile. Dòng này nêu rằng chúng ta coi trọng con người, các mối quan hệ, giao tiếp và hợp tác nhiều hơn là các quy trình và công cụ rộng rãi. Tất nhiên, quy trình và công cụ có giá trị, nhưng chúng trở nên có giá trị hơn nữa khi thực sự hỗ trợ con người làm việc cùng nhau để cung cấp sản phẩm chất lượng cao. Điều chúng ta thường thấy trong nhiều tổ chức là các quy trình và công cụ trở thành mục tiêu tự thân. Từ góc nhìn Agile, chúng ta nhìn nhận điều này khác biệt. Các quy trình và công cụ nên hỗ trợ con người làm việc cùng nhau để tạo ra giá trị cho khách hàng.
Nguyên tắc Agile
Là một bổ sung cho Tuyên ngôn Agile, Hiệp hội Agile cũng đã xác định một bộ 12 nguyên tắc cung cấp định hướng và giải thích chi tiết hơn ngoài phạm vi của tuyên ngôn:

Nguyên tắc Tuyên ngôn Agile
- Ưu tiên hàng đầu của chúng tôi là đáp ứng khách hàng thông qua việc giao phần mềm có giá trị sớm và liên tục.
- Chào đón những thay đổi về yêu cầu, ngay cả ở giai đoạn cuối của quá trình phát triển. Các quy trình Agile tận dụng sự thay đổi để tạo lợi thế cạnh tranh cho khách hàng.
- Giao phần mềm hoạt động thường xuyên, từ vài tuần đến vài tháng, với ưu tiên là các khoảng thời gian ngắn hơn.
- Người làm kinh doanh và nhà phát triển phải làm việc cùng nhau mỗi ngày trong suốt dự án.
- Xây dựng dự án xung quanh những cá nhân có động lực. Cung cấp cho họ môi trường và hỗ trợ cần thiết, và tin tưởng họ hoàn thành công việc.
- Phương pháp hiệu quả nhất để truyền đạt thông tin đến và trong đội phát triển là trao đổi trực tiếp.
- Phần mềm hoạt động là thước đo chính của tiến độ.
- Các quy trình Agile thúc đẩy phát triển bền vững. Các nhà tài trợ, nhà phát triển và người dùng nên có khả năng duy trì nhịp độ ổn định mãi mãi.
- Sự chú ý liên tục đến sự xuất sắc về kỹ thuật và thiết kế tốt sẽ tăng cường tính linh hoạt.
- Tối giản — nghệ thuật tối đa hóa lượng công việc không được thực hiện — là điều thiết yếu.
- Các kiến trúc, yêu cầu và thiết kế tốt nhất xuất hiện từ các đội tự tổ chức. Các đội thường xuyên phản tư về cách họ có thể trở nên hiệu quả hơn và sau đó điều chỉnh hành vi của mình cho phù hợp.
Tóm tắt
Phát triển Agile là một thuật ngữ phổ biến trong ngành phát triển phần mềm — một cách thay thế để quản lý các dự án phát triển phần mềm. Nó không phải là một phương pháp phát triển phần mềm cụ thể, mà là một tập hợp các phương pháp và thực hành dựa trên các giá trị và nguyên tắc được nêu trong Tuyên ngôn Agile. Các giải pháp phát triển thông qua sự hợp tác giữa các đội tự tổ chức, đa chức năng, tận dụng các thực hành phù hợp với bối cảnh của họ.