- vừa được xem lúc

Giới thiệu về eXtreme Programming và chút ý kiến cá nhân của mình

0 0 28

Người đăng: Hoàng Đức Quân

Theo Viblo Asia

Lại xin chào các bạn.

Sau bài viết về Pair Programming này: https://viblo.asia/p/ket-noi-voi-nhau-bang-pair-programming-gGJ59r9aKX2

Thì mình nhận thấy cần giới thiệu và đưa ý kiến về eXtreme Programming 1 cách bài bản. Vì vậy, bài số 2 của MayFest lần này của mình sẽ là giới thiệu và ý kiến cá nhân về eXtreme Programming.

Khái niệm

eXtreme Programming (XP) là 1 framework phần mềm có mục tiêu hướng đến các phần mềm chất lượng cao nhất và chất lượng kỹ sư tốt nhất cho 1 dự án/sản phẩm. Và đây cũng là mô hình phát triển cụ thể nhất hướng tới kỹ thuật và các áp dụng kỹ thuật ở trong Agile(Scrum thì hướng tới giao tiếp con người và quản lý hơn, Kanban thì đang dừng ở mức 1 kỹ thuật hơn là 1 cấp mô hình phát triển).

Dự án XP đầu tiên được bắt đầu từ ngày 6 tháng 3 năm 1996. Có thể lấy đây là ngày ra đời của XP.

Các giá trị của XP

http://www.extremeprogramming.org/values.html

Theo nguồn trên, XP đề cao 5 giá trị sau:

  • Simplicity: Chỉ làm những gì cần làm, không hơn không kém. Đây là cách để tối ưu hóa giải pháp trong 1 budget nhất định. Chia nhỏ công việc ra thành các bước nhỏ để thực hiện từng bước và tối thiểu hóa các lỗi phát sinh. Tạo ra 1 sản phẩm hoạt động được, có ích và duy trì bảo trì nó ở 1 mức chi phí hợp lý.
  • Communication: Ai cũng là thành viên trong team và chúng ta sẽ giao tiếp hàng ngày với nhau. Làm việc với nhau từ lúc có yêu cầu cho tới code thành phẩm. Cùng nhau tạo ra giải pháp tốt nhất cho vấn đề đang gặp phải bằng năng lực của tất cả thành viên của team.
  • Feedback: Tạo ra và chuyển cho mọi người các sản phẩm hoạt động được. Đưa ra sản phẩm sớm, lắng nghe ý kiến và thay đổi nếu cần. Luôn hướng mọi mục tiêu tới dự án và làm cho các quy trình trở nên phù hợp với dự án, không vòng vo.
  • Respect: Team member sẽ thể hiện và nhận lại sự tôn trọng lẫn nhau. Developer sẽ thể hiện sự tôn trọng với khách hàng. Người quản lý sẽ tôn trọng team và cho phép họ tự quản và tự quyền nhằm hướng tới chất lượng công việc.
  • Courage: Nói ra thực tế về tiến độ cũng như dự kiến. Không làm văn bản trình bày dài dòng lý do thất bại vì mục tiêu là thành công. Không nên lo sợ gì và thích ứng với thay đổi khi có thay đổi.

Tất cả các giá trị trên đều là các giá trị xuất phát từ Agile nên hiểu cũng không có gì khó lắm. Cái cần chú ý ở đây là cách mà cách giá trị ấy được diễn giải theo khái niệm XP. Ở đây là đẩy mọi giá trị lên mức cao nhất có thể.

Rules

Lập kế hoạch

  • Viết ra user stories.
  • Từ kế hoạch release tạo ra lịch release.
  • Tạo ra các release nhỏ thường xuyên.
  • Chia project thành các iteration.
  • Lập kế hoạch cho iteration trước khi bắt đầu mỗi iteration.

Quản lí

  • Tạo không gian làm việc mở cho team.
  • Đặt một nhịp độ làm việc dễ chịu.
  • Tổ chức stand up meeting hàng ngày.
  • Thiết lập Velocity cho Project.
  • Luân chuyển công việc thường xuyên.
  • Đảm bảo mọi người tuân thủ theo XP.

Thiết kế

  • Chú trọng sự đơn giản.
  • Sử dụng Class, Responsibilities, and Collaboration (CRC) Cards.
  • Tạo ra những giải pháp để giảm thiểu rủi ro.
  • Những chức năng không cần thiết thì không làm.
  • Refactor bất cứ nơi nào và khi nào có thể.

