Ứng dụng Agile trong phát triển ứng dụng di động

ngày 29-12-2016

Mô hình phát triển ứng dụng thác nước

Trước kia, mô hình phát triển ứng dụng thác nước (water fall) truyền thống thường được hầu hết các doanh nghiệp áp dụng khi triển khai phát triển ứng dụng di dộng. Theo mô hình thác nước, ở mỗi giai đoạn, mỗi bước việc phát triển ứng dụng di động sẽ hoàn tất một nhiệm vụ nào đó. Ví dụ như: 
Bước 1: Khảo sát, phân tích yêu cầu 
Bước 2: Xây dựng giao diện màn hình và xác nhận từ khách hàng 
Bước 3: Chuyển giao các giao diện cho developer để triển khai
Bước 4: Testing rồi sau đó cập nhật ứng dụng lên store
Bước 5: Bảo trì, nâng cấp ứng dụng.
Mô hình phát triển ứng dụng Water fall
 
Ưu điểm Nhược điểm
Các giai đoạn được thực hiện tuần tự, chặt chẽ. Thiếu linh động, sau khi hoàn tất mỗi giai đoạn developer sẽ chuyển hẳn sang giai đoạn kế tiếp.
Có sự thống nhất giữa developer và khách hàng trong giai đoạn đầu nên việc lập và thống nhất kế hoạch được rõ ràng và dễ dàng. Thời gian thực hiện dự án kéo dài có thể dẫn đến tình huống khách hàng thay đổi quy trình, nghiệp vụ trong quá trình thực hiện dự án, có thể gây lãng phí.
Thiết kế được xây dựng hoàn chỉnh và cẩn thận trên tất cả các thành phần cần thiết của ứng dụng giúp hệ thống đảm bảo chất lượng và ổn định hơn. Khi bàn giao cho khách hàng, nếu cần cải tiến, cập nhật chức năng nào đó cho phù hợp thực tế hơn thì đòi hỏi phải có phối hợp nhân sự ở nhiều giai đoạn, xem xét lại toàn bộ hệ thống, rà soát các chức năng có liên quan,… làm cho thời gian thực hiện có thể kéo dài và có thể lãng phí không cần thiết.
Khách hàng không mất nhiều thời gian theo suốt dự án do mọi ý kiến, đóng góp đều đã được thống nhất sớm, trong thời gian đầu của dự án. Kiểm thử nội bộ, kiểm thử từ khách hàng sẽ được thực hiện khi dự án gần như hoàn tất. Lúc đó khách hàng có thể không nhớ hết các yêu cầu hoặc cảm thấy lúng túng trước những chức năng mới mà hệ thống cung cấp.
Tài liệu, sưu liệu, hướng dẫn sử dụng được cung cấp đầy đủ giúp cho người tiếp nhận, bảo trì dự án dễ dàng hơn.  Mất nhiều thời gian, nhân lực để xây dựng tài liệu đi kèm của dự án mà trong đó có khả nhiều tài liệu chỉ được sử dụng 01 lần duy nhất.
Ưu – nhược điểm của mô hình thác nước

Mô hình phát triển ứng dụng Agile

Ngoài mô hình thác nước, mô hình Agile (phương thức phát triển phần mềm linh hoạt) hiện hay đang được các doanh nghiệp sử dụng phát triển ứng dụng di động dùng khá phổ biến để phát triển các dịch vụ IT.
 
Mô hình phát triển ứng dụng Agile
 
Có thể nói linh động là điểm khác biệt chính của Agile. Agile là phương thức làm phần mềm sao cho có thể đưa sản phẩm đến tay người dùng càng nhanh càng tốt, càng sớm càng tốt nhưng vẫn phải đảm bảo chất lượng.
 
