Quy trình phát triển phầm mềm hiện đại Scrum

Software Development – một bài toán phức tạp:


Kinh nghiệm của nhiều nhà thiết kế và phát triển cho thấy phát triển phần mềm là một bài toán phức tạp. Xin nêu một số các lý do thường được kể đến:

- Những người phát triển phần mềm rất khó hiểu cho đúng những gì người dùng cần

- Yêu cầu của người dùng thường thay đổi trong thời gian phát triển.

- Yêu cầu thường được miêu tả bằng văn bản, dài dòng, khó hiểu, nhiều khi thậm chí mâu thuẫn.

- Đội quân phát triển phần mềm, vốn là người "ngoài cuộc", rất khó nhận thức thấu đáo các mối quan hệ tiềm ẩn và phức tạp cần được thể hiện chính xác trong các ứng dụng lớn.

- Khả năng nắm bắt các dữ liệu phức tạp của con người (tại cùng một thời điểm) là có hạn.

- Khó định lượng chính xác hiệu suất của thành phẩm và thỏa mãn chính xác sự mong chờ từ phía người dùng.

- Chọn lựa phần cứng và phần mềm thích hợp cho giải pháp là một trong những thách thức lớn đối với Designer.

Scrum là các lộ trình 2 chiều, không tuyến tính
Scrum là các lộ trình 2 chiều, không tuyến tính

Waterfall được xem như dòng điện một chiều, muốn dự án đi nhanh thì giai đoạn đầu cần mô hình phát triển, phẳng, tuyến tính để đi "thẳng" một mạch đến mục tiêu ban đầu (không cần hoàn hảo, chỉ cần đủ tính năng tối thiểu MVP - Minimum Viable Product).


Scrum được ví như dòng điện xoay chiều, muốn đi xa hơn, chúng ta cần phát triển theo hướng xoáy ốc và liên tục.

Phạm Đình Trường: TIGO Solution CEO

Phần mềm ngoài ra cần có khả năng thích ứng và mở rộng. Phần mềm được thiết kế tốt là phần mềm đứng vững trước những biến đổi trong môi trường, dù từ phía cộng đồng người dùng hay từ phía công nghệ. Ví dụ phần mềm đã được phát triển cho một nhà băng cần có khả năng tái sử dụng cho một nhà băng khác với rất ít sửa đổi hoặc hoàn toàn không cần sửa đổi. Phần mềm thoả mãn các yêu cầu đó được coi là phần mềm có khả năng thích ứng.

Một phần mềm có khả năng mở rộng là phần mềm được thiết kế sao cho dễ phát triển theo yêu cầu của người dùng mà không cần sửa chữa nhiều.

Chính vì vậy, một số các khiếm khuyết thường gặp trong phát triển phần mềm là:

- Hiểu không đúng những gì người dùng cần
- Không thể thích ứng cho phù hợp với những thay đổi về yêu cầu đối với hệ thống
- Các module không khớp với nhau
- Phần mềm khó bảo trì và nâng cấp, mở rộng
- Phát hiện trễ các lỗ hổng của dự án
- Chất lượng phần mềm kém
- Hiệu năng của phần mềm thấp
- Các thành viên trong nhóm không biết được ai đã thay đổi cái gì, khi nào, ở đâu, tại sao phải thay


Spiral Model – Mô hình xoắn ốc: được sử dụng cho các ứng dụng lớn và các hệ thống được xây dựng theo các giai đoạn nhỏ hoặc theo các phân đoạn

Với mục tiêu không ngừng nỗ lực phát triển và hoàn thiện, chúng tôi hiểu được rằng: để có một sản phẩm tốt, nhất thiết phải xây dựng một quy trình làm việc chặt chẽ và hiệu quả.

1. Ưu tiên cao nhất của chúng tôi là làm hài lòng khách hàng thông qua việc phân phối phần mềm có giá trị và liên tục.

2. Sẵn sàng thực hiện các yêu cầu thay đổi, thậm chí là đang trong giai đoạn thực hiện. Quy trình của chúng tôi có thể khai thác thay đổi phục vụ cho lợi thế cạnh tranh của khách hàng.

3. Cung cấp phần mềm làm việc thường xuyên, từ vài tuần đến vài tháng, với ưu tiên thang đo thời gian ngắn hơn.

4. Người kinh doanh và nhà phát triển hợp tác làm việc cùng nhau hàng ngày trong suốt dự án.

5. Xây dựng các dự án xung quanh những cá nhân năng động, cung cấp cho họ môi trường làm việc tốt, hỗ trợ khi họ cần, và tin tưởng để họ hoàn thành công việc.

6. Cách thức hiệu quả nhất để chuyển tải thông tin trong nhóm phát triển dự án chính là những cuộc đối thoại trực tiếp.

