IV Làm việc nhóm
4 Ứng dụng trong lĩnh vực phát triển phần mềm CNTT – Phương
Phương pháp phát triển phần mềm linh hoạt
1. Tổng quan về Agile
- Agile được hiểu đơn giản là một phương pháp phát triển phần mềm linh hoạt, là một hướng tiếp cận cụ thể cho việc quản lý dự án phần mềm. Nó gồm một q trình làm việc tương tác và tích hợp để có thể đưa sản phẩm đến tay người dùng càng nhanh càng tốt.
- Những phương pháp phát triển phần mềm theo cách truyền thống ngày càng bộc lộ nhiều nhược điểm và tỷ lệ các dự án thất bại cao trong thời kỳ bùng phát của ngành công nghệ. Nhận ra vấn đề đó, một số cá nhân và cơng ty riêng lẻ đã đưa ra các phương pháp phát triển phần mềm hiện đại hơn và khác nhau để thích ứng với tình hình mới.
- Vào năm 2001, bản tun ngơn Agile (Agile Manifesto) đã được thống nhất và ra đời bởi một nhóm người có uy tính trong phát triển phần mềm:
a) Cá nhân và Sự tương tác hơn là quy trình và cơng cụ
+ Đặt trọng tâm vào con người và sự tương hỗ giữa những thành viên trong team. Nếu dự án có những thành viên có năng lực, chịu làm việc cùng nhau thì sẽ mang đến thành cơng cho dự án.
+ Thành viên trong nhóm cần:
•Tơn trọng giá trị của mỗi cá nhân
•Trung thực trong truyền thơng
•Minh bạch về dữ liệu, hoạt động, quyết định
Làm việc nhóm
•Cam kết với nhóm và các mục tiêu của nhóm
b) Phần mềm Chạy tốt hơn là Tài liệu Đầy đủ
+ Thực ra đứng với góc độ khách hàng thì khách hàng chỉ quan tâm đến sản phẩm có hoạt động được tốt hay không. Trong khi việc tạo và cập nhật tài liệu mất nhiều thời gian và được cho là buồn tẻ.
+ Vậy chúng ta không nên tập trung quá nhiều cho việc khơng cần thiết mà nên dành thời gian đó để trao đổi để hiểu thêm về cơng việc phải làm.
+ Chúng ta đừng hiểu lầm là làm Agile là không viết tài liệu. Ý tưởng là chỉ viết những gì mà mọi người cần đọc.
c) Cộng tác với Khách hàng hơn là Thương thảo Hợp đồng
+ Nhấn mạnh việc để khách hàng tham gia vào quá trình phát triển phần mềm
+ Khách hàng có thể giúp định hình sản phẩm phần mềm đang được tạo ra
+ Khách hàng có vị trí đặc biệt trong đội hình phát triển d) Phản hồi với Thay đổi hơn là Bám sát Kế hoạch
+ Phản hồi với thay đổi là điều cần thiết cho việc tạo ra một sản phẩm làm hài lòng khách hàng cũng như mang lại những giá trị kinh doanh.
+ Tìm kiếm sự phản hồi của khách hàng trong suốt dự án để có thể kết hợp thơng tin phản hồi và thông tin mới ngay khi sản phẩm đang được phát triển.
+ Tích hợp sẵn những tiến trình thay đổi các kế hoạch trong một khoảng thời gian đều đặn dựa trên những thơng tin phản hồi từ phía khách hàng.
2. Đặc trưng Agile - Tính lặp (Iterative)
•Dự án sẽ được thực hiện trong các phân đoạn lặp đi lặp lại.
• Các phân đoạn (được gọi là Iteration hoặc Sprint) thường có khung thời gian ngắn (từ một đến bốn tuần)
- Tính tiệm tiến (Incremental) và tiến hóa (Evolutionary)
•Cuối mỗi phân đoạn là các phần nhỏ của sản phẩm cuối cùng.
• Các phần nhỏ này thường là đầy đủ, có khả năng chạy tốt, được kiểm thử cẩn thận và có thể sử dụng ngay
• Theo thời gian, phân đoạn này tiếp nối phân đoạn kia, các phần chạy được này sẽ được tích lũy, lớn dần lên cho tới khi tồn bộ yêu cầu của khách hàng được thỏa mãn.
- Tính thích ứng (hay thích nghi – adaptive)
Do các phân đoạn chỉ kéo dài trong một khoảng thời gian ngắn, và việc lập kế hoạch cũng được điều chỉnh liên tục, nên các thay đổi trong quá trình phát triển (yêu cầu thay đổi, thay đổi công nghệ, thay đổi định hướng về mục tiêu v.v.) đều có thể được đáp ứng theo cách thích hợp .
Làm việc nhóm
• Các nhóm này tự thực hiện lấy việc phân công công việc mà không dựa trên các mơ tả cứng về chức danh
• Các thành viên nhóm cộng tác với nhau để ra quyết định, theo dõi tiến độ, giải quyết các vấn đề mà không chờ mệnh lệnh của các cấp quản lý. - Quản lý tiến trình thực nghiệm (Empirical Process Control)
•Ra các quyết định dựa trên các dữ liệu thực tiễn
• Việc phân nhỏ dự án thành các phân đoạn ngắn góp phần gia tăng các điểm mốc để nhóm phát triển thu thập dữ kiện cho phép điều chỉnh các chiến lược phát triển của mình.
• Agile rút ngắn vòng đời phản hồi (short feedback life cycle) để dễ dàng thích nghi và gia tăng tính linh hoạt.
- Giao tiếp trực diện (face-to-face communication)
•Đánh giá cao hơn việc giao tiếp trực diện thay vì gián tiếp thơng qua giấy tờ.
• Khuyến khích nhóm phát triển trực tiếp nói chuyện với khách hàng để hiểu rõ hơn về cái khách hàng thực sự cần, thay vì phụ thuộc nhiều vào các loại văn bản.
• Phát triển thói quen và cơ chế trao đổi trực diện thường xuyên (một trong các cơ chế thường thấy là các cuộc họp tập trung hàng ngày).
- Phát triển dựa trên giá trị (value-based development)
•Ngun tắc “phần mềm chạy tốt chính là thước đo của tiến độ”
•Loại bỏ đi các cơng việc dư thừa không trực tiếp mang lại giá trị cho sản phẩm.
•Giúp khách hàng tối ưu hóa được giá trị của dự án
•Gia tăng đáng kể độ hài lịng của khách hàng 3. Phương pháp Scrum
-Scrum là một “bộ khung làm việc” cơ bản để tiếp cận những công việc phức tạp. Dựa trên bộ khung này, nhóm làm việc có thể áp dụng những quy trình, kỹ thuật khác nhau cho cơng việc của mình. . . Nó là một thành viên của họ Agile.
- Giá trị cốt lõi của Scrum
• Minh bạch: Thơng tin liên quan tới q trình phát triển phải minh bạch và thơng suốt.
• Các cơng cụ và cuộc họp trong Scrum luôn đảm bảo thông tin được minh bạch cho các bên.
• Thanh tra: Truy xét kĩ càng, liên tục là cơ chế khởi đầu cho việc thích nghi và cải tiến liên tục trong Scrum.
•Thích nghi: Phản hồi lại các thay đổi một cách tích cực - Ba vai trị
• Product Owner: Là người chịu trách nhiệm về sự thành công của dự án, người định nghĩa các yêu cầu và đánh giá cuối cùng đầu ra của các nhà phát triển phần mềm.
• Scrum Master: Là người có hiểu biết sâu sắc, và đảm bảo nhóm có thể làm việc hiệu quả với Scrum.
Làm việc nhóm
• Development Team: Một nhóm liên chức năng, tự quản lý để tiến hành chuyển đổi các yêu cầu được tổ chức trong danh sách yêu cầu (requirement) của dự án thành
chức năng của hệ thống.
4. eXtreme Programming (XP)
- eXtreme Programming (XP) là một phương pháp phát triển phần mềm hướng đến việc nâng cao chất lượng phần mềm và khả năng đáp ứng với thay đổi yêu cầu người dùng.
- Các giá trị của XP
+ Giao tiếp (Communication): Trao đổi trực diện hằng ngày
+ Tính đơn giản (Simplicity): Chỉ làm những gì cần thiết, khơng hơn
+ Phản hồi (Feedback):
•Cam kết liên tục bàn giao các phần mềm chạy tốt vào cuối cácphân đoạn ngắn.
•Lắng nghe phản hồi từ các bên và thực hiện các điều chỉnh cần thiết.
+ Tơn trọng (Respect): Mỗi người đều đóng vai trị vào việc tạo ra các giá trị không kể công việc như thế nào.
+ Can đảm (Courage): Ln nói đúng về tiến độ và ước lượng - Các nguyên tắc cơ bản của XP
+ Phản hồi nhanh (Rapid Feedback)
Luôn lắng nghe phản hồi từ nhiều phía, lấy phản hồi một cách nhanh nhất, tìm hiểu chúng và đưa những hiểu biết đó vào trong hệ thống nhanh nhất có thể. Lập trình viên có thể học được cách thiết kế, lập trình, kiểm thử tốt nhất trong phạm
vi từng phút chứ không phải hàng ngày, tuần hoặc thậm chí hàng tháng.
+ Giả định đơn giản (Assume Simplicity)
• Đối xử với các vấn đề như thể chúng có thể giải quyết bằng những giải pháp đơn giản nhất
•Thay đổi tiệm tiến (Incremental Change)
•Khơng thay đổi cả “lố”, mà chỉ thay đổi một ít trong thiết kế, chức năng. + Sống chung với thay đổi (Embracing Change)
• Chiến thuật tốt nhất là tơn trọng tất cả các khả năng trong khi giải quyết các vấn đề áp lực nhất.
•Cơng việc chất lượng cao (Quality Work)
•Phải ln đầu tư để có được chất lượng cơng việc cao nhất, đến mức “hoàn hảo”
************************************ Hết
Tài liệu tham khảo:
- Wikipedia, Bài viết trên sami.hust.edu.vn và một số bài viết khác - Bài giảng của thầy Nguyễn Cảnh Nam
- Bài giảng của thầy Nguyễn Đình Hân - Bài giảng của thầy Lê Hải Hà