AGILE LÀ GÌ? GIỚI THIỆU TỔNG QUAN VỀ AGILE

Đinh Thao

Công nghệ trong thời đại hiện nay đang phát triển nhanh hơn bao giờ hết, buộc các công ty phần mềm toàn cầu phải làm việc trong môi trường thay đổi nhanh chóng. Bởi vì các công ty này đang hoạt động trong một môi trường luôn thay đổi, nên không thể thu thập một bộ yêu cầu phần mềm đầy đủ và thấu đáo. Không có những yêu cầu này, thực tế sẽ khó có thể hoạt động đối với bất kỳ mô hình phần mềm thông thường nào.

Các mô hình phát triển phần mềm thông thường như Waterfall phụ thuộc vào việc chỉ định hoàn toàn các yêu cầu, thiết kế và thử nghiệm hệ thống không hướng tới phát triển phần mềm nhanh chóng. Kết quả là, một mô hình phát triển phần mềm thông thường không cung cấp được sản phẩm cần thiết.

Agile được thiết kế đặc biệt để đáp ứng nhu cầu của môi trường thay đổi nhanh chóng bằng cách nắm bắt ý tưởng phát triển gia tăng và phát triển sản phẩm cuối cùng thực tế.

AGILE LÀ GÌ?

agile là gì

Agile (viết tắt của Agile Software Development) có nghĩa là phương thức phát triển phần mềm linh hoạt, được ứng dụng trong quy trình phát triển phần mềm với mục tiêu là đưa sản phẩm đến tay người dùng càng nhanh càng tốt.

Phương pháp phát triển phần mềm đã có từ năm 1957, nhưng tới năm 2001, bản tuyên ngôn của Agile “Tuyên bố chính thức 4 giá trị quan trọng và 12 nguyên tắc phía sau Tuyên ngôn Agile để giúp các nhà phát triển có được gợi ý trong thực hành và vận dụng các phương pháp Agile trong phát triển phần mềm.

Giờ đây, Agile còn thu hút các CEO sử dụng chung trong quản lý dự án phương pháp này phát triển phần mềm để thay đổi cách thức làm việc, quản lí, sản xuất ở các ngành khác như sản xuất, dịch vụ, sales, marketing, giáo dục… và trở thành một phương thức quản lý dự án phổ biến nhất hiện nay.

Tổng quan về tuyên ngôn Agile

4 nguyên tắc phải tuân thủ khi áp dụng phương pháp Agile

  • Cá nhân và sự tương hỗ quan trọng hơn quy trình và công cụ: các thành viên trong nhóm phải tương tác và hỗ trợ nhau sẽ mang đến thành công cho dự án.
  • Phần mềm chạy tốt hơn là tài liệu đầy đủ: Thu thập toàn bộ nhu cầu của khách hàng để xây dựng, hoàn thiện phần mềm tối ưu hóa nhu cầu của khách hàng.
  • Cộng tác với khách hàng quan trọng hơn đàm phán hợp đồng: Hiểu được khách hàng cần gì để tư vấn và điều chỉnh sản phẩm trước khi đưa ra các điều khoản trong hợp đồng.
  • Phản hồi thay đổi hơn là bám sát kế hoạch: Agile khuyến khích thích nghi với sự thay đổi, đó có thể là thay đổi về công nghệ, nhân sự, deadline,…

12 nguyên lý thực hiện trong Agile

  • Ưu tiên cao nhất là thỏa mãn khách hàng thông qua việc chuyển giao sớm và liên tục các phần mềm có giá trị.
  • Tiếp nhận các yêu cầu thay đổi, thậm chí là rất muộn có thể là giai đoạn cuối của quá trình phát triển.
  • Bàn giao phần mềm chạy được cho khách hàng một cách thường xuyên.
  • Nhà kinh doanh và các kỹ sư phần mềm cần làm việc cùng nhau trong suốt dự án để tối ưu hóa chức năng cũng như việc sử dụng phần mềm.
  • Xây dựng dự án xung quanh các cá nhân có động lực. Cung cấp sự hỗ trợ cần thiết, môi trường làm việc và niềm tin để hoàn thành công việc.
  • Trao đổi trực tiếp là cách truyền đạt thông tin hiệu quả nhất tránh việc thông tin bị tam sao thất bản.
  • Phần mềm chạy tốt là thước đo chính của tiến độ.
  • Phát triển liên tục và bền vững.
  • Cải tiến sự linh hoạt bằng cách quan tâm đến kỹ thuật và thiết kế.
  • Nghệ thuật tối đa hóa lượng công việc chưa xong – Sự đơn giản là cần thiết.
  • Các nhóm tự tổ chức để đưa ra kiến trúc tốt nhất, yêu cầu tốt nhất, và thiết kế tốt nhất.
  • Bộ phận sản xuất, thiết kế phần mềm phải thường xuyên tiếp nhận thông tin, thử nghiệm, đánh giá để phần mềm trở nên hiệu quả hơn. Sau đó họ sẽ điều chỉnh và thay đổi cho phù hợp thích ứng thường xuyên với những thay đổi.