Coding

  • Luôn có sự giao tiếp với khách hàng.
  • Việc viết code phải có các quy chuẩn.
  • Viết unit test trước.
  • Tất cả code đều cần được pair-programming.
  • Chỉ duy nhất một pair thực hiện tích hợp tại 1 thời điểm.
  • Tích hợp thường xuyên.
  • Dùng riêng 1 máy tính cho việc tích hợp.
  • Cho phép mọi người được đóng góp vào mọi phần của dự án.

Testing

  • Tất cả code phải có unit test.
  • Code phải pass qua tất cả unit test trước khi được release.
  • Khi một bug được phát hiện phải có test cho tính năng bị bug ấy.
  • Acceptance test cần được chạy thường xuyên và kết quả phải luôn được trả lại.

Ý kiến cá nhân và đánh giá

Đây có thể nói là Framework chú trọng vào kĩ thuật phát triển và quy trình, công cụ nhất. Từ định nghĩa này, 1 số kỹ thuật và công cụ ra đời như Pair Programming, CRC Cards,... Rất dài và nhiều cái cần chú ý. Có thể nói so với tôn chỉ của Agile thì guide của XP khá là nhiều document và cứng, nếu không muốn nói là cứng nhất trong các framework tư tưởng Agile. Tất cả quy trình, quá trình và kỹ thuật lập trình, phát triển phần mềm được đẩy lên mức cao nhất tới độ "cực đoan"(extreme). Vậy là đủ hiểu tại sao phương pháp này có tên eXtreme Programming.

Về tính thực tế, một số rule của XP là hơi quá lý tưởng như việc "Luôn có sự giao tiếp với khách hàng" nguyên văn là "The customer is always available". Chúng ta không thể bắt khách hàng kè kè bên cạnh cả ngày hay yêu cầu lúc nào cần liên lạc thì họ phải liên lạc lại luôn được. Hay là việc Pair Programming chẳng hạn?

Về việc công sức, thời gian và hiệu quả, hiệu quả cao nhưng thời gian bỏ ra cũng rất nhiều và công sức cũng bị đẩy lên mức cao độ mệt mỏi.

Thế nên với mình, áp dụng Agile cũng phải linh hoạt(mà thực tế theo đúng chuẩn Scrum cũng chưa có nhiều người, team hay cty là áp dụng Scrum đúng). Và với 1 framework nặng như XP, việc áp dụng vào thực tế cũng cần phải linh hoạt để cân bằng giữ hiệu quả công việc, công sức cũng như tính thực tế

Bài viết tham khảo ở http://www.extremeprogramming.org/

Bình luận

Bài viết tương tự

- vừa được xem lúc

Các mô hình phát triển phần mềm

1. Định nghĩa. Mô hình phát triển phần mềm hay quy trình phát triển phần mềm xác định các pha/ giai đoạn trong xây dựng phần mềm. Có nhiều loại mô hình phát triển phần mềm khác nhau ví dụ như:.

0 0 112

- vừa được xem lúc

Tìm hiểu về cách thiết kế Class Diagram

Trong 1 dự án, việc tổ chức code cũng như clean code là 1 điều rất quan trọng, nếu cách thiết kế các class hợp lý và rõ ràng sẽ giúp ích rất nhiều cho việc mở rộng và bảo trì sau này. Để làm được điều này chúng ta cần phải có 1 bản thiết kế Class Diagram thật sự hợp lý.

0 0 92

- vừa được xem lúc

Chuyện thay đổi

Thay đổi là một thứ gì đó luôn luôn đáng sợ. Cách đây vài tháng mình có duyên đi làm cho một banking solution tên là X.

0 0 47

- vừa được xem lúc

Tôi trên con đường nỗ lực trở thành Agile Leader - Phần I

Mong muốn chia sẻ với mọi người về những trăn trở, những niềm vui, những bài học tích lũy, những mảnh kiến thức hay góp nhặt được trên con đường phấn đấu trở thành một Agile leader. Phần đầu này tôi muốn chia sẻ về định hướng, hay nói cách khác là điều gì cá nhân cần tập trung để trở thành một Agile

0 0 30

- vừa được xem lúc

9 ý tưởng cho buổi Retrospective hiệu quả!

Với những bạn đang vận hành dự án theo Scrum hoặc ít nhất đang cố gắng thử vận hành, ắt hẳn biết đến một scrum event quan trọng - Retrospective. Một event để scrum team cùng nhìn nhận lại lại cách thức làm việc, hợp tác với nhau hay nói chung là các vấn đề về quy trình, con người trong dự án.

0 0 71

- vừa được xem lúc

Mô hình phát triển phần mềm: Agile

1. Agile là gì. 2. Phát triển phần mềm theo Agile.

0 1 634