Khi làm việc theo mô hình Agile, tất cả đều phải tuân theo 4 giá trị chính:
Cá nhân và sự phối hợp quan trọng hơn quy trình và công cụ (Individuals and Interactions Over Processes and Tools): chính giá trị của đội ngũ, nhân lực tham gia sẽ quyết định thành công của dự án. Bất kỳ khi nào dự án có vấn đề cần giải quyết, chính các nhân sự sẽ trao đổi và thống nhất mình cần thực hiện gì, tiến độ ra sao, … 
Sản phẩm xài được quan trọng hơn tài liệu về sản phẩm (Working Software Over Comprehensive Documentation): Agile không phải loại bỏ hết tài liệu, sưu liệu mà là đơn giản hóa và đó phải thật sự là những tài liệu cần thiết, có giá trị chứ không đi sâu vào các tài liệu quá chi tiết không cần thiết. 
Cộng tác với khách hàng quan trọng hơn đàm phán hợp đồng (Customer Collaboration Over Contract Negotiation): Điều quan trọng với Agile là kết quả sản phẩm có đáp ứng nhu cầu khách hàng không, có được khách hàng sử dụng và đánh giá cao không,… Do đó, nếu như với các mô hình khác thì khách hàng là người quan trọng trong giai đoạn đầu, ký kết hợp đồng, khảo sát yêu cầu thì với Agile khách hàng là một nhân tố quan trọng, tham gia trong suốt quá trình thực hiện để đảm bảo các chức năng cung cấp cho khách hàng là những chức năng thực sự cần thiết.
Xử lý thay đổi quan trọng hơn bám theo kế hoạch (Responding to Change Over Following a Plan): Nếu mô hình thác nước xem những thay đổi của khách hàng sau đó là chi phí, cần phải hạn chế để tránh trễ tiến độ, kế hoạch,… thì tinh thần Agile là làm tốt hơn ở mỗi lần thực hiện. Do đó, với mỗi thay đổi thì sau khi cân nhắc, sắp xếp ưu tiên sẽ được đưa vào giai đoạn nào phù hợp trong dự án.
 
Đây là 4 giá trị quan trọng và giúp hình thành nên các đặc điểm sau để phân biệt mô hình Agile với mô hình thác nước: 
Khách hàng là yếu tố quan trọng và sẽ tham gia xuyên suốt quá trình thực hiện dự án.
Nhóm thực hiện dự án có quyền đưa ra quyết định liên quan đến dự án. 
Xây dựng, hoàn thiện và cải tiến dần qua từng phiên bản.
Tập trung vào việc thường xuyên có phiên bản, kết quả.
Thực hiện một cách lặp đi lặp lại 
Kết hợp kiểm tra ở mỗi giai đoạn để có kết quả tốt hơn 
Thiết kế và phát triển phải được thực hiện cùng lúc.
Phân biêt giữ mô hình Water fall và Agile
Khi triển khai theo mô hình Agile, việc quản lý dự án sẽ có thể khác nhau tùy theo dự án nhưng người quản lý cần chú trọng hơn vào yếu tố điều phối công việc và giao tiếp, không cần quá chú trọng vào việc lập kế hoạch và kiểm soát thực hiện dự án. 
 
Ưu điểm
Nhược điểm
Thực hiện dự án đúng hạn sẽ làm cho khách hàng hài lòng. 
Đối với dự án lớn, sẽ rất khó để xác định được mức độ thành công ngay khi bắt đầu dự án 
Đáp ứng kịp thời nếu có sự thay đổi  Không chú trọng vào thiết kế và tài liệu 
Tất cả team phải đưa ra quyết định  Nếu khách hàng không hiểu rõ về các yêu cầu việc triển khai dự án sẽ dễ bị sai 
Tương tác liên tục với khách hàng, các nhà phát triển và đội thử nghiệm  Việc thực hiện quá trình Agile đòi hỏi phải có kinh nghiệm chuyên sâu
Họp và thảo luận để xác định được trước các vấn đề  Thời gian và kỹ năng họp, thảo luận cần chú ý đến giải quyết vấn đề sao cho cho hiệu quả. 
Ưu – nhược điểm của mô hình Agile
Triển khai mô hình Agile sẽ rất thú vị, sáng tạo, đồng thời cũng tăng được hiệu quả công việc hơn so với mô hình thác nước. Khi bắt đầu quen dần và hứng thú với công việc, sử dụng mô hình Agile sẽ mang lại nhiều hiệu quả hơn. Hiện nay, các công ty gia công phần mềm Việt Nam khi triển khai dự án, đặc biệt là các dự án ứng dụng di động cũng đều được yêu cầu triển khai theo mô hình Agile. Do đó, nếu có kiến thức về Agile bạn hoàn toàn có thể thích ứng nhanh với công việc hơn. 
Chúc bạn thành công ! 
 
(Trung Tâm Tin Học – tổng hợp từ Internet và kinh nghiệm thực tế trong triển khai ứng dụng di động cho khách hàng)