Professional Documents
Culture Documents
Cong Nghe Phan Mem - Chuong10
Cong Nghe Phan Mem - Chuong10
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 1
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 2
1
10.2 Phát triển phần mềm Agile
xuất hiện vào cuối thập kỷ 1990 với mục đích giảm triệt để thời
gian phát triển và phân phối phần mềm.
đặc tả, thiết kế và hiện thực sẽ được thực hiện xen kẻ.
phần mềm = chuỗi các version/bản tăng tiến.
các bên liên quan đều dính líu đến việc đặc tả và đánh giá
version.
việc phân phối định kỳ các version mới để đánh giá chúng.
tối thiểu hóa việc lập tài liệu - tập trung chủ yếu việc viết code.
hỗ trợ tool rộng rãi (tool kiểm thử tự động) được dùng để hỗ
trợ việc phát triển phần mềm.
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 3
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 4
2
Tuyên ngôn Agile
Individuals and
over Process and tools
interactions
Comprehensive
Working software over
documentation
Customer
over Contract negotiation
collaboration
Responding to
over Following a plan
change
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 5
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 6
3
VL1 : cá nhân và giao tiếp hơn là qui trình và công cụ
Xây dựng 1 nhóm quan trọng hơn là xây dựng môi trường.
• 1 số manager xây dựng môi trường trước và hy vọng nhóm sẽ
làm việc tốt với nhau trong môi trường đó.
• không làm việc.
• hãy để nhóm tự xây dựng môi trường làm việc dựa trên yêu
cầu của họ.
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 7
4
VL3 : cộng tác với khách hàng hơn là thương lượng
hợp đồng
không thể miêu tả yêu cầu phần mềm trước rồi để đó trừ phi để
phát triển nó ngay trong phạm vi chi phí xác định.
khách hàng không thể đưa ra yêu cầu rồi rời đi.
dự án thành công đòi hỏi sự hồi tiếp từ khách hàng đều đặn
thường xuyên, và không phụ thuộc vào hợp đồng hay SOW
(Statement Of Work).
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 9
5
VL4 : đáp ứng với thay đổi hơn là theo sát kế hoạch
kế hoạch của chúng ta và khả năng đáp ứng với thay đổi là sống
còn.
dĩ nhiên 1 dự án không thể được tiên đoán xa trong tương lai.
• quá nhiều biến, không có cách tốt để ước lượng chi phí.
• khi nhà phát triển thu được kiến thức về hệ thống và khi
khách hàng thu được kiến thức về yêu cầu của họ, 1 vài tác vụ
sẽ trở nên không cần thiết.
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 11
VL4 : đáp ứng với thay đổi hơn là theo sát kế hoạch
Chiến lược lập kế hoạch tốt hơn : lập kế hoạch chi tiết cho 1 vài
tuần tới, chút ít cho vài tháng tới và rất thô cho thời gian sau đó.
nhu cầu biết cái gì chúng ta sẽ làm trong vài tuần tới, phỏng
chừng cái gì làm trong vài tháng tới, mơ hồ về cái gì sẽ làm sau 1
năm.
chỉ đầu tư vào kế hoạch chi tiết cho các tác vụ trước mắt; 1 khi kế
hoạch được làm thì khó thay đổi do động lượng và cam kết.
những phần chưa chi tiết của kế hoạch có thể được thay đổi
tương đối dễ dàng.
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 12
6
10.3 SCRUM là gì ?
Scrum là một quy trình phát triển phần mềm theo phương pháp
Agile. Chính vì thế, Scrum tuân thủ các nguyên tắc của bản tuyên
ngôn Agile.
Do đó, Agile và Scrum không phải là một. Hãy nhớ lại, Agile là
một phương pháp, bao gồm những giá trị cốt lõi và nguyên tắc
nhất định còn Scrum là quy trình “hiện thực hoá” những giá trị và
nguyên tắc của Agile.
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 13
•Nielsen Media
•First American Real Estate
•BMC Software
•Ipswitch
•John Deere
•Lexis Nexis
•Sabre
•Salesforce.com
•Time Warner
•Turner Broadcasting
•Oce
•…
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 14
7
SCRUM được dùng cho
Commercial software Video game development
In-house development FDA-approved, life-critical
Contract development systems
Fixed-price projects Satellite-control software
Financial applications Websites
ISO 9001-certified applications Handheld software
Embedded systems Mobile phones
24x7 systems with 99.999% Network switching applications
uptime requirements ISV applications
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 15
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 16
8
Framework SCRUM
Roles Ceremonies
•Product owner •Sprint planning
•ScrumMaster •Sprint review
•Team •Sprint retrospective
•Daily scrum meeting
Artifacts
•Product backlog
•Sprint backlog
•Burndown charts
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 17
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 18
9
Chủ nhân sản phẩm
Định nghĩa các tính chất nổi bật của sản phẩm.
quyết định ngày/nội dung phát hành.
chịu trách nhiệm về khả năng sinh lợi của sản phẩm (ROI)
lập thứ tự ưu tiên các tính chất của sản phẩm theo giá trị thị
trường.
điều chỉnh các tính chất và quyền ưu tiên cho mỗi bước lặp nếu
cần thiết.
chấp thuận hay hủy kết quả làm việc.
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 19
ScrumMaster
quản lý dự án.
chịu trách nhiệm cho việc đề ra các giá trị và thực tiển Scrum.
loại bỏ các trở ngại.
đảm bảo nhóm hoạt động và hiệu quả.
có thể đóng sự cộng tác giữa tất cả nhân sự và chức năng.
Bao bọc nhóm từ các quấy nhiễu từ bên ngoài.
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 20
10
Nhóm làm việc
thường từ 5-9 người
chức năng : lập trình viên, kiểm thử viên, người thiết kế có kinh
nghiệm,...
các thành viên nên làm việc toàn thời gian.
• có thể có ngoại lệ (td. quản lý viên database)
nhóm tự tổ chức lấy.
• lý tưởng là không có chức danh nhưng hiếm khi như vậy.
sự thay đổi nhân sự chỉ khi xong sprint hiện hành.
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 21
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 22
11
Lập kế hoạch Sprint
quyết định cách thức để đạt được mục tiêu Sprint (thiết kế)
Nhóm chọn các phần tử từ product backlog mà sprint có thể
hoàn thành.
tạo ra sprint backlog (tasks) từ các phần tử product backlog đã
chọn cho sprint (user story/tính chất)
Ước lượng sprint backlog ra giờ. Các task được ước lượng (1-16
giờ).
phải cộng tác chứ ScrumMastter không được làm 1 mình.
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 24
12
Các cuộc họp đánh giá Sprint
nhóm trình bày những gì đã làm xong
trong suốt sprint
thường dưới dạng demo 1 vài tính chất mới
hay kiến trúc cơ sở.
không chính thức
• qui luật 2 giờ chuẩn bị
• không cần slide
toàn bộ thành viên nhóm đều tham gia
mời mọi người.
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 25
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 26
13
Bài tập trong lớp
suy ngẫm về các tool, sự cộng tác, công việc của nhóm, các cuộc
họp,... mà bạn đã làm cho Delivery 2. Thực hiện cuộc nhìn lại nội
trong nhóm của mình :
một thành viên hoạt động như ScrumMaster
• scrumMaster hỏi mỗi thành viên về cài gì mà anh/chị ấy sẽ:
• bắt đầu làm
• ngừng làm
• tiếp tục làm
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 27
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 28
14
Product Backlog vs Sprint backlog
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 29
User story
sự miêu tả không chính thức bằng ngôn ngữ tự nhiên của 1 hay
nhiều tính chất của hệ thống phần mềm.
được viết từ góc nhìn của người dùng cuối.
Khuôn mẫu thường dùng :
As a <role> I can/ want <capability>, so that <receive benefit>
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 30
15
User story trong Sprint backlog/Product backlog
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 31
16
kế hoạch poker
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 33
Kế hoạch poker
Với mỗi user story, 1 thành viên có thể gán 1 số trong tập
{0,1,2,3,5,8, 13, 21}. 1 story được ước lượng là 2 sẽ khó bằng 1/4
story nhận số 8, 0 là đơn giản nhất, 21 là khó nhất.
Điều phối viên sẽ hỏi mỗi thành viên : đọc to số của mình
Thành viên gán số nhỏ nhất và lớn nhất sẽ giải thích tại sao mình
chọn số ấy.
thảo luận cho đến khi mọi người nhất trí trên 1 số nào đó.
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 34
17
Biểu đồ BURNDOWN
Tasks Mon Tues Wed Thur Fri
Code the user interface 8 4 8
Code the middle tier 16 12 10 7
Test the middle tier 8 16 16 11 8
Write online help 12
50
40
30
20
10
Hours
0
Khoa Khoa học & Kỹ thuật Máy tính Mon Tue Wed Thu Fri
Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 35
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 36
18
Lập trình cực nhanh
Lập trình cực nhanh (XP - Extreme programming) dùng cách tiếp
cận "thái cực" về việc lặp lại việc phát triển phần mềm.
version mới có thể được tạo ra nhiều lần trong ngày.
các bản tăng tiến được phân phối tới khách hàng 2 tuần 1 lần.
tất cả test case phải được thực hiện cho mỗi build và build chỉ
được chấp thuận nếu các test case chạy thành công trên nó.
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 37
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 10 : Phát triển phần mềm Agile
© 2010 Slide 38
19