Agile là thuật ngữ dùng để mô tả các phương pháp phát triển phần mềm nhấn mạnh vào việc bàn giao từng phần, cộng tác nhóm, lập kế hoạch liên tục và học hỏi không ngừng, thay vì cố gắng bàn giao toàn bộ sản phẩm cùng một lúc vào cuối dự án.
Agile tập trung vào việc giữ cho quy trình tinh gọn và tạo ra các sản phẩm khả dụng tối thiểu (MVP) trải qua nhiều vòng lặp trước khi hoàn thiện. Phản hồi được thu thập và triển khai liên tục. Nhìn chung, đây là một quy trình năng động hơn nhiều, trong đó mọi thành viên cùng phối hợp hướng đến một mục tiêu chung.

Phát triển phần mềm Agile là gì
SCRUM VÀ CÁC PHƯƠNG PHÁP AGILE PHỔ BIẾN
Agile là một tư duy, một tập hợp các giá trị và nguyên tắc. Agile là cách tư duy và hành động. Agile xoay quanh các chu kỳ ngắn, bàn giao từng phần và liên tục, thất bại nhanh, thu thập phản hồi, mang lại giá trị kinh doanh sớm cho khách hàng, đồng thời đề cao con người, cộng tác và tương tác. Agile là tư duy đề cao tính 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 hay artifact cụ thể nào — đó chỉ là tư duy. Ví dụ, Scrum là một trong những framework được sử dụng rộng rãi nhất trong hệ sinh thái Agile, có thể giúp bạn trở nên Agile hơn. Ngoài ra còn nhiều framework khác trong phong trào Agile như Kanban, XP, Crystal và nhiều phương pháp khác như minh họa trong hình dưới đây:

