Hẳn là khi bất kỳ ai trong chúng ta dấn thân vào thế giới phần mềm đều sẽ tìm hiểu qua về quy trình phần mềm hay các mô hình phát triển phần mềm. Và đâu đó các bạn đã nghe qua các thuật ngữ như là Aglie hay Scrum rồi đúng không nhỉ? Vậy Scrum là gì? Tại sao mô hình phát triển phần mềm Scrum đang được nhiều công ty phần mềm áp dụng đến thế? Để giải đáp được những khuất mắc trên, chúng ta sẽ cùng nhau tìm hiểu về Scrum nhé. Còn chần chờ gì nữa, bắt tay vào tìm hiểu chi tiết thôi!
1. Scrum là gì?
Thường thì nhiều bạn có sự nhầm lẫn về Scrum và Agile, và cho rằng chúng là cùng 1 loại, điều đấy là không đúng. Thực tế Scrum là một trong những Framework phổ biến nhất dùng để thực thi Agile. Và cũng có rất nhiều Framework khác cũng có thể dùng để thực thi Agile như Kanban, Trello, JIRA, Asana. Scrum là một khung làm việc trong đó con người có thể xác định các vấn đề thích nghi phức tạp, trong khi vẫn đảm bảo được năng suất và sự sáng tạo để chuyển giao sản phẩm có giá trị cao nhất. Scrum có các tính chất sau:
- Nhẹ
- Dễ hiểu
- Nhưng khó làm chủ
Scrum là Framework đã được sử dụng để quản lý quy trình phát triển sản phẩm phức tạp từ đầu những năm 1990. Scrum không phải là một quy trình hay một kĩ thuật cụ thể để phát triển sản phẩm; mà nó chỉ là một khung làm việc cho phép bạn áp dụng nhiều quy trình và kĩ thuật khác nhau. Scrum làm sáng tỏ mức độ hiệu quả tương đối của công việc quản lý và phát triển sản phẩm, từ đó cho phép bạn cải tiến nó. Khung làm việc Scrum bao gồm một hay nhiều Scrum Team với các vai trò được phân định rõ ràng, các sự kiện, các tạo tác và các quy tắc. Mỗi thành phần trong khung làm việc phục vụ một mục đích rõ ràng và nòng cốt trong việc sử dụng và thành công của Scrum.
1.1 Ba giá trị cốt lõi của Scrum
Ba yếu tố nòng cốt tạo thành một mô hình quản lý tiến trình thực nghiệm gồm: sự minh bạch, thanh tra, và thích nghi.
Minh bạch( Transparency)
Các khía cạnh quan trọng của tiến trình phải được hiển thị rõ ràng cho những người có trách nhiệm với thành quả của tiến trình đó. Sự minh bạch yêu cầu các yếu tố này cần được định nghĩa theo một tiêu chuẩn để những người quan sát có thể hiểu những gì họ thấy theo cùng một cách. Ví dụ:
- Một ngôn ngữ chung về quy trình cần phải được chia sẻ cho tất cả các bên tham gia
- Một định nghĩa chung về “Hoàn thành” phải được chia sẻ bởi những người đảm nhiệm công việc và những người tiếp nhận sản phẩm của công việc đó.
Thanh tra( Inspection)
Người sử dụng Scrum phải thường xuyên thanh tra các tạo tác và tiến độ để đạt được Mục tiêu Sprint và phát hiện điểm bất thường ngoài theo ý muốn. Tần suất thanh tra không nên quá dày, không ảnh hưởng đến công việc. Công tác thanh tra có ích nhất khi được thực hiện một cách cần mẫn bởi người có kĩ năng thanh tra tại các mốc công việc.
Thích nghi( Adaptation)
Nếu một người thanh tra xác định được rằng có vấn đề nào đó vượt quá giới hạn cho phép, và hậu quả của vấn đề đó đối với sản phẩm là không thể chấp nhận được, thì quy trình hoặc các tài liệu đang được xử lý phải được điều chỉnh. Sự điều chỉnh phải được tiến hành càng sớm càng tốt để giảm thiểu các sai sót khác có thể xảy ra. Scrum yêu cầu bốn sự kiện chính thức cho việc thanh tra và thích nghi như mô tả trong phần sự kiện Scrum, bao gồm:
-
Họp Kế hoạch Sprint (Sprint Planning)
-
Họp Scrum hằng ngày (Daily Scrum)
-
Họp Sơ kết Sprint (Sprint Review)
-
Họp Cải tiến Sprint (Sprint Retrospective)
1.2 Scrum Team
Scrum team chia làm 3 vai trò bao gồm những thành phần sau:
- Product Owner: Nhiệm vụ của Product Owner là đảm bảo việc quản lý những công việc còn tồn đọng (Product backlog) của việc phát triển sản phẩm phần mềm. Product Owner phải liên tục cập nhật thông tin cho các thành viên trong team để họ hiểu về yêu cầu hay các tính năng cần có của sản phẩm ngay cả khi họ không trực tiếp phát triển tính năng đó.
- Development Team: là nhà phát triển phầm mềm(Developer, Tester, Comtor, BA...) sẽ tham gia vào việc phát triển từng tính năng cụ thể. Một nhóm phát triển thường bao gồm từ 3 đến 9 thành viên. Các nhà phát triển phầm mềm này có thể sẽ có kỹ năng khác nhau và một số sẽ giỏi về những kỹ năng nhất định. Tuy nhiên khi sử dụng Scrum thì tất cả các thành viên của Development Team yêu cầu phải có khả năng làm việc thay thế vị trí của nhau và không ai chỉ chịu trách nhiệm phát triển một (hoặc một số) tính năng nhất định.
- Scrum Master: sẽ chịu trách nhiệm cho việc lên kế hoạch để phân công công việc, sắp xếp thứ tự ưu tiên giải quyết những công việc tồn đọng nào có trong Backlog trước, tổ chức các buổi họp với Product Owner để theo dõi tình hình và nắm thông tin cần thiết.
1.3 Scrum Artifacts
- Product Backlog: Là một danh sách các đầu mục cần phải làm để phát triển sản phẩm bao gồm đủ loại như chức năng của sản phẩm, lỗi cần sửa, nghiên cứu công nghệ hay những việc công việc liên quan khác. Những đầu mục này thường được mô tả dưới dạng “câu chuyện người dùng” (user story). Vd như “Là người dùng, tôi muốn xem lại danh sách các sản phẩm đã chọn trong giỏ hàng để tôi có thể biết được tôi đã chọn những gì”.
- Sprint Backlog: Là một danh sách các đầu mục mà nhóm cam kết hoàn thành trong Sprint sau buổi họp sơ kết Sprint. Trong thời gian diễn ra Sprint, nhóm phát triển sẽ chỉ tập trung vào danh sách này và cập nhật tiến độ hoàn thành của chúng.
- Increment: Là tập hợp tất cả các hạng mục Product Backlog đã được hoàn thành trong suốt Sprint hiện tại và những Sprint trước đó. Cuối Sprint, Increment mới phải thỏa mãn điều kiện “Hoàn thành”, có nghĩa là nó phải ở trạng thái sử dụng được và thỏa mãn định nghĩa của Scrum Team về “Hoàn thành”. Increment phải ở trạng thái dùng được dù Product Owner quyết định phát hành nó hay không.
2. Lý do gì giúp mô hình Scrum được dùng phổ biến?
2.1 Lợi ích mà Srum mang lại
- Cải thiện chất lượng phần mềm, dễ học và dễ sử dụng.
- Rút ngắn thời gian phát hành phần mềm, cho phép khách hàng sử dụng sản phẩm sớm hơn.
- Nâng cao tinh thần đồng đội, tối ưu hóa hiệu quả và nỗ lực của đội phát triển.
- Gia tăng tỷ suất hoàn vốn đầu tư (ROI)
- Tăng mức độ hài lòng của khách hàng
- Kiểm soát dự án tốt, cải tiến liên tục
- Giảm thiểu rủi ro khi xây dựng sản phẩm.
2.2 So sánh mô hình phát triển phần mềm Waterfall và Scrum
Khi so sánh các mô hình này với nhau, chúng ta thấy mỗi loại đều có những ưu điểm và nhược điểm riêng. Có một số mô hình là sự kết hợp, cải tiến của một vài mô hình trước đó. Ví dụ như mô hình chữ V được cải thiện từ mô hình Thác nước, hay mô hình xoắn ốc là sự kết hợp giữa các tính năng căn bản của mô hình Thác nước với mô hình Prototyping. Những thay đổi này nhằm giúp các mô hình dễ dàng phù hợp với từng kiểu dự án khác nhau, giúp quá trình phát triển sản phẩm suôn sẻ hơn.
- Về mô hình Waterfall: Đây là một mô hình có tính kỷ luật cao.Hoạt động tốt cho các dự án nhỏ, khi các yêu cầu được hiểu rất rõ.Đơn giản và dễ hiểu và dễ sử dụng, dễ quản lý. Nhưng khó quản lý kiểm soát rủi ro, rủi ro cao. Ít linh hoạt, phạm vi điều chỉnh hạn chế.Rất khó để đo lường sự phát triển trong từng giai đoạn. Mô hình không thích hợp với những dự án dài, đang diễn ra, hay những dự án phức tạp, có nhiều thay đổi về yêu cầu trong vòng đời phát triển.Khó quay lại khi giai đoạn nào đó đã kết thúc.
- Về mô hình Scrum: Chia các yêu cầu ra thành nhiều giai đoạn. Đây chính là điểm khác biệt lớn nhất của Scrum khi so sánh với các mô hình khác. Mỗi giai đoạn sẽ hoàn thành một số tính năng nhất định (thường là những tính năng có cùng nhóm yêu cầu với nhau). Cuối mỗi giai đoạn, nhóm tính năng đã được code và test hoàn chỉnh, có thể lên demo và deliver luôn như một sản phẩm. Khách hàng sẽ được nhận phần mềm cuối cùng theo từng “gói” giai đoạn như vậy. Ưu điểm lớn nhất của mô hình Scrum chính là tính linh hoạt cao. Sản phẩm có thể được hoàn thiện những yêu cầu cơ bản trước. Những yêu cầu phát sinh hay cần điều chỉnh có thể làm sau. Do đó, mô hình Scrum phù hợp với những dự án phức tạp, có nhiều yêu cầu. Và đây cũng chính là lý do khiến mô hình Scrum là lựa chọn hàng đầu của các công ty phát triển phần mềm hiện nay.
3. Tổng kết
Qua những chia sẻ của mình, mong các bạn hiểu rõ hơn về Scrum và nắm bắt được những khái niệm cơ bản liên quan đến mô hình Scrum. Scrum cũng mang lại những lợi ích nhất định để lý giải lý do chúng ta nên sử dụng nó. Cảm ơn bạn đã theo dõi bài viết này. Chúc bạn sớm thành công trên con đường mình đã chọn nhé!
Tài liệu tham khảo: http://www.scrumguides.org/scrum-guide.html