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

  • Số trang: 91 |
  • Loại file: PDF |
  • Lượt xem: 25 |
  • Lượt tải: 0
nhattuvisu

Đã đăng 26946 tài liệu

Mô tả:

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN OEN 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 Ngành: Công nghệ thông tin Chuyên ngành: Công nghệ phần mềm Mã số: 60 48 10 LUẬN VĂN THẠC SĨ NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS. TS. Đỗ Trung Tuấn Hà Nội - 2011 i LỜI CẢM ƠN Tôi xin đƣợc gửi lời cảm ơn sâu sắc tới Trung tâm Đào tạo Sau đại học và các thầy cô giáo trong Khoa Công Nghệ Thông Tin, Trƣờng Đại học Công Nghệ, Đại học Quốc Gia Hà Nội đã tận tình giảng dạy và truyền đạt những kiến thức, những kinh nghiệm quý báu trong suốt 2 năm học Cao học. Tôi xin bày tỏ lòng cảm ơn chân thành tới tất cả các bạn bè, các thầy cô giáo, các đồng nghiệp Khoa Công Nghệ Thông Tin, Trƣờng Đại học Công Nghệ, Đại học Quốc Gia Hà Nội đã động viên, tạo điều kiện cho tôi trong suốt thời gian thực hiện luận văn này. Đặc biệt, tôi xin gửi lời cảm ơn sâu sắc nhất tới PGS.TS. Đỗ Trung Tuấn, Khoa Toán Cơ Tin học, Trƣờng Đại học Khoa học Tự nhiên, Đại học Quốc Gia Hà Nội, ngƣời thầy đã định hƣớng đề tài và tận tình hƣớng dẫn chỉ bảo tôi trong suốt quá trình thực hiện luận văn cao học này. Cuối cùng tôi xin dành một tình cảm biết ơn tới Bố, Mẹ và gia đình, những ngƣời đã luôn luôn ở bên cạnh tôi, động viên, chia sẻ cùng tôi trong suốt thời gian học cao học cũng nhƣ quá trình thực hiện luận văn cao học. Hà Nội, ngày 10 tháng 05 năm 2011 Nguyễn Oen ii LỜI CAM ĐOAN Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi. Các kết quả nêu trong bản luận văn này là trung thực và chƣa từng đƣợc ai công bố trong bất cứ công trình nào khác. Hà Nội, ngày 10 tháng 05 năm 2011 Nguyễn Oen iii MỤC LỤC LỜI CẢM ƠN ................................................................................................ i LỜI CAM ĐOAN ......................................................................................... ii MỤC LỤC ................................................................................................... iii DANH MỤC KÝ HIỆU, TỪ VIẾT TẮT ..................................................... vi DANH MỤC HÌNH VẼ .............................................................................. vii PHẦN MỞ ĐẦU ........................................................................................... 1 0. 1. Tính cấp thiết của đề tài ................................................................ 1 0. 2. Mục đích nghiên cứu .................................................................... 2 0. 3. Đối tƣợng và phạm vi nghiên cứu ................................................. 3 0. 4. Phƣơng pháp nghiên cứu............................................................... 4 0. 5. Cơ sở lý luận và thực tiễn ............................................................. 4 0. 6. Đóng góp của đề tài ...................................................................... 4 0. 7. Kết cấu đề tài ................................................................................ 5 Chƣơng 1 TỔNG QUAN PHƢƠNG PHÁP LẬP TRÌNH CỰC HẠN ....... 6 1. 1. Khái niệm phƣơng pháp lập trình cực hạn ..................................... 6 1. 2. Các nguyên tắc của XP: ................................................................ 7 1.2.1. Nguyên tắc trao đổi .................................................................... 7 1.2.2. Nguyên tắc phản hồi .................................................................. 8 1.2.3. Nguyên tắc đơn giản .................................................................. 8 1.2.4. Nguyên tắc tôn trọng.................................................................. 8 1.2.5. Nguyên tắc dũng cảm ................................................................ 8 1. 3. Các phƣơng pháp thực hành .......................................................... 9 1.3.1. Khách hàng cùng tham gia ......................................................... 9 1.3.2. Lập kế hoạch liên tục ............................................................... 10 1.3.3. Phát hành từng phần ................................................................ 10 1.3.4. Lập trình theo cặp .................................................................... 11 1.3.5. Phát triển định hƣớng kiểm thử ................................................ 12 1.3.6. Tích hợp liên tục ...................................................................... 13 1.3.7. Tái cấu trúc hệ thống ............................................................... 14 1.3.8. Sở hữu tập thể .......................................................................... 15 1.3.9. Thiết kế đơn giản ..................................................................... 16 iv 1.3.10. Hệ thống ký pháp ................................................................... 17 1.3.11. Làm việc lâu bền .................................................................... 17 1.3.12. Chuẩn hóa mã nguồn .............................................................. 18 1. 4. Vòng đời phƣơng pháp phát triển XP .......................................... 19 1.4.1. Khám phá yêu cầu ................................................................... 19 1.4.2. Pha lập kế hoạch ...................................................................... 21 1.4.3. Pha lặp để phát hành ................................................................ 24 1.4.4. Pha xuất xƣởng ........................................................................ 24 1.4.5. Pha bảo trì................................................................................ 25 1.4.6. Pha kết thúc ............................................................................. 25 1. 5. Đội dự án XP .............................................................................. 25 1.5.1. Đại diện khách hàng ................................................................ 25 1.5.2. Ngƣời quản lý sản phẩm .......................................................... 26 1.5.3. Các chuyên gia nghiệp vụ ........................................................ 27 1.5.4. Ngƣời thiết kế giao diện ........................................................... 27 1.5.5. Lập trình viên .......................................................................... 27 1.5.6. Ngƣời kiểm thử ........................................................................ 28 1.5.7. Quản lý dự án/Hƣớng dẫn viên ................................................ 28 1.5.8. Các thành viên khác ................................................................. 28 1. 6. Chƣơng 2 2. 1. Điều kiện để áp dụng .................................................................. 29 PHẦN MỀM THUÊ NGOÀI VÀ XP ...................................... 31 Dịch vụ thuê ngoài ...................................................................... 31 2.1.1. Khái niệm dịch vụ thuê ngoài .................................................. 31 2.1.2. Lợi thế của dịch vụ thuê ngoài ................................................. 31 2.1.3. Phát triển phần mềm thuê ngoài ............................................... 33 2.1.4. Phát triển phần mềm thuê ngoài với XP ................................... 36 2. 2. Tổ chức phát triển phần mềm thuê ngoài với XP ........................ 37 2.2.1. Tổ chức khách hàng ................................................................. 37 2.2.2. Tổ chức đội phát triển thuê ngoài ............................................. 38 2.2.3. Phân tách các nhóm trong dự án .............................................. 40 2.2.4. XP tổ chức nhóm phát triển thuê ngoài .................................... 42 2. 3. Truyền thông trong dự án thuê ngoài .......................................... 42 v 2.3.1. Truyền thống với khách hàng ................................................... 43 2.3.2. Truyền thông giữa các nhóm .................................................... 45 2.3.3. Truyền thông trong nhóm ........................................................ 48 2.3.4. Công cụ truyền thông ............................................................... 49 2. 4. Quản lý cấu hình cho XP ............................................................ 51 2.4.1. Tiến trình thƣờng nhật ............................................................. 52 2.4.2. Tiến trình tìm giải pháp............................................................ 52 2.4.3. Tiến trình tái cấu trúc ............................................................... 52 2.4.4. Tiến trình phát hành ................................................................. 53 2. 5. Các vấn đề khác .......................................................................... 54 2.5.1. Biến đổi văn hóa doanh nghiệp ................................................ 54 2.5.2. Bổ xung thêm nhóm mới ......................................................... 55 2.5.3. Viết tài liệu dự án .................................................................... 55 Chƣơng 3 ỨNG DỤNG XP TRONG DỰ ÁN THUÊ NGOÀI ................. 57 3. 1. Môi trƣờng áp dụng .................................................................... 57 3. 2. Mô hình tổ chức .......................................................................... 57 3. 3. Các dự án thực nghiệm ............................................................... 59 3.5.1. Dự án tƣơng tác liên chi nhánh InterBranch ............................. 59 3.5.1. Dự án bảng khai báo công việc TimeSheet .............................. 64 3.5.2. Dự án lập kế hoạch toàn hàng VIB_Planing ............................. 69 3.5.3. Dự án ngân hàng điện tử VIB4U .............................................. 73 3. 4. Đánh giá chung ........................................................................... 78 KẾT LUẬN ................................................................................................. 81 TÀI LIỆU THAM KHẢO ........................................................................... 82 Tiếng việt ................................................................................................ 82 Tiếng anh ................................................................................................. 82 vi DANH MỤC KÝ HIỆU, TỪ VIẾT TẮT BPO Business process outsourcing Quy trình kinh doanh thuê ngoài CM Configuration Management Quản lý cấu hình RFP Request For Proposal Yêu cầu đề xuất SOW Statement Of Work Đề xuất các bƣớc công việc XP eXtreme Programming Lập trình cực hạn hay lập trình cƣờng độ cao VIB Việt Nam International Bank Ngân Hàng Quốc Tế VIB OTP One Time Password Mã số đƣợc dùng 1 lần duy nhất RUP Rational Unified Process Quy trình phát triển phần mềm thống nhất vii DANH MỤC HÌNH VẼ Hình 0-1 Tiêu chí thành công của dự án phần mềm ...................................... 3 Hình 1-1 Các phƣơng pháp thực hành trong XP ......................................... 19 Hình 1-2: Vòng đời dự án theo XP ............................................................. 19 Hình 1-4 Pha khám phá yêu cầu ................................................................. 20 Hình 1-5 Pha lập kế hoạch.......................................................................... 22 Hình 1-6 Lên kế hoạch phát hành ............................................................... 23 Hình 1-7 Lên kế hoạch bƣớc lặp ................................................................. 24 Hình 2-1 Tổ chức khách hàng áp dụng thuê ngoài ....................................... 37 Hình 2-2 Mô hình từ xa ............................................................................... 38 Hình 2-3 Mô hình tại chỗ ............................................................................ 39 Hình 2-4 Phân tách nhóm trong XP ............................................................. 41 Hình 2-5 Truyền thông trong XP ................................................................. 43 Hình 2-6: Vấn đề tích hợp .......................................................................... 53 Hình 3-1 Mô hình tổ chức chuyên trách dự án ............................................ 57 Hình 3-2 Mô hình tổ chức theo chức năng .................................................. 58 Hình 3-3 Mô hình tổ chức theo dạng ma trận ............................................. 59 Hình 3-4 Biểu đồ đánh giá kết quả dự án .................................................... 79 1 PHẦN MỞ ĐẦU 0. 1. 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. 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. 0. 2. 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. 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. 3. Đố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. 4 0. 4. 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. 0. 5. 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. 0. 6. Đó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 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ở. 0. 7. 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 6 Chƣơng 1 TỔNG QUAN PHƢƠNG PHÁP LẬP TRÌNH CỰC HẠN 1. 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. Từ thƣớc đo này, XP xây dựng năm nguyên tắc cần thiết cho sự thành công là: sự giao tiếp, sự phản hồi, đơn giản hóa, sự tôn trọng và sự dũng cảm. Có thể diễn giải các nguyên tắc trên nhƣ sau: “Một chƣơng trình chạy đƣợc và cung cấp ngay cho khách hàng để nhận đƣợc các phản hồi cũng nhƣ các đề xuất thay đổi từ phía khách hàng, ngƣời phát triển sẵn sàng, dũng cảm nhận các thay đổi về yêu cầu, môi trƣờng và công nghệ để phát triển ra sản phẩm phù hợp nhất với yêu cầu ngƣời dùng. Để làm đƣợc điều này, ngƣời phát triển phải luôn luôn giao tiếp với khách hàng cũng nhƣ đồng đội của họ để đảm bảo mọi ngƣời đều hiểu công việc cần làm là nhƣ nhau và kết quả mong muốn là giống nhau. Đồng thời, họ phải thiết kế sao cho thật đơn giản và rõ ràng để dễ dàng truyền đạt lại việc mình đang làm và sẽ làm cho đồng đội, ngƣời dùng hiểu đƣợc. Một điều hết sức quan trọng nữa là việc tôn trọng những giá trị thu đƣợc dù là nhỏ nhất. Áp dụng XP đòi hỏi đội dự án phải tôn trọng ý kiến đánh giá phản hồi của ngƣời dùng; ngƣời dùng phải tôn trọng những giá trị mà đội dự án cung cấp vì đó chƣa phải là sản phẩm cuối cùng nhƣng nó hàm chứa những cố gắng và nỗ lực phát triển của đội dự án.” Trong phần “1.2 Các nguyên tắc của XP” tôi sẽ đi sâu hơn vào từng nguyên tắc. Để đạt đƣợc các giá trị mà những nguyên tắc ở trên đã đề ra cũng nhƣ đảm bảo cho việc phát triển thành công dự án, XP đã xây dựng các phƣơng pháp thực hành. Các phƣơng pháp thực hành đơn giản và hiệu quả kết hợp linh hoạt với nhau đảm bảo đội dự án phát triển đúng hƣớng, giữ đƣợc các giá trị mà các nguyên tắc đã đề ra. Trong phần “1.3 Các phƣơng pháp thực hành” tôi sẽ đề cập đến từng phƣơng pháp thực hành cụ thể của XP. Phƣơng pháp lập trình cực hạn hoạt động theo mô hình lặp, tăng trƣởng. Sản phẩm đƣợc chia ra thành các phần tăng trƣởng nhỏ, mỗi phần đƣợc phát triển 7 trong vòng một hoặc vài tuần gọi là một vòng lặp. Với mỗi phần tăng trƣởng, đội dự án thực hiện tất cả các hoạt động: tìm hiểu yêu cầu, lập kế hoạch, phân tích, thiết kế, lập trình, kiểm thử và phát hành. Các hoạt động này gọi là các pha. Mỗi pha chỉ kéo dài từ vài ngày đến một vài tuần. Với tiến trình hoạt động này, đội dự án sẽ nhanh chóng nhận đƣợc phản hồi của khách hàng cũng nhƣ áp dụng những thay đổi cần thiết trong các lần tăng trƣởng tiếp theo. Trong phần “1.4 Vòng đời của phƣơng pháp phát triển XP” tôi sẽ đề cập sâu hơn về vòng đời phát triển của XP. Trong một dự án phần mềm, những hiểu biết về sản phẩm luôn đƣợc nắm giữ bởi nhiều cá nhân. XP thừa nhận thực tế này bằng cách tạo ra một nhóm làm việc hỗn hợp với đầy đủ các vai trò cần thiết. Một đội dự án XP thƣờng đƣợc lập và hoạt động theo kiểu tự tổ chức dựa trên các giai đoạn và công việc khác nhau. Tôi sẽ đề cập về vấn đề này trong phần “1.5 Đội dự án XP”. 1. 2. Các nguyên tắc của XP: XP phát triển dựa trên các quy tắc. Nhƣng XP không là một bộ quy tắc mà là một cách để làm việc hài hòa với các giá trị cá nhân và doanh nghiệp. Bắt đầu với các nguyên tắc đƣợc liệt kê ở dƣới đây, sau đó tùy từng dự án mà đội dự án có thể thêm các nguyên tắc riêng bằng cách thể hiện những nguyên tắc của XP trong những thay đổi theo nguyên tắc của dự án[1]. 1.2.1. Nguyên tắc trao đổi Phƣơng pháp lập trình cực hạn chú trọng việc trao đổi thông tin một cách “trong suốt” giữa các thành viên trong nhóm phát triển. Đề cao việc trao đổi trực tiếp, giảm việc trao đổi gián tiếp hay hình thức thông qua các văn bản. Việc trao đổi trực tiếp đƣợc yêu cầu rất cao, đặc biệt là trong các lần trao đổi với khách hàng, giữa các đội. Trong XP, việc trao đổi trực tiếp đƣợc diễn ra liên tục, với các lập trình viên là từng giây, từng phút họ làm việc cùng nhau nhƣ đƣợc nêu trong phần “1.3.4 Lập trình theo căp”. Với phƣơng pháp lập trình cực hạn, khách hàng tham gia trực tiếp vào việc thực hiện dự án với tƣ cách là một thành viên chính thức của nhóm phát triển. Khách hàng sẽ giúp nhóm phát triển hiểu và nắm bắt đƣợc và kịp thời các yêu cầu của ngƣời sử dụng (cũng nhƣ sự thay đổi về yêu cầu) trong suốt quá trình thực hiện dự án. Đồng thời, tất cả các thành viên đều tham gia vào mọi hoạt 8 động trong quá trình phát triển phần mềm. Điều này sẽ nâng cao tính năng động của toàn bộ nhóm phát triển. 1.2.2. Nguyên tắc phản hồi Phản hồi sớm và liên tục từ khách hàng cũng nhƣ từ nhóm phát triển giúp cho dự án luôn đi theo đúng hƣớng. Phƣơng pháp lập trình cực hạn đều đặn giao sản phẩm cho khách hàng để kiểm tra, theo đó khách hàng có thể 'làm mịn' và hoàn thiện yêu cầu sản phẩm dựa trên các kết quả cụ thể. Với sự trợ giúp của khách hàng, các nhà phát triển theo phƣơng pháp lập trình cực hạn xây dựng một tập các phép thử phục vụ cho việc kiểm thử nghiệm thu một cách liên tục trong suốt quá trình phát triển phần mềm. Nguyên tắc trao đổi và nguyên tắc phản hồi là hai nguyên tắc tƣơng trợ lẫn nhau. Từ việc trao đổi trực tiếp giúp cho đội dự án cũng nhƣ khách hàng hiểu nhau hơn, nắm đƣợc yêu cầu và công việc đang tiến hành và từ đó đƣa ra đƣợc các phản hồi tích cực giúp cho đội dự án hiểu công việc mình cần làm hơn. 1.2.3. Nguyên tắc đơn giản Phƣơng pháp lập trình cực hạn đảm bảo chỉ phát triển những chức năng cần thiết và những chức năng mà khách hàng yêu cầu. Phần thiết kế và mã nguồn đƣợc thiết lập một cách đơn giản nhất, cho phép có đƣợc đặc tính mở cao nhằm đáp ứng với các thay đổi liên tục và luôn duy trì đƣợc một tốc độ phát triển nhanh trong suốt quá trình phát triển phần mềm. 1.2.4. Nguyên tắc tôn trọng Mọi ngƣời cho và cảm nhận đƣợc sự tôn trọng xứng đáng với những gì họ đã cống hiến. Tất cả mọi ngƣời đóng góp giá trị ngay cả khi nó chỉ đơn giản là sự nhiệt tình. Các nhà phát triển tôn trọng chuyên môn của khách hàng và ngƣợc lại. Nhà quản lý tôn trọng quyền nhận trách nhiệm của nhà phát triển và trao quyền để họ thực hiện công việc của chính họ. 1.2.5. Nguyên tắc dũng cảm Phƣơng pháp lập trình cực hạn cho rằng phải có lòng dũng cảm thì mỗi thành viên mới thực hiện đƣợc các nguyên tắc kể trên. Lòng dũng cảm có nghĩa là dám thay đổi, dám đề xuất cái mới, khi làm việc nhóm hay lập trình cặp đôi thì phải chỉ ra cái sai, sửa lỗi ngay lập tức. Sẽ là hoàn toàn thất bại nếu áp dụng phƣơng pháp lập trình cực hạn mà các thành viên không dám đề xuất cái mới, ngại 9 ngùng, cả nể không chỉ ra các lỗi phát sinh trong quá trình làm việc. Lòng dũng cảm cũng là nói thật về tiến độ thực hiện và các dự toán về chi phí, thời gian, nguồn lực để thực hiện. Dựa trên các nguyên tắc trao đổi, phản hồi và tôn trọng lẫn nhau, mọi thành viên trong đội dự án sẽ dũng cảm nhận trách nhiệm và thực hiện cùng nhau công việc của mình (không có một quyết định đơn độc và thực hiện công việc một cách đơn độc, mọi thành viên trong đội dự án luôn đƣợc hỗ trợ bởi các thành viên khác). Cũng cần chú ý rằng, tuy phƣơng pháp lập trình cực hạn không chỉ ra một cách rõ ràng, nhƣng cũng cần phải nhấn mạnh rằng tính kỷ luật là yêu cầu quan trọng để thực hiện có hiệu quả phƣơng pháp phát triển phần mềm cực hạn. 1. 3. Các phƣơng pháp thực hành Dựa trên phƣơng pháp luận của phƣơng pháp phát triển linh hoạt và bốn nguyên tắc ở trên, phƣơng pháp lập trình cực hạn đƣa ra các phƣơng pháp thực hành, và điểm mạnh của phƣơng pháp lập trình cực hạn chính là đã kết hợp một cách hợp lý các phƣơng pháp này. Mỗi một phƣơng án tuy đơn giản nhƣng rất cần thiết phải nắm vững. Sau đây tôi xin đi vào từng phƣơng pháp thực hành [7]: 1.3.1. Khách hàng cùng tham gia Chúng ta mong muốn khách hàng và nhóm phát triển làm việc chung với nhau để họ hiểu các vấn đề của nhau và cùng giải quyết các vấn đề đó . Vâ ̣y ai là khách hàng? Khách hàng của một nhóm phát triển theo phƣơng pháp lập trình cực hạn là một hoặc một nhóm ngƣời định nghĩa và xác định độ ƣu tiên của chức năng hệ thống (hay sản phẩm). Đôi khi khách hàng là nhóm nhà phân tích nghiệp vụ hoặc chuyên gia phát triển thị trƣờng làm việc cùng một công ty phần mềm với nhóm phát triển. Đôi khi khách hàng là một đại diện của ngƣời dùng. Đôi khi khách hàng cũng chính là ngƣời trả tiền. Nhƣng trong một dự án áp dụng phƣơng pháp lập trình cực hạn, bất kể khách hàng là ai thì họ cũng là một thành viên của nhóm phát triển. Trong quá trình phát triển, khách hàng sẽ tham gia cách trực tiếp trong suốt quá trình phát triển phần mềm. Sự tham gia này sẽ giúp cho nhóm phát triển có điều kiện tham khảo trực tiếp ý kiến của khách hàng, trao đổi về hệ thống cần đƣợc phát triển, tránh đƣợc nhầm lẫn trong cách hiểu về hệ thống cần phát triển. Tình huống tốt nhất là khách hàng làm việc với nhóm phát triển trong cùng một phòng. Hoặc chí ít là làm việc ở nơi nào đó cách độ một trăm bƣớc chân so 10 với phòng làm việc của nhóm phát triển. Khoảng cách càng xa thì càng khó thỏa mãn điều kiện khách hàng là một thành viên trong nhóm phát triển. Nếu khách hàng làm việc trong môt tòa nhà khác hoặc ở một quốc gia khác thì càng khó mà yêu cầu họ tham gia cùng với nhóm. Nếu khách hàng không thể ở gần nhóm phát triển thì hãy tìm ai đó sẵn lòng làm việc chung và có thể đứng ở vai trò của một khách hàng thực thụ. 1.3.2. Lập kế hoạch liên tục Trong XP, việc lập kế hoạch là một quá trình liên tục bao gồm 2 mức: lập kế hoạch phát hành và lập kế hoạch lặp dựa tính năng và thứ tự ƣu tiên mà khách hàng đƣa ra và ƣớc lƣợng công sức của nhóm phát triển. Tức là khách hàng xác định giá trị, nhóm phát triển xác định chi phí cần bỏ ra. Mục tiêu của kế hoạch phát hành là xác định các tính năng cần thiết cho lần phát hành tiếp theo. Về cơ bản kế hoạch phát hành thực hiện nhƣ sau: - Khách hàng xác định một danh sách các tính năng mong muốn hệ thống đáp ứng; - Nhóm phát triển ƣớc tính công sức cần bỏ ra để thực hiện danh sách các tính năng mà khách hàng đã đƣa ra. - Khách hàng sẽ quyết định xem thứ tự ƣu tiên cho việc thực hiện phát triển các tính năng đó và đƣa ra kế hoạch phát hành tổng thể. Mục tiêu của việc lập kế hoạch lặp cũng tƣơng tự nhƣ việc lập kế hoạch phát hành, khách hàng sau khi xác định đƣợc yêu cầu cho một lần lặp mới sẽ trình bầy cho nhóm phát triển, nhóm phát triển sẽ ƣớc lƣợng và phân chia công việc để thực hiện. 1.3.3. Phát hành từng phần Theo phƣơng pháp thực hành này, đội phát triển sẽ phát triển dần dần phần mềm, từ đơn giản đến phức tạp, từ tập các tính năng hữu dụng nhỏ nhất. Từng phần sẽ đƣợc chuyển giao sớm và thƣờng xuyên cho khách hàng để có đƣợc ngay sự phản hồi từ phía khách hàng. Từ đó sẽ có thể điều chỉnh ngay đƣợc sản phẩm cho phù hợp với yêu cầu của khách hàng. Khách hàng cũng có điều kiện để bổ sung hay thay đổi yêu cầu phần mềm. Việc phát hành sớm và thƣờng xuyên giúp cho khách hàng có thể sử dụng đƣợc ngay các tính năng cần thiết mà không phải chờ cho đến khi có đầy đủ các 11 tính năng khác mới sử dụng đƣợc. Hơn nữa, do nhận đƣợc các bản phát hành sớm, khách hàng có thể thấy đƣợc các yêu cầu cần thay đổi, các yêu cầu cần thêm mới và đặc biệt là các yêu cầu đã lỗi thời để loại bỏ đi. Điều này sẽ tiết kiệm rất lớn cho khách hàng về chi phí cũng nhƣ giúp đội dự án không phải phát triển các tính năng đã lỗi thời, không cần thiết. Việc phát hành từng phần nghĩa là nhóm dự án sẽ cố gắng để đƣa hệ thống vào sản xuất càng sớm càng tốt và thậm chí cả trƣớc khi nó đã giải quyết toàn bộ vấn đề. Họ cũng làm phát hành rất thƣờng xuyên, có thể đƣợc bất cứ nơi nào từ một ngày đến một cơ sở hàng tháng. Những gì đƣợc phát hành không phải là một bản giới thiệu để nhận xét rồi sau đó đặt sang một bên, mà là (một phần của) một hệ thống thực tế mà khách hàng đƣa vào sử dụng sản xuất. Lý do là điều này sẽ cung cấp lợi ích sớm và thƣờng xuyên cho khách hàng trong việc cung cấp giá trị kinh doanh thực sự. Nó cũng sẽ cung cấp thông tin phản hồi sớm và thƣờng xuyên đến các nhà phát triển để họ có thể tìm hiểu những gì khách hàng muốn. 1.3.4. Lập trình theo cặp Lập trình theo cặp nghĩa là tất cả mã nguồn sản phẩm đƣợc viết bởi các cặp lập trình viên làm việc với nhau trên cùng một máy tính. Một thành viên của một cặp sẽ giữ bàn phím và đánh mã nguồn. Thành viên còn lại của cặp sẽ quan sát mã nguồn đƣợc đánh và tìm kiếm lỗi và cải tiến mã . Cả hai tƣơng tác với nhau một cách liên tu ̣c và cả hai cùng bận rộn cho công việc viết phần mềm . Vai trò đƣợc thay đổi thƣờng xuyên . Ngƣời giữ phím sẽ mệt mỏi và dẫn đế n dễ sai lầm . Ngƣời còn lại (trong cặp) sẽ nhận lại bàn phím và điều khiển nó . Bàn phím đƣợc hoán đổi nhiều lần giữa hai ngƣời trong một giờ . Mã nguồn kết quả đƣợc thiết kế và đƣơ ̣c viế t bởi cả hai ngƣời . Công sức của cả hai là nhƣ nhau. Mối quan hệ theo cặp sẽ đƣợc thay đổi ít nhất một lần trong ngày để mỗi lập trình viên đƣợc làm việc ít nhất với hai ngƣời trong ngày. Xuyên suốt một bƣớc lặp của phƣơng pháp lập trình cực hạn, mỗi thành viên của nhóm phát triển phải làm việc với mọi thành viên khác trong nhóm. Và họ chỉ làm những công việc của trong nội dung của bƣớc lặp đó mà thôi. Điều này tăng cƣờng sự trãi rộng kiến thức cho toàn nhóm. Trong khi kỹ thuật đặc trƣng vẫn còn nguyên vẹn và các công việc yêu cầu kỹ thuật đặc trƣng vẫn thƣờng đƣợc giao cho các chuyên gia thì các chuyên gia này làm việc với hầu hết các thành viên còn lại trong 12 nhóm . Điều này sẽ trải rộng kiế n thƣ́c cho toàn nhóm để các thành viên khác có thể thay thế cho chuyên gia trong các trƣờng hợp khẩn cấp. 1.3.5. Phát triển định hƣớng kiểm thử Các lập trình viên sẽ viết các đơn vị kiểm nghiệm trƣớc khi viết mã nguồn (thiết kế kiểm thử đầu tiên). Tất cả các đơn vị kiểm nghiệm đều đƣợc thực hiện thƣờng xuyên trong quá trình phát triển sản phẩm trong từng khối mã nguồn của từng lập trình viên. Các lập trình viên có thể thay đổi một cách linh hoạt vì quy trình thử nghiệm có thể mắc lỗi hay sai so với thiết kế ban đầu. Tất cả các mã nguồn sản phẩm đƣợc viết để làm cho các đơn vị kiểm thử thành công. Đầu tiên, chúng ta viết một đơn vị kiểm thử chạy sai bởi vì chức năng dự định kiểm thử vẫn chƣa tồn tại. Sau đó chúng ta viết mã để đơn vị kiểm thử này thực hiện thành công . Thời gian lặp lại giữa viết kiểm thử rồi viết mã nguồn xảy ra rất nhanh , trong khoảng một vài phút . Các bô ̣ kiểm thử và mã nguồn cùng tăng trƣởng , trong đó bô ̣ kiểm thử luôn dẫn trƣớc mã mộ t khoảng cách rất ngắn. Kết quả là các bô ̣ kiểm thử phát triển cùng lúc với mã nguồn sản phẩm . Những bộ kiểm thử này cho phép các lập trình viên kiểm tra chƣơng trình (đang phát triển) có chạy hay không. Nếu một cặp nào đó thƣc hiện một thay đổi nhỏ, họ có thể chạy lại các bộ kiểm thử để chắc chắn rằng họ không làm hỏng các đoạn mã nguồn khác. Khi bạn viết mã để các bộ kiểm thử thành công, thì mã nguồn đó đƣợc gọi là mã khả kiểm. Ngoài ra, còn có một mục tiêu rất quan trọng là bạn có thể tách bạch các khối mã nguồn sao cho chúng có thể đƣợc kiểm thử một cách độc lập. Nhƣ vậy, bản thiết kế theo hƣớng này cho kết quả là mã nguồn ít bị trùng lặp nhất. Các nguyên lý thiết kế hƣớng đối tƣợng đóng vai trò là công cụ mạnh mẽ giúp bạn tránh đƣợc mã trùng lặp. Chi tiết về yêu cầu ngƣời dùng đƣợc thu thập trong dạng thức của các bộ kiểm thử nghiệm thu đƣợc đặc tả bởi khách hàng. Các bộ kiểm thử nghiệm thu của một yêu cầu đƣợc viết ngay trƣớc hoặc cùng lúc với việc cài đặt yêu cầu đó. Chúng đƣợc viết theo một ngôn ngữ kịch bản bất kỳ nào cho phép chúng chạy tự động và có thể lặp lại. Ngôn ngữ của bộ kiểm thử nghiệm thu đƣợc phát triển và tiến hóa cùng với hệ thống. Khách hàng có thể thuê nhóm phát triển tạo một hệ thống thực thi kịch bản đơn giản hoặc có thể họ có bộ phận kiểm soát chất lƣợng
- Xem thêm -