agile

Đặc trưng cơ bản của Agile

Tính lặp (Iterative): Dự án sẽ được thực hiện trong các phân đoạn lặp đi lặp lại (Iteration hoặc Sprint), thường có khung thời gian ngắn (từ 1-4 tuần). Trong mỗi phân đoạn, nhóm phát triển thực hiện việc lập kế hoạch, phân tích yêu cầu, thiết kế, triển khai, kiểm thử để cho ra các phần nhỏ của sản phẩm.

Tính tăng trưởng và tiến hóa (Incremental & Evolutionary): Cuối các phân đoạn, nhóm cho ra các phần nhỏ của sản phẩm cuối cùng, có khả năng chạy tốt, được kiểm thử cẩn thận xem sản phẩm đó có tốt để sử dụng. Theo thời gian, phân đoạn này tiếp nối phân đoạn kia, các phần chạy được này sẽ được tích lũy, lớn dần lên cho tới khi toàn bộ yêu cầu của khách hàng được thỏa mãn. 

Tính thích nghi (adaptive): Do các phân đoạn chỉ kéo dài trong một khoảng thời gian ngắn nên các yêu cầu thay đổi công nghệ, thay đổi định hướng về mục tiêu v.v.) đều có thể được đáp ứng theo cách thích hợp thích nghi với doanh nghiệp và thị trường.

Nhóm tự tổ chức và liên chức năng: Các cấu trúc nhóm này tự phân công công việc mà không dựa trên các mô tả cứng về chức danh hay làm việc dựa trên một sự phân cấp rõ ràng trong tổ chức. Nhóm tự tổ chức đã đủ các kĩ năng cần thiết để có thể được trao quyền tự ra quyết định, tự quản lí và tổ chức lấy công việc của chính mình để đạt được hiệu quả cao nhất.

Quản lý tiến trình thực nghiệm (Empirical Process Control): Các nhóm Agile ra các quyết định dựa trên các dữ liệu thực tiễn. Agile rút ngắn vòng phản hồi để dễ dàng thích nghi và gia tăng tính linh hoạt nhờ đó có thể kiểm soát được tiến trình, và nâng cao năng suất lao động.

Giao tiếp trực diện (face-to-face communication): Agile không phản đối việc tài liệu hóa, nhưng đánh giá cao hơn việc giao tiếp trực diện. Agile khuyến khích nhóm phát triển trực tiếp trao đổi với khách hàng, các thành viên trong nhóm, để nắm bắt được nhu cầu khách hàng, trao đổi và thống nhất với nhau về thiết kế của hệ thống và cùng nhau triển khai thành các chức năng theo yêu cầu.

Phát triển dựa trên giá trị (value-based development): Dựa trên nguyên tắc “sản phẩm chạy tốt chính là thước đo của tiến độ”. Nhóm Agile thường cộng tác trực tiếp và thường xuyên với khách hàng để biết yêu cầu nào có độ ưu tiên cao hơn, mang lại giá trị cao nhất cho dự án.

Các phương pháp Agile

Scrum

scrum

Scrum là một framework Agile, trong đó mọi người có thể giải quyết vấn đề thích ứng phức tạp trong khi năng suất và tính sáng tạo của việc cung cấp sản phẩm đạt giá trị cao nhất có thể. 

Đó là sự kết hợp của cách tiếp cận lặp đi lặp lại (iterative) và tăng trưởng (incremental) nhằm đưa ra một cách thức quy định rõ ràng, trong đó nhiệm vụ được giao hoàn thành bởi một nhóm Scrum đã xác định các quy trình và vai trò được chỉ định cho từng thành viên trong nhóm.