Các phương pháp Agile
Scrum:
Scrum là một framework trong đó mọi người có thể giải quyết các vấn đề phức tạp và thích nghi cao, đồng thời bàn giao sản phẩm có giá trị cao nhất có thể một cách hiệu quả và sáng tạo. Framework này được sử dụng để quản lý các dự án phần mềm cũng như phát triển sản phẩm hoặc ứng dụng. Scrum tập trung vào chiến lược phát triển sản phẩm thích ứng, trong đó một nhóm đa chức năng làm việc như một đơn vị để đạt mục tiêu chung trong 2–4 tuần (Sprint). Scrum bao gồm tập hợp các giá trị, artifact, vai trò, sự kiện, 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) — cuộc cách mạng trong sản xuất hàng hóa vật lý từ những năm 1950 trở đi. Lean vẫn giữ vững vị trí trong lĩnh vực sản xuất nhưng cũng tìm được ứng dụng mới trong công việc tri thức, giúp các doanh nghiệp thuộc 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 ứng dụng tự nhiên của phương pháp Lean vì, giống như sản xuất, lĩnh vực này thường tuân theo một quy trình xác định, có các điều kiện nghiệm thu rõ ràng và mang lại giá trị thực sự. Các khái niệm cốt lõi định hướng mọi thực hành Lean được gọi là các Trụ cột Lean, bao gồm:
- Cải tiến liên tục
- Tôn trọng con người
- Lãnh đạo tinh gọn
Kanban:
Kanban là phương pháp quản lý luồng công việc trực quan được các nhóm Lean ưa chuộng. Trên thực tế, 83% các nhóm áp dụng Lean sử dụng Kanban để trực quan hóa và quản lý tích cực quá trình tạo ra sản phẩm, với trọng tâm là bàn giao liên tục mà không làm quá tải nhóm phát triển. Giống như Scrum, Kanban là một quy trình giúp các nhóm làm việc cùng nhau hiệu quả hơn.
Kanban dựa trên 3 nguyên tắc cơ bản:
- Trực quan hóa công việc hôm nay (luồng công việc): Nhìn thấy toàn bộ công việc trong bối cảnh của nhau giúp đưa ra nhiều thông tin hữu ích
- Giới hạn lượng công việc đang thực hiện (WIP): Điều này giúp cân bằng cách tiếp cận dựa trên luồng để các nhóm không bắt đầu và cam kết quá nhiều việc cùng lúc
- Tăng cường luồng: Khi một việc hoàn thành, công việc ưu tiên cao nhất tiếp theo trong backlog sẽ được đưa vào xử lý
Kanban thúc đẩy cộng tác liên tục và khuyến khích học hỏi, cải tiến chủ động, không ngừng bằng cách xác định luồng công việc nhóm tốt nhất có thể.
Phương pháp Phát triển Hệ thống Động (DSDM):
DSDM là một framework gồm tám nguyên tắc, một vòng đời, các kết quả bàn giao, vai trò và trách nhiệm, cùng nhiều kỹ thuật thực hành tốt nhất. Tất cả những yếu tố này hỗ trợ triết lý bàn giao các lợi ích kinh doanh phù hợp với chiến lược sớm nhất có thể, nhằm mang lại lợi tức đầu tư (ROI) tốt nhất cho tổ chức.
DSDM là phương pháp luận ưu tiên tiến độ và chất lượng hơn tính năng, cố định chi phí, chất lượng và thời gian ngay từ đầu, đồng thời sử dụng phương pháp ưu tiên MoSCoW — phân loại yêu cầu dự án thành bốn nhóm:
- Must have — Bắt buộc phải có (M)
- Should have — Nên có (S)
- Could have — Có thể có (C)
- Won’t have — Không cần có lần này (W)
Có tám nguyên tắc làm nền tảng cho DSDM Atern[13]. Các nguyên tắc này định hướng thái độ và tư duy mà nhóm cần áp dụng để bàn giao nhất quán.
- Tập trung vào nhu cầu kinh doanh
- Bàn giao đúng hạn
- Cộng tác
- Không bao giờ thỏa hiệp về chất lượng
- Xây dựng từng phần trên nền tảng vững chắc
- Phát triển theo vòng lặp
- Giao tiếp liên tục và rõ ràng
- Thể hiện khả năng kiểm soát
Lập trình Cực đoan (XP):
Extreme Programming (XP), được mô tả lần đầu bởi Kent Beck, đã nổi lên như một trong những phương pháp Agile phổ biến và gây tranh luận nhất. XP là cách tiếp cận có kỷ luật để bàn giao phần mềm chất lượng cao một cách nhanh chóng và liên tục. XP được thiết kế nhằm cải thiện chất lượng phần mềm và khả năng đáp ứng trước các yêu cầu thay đổi của khách hàng. Phương pháp này đề cao sự tham gia sâu của khách hàng, vòng phản hồi nhanh, kiểm thử liên tục, lập kế hoạch liên tục và làm việc nhóm chặt chẽ để bàn giao phần mềm hoạt động được ở tần suất rất cao, thường là mỗi 1–3 tuần.
Phương pháp luận này lấy tên từ ý tưởng rằng các yếu tố có lợi của kỹ thuật phần mềm truyền thống được đẩy lên mức độ “cực đoan”. Ví dụ, review code được coi là một thực hành có lợi. Đẩy lên mức cực đoan, code có thể được review liên tục thông qua thực hành lập trình theo cặp (pair programming).
Phương pháp 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.
XP cũng có mười hai thực hành hỗ trợ:
- Planning Game — Trò chơi lập kế hoạch
- Small Releases — Phát hành nhỏ
- Customer Acceptance Tests — Kiểm thử chấp nhận của khách hàng
- Simple Design — Thiết kế đơn giản
- Pair Programming — Lập trình theo cặp
- Test-Driven Development — Phát triển hướng kiểm thử
- Refactoring — Tái cấu trúc
- Continuous Integration — Tích hợp liên tục
- Collective Code Ownership — Sở hữu mã chung
- Coding Standards — Chuẩn mực lập trình
- Metaphor — Phép ẩn dụ
- Sustainable Pace — Tốc độ bền vững

Lập trình Cực đoan
Phát triển Hướng Tính năng (FDD):
Feature-Driven Development (FDD) được giới thiệu năm 1997 bởi Jeff De Luca trong một dự án phát triển phần mềm cho một ngân hàng lớn tại Singapore. Đây là một quy trình phát triển phần mềm lặp và tăng dần, đồng thời là một phương pháp Agile. FDD kết hợp nhiều thực hành tốt nhất được công nhận trong ngành thành một thể thống nhất, tất cả được định hướng từ góc độ chức năng có giá trị với khách hàng (tính năng). Mục đích chính là bàn giao phần mềm hoạt động được, cụ thể và đúng thời hạn một cách lặp đi lặp lại. Ưu điểm của FDD là khả năng mở rộng cho các nhóm lớn nhờ khái niệm “chỉ thiết kế đủ ban đầu” (JEDI). Đây là giải pháp lý tưởng để duy trì kiểm soát các dự án Agile, tăng dần và vốn đã phức tạp nhờ quy trình tập trung vào tính năng. FDD bao gồm năm hoạt động cơ bản:
- Phát triển 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 Hướng Tính năng (FDD)
Mỗi dự án sẽ có mô hình riêng, từ đó tạo ra danh sách tính năng. Ba hoạt động cuối là các quy trình lặp ngắn, trong đó không có tính năng nào mất hơn hai tuần để xây dựng. Nếu cần hơn hai tuần, tính năng đó phải được chia nhỏ thành các tính năng nhỏ hơn.
Crystal:
Crystal là một họ phương pháp luận (họ Crystal) được Alistair Cockburn phát triển vào giữa những năm 1990, đúc kết từ nhiều năm nghiên cứu và phỏng vấn các nhóm dự án. Nghiên cứu của Cockburn cho thấy các nhóm ông phỏng vấn không tuân theo các phương pháp luận chính thức nhưng vẫn bàn giao dự án thành công. Họ Crystal là cách Cockburn ghi lại những gì các nhóm đó đã làm để đạt được thành công. Các phương pháp Crystal 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 đặt ra vào năm 2001 trong Tuyên ngôn Agile. Tuyên ngôn này đặt ra các nguyên tắc định hướng một cách tiếp cận tốt hơn trong phát triển phần mềm. Tuyên ngôn Agile bao gồm 4 giá trị quan trọng. Cách đọc Tuyên ngôn Agile không phải là các yếu tố ở vế phải không còn giá trị, mà là phong trào Agile đề cao các yếu tố ở vế trái hơn.

