Extreme Programming (XP) là gì? 5 giai đoạn và 5 giá trị cốt lõi

Hệ thống MES tại Samsung
Hệ thống MES tại Samsung
9 August, 2024
Các phương pháp phỏng vấn trong nghiên cứu thị trường
Các phương pháp phỏng vấn trong nghiên cứu thị trường
9 August, 2024
5/5 - (1 vote)

Last updated on 10 August, 2024

Trong thế giới phát triển phần mềm, có một phương pháp luận Agile vô cùng phổ biến và mang tính cách mạng. Nó tập trung vào sự linh hoạt, hợp tác chặt chẽ và chất lượng lập trình xuất sắc. Đó chính là phương pháp Extreme Programming (XP) hay Lập trình cực hạn. Bài viết dưới đây sẽ giới thiệu những thứ căn bản nhất về XP cho người mới bắt đầu, cũng như khác biệt của nó so với các phương pháp quản lý dự án khác.

Extreme Programming (XP) là gì?

Extreme Programming (XP – Lập trình cực hạn) là một phương pháp phát triển phần mềm trực thuộc phương pháp Agile. XP được xây dựng dựa trên các giá trị, nguyên tắc và kỹ thuật lập trình thực tiễn. Mục tiêu là cho phép các doanh nghiệp vừa và nhỏ phát triển các phần mềm chất lượng cao, thích ứng với các yêu cầu thay đổi nhanh chóng từ khách hàng.

khái niệm extreme programming

Khái niệm Extreme Programming (XP)

Extreme Programming là một phương pháp phát triển phần mềm linh hoạt, phản ứng chủ động, thích nghi nhanh, và chú trọng vào vòng lặp phản hồi liên tục. XP tập trung vào sự xuất sắc trong kỹ thuật lập trình, sự đơn giản và dễ thích ứng với thay đổi trong yêu cầu từ phía khách hàng.

Nguồn gốc ra đời Extreme Programming

Nguồn gốc của Extreme Programming (XP) bắt đầu từ những năm 90 khi Kent Beck tạo ra nó khi được thuê để dẫn dắt một đội nhóm triển khai dự án Xây dựng hệ thống lương thưởng toàn diện cho Chrysler. Sau này, Kent Beck trở thành một trong những tác giả của Tuyên ngôn Agile. Mục tiêu của dự án cho Chrysler là tìm cách viết phần mềm chất lượng cao một cách nhanh chóng và có khả năng thích ứng với yêu cầu thay đổi của khách hàng.

Năm 1999, Kent Beck đã tinh chỉnh và cô đọng các phương pháp, nguyên tắc và giá trị của XP trong cuốn sách “Extreme Programming Explained: Embrace Change”. XP là một tập hợp các kỹ thuật thực tế đòi hỏi các lập trình viên phải vượt ngưỡng khả năng của chính mình. Đó là lý do tại sao phương pháp phát triển phần mềm này có tên “Extreme”, có nghĩa là cực hạn hay cực đại.

5 giai đoạn trong quy trình Extreme Programming

Quy trình triển khai của phương pháp Extreme Programming bao gồm 5 giai đoạn được lặp đi lặp lại liên tục:

quy trình extreme programming

Quy trình Extreme Programming

Giai đoạn 1: Lên kế hoạch

Đầu tiên, nhóm phát triển phần mềm sẽ gặp khách hàng và nghe họ trình bày yêu cầu dưới dạng User story (Câu chuyện người dùng) để mô tả kết quả mong muốn đạt được.  Trong giai đoạn này, nhóm XP sẽ làm việc chặt chẽ với khách hàng để xác định User story, mô tả ngắn gọn về chức năng theo quan điểm của người dùng cuối.

Sau đó, nhóm sẽ ưu tiên những User story nào quan trọng nhất và ước tính thời gian cần thiết cho mỗi câu chuyện (tính năng). Ước tính này có mục đích là để lên kế hoạch phát hành từng tính năng. Nếu tính năng nào chưa được ước lượng, nhóm phát triển sẽ đưa nó vào Spikes (có nghĩa là cần nghiên cứu thêm).

See also  Mô hình chữ V (V model) trong phát triển phần mềm là gì?

Giai đoạn 2: Thiết kế

