PHẦN MỞ ĐẦU 0. Tính cấp thiết của đề tài Trong những năm gần đây, khi công nghệ thông tin càng ngày càng phát triển, phần mềm thực sự trở thành một phần không thể thiếu trong các doanh nghiệp. Mỗi bộ phận trong mỗi doanh nghiệp đều phụ thuộc vào phần mềm để hỗ trợ việc phát triển, sản xuất, quảng cáo và tiếp thị các sản phẩm và dịch vụ của họ. Với tốc độ phát triển đến chóng mặt của lĩnh vực công nghệ thông tin và truyền thông trên cả các hệ thống phần cứng và phần mềm nhằm đáp ứng nhu cầu ngày càng phức tạp của công việc cũng nhƣ cuộc sống đòi hỏi phải có những phƣơng pháp phát triển tốt hơn nhằm đảm bảo cho sự thành công của các dự án công nghệ thông tin.
Theo thống kê của Standish Group, Mỹ (2000) [6]: Trên 350 công ty với hơn 8000 dự án phần mềm có: 31% dự án phần mềm bị huỷ bỏ trƣớc khi đƣợc hoàn thành. Với các công ty lớn, chỉ có khoảng 9% tổng số các dự án hoàn thành đúng tiến độ và trong ngân sách dự án (với các công ty nhỏ, tỷ lệ này vào khoảng 16%). Báo cáo của Ngân hàng thế giới cho biết, 85% các dự án tin học hoá quản lý hành chính ở các nƣớc đang phát triển đã thất bại hoặc một phần hoặc hoàn toàn. Ở Việt Nam, điển hình là đề án 112 – đề án tin học hóa công tác quản lý nhà nƣớc đã gặp thất bại hoàn toàn.
Và còn rất nhiều các dự án tin học khác cũng gặp thất bại, chậm triển khai, không đạt đƣợc mục tiêu đề ra[4]. Việc phát triển phần mềm thỏa mãn chất lƣợng, tiến độ, và kinh phí là rất khó, đòi hỏi rất nhiều yếu tố trong đó việc áp dụng một phƣơng pháp phát triển thích hợp là một trong những nhân tố mang tính quyết định đến thành công của dự án. Hiện nay có rất nhiều các phƣơng pháp phát triển dự án đang đƣợc áp dụng trong các doanh nghiệp phát triển phần mềm ở Việt Nam từ phƣơng pháp phát triển hạng nặng đƣợc thiết lập trên các tiêu chuẩn ISO9001, mô hình trƣởng thành về năng lực - CMMI, quy trình phát triển phần mềm thống nhất (Rational Unified Process) đến các phƣơng pháp phát triển hạng nhẹ nhƣ phƣơng pháp lập trình cực hạn – XP, phát triển phần mềm có khả năng thích nghi,. Trong xu thế phát triển phần mềm thuê ngoài ngày càng nhiều, việc áp dụng các phƣơng pháp phát triển hạng nặng đang trở nên khó khăn khi phát triển phần mềm thuê ngoài hƣớng tới hình thức dịch vụ - các yêu cầu đƣợc thay đổi liên tục theo nhu cầu của khách hàng – làm cho vấn đề giá thành cho sự thay đổi bị đội lên rất cao.
z 2 Trƣớc vấn đề đó, việc áp dụng các phƣơng pháp phát triển hạng nhẹ cho các dịch vụ phát triển phần mềm thuê ngoài nhằm giải quyết vấn đề thay đổi liên tục của yêu cầu ngƣời dùng đang nhận đƣợc sự quan tâm của đông đảo các nhà phát triển, các doanh nghiệp phần mềm trong nƣớc. Đặc biệt là phƣơng pháp lập trình cực hạn đã nhận đƣợc sự quan tâm nhiều nhất vì nó đã đề ra hai mục tiêu rất rõ ràng và cần thiết cho việc phát triển công nghệ phần mềm: Một là phát triển sản phẩm một cách nhanh chóng: Với sự phát triển hiện nay của nền kinh tế dựa trên tri thức, doanh nghiệp nào đƣa sản phẩm ra thị trƣờng nhanh nhất sẽ chiếm đƣợc thị phần có lợi nhất. Phƣơng pháp lập trình cực hạn sẽ giúp cho các nhà phát triển phần mềm rút ngắn thời gian phát triển sản phẩm. Hai là phát triển sản phẩm đúng theo yêu cầu của khách hàng: Thực tế cho thấy rằng nhiều sản phẩm phần mềm tuy đƣợc phát triển một cách công phu nhƣng lại không đáp ứng đƣợc nhu cầu của ngƣời sử dụng.
Phƣơng pháp lập trình cực hạn đã đƣa ra các cơ chế cho phép sản phẩm phát triển luôn phù hợp với yêu cầu của ngƣời sử dụng. Tuy nhiên việc áp dụng phƣơng pháp lập trình cực hạn vào việc phát triển phần mềm thuê ngoài vẫn có những trở ngại làm cho các nhà phát triển, doanh nghiệp phần mềm nghi ngại. Nắm bắt tính cấp bách của việc áp dụng phƣơng pháp lập trình cực hạn trong việc phát triển phần mềm thuê ngoài đã thôi thúc em chọn đề tài: “Nghiên cứu phƣơng pháp lập trình cực hạn áp dụng cho các dự án thuê ngoài” nhằm nghiên cứu sâu hơn về phƣơng pháp lập trình cực hạn và tìm cách áp dụng vào việc phát triển phần mềm thuê ngoài. Mục đích nghiên cứu Đề tài đƣợc đƣa ra nhằm mục đích chính là làm sao có thể áp dụng phƣơng pháp lập trình cực hạn vào các dự án thuê ngoài thành công.
Theo quan niệm truyền thống, một dự án phần mềm đƣợc coi là thành công khi sản phẩm đƣợc giao đúng hạn, trong ngân sách cho phép và làm đúng yêu cầu của khách hàng. Trên thực tế, nhiều dự án thỏa mãn tất cả các tiêu chí này nhƣng rút cuộc vẫn bị coi là thất bại bởi phần mềm làm ra không đƣợc ngƣời dùng ƣa thích, hoặc không mang lại nhiều lợi ích cho các cá nhân, tổ chức sử dụng chúng. Do đó, ngoài các yếu tố truyền thống nói trên, một dự án phần mềm chỉ đƣợc coi là thành công khi thỏa mãn ba tiêu chí: Thành công ở mức cá nhân, thành công về mặt kĩ thuật và thành công ở mức công ty. z 3 Hình 0-1 Tiêu chí thành công của dự án phần mềm Thành công ở mức cá nhân giúp kích thích các thành viên trong nhóm làm việc say mê, phát triển khả năng cá nhân, mong muốn đóng góp công sức và trí tuệ cho nhóm và tổ chức.
Thành công về kĩ thuật đảm bảo khả năng bảo trì và tiến hóa của sản phẩm. Thành công về kỹ thuật cũng làm tăng chất lƣợng sản phẩm, tăng hiệu quả phát triển sản phẩm. Thành công ở mức công ty đƣợc bảo đảm nhờ các thành công mà các nhóm mang lại cho công ty. Ở mức này, thành công của công ty là sự đóng góp của tất cả các thành viên vào sự phát triển của công ty.
Do đó, đề tài sẽ tập trung trả lời các câu hỏi: Đặc trƣng của phƣơng pháp lập trình cực hạn là gì? Tại sao áp dụng phƣơng pháp lập trình cực hạn cho các dự án thuê ngoài? Làm sao để phát triển thành công các dự án dự án thuê ngoài theo phƣơng pháp lập trình cực hạn? 0. Đối tƣợng và phạm vi nghiên cứu Nhằm áp dụng thành công phƣơng pháp lập trình cực hạn vào các dự án thuê ngoài, đề tài xác định đối tƣợng chính cần nghiên cứu là phƣơng pháp phát triển phần mềm cực hạn trong phạm vi các dự án thuê ngoài. Bằng cách đặt vào môi trƣờng phát triển một dự án phần mềm cụ thể giúp cho phạm vi nghiên cứu đƣợc cụ thể hơn, rõ ràng hơn nhƣng chúng ta hoàn toàn có thể áp dụng cho các dự án phần mềm phát triển phần mềm thuê ngoài khác bằng cách tổng quát hóa và lƣợc bỏ đi các chi tiết riêng biệt mang tính môi trƣờng doanh nghiệp. Phƣơng pháp nghiên cứu Dựa trên việc ứng dụng các lý luận phát triển phần mềm vào thực tiễn và đúc rút ra các cách thức và kinh nghiệm nhằm chia sẻ cho cộng đồng cách thức phát triển phần mềm thích hợp trong các dự án cụ thể nhằm giúp các nhà phát triển, các doanh nghiệp phần mềm có những cách thức giải quyết những vƣớng mắc trong quá trình áp dụng phƣơng thức phát triển phần mềm cực hạn cho các dự án thuê ngoài.
Cơ sở lý luận và thực tiễn Về cơ sở lý thuyết, phƣơng pháp lập trình cực hạn dựa trên triết lý phát triển phần mềm linh hoạt và hệ thống công cụ hỗ trợ ngày càng phát triển, phƣơng pháp lập trình cực hạn đã phát triển thành một phƣơng pháp hoàn thiện, nhận đƣợc sự quan tâm lớn của các nhà phát triển cũng nhƣ các tổ chức phát triển phần mềm. Và thực tế cũng đã chứng minh những thành công của phƣơng pháp lập trình cực hạn với việc phát triển các phần mềm có chất lƣợng tốt, đạt đƣợc sự hài lòng cao của khách hàng. Với đặc điểm của việc phát triển phần mềm thuê ngoài là phát triển các tính năng phù hợp nhất với các yêu cầu của khách hàng mà các yêu cầu của khách hàng thƣờng xuyên thay đổi thì việc áp dụng phƣơng pháp lập trình cực hạn dƣờng nhƣ là một giải pháp hết sức hợp lý. Và thực tế là qua các dự án bƣớc đầu áp dụng phƣơng pháp lập trình cực hạn, mặc dù còn gặp một vài khó khăn vƣớng mắc nhƣng đã gặp hái đƣợc khá nhiều thành công, đƣa ra đƣợc những sản phẩm phù hợp với yêu cầu của khách hàng đƣợc khách hàng và đƣợc khách hàng đánh giá cao.
Đóng góp của đề tài Việc áp dụng phƣơng pháp lập trình cực hạn thành công vào việc phát triển phần mềm thuê ngoài thực sự là một đóng góp quan trọng cho các tổ chức thuê ngoài và cung ứng dịch vụ thuê ngoài. Điều này giúp cho khách hàng có đƣợc phần mềm đúng nhƣ mong muốn, giúp cho tổ chức áp dụng đƣợc một phƣơng thức phát triển phần mềm tốt, góp phần đảm bảo thành công cho việc phát triển phần mềm, giúp cho lập trình viên phát triển đƣợc các kỹ năng chuyên môn và tăng cƣờng khả năng giao tiếp không chỉ trong đội mà cả với khách hàng. Hơn nữa, việc áp dụng thành công phƣơng pháp lập trình cực hạn vào việc phát triển phần mềm thuê ngoài còn mở ra tiềm năng áp dụng phƣơng pháp lập z 5 trình cực hạn vào các dự án phát triển phần mềm phân tán, nhiều nhóm cùng phát triển hoặc phát triển các phần mềm mã nguồn mở. Kết cấu đề tài Kết cấu của đề tài gồm các phần sau: Phần 1: Tổng quan phƣơng pháp lập trình cực hạn Phần 2: Phần mềm thuê ngoài và XP Phần 3: Ứng dụng XP trong dự án thuê ngoài z 6 Chƣơng 1 TỔNG QUAN PHƢƠNG PHÁP LẬP TRÌNH CỰC HẠN 1.
Khái niệm phƣơng pháp lập trình cực hạn Phƣơng pháp lập trình cực hạn (XP) là một phƣơng pháp phát triển phần mềm tuân thủ triết lý phát triển phần mềm linh hoạt (Agile). XP là phƣơng thức lấy ngƣời lập trình làm trung tâm, nhấn mạnh đến các phƣơng pháp kỹ thuật phát triển phần mềm. XP sử dụng nhóm nhỏ làm việc kết hợp bao 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 khoảng thời gian nhanh chóng. Thƣớc đo đầu tiên của phƣơng pháp lập trình cực hạn là một chƣơng trình chạy đƣợc.