Mở đầu bằng lịch sử phát triển của Agile qua từng giai đoạn sau đó đưa ra ưu nhược điểm của Agile trong phát triển phần mềm. Giới thiệu đơn giản về một số quy trình phát triển phần mềm sử dụng phương pháp Agile và tập trung về quy trình phát triển phần mềm Scrum.1 Tìm hiểu chung về Agile 2.1 Giới thiệu về Agile Phương pháp Agile để phát triển phần mềm đã trở nên lan rộng trong thời gian qua. Cụ thể là vào tháng 2 năm 2015 theo khảo sát của tổ chức Scrum Alliance Những ý tưởng của phương pháp này có nguồn gốc từ phương pháp lặp của Lean Manufacturing (1940) và Agile Manufacturing (1990). Trong đó nhấn mạnh khả năng thích nghi của các công ty đến một môi trường năng động.
Các tính năng độc đáo của phương pháp này được tìm thấy trong “Agile Manifesto” là cá nhân và tương tác quan trọng hơn quy trình nghiệp vụ, sản phẩm tốt hơn tài liệu đầy đủ. Phát triển phần mềm linh hoạt (Agile software development) là một triết lí cùng với nhóm các phương pháp và phương pháp luận phát triển phần mềm dựa trên các nguyên tắc phát triển phân đoạn lặp (iterative) và tăng trưởng (incremental), theo đó nhu cầu và giải pháp tiến hóa thông qua sự hợp tác giữa các nhóm tự quản và liên chức năng. Agile thường sử dụng cách lập kế hoạch thích ứng (adaptive planning), việc phát triển và chuyển giao theo hướng tiến hóa sử dụng các khung thời gian ngắn và linh hoạt để dễ dàng phản hồi lại với các thay đổi trong quá trình phát triển.2 Vì sao nên sử dụng Agile? - Sản phẩm của một dự án phần mềm là khác nhau nên việc áp dụng một quy trình để phát triển hàng loạt là rất khó khăn. - Ngay từ đầu khách hàng khó có thể hình dung đầy đủ các yêu cầu đặt ra cho sản phẩm mà phải qua quá trình hình thành nên việc ứng phó với những thay đổi yêu cầu sẽ giúp giảm thiểu rủi ro cho dự án.
- Đảm bảo sản phẩm đầu ra đúng theo nhu cầu của khách hàng. 5 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.3 Các đặc trƣng của Agile Có rất nhiều cách tiếp cận khác nhau với phương pháp Agile. Bên cạnh các cách thức tổ chức công việc, thiết lập quy trình, các phương pháp Agile còn nghiên cứu và đưa vào sử dụng các công cụ và kĩ thuật đặc thù như công cụ tích hợp liên tục kiểm thử đơn vị, mẫu thiết kế, tái cấu trúc, phát triển hướng kiểm thử, phát triển hướng hành vi, hay lập trình theo cặp … để đảm bảo và gia tăng tính linh hoạt. 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.
Trong mỗi phân đoạn này, nhóm phát triển thực hiện đầy đủ các công việc cần thiết như lập kế hoạch, phân tích yêu cầu, thiết kế, triển khai, kiểm thử (với các mức độ khác nhau) để cho ra các phần nhỏ của sản phẩm. Tính tiến hóa (Evolutionary) Cuối các phân đoạn, nhóm phát triển thường cho ra các phần nhỏ của sản phẩm cuối cùng. Các phần nhỏ này thường là đầy đủ, có khả năng chạy tốt, được kiểm thử cẩn thận và có thể sử dụng ngay. 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, và việc lập kế hoạch cũng được điều chỉnh liên tục, nên các thay đổi trong quá trình phát triển (yêu cầu thay đổi, thay đổi công nghệ, thay đổi định hướng về mục tiêu …) đều có thể được đáp ứng theo cách thích hợp.
Ràng buộc về thời gian (Time - Bound) Thời gian luôn là vấn đề rất quan trọng trong việc phát triển phần mềm bằng Agile. Nó xác định thời gian hoàn thành dự án và mỗi sprint phát triển dự án để bàn giao sản phẩm cho khách hàng kiểm tra xem đúng yêu cầu và chức năng hay không. Quản lý thực nghiệm (Empirical Process Control) 6 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Các nhóm Agile ra các quyết định dựa trên các dữ liệu thực tiễn thay vì tính toán lý thuyết hay các giả định. Việc phân nhỏ dự án thành các phân đoạn ngắn góp phần gia tăng các điểm mốc để nhóm phát triển thu thập dữ kiện cho phép điều chỉnh các chiến lược phát triển của mình.
Theo thời gian, các chiến lược này sẽ tiến gần đến trạng thái tối ưu, nhờ đó nhóm có thể kiểm soát được tiến trình, và nâng cao năng suất lao động. Dựa trên giá trị (value - based) Một trong những nguyên tắc cơ bản của Agile là phần mềm chạy tốt chính là thước đo tiến độ. Nguyên tắc này giúp nhóm dám loại bỏ đi các công việc dư thừa không trực tiếp mang lại giá trị cho sản phẩm. Để vận hành được cơ chế “làm việc dựa trên giá trị”, nhóm Agile thường làm việc trực tiếp và thường xuyên với khách hàng (hay đại diện của khách hàng), cộng tác trực tiếp với họ để biết yêu cầu nào có độ ưu tiên cao hơn, mang lại giá trị hơn cho dự án.
Nhờ đó các dự án Agile thường giúp khách hàng tối ưu hóa được giá trị của dự án. Chính vì thế, Agile làm gia tăng đáng kể độ hài lòng của khách hàng.4 Ƣu điểm và nhƣợc điểm của phƣơng pháp Agile Ƣu điểm Có một số lý do khiến Agile được sử dụng rộng rãi và bàn giao được một sản phẩm hoàn thiện theo đúng yêu cầu của khách hàng. - Ưu điểm đầu tiên có thể nói đến ở đây đó là sự hài lòng của khách hàng về việc liên tục có những bản release được gửi và sớm có sản phẩm có giá trị để có thể sử dụng thử. - Sự tương tác giữa con người với con người được chú trọng hơn là việc thực hiện theo quy trình và các công cụ.
Điều này được thể hiện bằng quá trình liên tục trao đổi giữa development và tester, giữa development và tech leader, giữa team phát triển và khách hàng qua mail, skype liên tục trong suốt dự án. - Sẵn sàng thích ứng với những thay đổi thường xuyên xảy ra, kể cả khi đó là sự thay đổi rất muộn. Nhƣợc điểm - Khó khăn hơn để xác định một trường hợp kinh doanh cho dự án và để đàm phán các dự án giá cố định. 7 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com - Đôi khi sự tương tác giữa con người 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, 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.5 So sánh mô hình phát triển của Agile với các mô hình phát triển phần mềm truyền thống khác Đặc điểm Waterfall Spiral Scrum Xác định các giai đoạn Bắt buộc Bắt buộc Chỉ có giai đoạn lập phát triển kế hoạch và kết thúc Sản phẩm cuối cùng Được xác định Được xác định Xác định trong quá trong quá trình trong quá trình lập trình xây dựng dự án lập kế hoạch kế hoạch Chi phí sản phẩm Được xác định Thay đổi cục bộ Xác định trong quá trong quá trình trình xây dựng dự án lập kế hoạch Ngày hoàn thành sản Được xác định Thay đổi cục bộ Xác định trong quá phẩm trong quá trình trình xây dựng dự án lập kế hoạch Đáp ứng với môi Trong kế hoạch Trong kế hoạch Xuyên suốt từ kế trường sử dụng ban đầu ban đầu hoạch đến xây dựng và kết thúc Kinh nghiệm trao đổi Đào tạo trước Đào tạo trước cho Thực hiện trong quá cho đến khi bắt đến khi bắt tay trình làm dự án tay làm dự án làm dự án Khả năng thành công Thấp Trung bình thấp Cao 8 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com So sánh về giá thành phát triển phần mềm Hình 2.1 So sánh giá thành phát triển sản phẩm của Agile và Thác nước Theo “The Money Pit”, tổ chức Standish Group đã nghiên cứu 2 dự án phần mềm lớn giống nhau, thực hiện ở hai công ty có kích thước tương tự nhau. Một dự án thực hiện với mô hình Agile, một với Waterfall. Các kết quả được mô tả như hình trên, các dự án Agile rẻ hơn 4 lần so với chi phí của dự án Waterfall 2.6 Các quy trình phát triển phần mềm sử dụng phƣơng pháp Agile Một số quy trình phát triển phầm mềm sử dụng phương pháp phát triển phần mềm nahnh Agile bao gồm phương quy trình Extreme programming (XP), quy trình Scrum, quy trình Ration Unified Process (RUP) a. Quy trình Extreme programming (XP) XP là một phương pháp linh hoạt dành cho các nhóm phát triển phần mềm nhỏ và trung bình xây dựng các phần mềm có yêu cầu thay đổi một cách nhanh chóng.
Nó đảm bảo công việc phù hợp cho các nhà phát triển và lợi ích tốt nhất sau thời gian làm việc cho khách hàng và người quản. XP sử dụng các nhóm làm việc kết hợp gồm những người lập trình, khách hàng và các nhà quản trị để phát triển phần mềm có chất lượng cao trong thời gian nhanh chóng. Một chương trình chạy được là thước đo đầu tiên của tiến trình theo XP. XP có 9 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com thể phát triển và tồn tại được là do sự hiểu biết ngày một tiến bộ về các vấn đề đang giải quyết và cũng là vì các công cụ sẵn có cho phép ta thay đổi được cái giá của sự thay đổi.
Quy trình phát triển phần mềm thống nhất Rational Unified Process (RUP) RUP là một nền tảng quy trình thích ứng với sự phát triển các tổ chức và các nhóm dự án phần mềm dựa trên quy trình vòng lặp phát triển phần mềm. RUP hỗ trợ các hoạt động giữa các nhóm, phân chia công việc cho từng thành viên trong nhóm, trong từng giai đoạn khác nhau của quá trình phát triển phần mềm. RUP sử dụng hệ thống ký hiệu trực quan của UML và RUP được phát triển song song với UML. Vòng đời của dự án RUP được chia theo thời gian qua bốn giai đoạn nối tiếp nhau.
Bao gồm: Khởi tạo (Inception), Phác thảo (Elaboration), Xây dựng (Construction), Chuyển giao (Transition). Mỗi giai đoạn có một mốc quan trọng, mỗi giai đoạn thực chất là khoảng giữa của 2 điểm mốc. Cuối mỗi giai đoạn, bộ phận kiểm định sẽ thực hiện thẩm định các đối tượng của giai đoạn này c. Phƣơng pháp Crystal Crystal là một trong những cách tiếp cận thích ứng nhẹ nhất để phát triển phần mềm.