Tất cả các cập nhật và trạng thái đều được dẫn dắt bởi Scrum Master, một thành viên trong nhóm, chịu trách nhiệm đảm bảo nhóm tuân theo các yêu cầu đặt ra thông qua Scrum.

Kanban

kanban

Kanban là một phương pháp phát triển Agile phổ biến. Về cơ bản, nó là một thiết bị báo hiệu hướng dẫn chuyển động của các bộ phận trong hệ thống sản xuất ‘kéo’, được phát triển như một phần của hệ thống sản xuất của Toyota – TPS (Toyota Production System). 

Kanban là về việc hình dung quy trình làm việc hiện có theo các bước. Các bước này có thể được tạo trên bảng trắng

Mục đích chính cua Kanban là làm giảm WIP (Work-In-Progress) hoặc hàng tồn kho giữa các quy trình bằng cách đảm bảo quy trình ngược dòng tạo ra các bộ phận miễn là quy trình xuôi dòng của nó cần. Mục tiêu của việc thực hiện Kanban là đảm bảo các hạng mục công việc chuyển sang các bước tiếp theo một cách nhanh chóng để nhận ra giá trị kinh doanh nhanh hơn.

Scrumban

Là một phương pháp được Corey Ladas giới thiệu vào năm 2009. Scrumban kết hợp được những ưu điểm của Scrum và Kanban để cho phép nhóm liên tục cải tiến quy trình và khả năng xử lý công việc.

Lean Software Development (LSD)

Lean Software Development

Phát triển phần mềm tinh gọn (LSD) là một framework Agile được sử dụng để hợp lý hóa và tối ưu hóa quy trình phát triển phần mềm. Nó cũng có thể được gọi là chiến lược Minimum Viable Product (MVP) vì những cách suy nghĩ này rất giống nhau vì cả hai đều có ý định tăng tốc độ phát triển bằng cách tập trung vào sản phẩm mới.

Toyota đã được ghi nhận là người truyền cảm hứng cho các phươn pháp tiếp cận phát triển tinh gọn nhằm tối ưu hóa sản xuất và giảm thiểu lãng phí. Nhìn thấy cách tiếp cận tinh gọn của Toyota, nhiều đội sản xuất khác bắt đầu làm theo chiến lược tương tự. Và nó lần đầu tiên được áp dụng trong phát triển phần mềm vào năm 2003.

XP (Extreme Programming) – Hay lập trình cực hạn

Extreme Programming

Extreme programming (XP) là một trong những framework phát triển phần mềm quan trọng nhất của các mô hình Agile. Nó được sử dụng để cải thiện chất lượng phần mềm và khả năng đáp ứng các yêu cầu của khách hàng. XP khuyến nghị sử dụng các phương pháp hay nhất đã hoạt động tốt trong quá khứ trong các dự án phát triển chương trình ở mức độ cực hạn.

XP đưa ra các bản phát hành thường xuyên thông qua các chu trình phát triển ngắn. Một số các thực hành của XP như:  Lập trình cặp (Pair programming), Tái cấu trúc mã nguồn (Refactoring), Kiểm thử đơn vị (Unit Testing), Tích hợp liên tục (Continuous Integration), Các bản phát hành nhỏ (Small Release)…. 

Agile – Scrum hoạt động như thế nào?

Product Owner, người chịu trách nhiệm tạo ra Product Backlog, tức danh sách các yêu cầu của dự án, sắp xếp chúng theo thứ tự ưu tiên của mình.

Đội sản xuất sau đó thực hiện từng yêu cầu một dưới hình thức các giai đoạn nhỏ gọi là Sprint, với khoảng thời gian là 1 đến 4 tuần làm việc. Điều quan trọng là ở đây, mỗi Sprint đem lại một bản cập nhật của sản phẩm, được gọi là Potentially Shippable Product Increment, có thể chuyển giao ngay lập tức.

Trước mỗi Sprint, đội sản xuất và Product Owner họp để lên kế hoạch cụ thể cho giai đoạn tiếp theo. Kết quả của cuộc họp này là Sprint Backlog, danh sách các công việc cần thực hiện trong suốt Sprint đó.

Trong quá trình phát triển, nhóm cập nhật Sprint Backlog và họp hàng ngày (Daily Scrum) để thảo luận về tiến độ công việc và khắc phục các khó khăn nếu có. Nhóm có quyền tự quản lý công việc của họ để đảm bảo hoàn thành mục tiêu của Sprint.