Tuyên ngôn Agile
Hãy cùng xem xét dòng đầu tiên của Tuyên ngôn Agile. Dòng này khẳng định rằng chúng ta coi trọng con người, tương tác, giao tiếp và cộng tác hơn là việc có đủ mọi loại quy trình và công cụ phức tạp. Tất nhiên, quy trình và công cụ đều có giá trị, nhưng chúng thực sự có giá trị hơn khi hỗ trợ mọi người làm việc cùng nhau và tạo ra sản phẩm tuyệt vời. Điều thường thấy ở nhiều tổ chức hiện nay là quy trình và công cụ đã trở thành mục tiêu tự thân. Từ góc độ Agile, chúng ta nhìn nhận điều này khác đi: quy trình và công cụ phải hỗ trợ con người trong việc cộng tác và tạo ra giá trị cho khách hàng.
CÁC NGUYÊN TẮC CỦA TUYÊN NGÔN AGILE
Bổ sung cho Tuyên ngôn Agile, Liên minh Agile cũng xác định một tập hợp 12 nguyên tắc nền tảng, cung cấp hướng dẫn và giải thích chi tiết hơn:

Các nguyên tắc của Tuyên ngôn Agile
Các nguyên tắc của Tuyên ngôn Agile:
- Ưu tiên cao nhất của chúng tôi là thỏa mãn khách hàng thông qua việc bàn giao phần mềm có giá trị sớm và liên tục.
- Chào đón các thay đổi yêu cầu, kể cả muộn trong quá trình phát triển. Quy trình Agile khai thác sự thay đổi vì lợi thế cạnh tranh của khách hàng.
- Bàn giao phần mềm hoạt động được thường xuyên, từ vài tuần đến vài tháng, ưu tiên chu kỳ ngắn hơn.
- Người kinh doanh và lập trình viên phải làm việc cùng nhau hàng 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à sự hỗ trợ cần thiết, đồng thời tin tưởng họ hoàn thành công việc.
- Phương pháp truyền đạt thông tin hiệu quả và hiệu lực nhất cho và trong nhóm phát triển là trò chuyện trực tiếp.
- Phần mềm hoạt động được là thước đo tiến độ chính.
- Quy trình Agile thúc đẩy phát triển bền vững.
- Các bên liên quan, lập trình viên và người dùng phải có khả năng duy trì tốc độ ổn định vô thời hạn.
- Chú trọng liên tục đến sự xuất sắc kỹ thuật và thiết kế tốt tăng cường sự linh hoạt.
- Sự đơn giản — nghệ thuật tối đa hóa lượng công việc không cần làm — 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 nhóm tự tổ chức. Theo định kỳ, nhóm nhìn lại cách làm việc để trở nên hiệu quả hơn, rồi điều chỉnh hành vi cho phù hợp.
TÓM TẮT
Phát triển Agile là một trong những từ khóa lớn của ngành phát triển phần mềm — một cách tiếp cận khác biệt trong quản lý các dự án phần mềm. Thay vì là một phương pháp phát triển phần mềm cụ thể, đây là thuật ngữ chung cho 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 thể hiện trong Tuyên ngôn Agile. Các giải pháp phát triển qua sự cộng tác giữa các nhóm tự tổ chức, đa chức năng, ứng dụng các thực hành phù hợp với bối cảnh của mình.
Nguồn: https://www.visual-paradigm.com/scrum/what-is-agile-software-development/









