Vietnamese Developers' Blog

Agile: Tổ chức của một đội dự án XP

Posted in Công nghệ phần mềm by kiennguyen on the August 9th, 2009

Nguồn: The Art of Agile Development by J Shore & S Warden.
Phần tiếp theo của: Agile Development: Giới thiệu Extreme Programming

Một đội dự án XP làm việc cùng nhau trong một không gian mở không có các phòng riêng hoặc vách ngăn. Vào đầu mỗi vòng lặp, đội tổ chức một cuộc họp kéo dài từ 2 đến 4 giờ để tổng kết những công việc vừa hoàn thành và lập kế hoạch cho phần việc tiếp theo. Hàng ngày, cả đội tham gia một cuộc họp ngắn từ 5 đến 10 phút thảo luận về công việc trong ngày. Ngoài hai kiểu họp chính thức này, từng thành viên tự lập kế hoạch làm việc cho mình. Hình thức “tự tổ chức” (self-organization) là một đặc điểm chung của các dự án theo triết lí Agile.
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 bao gồm các thành viên sau đây:
Đại diện khách hàng (onsite customer): Chịu trách nhiệm xác định các yêu cầu (requirement) cho phần mềm. Công việc quan trọng nhất của người này là lập kế hoạch. Khi bắt đầu dự án, đại diện khách hàng xác định các tính năng (feature/story) cần có của phần mềm, tìm cách nhóm các tính năng này thành các phần nhỏ có thể phát triển và bàn giao lần lượt và định ra lịch trình bàn giao từng phần. Trong quá trình thực hiện dự án, đại diện khách hàng nhận phản hồi từ các thành viên khác và điều chỉnh kế hoạch cho phù hợp.
Nhiệm vụ thứ hai của đại diện khách hàng là giúp các lập trình viên hiểu các yêu cầu chi tiết cho sản phẩm. Trong các dự án XP, tài liệu đặc tả (SRS) chỉ là công cụ trợ giúp cho đại diện khách hàng mà thôi. Người này sẽ đóng vai trò một tài liệu “sống”, luôn sẵn sàng trả lời các câu hỏi từ các lập trình viên.
Đại diện khách hàng không nhất thiết phải là khách hàng thật mà chỉ cần là một thành viên hiểu rõ các yêu cầu của phần mềm. Thực nghiệm cho thấy giữa hai nhóm có chất lượng lập trình viên tương đương nhau thì nhóm có sự tham gia của khách hàng tạo ra sản phẩm tốt hơn hẳn. Nếu khách hàng không thể đến ngồi ở văn phòng của bạn, hãy đưa đội dự án của bạn đến ngồi cùng với khách hàng!
Thực nghiệm cũng cho thấy tỉ lệ hai đại diện khách hàng cho ba lập trình viên là phù hợp. Tất nhiên, tỉ lệ này phụ thuộc vào độ phức tạp của sản phẩm. Hãy ghi nhớ rằng khối lượng công việc của các đại diện khách hàng là rất lớn bởi họ luôn phải “chạy trước” các lập trình viên. (more…)

Agile: Giới thiệu Extreme Programming

Posted in Công nghệ phần mềm by kiennguyen on the June 2nd, 2009

Nguồn: The Art of Agile Development của J Shore & S Warden. Phần tiếp theo của: Agile Development: Giới thiệu chung

Extreme Programming (gọi tắt là XP, một số tài liệu tiếng Việt dịch là “lập trình cực hạn”) là một phương pháp phát triển phần mềm tuân thủ triết lí Agile. Trong số các phương pháp Agile thì XP là một trong các phương pháp hoàn thiện nhất và nhận được nhiều sự quan tâm nghiên cứu nhất. Một số phương pháp Agile khác là Scrum và Agile Unified Process (AUP).

Vòng đời của một dự án XP

Các hoạt động cơ bản của một dự án phần mềm là:

  1. Lập kế hoạch (planning).
  2. Phân tích yêu cầu (analysis).
  3. Thiết kế (design).
  4. Lập trình (programming).
  5. Test.
  6. Bàn giao sản phẩm (deploy).

Mô hình cổ điển thác nước (waterfall) sắp xếp các hoạt động này theo thứ tự tuyến tính, đầu ra của hoạt động này là đầu vào của hoạt động tiếp theo. Các mô hình lặp (iterative – chẳng hạn mô hình tăng trưởng hay mô hình tiến hóa) sắp xếp các hoạt động này xen kẽ lẫn nhau.

Vòng đời theo mô hình thác nước và mô hình lặp

Hình 1: (a) Mô hình thác nước. (b) Mô hình lặp

XP hoạt động theo mô hình lặp. 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 trong vòng một hoặc vài tuần gọi là một vòng lặp (iteration). 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: lập kế hoạch, phân tích, thiết kế, lập trình, test và bàn giao. Ưu điểm của mô hình này là đội dự án nhanh chóng nhận được phản hồi từ phía khách hàng. Những thay đổi cần thiết sẽ được áp dụng ngay trong lần lặp tiếp theo. (more…)

Agile: Giới thiệu chung

Posted in Công nghệ phần mềm by kiennguyen on the April 8th, 2009

Nguồn: The Art of Agile Development by J Shore & S Warden.

Agile là gì?

Agile là một triết lí (philosophy) cho việc phát triển phần mềm. Nói cách khác, đó là một cách “tư duy” về các dự án phần mềm. Các triết lí của Agile được cụ thể hóa bởi một số phương pháp phát triển phần mềm (method), chẳng hạn như Extreme Programming (XP) hay Scrum, gọi tắt là các phương pháp Agile.

Mỗi phương pháp Agile bao gồm một tập hợp các quy tắc (pratice), chẳng hạn quy tắc về sử dụng công cụ quản lí mã nguồn, quy tắc về các chuẩn lập trình hay quy tắc trình diễn sản phẩm hàng tuần cho khách hàng.

Triết lí Agile được đưa ra trong một bản tuyên ngôn (manifesto) gồm 4 điểm và được làm rõ hơn bởi 12 quy tắc.

Vì sao chúng ta cần Agile?

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.

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. Thành công ở mức cá nhân giúp kích thích các thành viên trong nhóm. 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. Vị trí của nhóm sẽ được bảo đảm nhờ các thành công mà nhóm mang lại cho công ty. Các phương pháp Agile giúp cho dự án phần mềm đạt được ba thành công này.

(more…)

Tagged with: ,