Agile là gì ? Có ăn được không?

Quay một vòng đã tới cuối tuần rồi, sáng nay rảnh rỗi viết bài ôn tập lại kiến thức tí xíu.

Chắc hẳn khi học về công nghệ thông tin thì hầu như ai cũng từng học qua về phát triển phần mềm ha. Và cái thời ngồi trong giảng đường thì khái niệm về các mô hình phát triển phần mềm như mô hình thác nước (Waterfall Model), mô hình xoắn ốc (Spiral Model), mô hình chữ V ….. khá mơ hồ. Để thực sự hiểu biết được thì cần phải tự trải nghiệm từ chính các doanh nghiệp làm phần mềm, web ….. Và hôm nay cũng xin giới thiệu với mọi người mô hình phát triển phần mềm linh hoạt (Agile Software Development) được gọi tắt là Agile.

agile-word-cloud

Định nghĩa

Nói đơn giản Agile là mô hình phát triển phần mềm linh hoạt, dựa trên phương thức lặp (iterative) và tăng trưởng (incremental). Nó sẽ gắn kết khách hàng vào quy trình phát triển của phần mềm, mọi người cố gắng cho ra sản phẩm càng nhanh càng tốt. Sau đó đưa cho khách hàng dùng thử và phản hồi lại, đội ngũ phát triển sẽ tiếp tục phát triển các giai đoạn tiếp theo. Tùy vào dự án mà thời gian release ra sản phẩm dài hay ngắn (có thể 2 tuần, cũng có thể 1 tháng ….).

Tuyên ngôn Agile

Cái tuyên ngôn này ra đời năm 2001, khi mà 17 kỹ sư phần mềm cùng tụ họp tại resort Snowbird, bang Utah miền Tây nước Mỹ để tìm kiếm một giải pháp phát triển gọn nhẹ và linh hoạt. Tuyên ngôn thì chỉ có vài dòng nhưng để hiểu được nó và vận hành không phải là chuyện đơn giản:

  • “Cá nhân hóa và sự tương tác: tự tổ chức và động lực phát triển rất quan trọng, tương tác với nhau giữa các lập trình viên”. Điều này có nghĩa là mỗi lập trình viên nên tự vận động hơn là dựa vào quy trình nhiều, và nên có sự tương tác với nhau để cùng nhau phát triển, điển hình là mô hình lập trình cặp (pair-programming).
  • “Thà làm ra phần mềm chạy tốt còn hơn là cung cấp đầy đủ tài liệu phần mềm cho khách hàng trong các cuộc họp”. Tức là nên đảm bảo ưu tiên phần mềm làm ra thật hoàn hảo trước, còn vấn đề tài liệu hướng dẫn sử dụng,….. thì không nên quá chú tâm, điều đó có thể thực hiện sau cùng.
  • “Sự cộng tác với khách hàng”. Nên đưa khách hàng vào quy trình phát triển chung của dự án, hãy hợp tác với khách hàng để sản phẩm được hoàn hảo và phù hợp với nhu cầu của họ. Không nên chỉ chú trọng vào việc đàm phán hợp đồng.
  • “Phản hồi với các thay đổi”. Tuyên ngôn này chú trọng vào việc thích ứng với các thay đổi của khách hàng hơn là bám sát vào kế hoạch đã vạch sẵn. Tức là trong một dự án thì đôi khi khách hàng muốn thay đổi kế hoạch, thay đổi kết cấu của phần mềm, thay đổi chức năng ….. nên đội ngũ phát triển cũng phải sẵn sàng thích ứng với sự thay đổi đó. Sự tương tác giữa khách hàng và nhà phát triển sẽ tăng lên rất nhiều khiến cho sản phẩm làm ra khiến khách hàng hài lòng hơn vì chính họ đã đưa ra yêu cầu chỉnh sửa mà. Dễ hiểu chưa.

Ngoài ra còn một danh sách 12 nguyên lý nữa nhưng thôi mình không kể ở đây, vì dài dòng lắm. Nếu bạn nào quan tâm có thể google search với từ khóa “agile principles”. Mục tiêu của bài viết này là bằng cách đơn giản nhất giúp mọi người có cái nhìn tổng quát và có thể tiêu hóa được kiến thức chứ không nêu lý thuyết thuần. Vả lại, đứng trên phương diện là một developer, cái bạn cần quan tâm là hiểu được cách mà agile hoạt động, việc còn lại sẽ do project manager hoặc team leader triển khai và mình đi theo thôi.

agile_methodology_overview

 

Nhìn vào hình trên thì có thể hiểu một cách đơn giản về mô hình này rồi phải không các chế!

Phát triển chức năng — Test — Release sản phẩm cho khách hàng — Khách hàng phản hồi lại — Thay đổi và test lại — Release sản phẩm. Và cái vòng xoay cứ tiếp tục xuyên suốt quá trình sản xuất ra sản phẩm đến khi nào hoàn thành thì thôi.

Các phương pháp Agile

Agile chỉ là một mô hình trên lý thuyết, để triển khai nó thì cần phải phân tích ra cụ thể, sau một thời gian dài, danh sách các phương pháp tăng lên và phát huy hiệu quả rõ rệt.

agile umbrella

Trong đó, phương pháp Scrum là phổ biến nhất hiện nay, nhiều công ty tại Việt Nam cũng đang thử nghiệm mô hình này.

SCRUM là một phương pháp phát triển với nguyên tắc là chia phần mềm cần sản xuất ra thành các phần nhỏ (các phần nhỏ này phải độc lập và release được), lấy ý kiến khách hàng và thay đổi cho phù hợp ngay trong quá trình phát triển để đảm bảo sản phẩm release đáp ứng những gì khách hàng mong muốn. Đơn giản hơn chút thì SCRUM là một nền tảng đơn giản để phát triển phần mềm, trong đó nó quy định một số quy luật cơ bản nhằm đảm bảo tạo ra cấu trúc của nhóm dự án, giữ cho nó phát triển, sáng tạo và tạo ra sự hấp dẫn đối với những người tham gia. Nó thực hiện dựa trên đặc tính tự nhiên của người phát triển nên rất dễ hiểu, dễ áp dụng, tạo nên tính tương tác cao giữa các lập trình viên trong nhóm. Giúp họ cùng nhau tạo ra những sản phẩm tốt. Thay vì chịu sự áp đặt, áp lực từ bên ngoài.

Viết tới đây thì bụng đói cồn cào, dừng tay bữa sau viết tiếp nhé mấy chế.

Advertisements

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất / Thay đổi )

Connecting to %s