Please enable JavaScript.
Coggle requires JavaScript to display documents.
Waterfall, Story point, Scrum, Agile - Coggle Diagram
Waterfall
Các bước triển khai
Phân tích yêu cầu (requirement)
Thiết kế (design)
Thiết kế tổng quan, architecture của hệ thống
UI/UX, design,…
Thực thi code (implementation)
Testing
Deployment + Maintainent.
Nhược điểm
Quá cứng nhắc, không thể quay ngược lại các bước trước đó
Càng gần về cuối, nếu phát hiện ra sai lầm thì phải trả giá đắc, chi phí nhiều
Rất khó trong thị trường hiện nay là đòi hỏi phần mềm phải ra đời nhanh, phục vụ nhanh nhu cầu của thị trường. Nhưng lại bị hạn chế những ràng buộc của mô hình Waterfall
Yêu cầu:
§ Xong bước 1 mới thực thiện bước 2, và các bước tiếp theo.
§ Đang implement sẽ không quay lại requirement hoặc sửa design.
§ Chỉ chảy 1 chiều từ trên xuống và không thể đi ngược lại nên gọi là mô hình waterfall.
Giải pháp
Đòi hỏi có mô hình khắc phục nhược điểm của waterfall, linh hoạt hơn.
1995, 1 số kỹ sư pm đã đề xuất 1 framework phát triển pm tên là scrum
Ở thập niên 90, nhiều đề xuất được đưa ra để khắc phục nhược điểm của waterfall, nhanh hơn, linh hoạt hơn.
Thì người ta đưa ra 1 phương pháp luận làm cơ sở nền móng lý thuyết để phát triển các framework phát triển phần mềm đó, pp luận này được gọi là pp Agile.
Story point
Velocity (tốc độ)
Là số lượng story point trong 1 sprint mà ta hoàn thành được, nghĩa là phải xong
Những task 90% xong cũng không được tính là done
Chỉ đếm những user story đã done, sẵn sàng mang cho client sử dụng
Đếm sprint hiện tại được bao nhiêu point để biết tốc độ tăng hay giảm của sprint
Nếu liên tục giảm thì xem lại có vấn đề gì
Tăng đều đều thì tốt, nhưng tăng nhanh quá, bất thường thì xem lại có vấn đề gì không
Tốc độ này chỉ đo được khi estimate theo story point. Nếu estimate theo giờ thì không đo được vì tuần nào cũng làm được 40h/người, 120h/5người. Tuần nào cũng giống nhau
Biểu đồ về tốc độ của các sprint
estimate
biết được mỗi sprint làm được bao nhiêu point để biết tốc độ công việc là bao nhiêu
Vì cần đặt ra mục tiêu của sprint vào thời điểm planning
Cần biết làm được bn công việc trong sprint đó, nhưng nếu không có cơ sở sẽ không biết sprint này nên làm 10 hay 15 story, không được kéo quá nhiều hay kéo quá ít.
Việc estimate giúp biết được tốc độ làm 1 sprint là bao nhiêu để làm cơ sở cho estimate của sprint tiếp theo.
Chỉ development team mới được estimate.
Point theo quy tắc fibonacci, số sau bằng tổng 2 số liền trước nó.
Định nghĩa
Là 1 thước đo giúp chúng ta quản lý các user story.
Là 1 con số cho development team biết độ khó của user story. Càng khó thì story point càng cao.
Khái niệm story point là 1 khái niệm tương đối
Gán các số này cho các task trong backlog sao cho các task phức tạp hơn, khó hơn thì có số point cao hơn và ngược lại.
Fibonacci
Không tăng quá chậm như số tự nhiên, không tăng quá nhanh như hàm mũ
Khi đã estimate được nhiều task thì những task sau có nhiều cơ sở để so sánh, estimate sẽ nhanh hơn nhiều
Do đó chọn các số dễ nhớ theo thứ tự, và độ phức tạp x10 lên: 1, 2, 3, 5, 8, 13, 20, 30, 50, 80, 130, 200, 300, 500, 800
Tại sao có 0.5? Vì có những task không phải quá nhỏ để xét là 0, nhưng cũng không quá lơn để xét là 1, nên cần 0.5 để biểu đạt
Những chỉnh sửa này không thay đổi quá nhiều tinh thần fibonacci, theo quy luật số hiện tại bằng 2 số trước cộng lại.
liên quan đến 3 khái niệm
Khối lượng công việc phải làm.
Độ phức tạp của công việc đó.
Những rủi ro, không chắc chắn phải đối diện khi làm công việc đó
estimate bằng point
Estimate bằng point sẽ so sánh độ phức tạp của task này với task nào đó được làm chuẩn
Lợi ích
Không phụ thuộc vào kinh nghiệm của người estimate.
Tốc độ sẽ được theo dõi
Khi tốc độ của development team thay đổi:
Nếu estimate theo giờ thì cần estimate lại vì trước đây đánh giá thấp task, thì cần thay đổi lại, task 4h thành task 6h.
Nhưng với story point thì không cần đánh giá lại vì story point là so sánh sự phức tạp tương đối giữa các task với nhau, không phụ thuộc vào con người trong team.
Nên nếu phát hiện làm dưới năng lực mong muốn thì độ phức tạp của task vẫn như vậy, nên không cần estimate lại.
estimate bằng giờ
Bị ảnh hưởng sự chủ quan, năng lực của người estimate
Scrum
1 số khái niệm
Scrum team
Product owner
Có trách nhiệm tối ưu giá trị của sp và công việc của development team đang làm
Là người duy nhất chịu trách nhiệm quản lý product backbock(danh sách tất cả các task, các chức năng sẽ làm trong dự án đó)
Là đại diện cho tổ chức đưa ra các yêu cầu, và sắp xếp các yêu cầu đó theo thứ tự ưu tiên làm sao để tối ưu được công suất của development team
Scrum Master
Là người giỏi về scrum, hiểu biết về scrum, đảm bảo hướng dẫn mọi người trong scrum team đấy thực hành scrum 1 cách chính xác nhất
Có thể không có chuyên môn về development team trong dự án
Nhưng là người đảm bảo thực hành scrum 1 cách đúng bàn bản nhất
Servant-leader
Lãnh đạo: đưa ra các rule và yêu cầu mọi người tuân theo
Đầy tớ: khi mọi người có gì đó bị lệch lạc thì scrum master sẽ theo dõi, nhắc nhỡ mọi người, giúp mọi người thực hành scrum tốt nhất.
Giúp mọi người thay đổi sự tương tác với nhau để tối ưu hóa giá trị mà scrum team đang làm.
Development team
Là tập hợp nhừng người phát triển phần mềm
Biến những task do PO đưa ra thành những sp có thể deliver cho client
Được cấu trúc và trao quyền để tự quản lý công việc của họ
không có leader, không có maneger, là team tự quản
2 tính chất quan trọng
tính tự quản
tính đa năng
tất cả các thành viên dù mỗi người có 1 kỹ năng khác nhau nhưng tổng hợp tất cả các kỹ năng đó lại sẽ đủ để giải quyết mọi bài toán trong dự án đó mà không cần nhờ bất kỳ ai bên ngoài giúp đỡ. Không cần gọi chuyên gia bên ngoài vào
tính chất khác
Không quy định title, chức danh cho mỗi người trong team. Có 1 chức danh chung gọi là developer, dù kỹ năng là tester, designer, lập trình, QA,….
Không chia sub team nhỏ hơn.
Mỗi người trong team có kỹ năng khác nhau, lĩnh vực khác nhau nhưng khi chịu trách nhiệm thì mọi người phải chịu trách nhiệm như 1 tập thể.
Từ 3-9 người. Lớn hơn thì chia nhiều development team.
2 tính chất quan trọng của scrum team
Tính tự quản(self-organizing)
Tính đa năng(cross-functional)
Missions
biến những backlog items thành những cái có thể deliver đượ
Scrum team có thể deliver sp đến client
1 cách có thể phát triển rộng thêm, Chứ không phải làm 1 phát từ đầu đến cuối rồi mới bàn giao
Không để đến xong hết mới bàn giao như yêu cầu, như vậy là tước đi quyền của client là quyền feedback lại sản phẩm sớm nhất
Bàn giao theo kiểu xoắng ốc
Roles
Events
Là các sự kiện trong scrum. Trong scrum được chia thành các events, trong đó có 1 event chính là sprint
Sprint
A time-box
Là 1 sự kiện mang tính time-box. Nghĩa là nó sẽ kết thúc khi thời gian hết mà không cần biết kết quả ntn.
Khi vận hành 1 dự án trên framework scrum người ta chia các khung thời gian của dự án thành các khoảng gọi là sprint.
thời lượng nhất quán trong suốt nỗ lực phát triể
Sprint tốt nhất nên có chiều dài như nhau xuyên suốt dự án
kéo dài từ 1 tuần đến 1 tháng
1 sprint mới sẽ start ngay sau khi sprint trước đó kết thúc
Hôm nay kết thúc sprint 1 thì mai bắt đầu sprint 2, không có thời gian nghỉ giữa 2 sprint
Sprint là 1 cuộc chạy nước rút, phải làm nhanh để có sp sớm đến tay client để client tối ưu tiền mà họ đạt được
sprint goal
Trước khi bắt đầu thực hiện 1 sprint cần xác định đạt được gì trong sprint này
những chức năng cần làm được
cải thiện về chất lượng, quy trình, giảm số lượng bug, tất cả mọi thứ chúng ta đặt ra trước khi bắt đầu 1 sprint
Các sprint goal này phải được tạo ra khi làm splan cho sprint.
Mục tiêu của các sprint cần gắn kết với nhau, không được rời rạc
Sprint progress
Khi làm việc trong 1 sprint thì không được làm gì nguy hiểm đến mục tiêu của sprint
Mục tiêu về mặt chất lượng không được phép giảm trong suốt quá trình sprint.
Những công việc được làm trong sprint có thể sẽ được làm rõ hoặc đàm phán lại với khách hàng hay PO trong quá trình sprint thì scrum cho phép.
Điều này thể hiện tính thích nghi của scrum
Mặc dù sprint đang chạy nhưng chúng ta vẫn phải làm rõ lại requirement, làm rõ lại yêu cầu khách hàng hoặc PO, scrum cho phép.
Sprint planning
Lập kế hoạch những gì làm trong sprint đó
Là 1 time-box event, sẽ kết thúc sau khi thời gian kết thúc
Sprint kéo dài 1 tháng thì sprint plan kéo dài trong 8 giờ, 2 tuần là 4 giờ
Sau 8 giờ mà plan chưa xong thì vẫn phải kết thúc plan đó, không làm plan tiếp. Bắt tay vào việc ngay.
Trả lời các câu hỏi
Sẽ deliver những gì tiếp theo cho client?
Cần những gì để làm được việc đó?
sprint backlog
Planning sẽ lập danh sách các công việc cần làm trong sprint, danh sách đó gọi là sprint backlog
Sprint backlog do development team quản lý
Sprint backlog chỉ có development team có thể thay đổi trong suốt sprint
Khi có công việc mới thì sẽ được dev team thêm vào trong sprint backlog
Những việc cần bỏ đi thì chỉ có dev team mới được remove khỏi sprint backlog
dialy scrum
Là event time-box 15p, hết 15p mà chưa xong thì vẫn phải kết thúc, quay lại làm việc
Đứng lại với nhau trao đổi trong 24h qua đã làm được gì, 24h tời sẽ làm gì, có vấn đề nào gặp phải, có khó khăn gì không
Daily scrum được tổ chức ở cùng địa điểm cùng thời gian của mỗi ngày để giảm thiểu sự phức tạp.
Từng member sẽ trả lời 3 câu hỏi:
Tôi đã làm gì ngày hôm qua để giúp nhóm phát triển đạt được mục tiêu của sprint?
Tôi sẽ làm gì hàng ngày để giúp nhóm phát triển đạt được mục tiêu của sprint?
Tôi có thấy bất kỳ trở ngại nào ngăn cản tôi hoặc nhóm phát triển đạt được mục tiêu của sprint không?
Scrum master
đảm bảo development team phải tổ chức daily meeting này
Development team có trách nhiệm tiến hành daily scrum
Scrum master có trách nhiệm chỉ cho dev team cách thức để giữ thời gian của daily scrum dưới 15p
Scrum master đảm bảo mọi người trong dev team phải tham gia đầu đủ trong daily scrum
Thuật lợi
Giúp cải thiện kỹ năng giao tiếp, cải thiện mức độ hiệu quả trong giao tiếp của development team
Giảm thiểu(eliminate) các cuộc họp khác.
Phát hiện các rào cảng, cảng trở sớm
Giúp đưa ra những quyết định nhanh.
Monitoring
development team phải liên tục theo dõi số lượng công việc còn lại để biết được chúng ta đang nhanh hay chậm so với tiến độ đã đề ra.
jira, có hỗ trợ đường burndown
là đường biểu diễn khối lượng công việc của sprint đến thời điểm hiện tại.
Trục tung là công việc còn lại, trục hoành là thời gian
Đường lý tường: là đường thẳng từ đầu đến cuối.
Khi so sánh đường burndown với đường lý tưởng sẽ cho biết tiến độ nhanh hay chậm để tìm cách giải quyết
đường burndown cũng là công cụ giúp thể hiện được tính có thể kiểm tra được của sprint.
Sprint increment
là tất cả những gì làm trong sprint đó mà có thể deliver được cho khách hàng
Phần được thêm vào để tạo vòng tròn lớn hơn được gọi là increment của sprint 4 đó.
Cancelling sprint
Hủy 1 sprint nên là 1 sự kiện hiếm hoi và không nên xảy ra thường xuyên
Khi mục tiêu của sprint không còn đúng với mục tiêu hiện tại của client nữa thì chúng ta hủy sprint.
Khi hủy sprint thì những item nào trong sprint đã làm xong rồi thì thôi, những cái nào chưa xong thì đưa về backlog.
Việc cancel này rất hiềm và không nên xảy ra nhiều.
Mất tinh thần.
Lãng phí công sức của mọi người trong dự án, cũng như nguồn lực của doanh nghiệp.
Sprint Review
Khi chúng ta đã làm tất cả công việc của sprint xong, hoặc chưa xong nhưng thời gian đã hết rồi, chúng ta phải ngồi lại để review. Công việc: Xem lại đã làm gì trong sprint.
Là 1 buổi demo cho các stakeholders của dự án, có PO, client, làm được những chức năng gì.
Demo xem có đúng yêu cầu của product owner không?
Sprint review kéo dài 4 tiếng cho 1 sprint dài 1 tháng
Cũng là time-box event
Sau mỗi sprint review sẽ cần thay đổi backlog
Những gì làm xong thì thôi
Những cái chưa xong thì có điều chỉnh hoặc không, nhưng phải đưa vào backlog để làm kế hoạch cho sprint tiếp theo
Sprint Retrospective
là xem lại cách thức chúng ta làm sp đấy, xem lại quy trình làm việc của chúng ta
Xem lại sprint trước đã làm được những gì tốt thì nên phát huy.
Những gì cần cải thiệt để tốt hơn cho sprint sau.
Là time-box event kéo dài 3 tiếng cho sprint 1 tháng
cần đạt 3 mục tiêu
Nêu ra những vấn đề đã làm tốt những gì?
Những vấn đề có thể làm tốt hơn, những thứ cần cải thiện
Kế hoạch cho sprint tiếp theo, làm sao để cải thiện những vấn đề này
Artifacts
Định nghĩa
vật phẩm làm ra trong quá trình sản xuất pm
Chức năng của phần mềm
Tài liệu hướng dẫn sử dụng cho client
Tất cả mọi thứ được tạo ra trong dự án được gọi là scrum artifacts
Product backlog
Trong đó, tất cả công việc, chức năng, mọi việc cần làm được đặt trong 1 artifacts lớn nhất được gọi là backlog nghĩa là cái rổ đựng mọi thứ định làm trong dự án
PO là người phụ trách việc quản lý backlog
user stories
Trong 1 backlog là 1 danh sách các công việc thì mỗi công việc đó được gọi là user story
Epic
Có những user stories liên quan nhau, Thì gom chung lại tạo thành 1 cái lơn hơn được gọi là epic(bản trường ca)
Epic lớn hơn story nhưng nhỏ hơn backlog, gom các stories liên quan với nhau lại thành 1 epic
tasks/subtasks
Trong story có thể chia thành các task nhỏ hơn được gọi là subtask
Dễ quản lý và estimate hơn
Product backlog items
Các story, epic, subtask được gọi chung là backlog item, là các item trong backlog
4 đặc tính sau
attributes of a description
Mô tả nó là cái gì
Mục đích là gì?
Tạo ra để làm gì?
Order
Thứ tự của nó trong backlog, cái nào đặt ở trên, cái nào đặt ở dưới
Chính là thứ tự ưu tiên để sau này chúng ta làm, sẽ làm những cái có thứ tự ưu tiên cao trước, ưu tiên thấp sau
Estimate
Estimate là 1 số bao nhiêu để thể hiện độ phức tạp của item đó
Story càng phức tạp, càng lớn thì số point càng cao.
Development team phải tự thực hiện
Value
Giá trị mà backlog item mang lại
Product backlog không bao giờ là đầy đủ, hoàn thiện
Dự án đang chạy thì product backlog sẽ luôn được thêm các item mới vào
Sẽ chỉ kết thúc khi dự án kết thúc
Definition of Done
Mỗi 1 backlog item cần có 1 khái niệm định nghĩa như thế nào là xong
Khái niệm này phải được đặt ra trước khi chúng ta làm
Định nghĩa ntn là xong thể hiện tính minh bạch của scrum
Cần định nghĩa minh bạch từ đầu, tất cả mọi tiêu chí để xác định 1 task ntn là xong.
Rules: quy định phải tuân theo
Định nghĩa
Là 1 framework, là 1 khung làm việc, không phải 1 quy trình hay kỹ thuật làm việc
là 1 khung làm việc giúp chúng ta áp dụng các quy trình trên đó, không phủ nhận các quy trình.
là 1 khung làm việc mà ta áp dụng lên đó những gì tốt nhất cho client.
Scrum ra đời 1995, nhưng mới nổi khoảng hơn 10 năm nay.
ba trụ cột của Scrum
Tính minh bạch
Mọi người luôn biết được những thông tin cần thiết tại bất cứ thời điểm nào
Tính có thể kiểm tra
Có thể kiểm tra được tiến trình, quá trình làm việc, mục tiêu của các spring, đã hoàng thành tới đâu ở bất kỳ thời điểm nào để biết được đang đi đến đâu
Tính thích nghi
Khi có sự thay đổi về yêu cầu thì chúng ta phải thiết kế framework làm việc của chúng ta thích nghi với điều đó chứ không phản ứng tiêu cực với điều đó
3 tính chất này có thể thấy xuyên suốt trong tất cả khái niệm, quy định, vai trò, nhóm, sự kiện của scrum.
3 tính chất quan trọng
Lightweight
Không nặng về lý thuyết
Không có quá nhiều rule, quy luật bắt buộc phải tuân theo
Simple to understand
Có thể nói toàn bộ về scrum trong 1-2 tiếng
Difficult to master
khó khăn ở đây là không phải cứ áp dụng đúng các lý thuyết của scrum là dự án sẽ chạy hiệu quả. Để mọi thứ chạy ổn, bạn phải nhìn ra được đặc thù của từng dự án, con người để điều chỉnh phù hợp. Lý thuyết của Scrum thì đơn giản, ai cũng nắm bắt được, nhưng thực sự để áp dụng một cách tinh thông thì không dễ
Agile
Đầu năm 2000, tuyên ngôn của Agile được thành lập, có 4 điểm chính.
Một phần mềm hoạt động được sẽ quan trọng hơn 1 tài liệu dễ hiểu
Khi phát triển pm, cần tập trung vào cá nhân, tương tác của họ, thay vì đặt nặng vào quy trình và công cụ.
Sự hợp tác với khách hàng sẽ quang trọng hơn việc đàm phán hợp đồng
Chúng ta chấp nhận sự thay đổi hơn là theo kế hoạch đã được định sẵn
Đây là 4 tuyên ngôn mà các framework áp dụng Agile đều có tinh thần như vậy