Thiết kế phải gắn với một trong những giá trị chính mà Extreme Programming hướng tới – đó là sự đơn giản. Một thiết kế tốt là một hệ thống có logic và cấu trúc chặt chẽ. Việc này tránh được những phức tạp và lãng phí không cần thiết trong quá trình phát triển phần mềm.

Giai đoạn 3: Viết code

Đây là giai đoạn tạo ra các đoạn mã (code) thực tế tế bằng cách áp dụng các kỹ thuật thực hành trong Extreme Programming bao gồm: chuẩn mực lập trình, lập trình cặp, tích hợp liên tục, sở hữu tập thể.

Giai đoạn 4: Kiểm thử

Kiểm thử là yếu tố cốt lõi của Extreme Programming. Nó bao gồm kiểm thử đơn vị (kiểm thử tự động xem từng tính năng có hoạt động chính xác hay không) và kiểm thử chấp nhận (kiểm thử khách hàng xem toàn bộ hệ thống có đang đáp ứng yêu cầu ban đầu hay không).

Giai đoạn 5: Lắng nghe

Giai đoạn này là để nhóm phát triển giao tiếp và nhận phản hồi liên tục từ khách hàng. Khách hàng và trưởng nhóm quản lý dự án tham gia trực tiếp vào quá trình này để tạo ra một phần mềm đạt chất lượng tốt nhất.

Các vai trò trong một dự án Extreme Programming

Một quy trình phát triển phần mềm như XP đòi hỏi sự hợp tác những nhiều bên tham gia, mỗi bên có một nhiệm vụ và trách nhiệm riêng. Extreme Programming đặt con người vào trung tâm của hệ thống. Nó đòi hỏi sự kết hợp của các kỹ năng xã hội như giao tiếp, hợp tác, phản ứng nhanh và phản hồi liên tục để đạt thành công mong đợi. Dưới đây là một số vai trò thường gắn liền với một dự án XP:

vai trò trong dự án XP

Các vai trò trong dự án Extreme Programming

Khách hàng (Customer)

Khách hàng được coi là nhân tố tham gia tích cực nhất vào quy trình phát triển phần mềm. Bởi họ là những người tạo ra User story (Câu chuyện người dùng), cung cấp những phản hồi liên tục và ra các quyết định quan trọng liên quan đến dự án.

Lập trình viên (Developer)

Họ là những thành viên trong nhóm trực tiếp tạo ra sản phẩm. Họ chịu trách nhiệm triển khai User story và khảo sát phần mềm trên người dùng thực tế. Trong nhóm lập trình viên này, mỗi thành viên sẽ có bộ kỹ năng khác nhau tùy thuộc vào từng dự án.

Quản lý dự án (Project Manager)

Họ là những người kết nối khách hàng với các lập trình viên. Đây không phải một vai trò bắt buộc trong một dự án XP và có thể được thay thế bằng một lập trình viên bất kỳ. Những người này sẽ có trách nhiệm tổ chức các cuộc họp, điều phối các cuộc thảo luận và theo dõi KPI cũng như tiến độ dự án.

Huấn luyện viên (Coach)

Huấn luyện viên được coi như cố vấn giúp các thành viên nhóm dự án hiểu được các kỹ thuật triển khai của Extreme Programming. Thông thường, đó sẽ là một hoặc một nhóm tư vấn được thuê ngoài. Họ không tham gia quá trình phát triển phần mềm nhưng đã có nhiều kinh nghiệm triển khai XP trước đây. Do đó, họ giúp nhóm dự án tránh được những sai lầm không đáng có.

5 giá trị cốt lõi của Extreme Programming

giá trị cốt lõi của extreme programming

Các giá trị cốt lõi của Extreme Programming

Giao tiếp (Communication)

Thiếu giao tiếp hay giao tiếp không hiệu quả khiến nhóm dự án không thống nhất tư tưởng chung. Giải sử khi dự án có vấn đề và chỉ có một người biết cách giải quyết, nhưng họ không thể trao đổi với những người còn lại. Điều này ngăn chặn việc họ đóng góp vào giải pháp cho vấn đề. Do vậy, việc giao tiếp liên tục là cần thiết để đảm bảo dự án diễn ra suôn sẻ.

See also  Phương pháp PRiSM trong quản lý dự án

Đơn giản (Simplicity)

Tính đơn giản đồng nghĩa với việc làm mọi thứ đơn giản mà đạt hiệu quả tốt nhất. Nó thường bị hiểu lầm với sự qua loa, cẩu thả. Mục tiêu của sự đơn giản là để tránh lãng phí và phức tạp không cần thiết. Hệ thống càng đơn giản thì càng dễ bảo trì, hỗ trợ và sửa chữa.