Khi Sprint kết thúc, sản phẩm được nâng cấp và sẵn sàng để chuyển giao cho khách hàng. Buổi họp Sơ kết Sprint (Sprint Review) giúp khách hàng thấy được thành quả của nhóm và đưa ra phản hồi.

Sau mỗi Sprint, Scrum Master và nhóm họp để đánh giá và tìm cách cải tiến (Sprint Retrospective) trước khi bắt đầu Sprint mới. Quá trình này giúp nhóm liên tục học hỏi và trưởng thành qua từng Sprint.

Các Sprint được lặp đi lặp lại cho đến khi tất cả các yêu cầu trong Product Backlog được hoàn thành hoặc khi Product Owner quyết định dừng dự án dựa trên tình hình thực tế.

Sử dụng chiến thuật “có giá trị hơn làm trước,” các yêu cầu mang lại nhiều giá trị hơn cho dự án luôn được ưu tiên hoàn thành trước. Scrum không chỉ mang lại giá trị lớn cho dự án mà còn tạo ra năng suất làm việc cao nhờ quá trình liên tục cải tiến. Đây là hai lợi ích quan trọng của Scrum đối với tổ chức.

Ưu, nhược điểm của phương pháp Agile

Ưu điểm

  • Việc triển khai phần mềm nhanh hơn và do đó giúp tăng sự tin tưởng của khách hàng
  • Có thể thích ứng tốt hơn với các yêu cầu thay đổi nhanh chóng và đáp ứng hơn
  • Giúp nhận được phản hồi ngay lập tức có thể được sử dụng để cải thiện phần mềm trong những bước tiếp theo
  • Con người và sự tương tác được ưu tiên hơn là quy trình và công cụ
  • Liên tục chú ý đến sự xuất sắc về kỹ thuật và thiết kế tốt

Nhược điểm

  • Trong các dự án phần mềm lớn, rất khó để đánh giá nỗ lực cần thiết ở giai đoạn đầu của vòng đời phát triển phần mềm
  • Phát triển Agile tập trung vào code nhiều hơn và tạo ra ít tài liệu hơn
  • Phát triển Agile phụ thuộc rất nhiều vào đâu vào của khách hàng. Nếu khách hàng cảm thấy mơ hồ trong tầm nhìn của mình về kết quả cuối cùng, thì rất có thể dự án sẽ đi chệch hướng
  • Giao tiếp trực tiếp khó hơn trong các tổ chức quy mô lớn
  • Chỉ có những lập trình viên cấp cao mới có khả năng đưa ra quyết định cần thiết trong quá trình phát triển. Do đó, đây là một tình huống khó khăn đối với các lập trình viên mới để thích nghi với môi trường.

Trong số các phương pháp Agile, Scrum thuộc loại phổ biến nhất bởi sự hiệu quả và tối ưu của nó. Theo khảo sát Scrum và các phương pháp lai với Scrum như Scrumban, Scrum và XP chiếm gần ¾ mức độ phổ biến. Đó là lý do rất nhiều nhóm bắt đầu quá trình tiếp nhận Agile với việc sử dụng Scrum.

Những câu hỏi thường gặp về phương pháp kiểm thử Agile?

1. Agile và Scrum có phải là một?

Scrum là một phương pháp Agile (phổ biến nhất) nhưng không phải là Agile. Agile định nghĩa các giá trị cốt lõi và nguyên tắc định hướng, còn Scrum là một phương pháp cụ thể chia sẻ các nguyên tắc đó. Scrum và một số phương pháp định hình và ra đời trước Agile, nhưng Agile lại là tiếng nói chung, là nguyên lý của các phương pháp này.

2. Có phải Agile chỉ áp dụng cho quá trình phát triển phần mềm?

Agile không chỉ ảnh hưởng trong Phát triển phần mềm Agile (Agile Software Development) mà còn đang thể hiện giá trị trong các lĩnh vực khác như: Agile Marketing, Agile Hr, Agile Management…

Agile là một trong 6 những phương pháp về quản lý dự án được sử dụng phổ biến nhất hiện nay. Việc sử dụng phương pháp này làm giảm tải được sự cồng kềnh trong bộ máy nhân sự cũng như đơn giản hơn trong việc quản lý.

5/5 - (1 bình chọn)
Từ khóa:
Bình luận
Icon Phone