7. Sử dụng Software/Tool là cách thức chính để quản lý tiến độ.

8. Thúc đẩy sự phát triển bền vững. Các nhà tài trợ, nhà phát triển và người dùng có thể duy trì một tốc độ ổn định vô hạn.

9. Luôn luôn chú ý đến sự tối ưu về kỹ thuật và thiết kế tốt giúp tăng tính linh hoạt.

10. Tính đơn giản - nghệ thuật tối đa hóa số lượng công việc không làm được - là một điều cần thiết.

11. Các mô hình, yêu cầu và thiết kế tốt nhất xuất phát từ việc xây dựng theo nhóm.

12. Theo định kỳ, nhóm nghiên cứu sẽ xem xét những cách thức làm sao đạt hiệu quả hơn để áp dụng điều chỉnh cho phù hợp.

Với những tiêu chí đó, chúng tôi sử dụng phương pháp Agile vào quy trình làm việc.

Agile là gì?

Nhịp độ môi trường kinh doanh ngày càng nhanh buộc các công ty phải nhanh chóng thay đổi để đáp ứng với các điều kiện thị trường đang biến động. Để có thể duy trì tính cạnh tranh, các sản phẩm cần phải thích ứng với những thay đổi, nhu cầu trên thị trường, cho ra các tính năng mới và bổ sung với tốc độ nhanh. Do đó, phần lớn các công ty về phần mềm hiện nay đang chuyển sang mô hình Agile.

Agile là một quy trình có nhiều khung công tác như SCRUM, Kanban, Scrumban, vv

Cá nhân tương tác với các quy trình và công cụ.

 Sử dụng Software/Tool với tài liệu toàn diện.

 Hợp tác với khách hàng trong đàm phán hợp đồng.

 Đối phó với thay đổi theo kế hoạch.

Scrum là gì?

SCRUM được khởi xướng bởi Ken Swaber vào năm 1995. Nó là một trong các quy trình phát triển Agile vì nó có chứa tất cả các đặc điểm cốt lõi của Agile. SCRUM là một nhóm hoạt động, được ví như là một bao gói, trong đó mọi người trong nhóm cùng nhau thực hiện các công việc. Nó thực hiện dự án với thời gian và chi phí tối thiểu.

Scrum là một khuôn khổ để phát triển các sản phẩm và hệ thống phức tạp. Nó là căn cứ trong quá trình thực nghiệm và lý thuyết về kiểm soát. Scrum sử dụng một cách tiếp cận lặp đi lặp lại và tăng lên để tối ưu hóa khả năng dự đoán và kiểm soát rủi ro.

Scrum/ Release Planning

Xác định thời gian và danh sách các Product Backlog cần thiết tối thiểu cho End-User và chia ra thành nhiều Sprint khác nhau để thực hiện. Việc phát hành có thể được thực hiện từng phần trong suốt dự án hoặc thực hiện một lần vào cuối dự án

Kế hoạch Sprint Phần 1

Mục đích của cuộc họp này là chọn số lượng công việc họ có thể làm trong sprint sắp tới. Có hai vấn đề được xác định trong kết quả của một cuộc họp lập kế hoạch Sprint là:
 Mục tiêu của Sprint: là mô tả ngắn gọn về những gì nhóm nghiên cứu dự định đạt được trong Sprint.
 Sprint backlog: là danh sách các mục của Product Backlog cùng với danh sách các nhiệm vụ cần thiết.

Backlog Grooming

Product Owner sẽ xem xét lại danh sách Product Backlog đã được xác định trước và cập nhật Product Backlog nếu có bất kỳ thay đổi nào. Nhóm nghiên cứu sẽ làm việc với Product Owners để sắp xếp độ ưu tiên danh sách công việc và tạo nên các User Story.

Daily Scrum

Daily Scrum là cuộc họp trong khoảng 15 phút cho Development Team để tóm tắt các hoạt động và lập một kế hoạch cho 24 giờ tiếp theo. Trong cuộc họp, thành viên của nhóm nghiên cứu cần trả lời 3 câu hỏi như sau:
 Bạn đã làm gì hôm qua?
 Bạn sẽ làm gì hôm nay?
 Bạn gặp phải vấn đề gì trở ngại?

Sprint Review

Trong quá trình đánh giá Sprint, Scrum Team và các bên liên quan kiểm tra các công việc đã hoàn thành. Việc đánh giá Sprint cung cấp thông tin đầu vào có giá trị cho kế hoạch Iteration kế tiếp.

Retrospective

Agile retrospective là một cuộc họp được tổ chức vào cuối một Sprint trong quy trình Agile. Lúc này, nhóm nghiên cứu sẽ nhìn nhận và đánh giá công việc đã được thực hiện trong Sprint và đưa ra các kế hoạch để khắc phục, phát huy và cải thiện.

Category