Phản hồi (Feedback)

Phản hồi trong các phương pháp phát triển phần mềm truyền thông (như mô hình Waterfall) thường là “quá ít” và “quá muộn”. Tuy nhiên, Extreme Programming đòi hỏi nhóm dự án phải thích nghi với sự thay đổi và nhận phản hồi sớm, liên tục. Nếu có những điều chỉnh đáng kể từ khách hàng hay các bên liên quan, nhóm lập trình gần như phải được phản hồi ngay lập tức. Do đó, việc liên lạc thường xuyên với khách hàng là cần thiết.

Dũng cảm (Courage)

Kent Beck định nghĩa dũng cảm là “hành động một cách hiệu quả khi phải đối diện với nỗi sợ”. Là một kỹ sư phần mềm, bạn có thể phải đối mặt với nhiều điều sợ hãi. Do dó, đây là cơ hội để bạn thể hiện lòng can đảm của mình. Bạn cần có sự dũng cảm để nói ra sự thật, đặc biệt là sự không hài lòng về một vấn đề nào đó trong phạm vi dự án. Dũng cảm là cần thiết để tránh đắm chìm vào những sai lầm và bỏ qua việc tìm ra giải pháp tiềm năng.

Tôn trọng (Respect)

Một nguyên lý quan trọng mọi người cần hiểu là ai cũng đều quan tâm đến công việc của chính mình. Nếu không có sự đồng cảm và tôn trọng lẫn nhau, dự án sẽ rất dễ thất bại. Mỗi cá thể đều xứng đáng được kính trọng, bao gồm tất cả các bên liên quan đến dự án phát triển phần mềm. Khi mọi người quan tâm nhau một cách chân thành thì tất cả sẽ đều được hưởng lợi và dự án sẽ có xác suất thành công cao vượt trội.

Phân biệt Extreme Programming và Scrum

Scrum là một khung phát triển dự án phức tạp theo phong cách thích ứng. Tuy nhiên, Scrum không đưa ra hướng dẫn chi tiết cách thức các lập trình viên phát triển phần mềm. Trong khi đó, XP lại đặt trọng tâm vào các kỹ thuật lập trình thực tiễn.

Đặc điểmExtreme ProgrammingScrum
Chu kỳ lặp lại1 – 2 tuần1 – 4 tuần
Thay đổi trong tiến độLinh hoạt trong thay đổi tiến độƯu tiên giữ nguyên tiến độ, nếu cần thay đổi thì phải họp lại
Kỹ thuật thực tiễnTập trung vào các kỹ thuật như lập trình cặp, TDD (phát triển theo hướng kiểm thử) và thiết kế đơn giảnCác kỹ thuật do nhóm phát triển tự quyết định
Vai tròTập trung vào vai trò của toàn bộ các bên liên quan (Lập trình viên, khách hàng, huấn luyện viên, quản lý dự án)Tập trung vào vai trò của Scrum Master (Người quản lý) và Product Owner (Chủ sở hữu sản phẩm)
Thứ tự ưu tiênƯu tiên công việc theo yêu cầu khách hàng và các tính năng mang lại giá trị cao nhấtƯu tiên công việc theo tính năng sản phẩm (backlog)
Tập trung vàoKỹ thuật lập trình, chất lượng phần mềmLàm việc nhóm, tự tổ chức công việc

Ưu nhược điểm của Extreme Programming

Ưu điểm

XP mang lại lợi ích liên quan đến việc giảm thời gian và chi phí phát triển phần mềm, vì những lý do sau:

  • Kỹ thuật kiểm thử liên tục giúp tạo ra hệ thống ổn định, hiệu suất cao và ít lỗi
  • Tính đơn giản giúp tạo ra đoạn code rõ ràng, xúc tích, dễ đọc và dễ điều chỉnh nếu cần thiết
  • Các tài liệu cồng kềnh yêu cầu về tính năng phần mềm được thay thế, tinh gọn bằng User Story (Câu chuyện người dùng)
  • Phương pháp tiếp cận lặp tối giản giúp đảm bảo chỉ xây dựng và cung cấp các tính năng cần thiết trong thời gian sớm nhất
  • Giao tiếp liên tục cho phép các bên liên quan của dự án theo dõi tiến độ và can thiệp giải quyết các vấn đề kịp thời
  • Lập trình cặp giúp các sản phẩm đạt chất lượng cao với ít lỗi hơn
  • Sự tham gia sâu của khách hàng vào dự án giúp họ nhận được chính xác kết quả họ mong muốn và đạt sự hài lòng cao hơn.
