ĐẠ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
LUẬN VĂN THẠC SĨ
Hà Nội - 2011
ĐẠ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
- Xem thêm -