Agile Model – Mô Hình Linh Hoạt
Agile Model được phát triển từ mô hình gia tăng.
Agile có thể nói là một trong những mô hình mang lại nhiều ưu điểm và sự linh hoạt rất cao trong các quy trình phát triển phần mềm.
1. Nguyên Lý của Agile Model
Là một phương pháp phát triển phần mềm mà chu trình của nó thể hiện ở các vòng đời con liên tiếp nhau.
Kết quả trong từng vòng đời con sẽ được release với một chức năng được hoàn thành.
Hãy cùng nhìn hình vẽ minh họa dưới đây.
Hình minh họa mô hình Agile Model
Mỗi bản release trong mỗi vòng đời con được test và đảm bảo về mặt chất lượng.
Chúng tay hãy cùng phân tích các công đoạn trong một vòng đời con của agile.
Step 1. Analysis and Requirements
Đây là bước tiếp nhận yêu cầu của dự án và bắt đầu phân tích xem dự án yêu cầu thực hiện phần mềm gì…
Step 2: Design.
Sau khi đọc và phân tích được rõ yêu cầu của dự án, thì step 2 là công đoạn thiết kết phần mềm.
Phần mềm này được thiết kế như thế nào, sử dụng ngôn ngữ lập trình nào, thuật toán gì, các công cụ gì và thư viện gì để xây dựng nên sản phẩm.
Step 3: Coding.
Thực hiện quá trình coding với những chức năng đã được vạch ra trong thiết kế.
Trong thực tế coder vừa thực hiện code vừa thực hiện test những chức năng cơ bản mà thiết kế đã đưa ra.
Sau khi coding được hoàn thành, dev phải tự mình review code của mình về giải thuật, style….
Sau đó được review thêm lần nữa bởi leader, hoặc PM hoặc một coder có kinh nghiệm nhiều hơn.
Cho đến khi mã code đã đạt được sự tối ưu, thì tiến hành đưa sản phẩm lên sever chuyển sang cho tester.
Step 4: Testing.
Được thực hiện bởi các tester sau khi các coder hoàn thiện xong bước 3.
Qúa trình fixed bug được bắt đầu từ đây.
Một vòng tròn tương tác giữa dev và QA sẽ xuất hiện cho đến khi chức năng đảm bảo chạy tốt.
Khi việc test được hoàn thành cũng là lúc sản phẩm được giao cho khách hàng.
Team phát triển lại tiếp tục quay trở về công đoạn đầu tiên với một nhiệm vụ mới tiếp theo.
2. Ưu nhược điểm Agile Model
* Ưu điểm.
– Nguyên mẫu sản phầm được hình thành. Và sau đó là liên tục các bản release được gửi theo chu kỳ theo tuần hoặc tháng.
– Sự tương tác giữa con người với con người. Dev-Test-Leader liên tục tương tác khi làm việc làm cho vấn đề được giải quyết nhanh.
– Liên tục đưa ra những ý tưởng hay, những phương pháp, kỹ thuật tối ưu cho thiết kế.
– Đáp ứng sự thay đổi bất ngờ, hoặc muộn màng.
* Nhược điểm.
– Trong giai đoạn phôi thai. Rất khó để đánh giá được nỗ lực cần thiết lúc bắt đầu của vòng đời phát triển cho sản phẩm.
– Sự tương tác quá nhiều dẫn đến việc thiếu tập trung vào thiết kế và các tài liệu cần thiết.
– Cần có đội ngũ phát triển có năng lực cao, kinh nghiệm.
Đội ngũ phải có sự năng động và linh hoạt để có khả năng đưa ra các quyết định cần thiết trong quá trình phát triển phần mềm khi gặp phải những khó khăn trở ngại.
3. Khi nào áp dụng Agile Model
– Khi dự án có những thay đổi cần thiết phải thực hiện.
– Chi phí cho việc thực hiện nhưng thay đổi là rất it.
– Dự án mà các yêu cầu mới không mất quá nhiều thời gian.
– Khi việc phát triển phần mềm có sự linh động, thoải mái.
4. Triết lý của Agile Model và 12 nguyên lý giá trị
Còn được gọi với cái tên khác đó là tuyên ngôn của agile như một sư ưu ái cho quy trình phát triển phần mềm này.
Triết lý của agile thể hiện bởi 4 điều như sau.
* Cá nhân và sự tương tác hơn là quy trình và công cụ.
* Phần mềm chạy tốt hơn là tài liệu đầy đủ.
* Cộng tác với khách hàng hơn là đám phán hợp đồng.
* Phản hồi với các thay đổi hơn là bám sát kế hoạch.
Mười hai nguyên lý của agile thể hiện như sau
+ Ư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 sản phẩm release sớm và phần mềm có giá trị.
+ Chào đón sự thay đổi trong yêu cầu, spec thậm chí là rất muộn trong quá trình phát triển, sự linh hoạt của quy trình tận dụng sự thay đổi cho các lợi thế cạnh tranh.
+ Thường xuyên giao sản phẩm có giá trị cho khách hàng trong các khoảng thời gian như từ vài tuần vài tháng, và ưu tiên cho các khoảng thời gian ngắn hơn.
+ Phía khách hàng và team phát triển phần mềm có sự tương tác với nhau, làm việc với nhau, trao đổi trong suốt dự án
+ Xây dựng các dự án xung quanh các cá nhân có động lực, cung cấp cho họ môi trường và sự 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 tới nhóm phát triển và trong nội bộ nhóm là hội thoại, trao đổi trực tiếp.
+ Phần mềm chạy tốt chính là thước đo của tiến độ.
+ Các quy trình linh hoạt thúc đẩy phát triển bền vững.
+ Liên tục quan tâm đến kỹ thuật, và thiết kế tốt để gia tăng sự linh hoạt.
+ Sự đơn giản , nghệ thuật tối đa hóa lượng công việc chưa xong là căn bản.
+ Các thiết kế tốt nhất, yêu cầu tốt nhất, kiến trúc tốt nhất được làm ra bởi các nhóm tự tổ chức.
+ Team phát triển sẽ thường xuyên suy nghĩ về việc làm sao để trở lên hiệu quả hơn. Sau đó là sự điều chỉnh hành động của mình cho phù hợp.
_____________________________________________
Pass Pham