12.6 LÀM THẾ NÀO SCRUM CÓ THỂ KHẮC PHỤC ĐƯỢC CÁC VẤN
12.6.3 Làm thế nào để các yêu cầu thúc đẩy quá trình Scrum?
Scrum được phân biệt với các phương pháp luận phát triển Agile khác bởi cách nó sử dụng các yêu cầu để thúc đẩy việc lập kế hoạch và lập lịch trình. Đầu tiên, các yêu cầu được chỉ định theo một cách cụ thể, phổ biến là thể hiện các yêu cầu về việc Ai làm gì và Tại sao.
“Là một bác sĩ, tôi muốn xem hồ sơ tập thể dục của một bệnh nhân để tơi có thể đảm bảo rằng cơ ấy đang tuân theo đơn thuốc của mình”.
Mỗi yêu cầu trong số này chỉ định Ai (bác sĩ) Làm gì (xem dữ liệu tập thể dục của bệnh nhân) và Tại sao (đảm bảo rằng cô ấy đang tuân theo đơn thuốc của mình).
Chủ sở hữu sản phẩm tạo ra các yêu cầu và một số yêu cầu sẽ được ưu tiên hơn. Ví dụ, một trong hai yêu cầu trên sẽ được đánh giá có mức độ quan trọng cao hơn yêu cầu cịn lại. Khi các u cầu cịn lại có mức độ quan trọng bằng nhau, nhóm sẽ thỏa mãn yêu cầu có ưu tiên cao hơn trước. Điều này cũng có nghĩa là nếu dự án hết thời gian hoặc tiền bạc, các yêu cầu có ưu tiên cao nhất sẽ được hoàn thành đầu tiên.
Tạo nhiệm vụ yêu cầu
Khi một yêu cầu được đưa ra, nhóm phát triển họp để tạo ra các nhiệm vụ phải được hồn thành để đáp ứng u cầu đó. Cơng việc này được thực hiện trong hoạt động Chọn các yêu cầu để cung cấp.
Bảng sau cho thấy tám nhiệm vụ cần được thực hiện để hồn thành một u cầu của ví dụ trên:
Requirement:
“As a doctor, I want to view the patient’s exercise records so I can make sure she is following her prescription”
Tasks:
1. Authenticate the doctor
2. Obtain patient identifying data from doctor
3. Determine this doctor is authorized to view this patient’s records
4. Read the database to obtain exercise record
5. Read the database to obtain most recent prescription record
6. Format the data into a generic format
7. Determine the type of mobile device the doctor is using
8. Format the generic report into a report for that mobile device
Bảng 12.5 - Ví dụ về yêu cầu và các nhiệm vụ
Trong phần hoạt động Chọn yêu cầu để cung cấp, các nhiệm vụ cho các yêu cầu bổ sung có thể được thực hiện trong giai đoạn này cũng sẽ được tạo.
Nhiệm vụ được tạo trong cuộc họp nhóm cho phép các thành viên đưa ra phản hồi của mình. Một thành viên trong nhóm có thể sẽ nghĩ ra một nhiệm vụ cần phải thực hiện mà các thành viên khác khơng nghĩ đến. Hoặc thành viên trong nhóm sẽ nhận ra rằng một nhiệm vụ cụ thể chưa hồn thành, hoặc có thể thực hiện được theo một cách khác hoặc không thực sự cần phải hoàn thành.
Lên lịch tác vụ
Cho đến nay, Scrum là một ý tưởng hay và là một trong nhiều quy trình Agile được sử dụng nhiều. Tuy nhiên, điều làm cho Scrum trở nên đặc biệt là cách các nhiệm vụ được lên lịch.
Phương pháp luận của Scrum thừa nhận rằng rất khó để các nhà phát triển xác định thời gian thực hiện một nhiệm vụ. Tuy nhiên, các nhà phát triển khá giỏi trong việc xác định một thứ gì đó sẽ mất bao lâu so với thứ khác. Vì vậy, mặc dù một nhà phát triển có thể kém trong việc ước tính thời gian cần thiết để thực hiện. Ví dụ, Nhiệm vụ 2 trong Hình 12-23, người đó có thể sẽ chính xác khi nói rằng Nhiệm vụ 2 sẽ mất gấp đôi thời gian so với Nhiệm vụ 1, hoặc một tỷ lệ khác.
Vì vậy, theo quy trình Scrum, một khi các nhiệm vụ được biết đến với một tập hợp các yêu cầu nhất định, bước tiếp theo là gán cho mỗi nhiệm vụ một điểm độ khó, được gọi là điểm (point). Nhiệm vụ dễ nhất có điểm là 1. Một nhiệm vụ lâu hơn năm lần được cho điểm 5, v.v. Khi tất cả các nhiệm vụ đã nhận được điểm, điểm sẽ được cộng lại thành tổng cho yêu cầu.
Scrum bao gồm một số kỹ thuật khác nhau để ấn định điểm. Ý chính của những kỹ thuật này là đạt được điểm số của nhóm bằng cách áp dụng kiến thức chun mơn của nhóm trong một quy trình tạo phản hồi lặp đi lặp lại.
Cam kết hoàn thành nhiệm vụ
Khi các nhóm làm việc cùng nhau, họ sẽ biết được tổng số điểm cơng việc mà họ có thể hồn thành trong mỗi sprint. Thuật ngữ đó được gọi là vận tốc (velocity) của nhóm. Nhóm sử dụng tốc độ của họ để xác định số lượng yêu cầu mà họ có thể cam kết hồn thành trong giai đoạn tiếp theo.
Tất nhiên trong khoảng thời gian đầu thì nhóm nghiên cứu sẽ khơng biết vận tốc của họ. Trong trường hợp đó, các thành viên cấp cao sẽ cần phải dự đốn. Dự đốn đó có thể cịn mơ hồ, nhưng sẽ tốt hơn khi cả đội tích lũy được kinh nghiệm. Khơng giống như SDLC, ít nhất có hy vọng cơ sở rằng, theo thời gian, ước tính sẽ được cải thiện.
Giả sử 5 yêu cầu trong danh sách các yêu cầu ưu tiên của một nhóm có tổng cộng 125 điểm. Nếu một đội biết vận tốc của mình là 100 điểm trong một sprint, thì đội đó biết rằng mình khơng thể làm được cả 5 u cầu. Tuy nhiên, nếu tổng số điểm của 4 yêu cầu cao nhất, chẳng hạn như 80 điểm, thì họ có thể cam kết thực hiện 4 u cầu đó, cộng với một số yêu cầu khác. Trong trường hợp này, nhóm sẽ trao đổi với chủ sở hữu sản phẩm và hỏi xem có yêu cầu nào thấp hơn trong danh sách ưu tiên có thể được thực hiện đối với 20 điểm năng lực hiện có hay khơng. Kỹ thuật ước lượng này được tóm tắt như sau:
1. Team assigns 1 point to simplest task
2. Times to deliver working tasks are compared to each other and assigned points (points are Fibonacci numbers). Use:
a. Team estimation
b. Planning poker
c. Other
3. Using past experience, team computers its velocity ... number of point it can accomplish per scrum period
4. Working with product owner, team selects tasks for the upcoming scrum period, constrained by its velocity
Hocus-pocus?
Bảng 12.6 - Tóm tắt các kỹ thuật ước lượng trong Srcum thuật ước lượng trong Srcum
Nếu bạn chưa tham gia vào quá trình phát triển phần mềm hoặc hệ thống, q trình này nghe có vẻ giống như vơ nghĩa, bịp bợm. Tuy nhiên, có hai đặc điểm rất quan trọng khiến nó khơng phải như vậy.
Thứ nhất, Scrum là một phương pháp kết hợp vòng lặp và phản hồi để lập lịch trình và làm việc, đây là một cách để một nhóm cùng nhau tạo ra thứ gì đó vượt q những gì mà mỗi thành viên có thể làm riêng lẻ. Thứ hai, Scrum cung cấp một khn khổ cho q trình học hỏi.
càng nhiều và có nhiều giai đoạn scrum cùng nhau, họ học hỏi ngày càng tốt hơn cách chỉ định điểm và ngày càng hiểu được vận tốc thực của họ là gì.
Nhưng scrum không thể đảm bảo rằng dự án sẽ tạo ra một sản phẩm chất lượng cao, đúng thời hạn và phù hợp với ngân sách. Tuy nhiên, là một giải pháp thay thế cho SDLC truyền thống, Scrum có thể hạn chế tổn thất tài chính tiềm ẩn và tạo ra kết quả đáng kể chỉ trong vài tuần.