See also  Phát triển kỹ năng với các chương trình đào tạo quản lý dự án

Nhược điểm

Mặt khác, Extreme Programming tồn tại một số nhược điểm như sau. Bạn cần xem xét chúng để quyết định xem có nên áp dụng phương pháp này cho dự án tiếp theo của mình hay không:

  • Việc họp thường xuyên với khách hàng thường tốn nhiều thời gian, chi phí và thậm chí là gây ra mệt mỏi, ức chế cho cả hai bên
  • Sự thay đổi và điều chỉnh liên tục dẫn đến việc khách hàng không có hình dung cụ thể về tình hình dự án thực tế.
  • Phương pháp XP đòi hỏi những thay đổi trong văn hóa và cấu trúc doanh nghiệp hoặc cấu trúc dự án
  • Lập trình cặp tốn nhiều thời gian hơn và cần sự phù hợp về tính cách và phong cách làm việc
  • Khách hàng có thể không mong muốn, không đủ thời gian hoặc không đủ chuyên môn để tham gia phát triển phần mềm
  • Việc tuyển dụng hoặc đào tạo các lập trình viên để đạt được chất lượng kỹ thuật lập trình như kỳ vọng là một thách thức lớn.

Khi nào nên sử dụng phương pháp Extreme Programming?

Extreme Programming đặc biệt phù hợp với các dự án mà tốc độ triển khai và chất lượng lập trình là yếu tố then chốt. Nếu bạn đang làm việc trong một dự án có thông số kỹ thuật thay đổi thường xuyên và liên tục nhận phản hồi từ khách hàng, thì XP có thể là phương pháp quản lý dự án lý tưởng.

Một số trường hợp dự án XP hoạt động hiệu quả:

  • Dự án với các yêu cầu thay đổi liên tục: Phương pháp XP có thể thích ứng nhanh chóng với các yêu cầu thay đổi nhờ các chu kỳ lặp lại ngắn và khả năng phản hồi liên tục.
  • Các nhóm coi trọng kỹ thuật lập trình vững chắc: Nếu nhóm của bạn quan tâm đặc biệt đến chất lượng coding và sẵn sàng áp dụng các kỹ thuật thực tiễn chặt chẽ, Extreme Programming cung cấp một khung triển khai để duy trì chất lượng kỹ thuật đó tốt nhất.
  • Doanh nghiệp có văn hóa cộng tác chặt chẽ: Các nhóm phát triển ưa thích sự hợp tác và giao tiếp chuyên sâu sẽ thấy XP là một giải pháp tối ưu trong việc phát triển phần mềm mang tính tương tác cao.

Tạm kết

Extreme Programming (XP) được thiết kế để giúp doanh nghiệp đáp ứng nhu cầu khách hàng một cách tối ưu nhất, đặc biệt là những khách hàng thường xuyên thay đổi yêu cầu. Ngoài ra, phương pháp Agile này còn giúp giảm thiểu rủi ro liên quan đến quản lý các dự án có yêu cầu biến động liên tục.

Tuy nhiên, XP đòi hỏi một đội nhóm phát triển phần mềm tương đối nhỏ, làm việc chặt chẽ với nhau và với khách hàng. Điều này giúp họ có khả năng tạo ra các kiểm thử dễ dàng hơn để đạt được chất lượng phần mềm tốt nhất trong thời gian ngắn nhất.

——————————-

Công ty Tư vấn Quản lý OCD (OCD Management Consulting Co) là một trong những công ty tư vấn quản lý hàng đầu Việt Nam với tính chuyên nghiệp, thực tiễn và chất lượng cao.

Nếu bạn quan tâm, hãy liên hệ với chúng tôi để được tư vấn miễn phí!

Thông tin chính thức về OCD được cập nhật tại website: https://ocd.vn

Fanpage chính thức của OCD vui lòng truy cập: https://facebook.com/OCDConsulting

Liên hệ nhanh Hotline/Zalo: 0886595688 hoặc gửi email đến: ocd@ocd.vn

Contact Us

//]]>