TÌM HIỂU MÔ HÌNH PHÁT TRIỂN AGILETóm tắt– “Phương pháp quản lý dự án Agile là một trong những phương pháp quản lý dự án đang ngày một trở nên phổ biến và được nhiều người quan tâm.. Thay
Trang 1ĐẠI HỌC QUỐC GIA – HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
BÁO CÁO MÔN HỌC: QUẢN LÝ DỰ ÁN PHẦN MỀM
ĐỀ TÀI: TÌM HIỂU MÔ HÌNH PHÁT TRIỂN AGILE
Giảng viên: TS Trương Anh Hoàng - TS Phạm Ngọc Hùng
Khóa: K18 CNPM - Nhóm 1 Học viên: Phạm Minh Tuấn
Phạm Hữu Bằng
Nguyễn Thúy Hồng Trần Thị Hiên
Phạm Thị My
Trang 2Mục lục
I Giới thiệu 5
1 Đặt vấn đề 5
2 Giá trị khách hàng 6
II Phương pháp quản lý dự án 6
1 Tiếp cận truyền thống 7
2 PRINCE2 8
3 CCPM 9
4 Quản lý dự án linh hoạt (Agile) 9
III Cách tiếp cận theo phương pháp Agile 9
1 Bản tuyên ngôn cho phương pháp phát triển phần mềm linh hoạt Agile 9
a Lịch sử ra đời của tuyên ngôn 9
b 12 nguyên tắc của mô hình Agile 9
2 Cơ sở phương pháp Agile 10
3 Quản lý dự án linh hoạt 12
4 Quy tắc APM 13
IV Đánh giá 23
a Giới thiệu về mô hình phát triển Scrum 23
b So sánh mô hình phát triển Agile và một số mô hình phát triển kinh điển .25
V Kết luận 26
Tài liệu tham khảo 28
Trang 3Danh mục hình vẽ
Hình 1 - Phương pháp quản lý dự án Agile 5
Hình 2 - Mô hình phát triển thác nước 8
Hình 3 - Dự án như những hệ thống thích nghi phức hợp 13
Hình 4 - Ba tiêu chí đánh giá thành công của một dự án phần mềm 14
Hình 5 - Sơ đồ tổ chức nhóm làm việc 16
Hình 6 - Tầm nhìn người lãnh đạo 18
Hình 7 - Các quy tắc đơn giản 20
Hình 8 - Thông tin mở trong phát triển dự án 21
Hình 9 - Quản lý theo hình thức nới lỏng 22
Hình 10 - Mô hình lãnh đạo trong quản lý dự án 23
Hình 11 - Quá trình thực hiện mô hình phát triển Scrum 24
Danh mục bảng Bảng 1- So sánh ưu, nhược điểm của các mô hình phát triển phần mềm 26
Trang 4TÌM HIỂU MÔ HÌNH PHÁT TRIỂN AGILE
Tóm tắt– “Phương pháp quản lý dự án Agile là một trong những phương pháp
quản lý dự án đang ngày một trở nên phổ biến và được nhiều người quan tâm Thay vì cách tiếp cận của nhiều phương pháp quản lý dự án khác, Agile là phương pháp tiếp cận hướng tới giá trị khách hàng, bao gồm chuyển giao một sản phẩm đúng yêu cầu khách hàng với một mức giá “hợp lý” tại thời điểm đúng như khách hàng mong muốn.”
Từ khóa – Agile project management, project management methodology.
Trang 5I Giới thiệu
1 Đặt vấn đề
Quản lý dự án là một vấn đề khó và quản lý dự án phần mềm cũng luôn phải đối mặt với những vấn đề chung và vấn đề đặc thù trong phạm trù của các dự án phần mềm Trong môi trường phát triển và biến động như hiện nay, các dự án phầnmềm luôn phải trả các chi phí lớn trong những vấn đề liên quan đến quản trị dự án.Nếu trước kia nói đến dự án phần mềm thì người ta thường nghĩ đến quy trình phức tạp và nhiều giai đoạn trải qua khoảng thời gian khá dài từ vài tháng đến vài năm để hoàn thành dự án Việc này dẫn đến chi phí phát triển các phần mềm bị đội lên rất cao và thiếu tính cạnh tranh nên các phương pháp cũ dần dần chỉ còn được
áp dụng cho các dự án cụ thể, yêu cầu rõ ràng và dễ bảo trì
Hình 1 - Phương pháp quản lý dự án Agile
Ngày nay, cùng với việc yêu cầu phát triển sản phẩm ngày càng chất lượngnhưng cũng cần có tính cạnh tranh về thời gian và chi phí, các phương pháp mới rađời phải đáp ứng được tiêu chí là: nhanh chóng bàn giao được sản phẩm, tiếp xúcthường xuyên để ghi nhận ý kiến khách hàng và quan trọng nhất là tạo ra sản phẩm
có tính cạnh tranh cao Một trong các phương pháp quản lý dự án được đưa ra đócần kể đến phương pháp Agile
Mô hình phát triển phần mềm linh hoạt Agile là một phương pháp Agile chủtrương hướng tới một cách tiếp cận nhằm mục đích tránh việc lãng phí thời gian,chi phí trong phát triển phần mềm và tăng cường sự đáp ứng với vấn đề thay đổitrong quá trình phát triển phần mềm.Nó bao gồm nhiều rất nhiều phương phápluận, quy trình và thực nghiệm để hỗ trợ cho việc phát triển phần mềm trở nên
Trang 6nhanh chóng và dễ dàng Mục tiêu quan trọng nhất mà phương pháp Agile hướngđến là “giá trị khách hàng” Khi mà phương pháp Agile đã định ra rõ ràng kháiniệm “giá trị khách hàng” là gì thì tất cả các phương pháp luận hay quy trình baohàm trong nó sẽ được xây dựng để xoay quanh làm sao để đạt được nó.
Báo cáo được chia làm 5 phần:
Phần được tiếp theo đây bằng cách làm rõ khái niệm “giá trị kháchhàng” và sự linh hoạt trong quản lý dự án mà phương pháp Agile hướngđến
PhầnII trình bày tổng quan về triết lý và phương pháp luận của một sốphương pháp quản lý dự án khác nhau
Phần III sẽ đi sâu hơn vào hướng tiếp cận cũng như chi tiết của phươngpháp Agile
Đưa ra ví dụ về mô hình phát triển Scrum và kết thúc đánh giá phươngpháp Agile so với một số phương pháp khác trong Phần IV
Kết luận của nhóm trong Phần V
II Phương pháp quản lý dự án
Quản lý dự án là một khái niệm liên quan đến việc lập kế hoạch, tổ chức, thúcđẩy và kiểm soát nguồn lực nhằm đạt được một mục tiêu cụ thể nào đó Có haithách thức quan trọng nhất đối với quản lý dự án.Thách thức đầu tiên chính là làmsao để đạt được tất cả mục tiêu của dự án với những ràng buộc của môi trường vàhoàn cảnh Thách thức này bao gồm phạm vi của dự án, thời gian, chất lượng vàkinh phí Thách thức thứ hai chính là làm sao để có thể tối ưu những cung cấp đầu
Trang 7vào (có thể là giảm thiểu chi phí) và kết hợp chúng với những mục tiêu được địnhsẵn.
Có rất nhiều cách tiếp cận đối với việc quản lý các hoạt động của dự án như lặp,gia tăng, chia pha Trong phần này, nhóm chúng tôi sẽ điểm qua một số cách tiếpcận hay được sử dụng trong thực tế
1 Tiếp cận truyền thống
Cách tiếp cận theo dạng chia pha truyền thống hay gặp nhất (xuất hiện trong rấtnhiều các biến thể khác) chỉ ra một chuỗi các bước thực hiện dự án cần được hoànthành để hoàn thành dự án Các bước đó có thể được liệt kê ra dưới đây:
- Bước 1: Khởi đầu
- Bước 2: Lập kế hoạch và thiết kế
- Bước 3: Thực thi và xây dựng / triển khai
- Bước 4: Giám sát và điều khiển hệ thống
Trang 8Hình 2 - Mô hình phát triển thác nước
Tuy nhiên, đã có nhiều nghiên cứu cũng như thống kê gần đây đã chỉ ra môhình thác nước thường chỉ thành công đối với những dự án cỡ nhỏ, hoặc những dự
án được đề xuất với một hiểu biết sâu sắc từ phía khách hàng cũng như đơn vị triểnkhai Còn đối với những dự án có kích thước lớn, mô hình thác nước thường thấtbại hoặc đem lại chi phí quản lý dự án rất lớn Nhược điểm lớn nhất của mô hìnhthác nước chính là không cho phép có sự thay đổi trong quá trình thực hiện dự án,những thay đổi càng xuất hiện muộn trong vòng đời dự án thì càng phải trả giá lớn
về tiền bạc và thời gian
2 PRINCE2
PRINCE2 là cách tiếp cận có cấu trúc được giới thiệu vào năm 1996.PRINCE2
là sự kết hợp giữa phương pháp PROMPT và MITP.Ưu điểm của PRINCE2 làcung cấp một bộ khung tiêu chuẩn để quản lý các dự án PRINCE2 mô tả nhữngquy trình để phối hợp giữa con người và các hoạt động dự án, hay nói cách là làphương pháp để thiết kế và giám sát dự án Tuy nhiên, mô hình PRINCE2 cũnggặp nhược điểm khi đề cao vai trò của giám sát trong dự án nhằm đạt được cácmục tiêu đề ra của dự án Con người tham gia trong dự án có thể sẽ chịu nhiều áplực khi dự án được thực hiện Chính điều này đôi khi làm các dự án sa đà quánhiều vào vấn đề giám sát, chi phí của dự án sẽ được đưa nhiều vào hoạt độnggiám sát trong khi giá trị khách hàng mới là điều nên được quan tâm nhiều nhất
Trang 9vụ và các chuỗi công việc để giữ cho toàn bộ dự án đúng tiến độ.
4 Quản lý dự án linh hoạt (Agile)
Quản lý dự án linh hoạt dựa trên cơ sở các nguyên tắc về quản lý tương tác conngười Phương pháp Agile thường được sử dụng nhiều trong môi trường côngnghiệp phần mềm, website, công nghệ, sáng tạo hoặc quảng cáo – những môitrường thường có sự thay đổi liên tục, đòi hỏi sự thích ứng liên tục và đạt đượcnhững giá trị cho khách hàng tốt nhất có thể
III Cách tiếp cận theo phương pháp Agile
1 Bản tuyên ngôn cho phương pháp phát triển phần mềm linh hoạt Agile
a Lịch sử ra đời của tuyên ngôn
Tháng 2 năm 2001 , 17 nhà phát triển phần mềm đã họp mặt tại khu trượttuyết Snowbird , Utah và đưa ra Tuyên ngôn Phương pháp phát triển phần mềmlinh hoạt (Agile Manifesto) Tuyên ngôn gồm 4 điểm :
o Cá nhân và các tương tác quan trọng hơn quy trình và công cụ
o Tập trung làm cho phần mềm chạy được thay vì viết tài liệu
o Cộng tác trực tiếp với khách hàng thay vì dựa trên hợp đồng
o Phản ứng với các thay đổi thay vì tuân theo một kế hoạch định sẵn
b 12 nguyên tắc của mô hình Agile
o Ưu tiên cao nhất của dự án là thỏa mãn khách hàng bằng việc bàn giao sảnphẩm sớm và liên tục
o Hoan nghênh các thay đổi từ phía khách hàng, kể cả các thay đổi vào giaiđoạn cuối
Trang 10o Bàn giao sản phẩm theo chu kì từ vài tuần đến vài tháng Chu kì ngắn tốthơn chu kì dài.
o Các nhân viên hiểu nghiệp vụ và các lập trình viên phải làm việc cùng nhauhàng ngày
o Tổ chức dự án xoay quanh những cá nhân tích cực Hỗ trợ và tin tưởng họ
o Phương pháp giao tiếp tốt nhất trong đội dự án là gặp mặt trực tiếp
o Các chức năng đã họat động là thước đo chính cho tiến độ dự án
o Khuyến khích phát triển bền vững: Lập trình viên, người dùng, nhà quảnlí…phải có khả năng tham gia dự án một cách liên tục
o Liên tục cải tiến chất lượng thiết kế và mã nguồn
o Tính đơn giản giữ vai trò cốt yếu Làm càng ít càng tốt
o Những yêu cầu và thiết kế tốt nhất được nảy nở từ những nhóm làm việc tựchủ
o Sau những khoảng thời gian nhất định, đội dự án xem xét cách thức cải tiếnhiệu quả công việc
2 Cơ sở phương pháp Agile
Để hiểu hơn về phương pháp Agile, dưới đây là một số kỹ thuật cơ bản được sửdụng xuyên suốt trong phương pháp luận cũng như quy trình của Agile
Phát hành các phiên bản nhỏ của chương trình (hoặc hệ thống) Dự án đượcchia làm nhiều thành phần nhỏ với mục đích dễ quản lý về độ phức tạp cũngnhư làm sao để nhận được phản hồi từ khách hàng và người dùng cuối nhanhnhất có thể Các phiên bản thường được bàn giao trong khoảng 1 đến 3tháng
Đây là phương pháp phát triển lặp và tăng dần Các dự án được quản lý theophương pháp Agile được chia làm nhiều vòng lặp nhỏ Mỗi vòng lặp đều baogồm đầy đủ các bước như lập kế hoạch, đặc tả yêu cầu, thiết kế, viết mãnguồn và kiểm thử Như vậy, phương pháp Agile sẽ gồm nhiều vòng lặp,trong đó mỗi vòng lặp đã có đầy đủ các pha như mô hình “thác nước”(waterfall) Tùy theo đặc thù của các dự án phần mềm và theo yêu cầu của
Trang 11khách hàng, mỗi vòng lặp có thể tương ứng với một hoặc một vài chức năngmới hoặc chức năng được cải tiến.
Tùy theo tính chất của dự án, khoảng thời gian của một vòng lặp trong các
dự án sử dụng phương pháp Agile có thể là từ 2 tuần đến 1 tháng Ngườiquản trị dự án có thể cân nhắc dựa trên nhiều yếu tố khác nhau như thời gianlặp càng ngắn thì số phiên bản của chương trình (hoặc hệ thống) sẽ càngnhiều và đồng thời sẽ có càng nhiều phản hồi (góp ý) từ khách hàng vàngười dùng cuối Nhưng ngược lại thời gian lặp càng ngắn thì áp lực lên tất
cả các thành viên dự án cũng như việc lập kế hoạch tổng thể dự án sẽ phứctạp hơn Chính vì thế, đối với phương pháp Agile, việc cân đối thời gian lặp
là một trong những nhiệm vụ quan trọng của người quan trị dự án
Khác với nhiều mô hình khác như mô hình thác nước, phương pháp Agileđòi hỏi sự tập trung cao độ của tất cả thành viên dự án, các bên liên quan đến
dự án, khách hàng và đôi khi là cả người dùng cuối Bởi mỗi vòng lặp có thểchỉ diễn ra trong vỏn vẹn 2 tuần, trong 2 tuần đó sẽ luôn đòi hỏi sự có mặtcủa tất cả các cá nhân liên quan Việc kết nối qua thư điện tử, điện thoại, gặpmặt, tổ chức họp sẽ liên tục được thúc đẩy để tăng tính tương tác với tất cảthành viên liên quan đến dự án
Thích hợp với những dự án phần mềm mà bản thân khách hàng đôi khi cũngchưa hoàn toàn hiểu về ý tưởng và mong muốn Sản phẩm của họ sẽ đượctiến hóa và ngày một hoàn thiện hơn thông qua từng vòng lặp của dự án.Theo thời gian, ý tưởng ban đầu của khách hàng sẽ ngày một rõ ràng và gầnvới mong muốn hơn Như vậy, phương pháp Agile có thể giúp tối ưu sự thỏamãn và hài lòng của khách hàng (bởi mỗi phiên bản tương ứng với mỗi vònglặp sẽ chỉ được thực hiện khi nhận được sự đồng ý của khách hàng) vớinhững chi phí ít tốn kém và sự thực thi đơn giản hiệu quả
Việc lựa chọn tính năng nào để phát triển là hoàn toàn tùy theo mong muốncủa khách hàng Những tính năng được yêu cầu và được xếp loại mức độ ưu
từ cao xuống thấp Việc xếp loại mức độ ưu tiên được thực hiện bởi sự cộngtác với các nhà phát triển và khách hàng dựa trên lý thuyết trò chơi (mụcđích là tối đa hóa lợi ích của cả 2 bên và tối thiểu hóa rủi ro của đối tác) Các
Trang 12nhà phát triển dự tính khả năng cố gắng của họ để hoàn thành chức năng cầnthiết trong khi khách hàng quyết định độ cần thiết trong nghiệp vụ của chứcnăng.
Do đó, mô hình Agile yêu cầu tính hợp tác trong nhóm làm việc rất cao vàrất cần sự đóng góp, chia sẻ giữa các thành viên vì mục đích hoàn thành dự
án Mô hình làm việc theo cặp được áp dụng theo nguyên lý các nhà pháttriển và cả các người khác thực hiện công việc theo nhóm 2 người để tăng sựcộng tác cũng như chia sẻ kiến thức và nâng cao chất lượng sản phẩm
Phát triển phần mềm dựa trên phát triển hướng kiểm thử (test-drivendevelopment) Các nhà phát triển viết các kịch bản kiểm thử trước khi họviết mã nguồn và thay đổi, tiến hóa mã nguồn để sao cho mã nguồn thỏamãn được các test case Thay vì thẩm định tính hợp lệ của mã nguồn thì thựchiện các kịch bản kiểm thử sẽ nâng cao chất lượng và độ tin cậy đối với sảnphẩm Quá trình này gồm các bước sau:
o Viết một test case đơn giản nhất trước
o Cài đặt class/method ở mức tối giản nhất để có thể vượt qua testcase đó
o Tối ưu hóa mã nguồn
o Bổ sung test case mới và lặp lại quá trình cho đến khi tất cả các yêucầu được thỏa mãn
3 Quản lý dự án linh hoạt
Quản lí dự án linh hoạt (Agile Project Management – APM) là công việc tiếpthêm năng lượng, nâng cao vị thế và cho phép các đội dự án bằng cách nhanh nhất
và đáng tin cậy nhất để chuyển giao những sản phẩm thương mại thông qua việctương tác khách hàng và liên tục học hỏi và thích ứng với những thay đổi về yêucầu và môi trường của khách hàng
Phương pháp Agile coi các dự án như những hệ thống sống hay còn gọi lànhững hệ thống thích nghi phức hợp (Complex Adaptive Systems - CAS) Trong
đó sẽ bao gồm nhiều tác nhân tự động, tương tác qua lại lẫn nhau theo nhiều cáchkhác nhau Sự tương tác của mỗi tác nhân riêng lẻ được giám sát bởi các quy tắcđơn giản và nội tại và đặc tả bởi các phản hồi cố định Trật tực phức hợp phát sinh
Trang 13từ chính nội tại của hệ thống chứ không phải do sự áp đặt từ phía ngoài Những hệthống thích nghi phức hợp này có khả năng thích nghi đối với những hoàn cảnhkhác nhau và với những môi trường khác nhau.
Hình 3 - Dự án như những hệ thống thích nghi phức hợp
Thực hiện dự án theo phương pháp Agile vai trò của người quản lí dự án cũngthay đổi, thay vì bảo các thành viên trong đội làm gì thì họ phải tổ chức hướng dẫnđội đáp ứng với những thay đổi Họ có trách nhiệm cá nhân hơn với các thành viênkhác trong đội, có vai trò giám sát Người quản lí là người chủ sản phẩm là ngườilàm việc chặt chẽ với khách hàng để quyết định cái gì sẽ được dựng và theo trật tựnào Người chủ sản phẩm xác định tính năng của sản phẩm, chọn khi nào phầnmềm sẽ được đưa ra và điều chỉnh các tính năng và ưu tiên khi cần
4 Quy tắc APM
Cũng như mọi phương pháp khác, APM được xây dựng trên hai quan điểmquan trọng: ở mức cơ bản thì APM cần đơn giản nhưng kiên định về mặt nguyêntắc và giá trị, ở mức ứng dụng thì APM đưa ra một cách thực hiện linh hoạt trongthực tiễn, có khả năng thích nghi tốt với sự thay đổi của môi trường và trong mọitrường hợp Với những quan điểm đó, APM dựa trên cơ sở các khái niệm về CASđược nghiên cứu và đưa ra những nguyên tắc cơ bản cốt lõi như dưới đây:
- Thúc đẩy sự liên kết và hợp tác Con người được coi là tác nhân chính ảnh
hưởng đến giá trị, sự thay đổi, học tập và thích nghi Được chia sẻ tầm nhìngiúp mọi người được liên kết và hành động vì mục tiêu chung Khi mọi
Trang 14người được liên kết chặt chẽ, sự cạnh tranh không lành mạnh sẽ được giảmthiểu và sự hợp tác làm việc với nhau để cùng có lợi sẽ được đẩy mạnh.
- Khuyến khích sự xuất hiện và tự tổ chức Quy trình và thực hành được
làm tối thiểu đơn giản Con người tự tổ chức cung cấp giá trị kinh doanh lớnnhất Mô hình phức tạp bao gồm cả hành vi tự tổ chức và cấu trúc tối ưu,xuất hiện từ tương tác gần giữa nhiều người theo các quy tắc đơn giản
- Học tập và thích ứng Thông tin phản hồi được sử dụng liên tục cho học
tập, thay đổi thích ứng và cải tiến
Theo quan niệm truyền thống, một dự án phần mềm được coi là thành công khisả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ủakhá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útcuộ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íchthí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
Hình 4 - Ba tiêu chí đánh giá thành công của một dự án phần mềm