Site icon Bệ Phóng Việt

Quy trình phát triển phần mềm và Phương pháp Agile: Scrum.

Quy trình phát triển phần mềm Agile Scrum

Quy trình phát triển phần mềm Agile Scrum

Advertisements

Trong bài học này chúng ta sẽ tìm hiểu về các quy trình phát triển phần mềm và phương pháp phát triển phần mềm Agile có tên là Scrum. Chúng ta sẽ khám phá từ khái niệm và các quy trình phổ biến được sử dụng trong ngành đến sử dụng Scrum trong một dự án.

Giới thiệu về quy trình phát triển phần mềm:

Quy trình phát triển phần mềm (Processes) có thể hiểu như là một lộ trình xây dựng phần mềm.

Nó có lợi ích trong việc chia công việc thành các giai đoạn (phase, milestone) rõ ràng, mỗi giai đoạn có các hoạt động (activities) cụ thể, đối với mỗi hoạt động đều có các đầu việc (task) cụ thể cần thực hiện.

Lợi ích: giúp mọi người tham gia hiểu được vai trò của mình và những gì mình cần phải làm.

Quá trình phát triển phần mềm là diễn ra liên tục ngay cả sau khi đã hoàn thành sản phẩm, trong tương lai sản phẩm sẽ có nhiều tính năng được bổ sung hơn và các phần vá lỗi được update thêm.

Vòng đời sản phẩm phần mềm.

Vòng đời của một sản phẩm phần mềm là một quy trình bao trùm toàn bộ các thành phần quá trình phát triển phần mềm, từ lúc lên ý tưởng cho đến khi sản phẩm không còn được sử dụng. Đây là một cách tiếp cận toàn diện để phát triển phần mềm, trong một vòng đời có thể bao gồm các quy trình phụ cho mỗi đợt phát hành (release) và đánh giá sản phẩm.

Các thành phần công việc trong một giai đoạn:

Một quy trình được chia thành các giai đoạn (phase) hoặc các mốc quan trọng (milestone).

Ví dụ như: Mô tả sản phẩm, thiết kế và xây dựng sản phẩm, kiểm thử và xác nhận với khách hàng.

Ở mỗi giai đoạn đều có các hoạt động (activities), chẳng hạn như:

“Thực hiện kiểm thử” sẽ có các đầu việc (task) được chia ra là:

Đầu việc có thể hiểu như các viên gạch khi xây nhà, nhà là cả một dự án.

Tóm lại, đơn vị công việc sẽ được chia nhỏ như sau: Process>>Phase>>Activities>>Task

Quan hệ phụ thuộc của các đầu việc:

Khi làm dự án ta sẽ thường thấy có các đầu việc phụ thuộc vào đầu việc khác theo một quan hệ nhất định, đầu việc này sẽ phải làm trước đầu việc kia. Ví dụ: với trong hoạt động “thiết kế giao diện”, nhiệm vụ thiết kế tương tác giao diện phải diễn ra sau khi thiết kế đồ họa giao diện

Quan hệ giữa các đầu việc và vị trí thành viên team:

Các đầu việc nên được giao cho các vị trí (như Lập trình viên) thay vì những người cụ thể (như là Anh A).

Vị trí xác định kỹ năng phù hợp cho công việc, Lập trình viên – thực hiện đầu việc Lập trình. Ngoài ra, một team phát triển sẽ bao gồm designer, lập trình viên, tester…

Sản phẩm của đầu việc:

Sản phẩm của đầu việc là kết quả của các đầu việc, các sản phẩm thường bao gồm các sản phẩm đầu ra  và đầu ra trung gian như tài liệu thiết kế, tài liệu yêu cầu, code, test case…

Các sản phẩm đầu việc ra từ một đầu việc thường được dùng trong đầu việc tiếp theo.

Các mô hình quy trình phát triển dự án phần mềm:

Loại mô hình tuyến tính (Linear Model):

Với Linear Model, chúng ta sẽ phát triển phần mềm theo từng các giai đoạn(phase), mà không quay lại giai đoạn trước đó, mô hình này có hiệu quả nhất với các dự án đã có sự chuẩn bị rõ ràng từ trước từ đầu đến cuối, và thường có ít hoặc không có cơ hội cho khách hàng góp ý thay đổi.

Nguồn: eternalsunshineoftheismind.wordpress.com

Một trong những mô hình tuyến tính phổ biến là mô hình thác nước hay còn gọi là Waterfall, với mô hình này mỗi giai đoạn sẽ theo dòng chảy xuống tiếp đến giai đoạn tiếp theo sau khi đã hoàn thành, giống như một thác nước, dòng chảy sẽ tiếp tục cho đến khi ta đạt được sản phẩm cuối cùng. Khách hàng sẽ chỉ được xem sản phầm ở các giai đoạn cuối cùng của quy trình.

Loại mô hình tiếp cận lặp (Iterative Model):

Model này cho phép lặp lai và quay lại các giai đoạn trước của quy trình, phù hợp cho việc đón nhận sự góp ý của khách hàng thường xuyên, mô hình này có một phần mang tính chất của mô hình tuyến tính và phù hợp với nguyên tắc Agile.

Nguồn: artoftesting.com

Loại mô hình song song.

Việc phát triển sản phẩm theo vòng lặp như mô hình tiếp cận lặp, điểm khác biệt là các hoạt động và đầu việc được diễn ra đồng thời, song song.

Nguồn: en.wikipedia.org/Unified_Process

Mô hình tiến trình hợp nhất (Unified Process) thuộc loại mô hình này. Khi sử dụng mô hình này, các đầu việc được thực hiện xuyên suốt các giai đoạn phát triển thay vì chỉ một, chẳng hạn như một đầu việc thiết kế hay đầu việc viết code có thể xảy ra song song trong một giai đoạn, thay vì chỉ một giai đoạn nào làm của giai đoạn đấy.

Các giai đoạn của mô hình tiến trình hợp nhất:

Mô hình này sẽ phù hợp với các dự án lớn cần thường xuyên mở rộng scope và cải thiện.

Các loại bản thử nghiệm Prototype:

Trong phát triển phần mềm ta nên cân nhắc các loại Prototype sau để tránh gặp lỗi sai, rút kinh nghiệm để tạo ra sản phẩm hoàn chỉnh cuối cùng:

Scrum:

Ta có thể hiểu Scrum là một phương pháp phát triển phần mềm dựa trên các nguyên tắc của Agile, phương pháp này được sinh ra nhằm giúp cho phát triển phần mêm một cách hiệu quả. Scrum tập trung vào quản lý dự án xoay quanh có phổi hợp đồng đội và nhanh gọn không vướng đến nhiều phần quản lý.

Scrum có 3 tính chất chính là trụ cột:

  1. Tính minh bạch: Nhưng ai liên quan đến dự án đều có thể xem được tiến độ của dự án
  2. Theo dõi thường xuyên: Thường xuyên tìm kiếm và sửa lỗi
  3. Tính thích nghi cao: Linh hoạt sửa khi phát hiện lỗi để cải thiện sản phẩm

Các hoạt động Scrum và Sprint:

Về Scrum, “Sprint” là một vòng lặp phát triển phần mềm, thường kéo dài 1-2 tuần:

Trong một sprint thì các hoạt động sau sẽ diễn ra:

Các vai trò/ vị trí trong Scrum:

Nguồn: koukio.com

Ta có các vị trí chính trong Scrum:

Thông nhất định nghĩa “Done”

Team Scrum phải thống nhất định nghĩa “Done” để sản phẩm được xuất ra có thể hoàn chỉnh tránh bị rơi vào tình huống gần xong.

Định nghĩa “Done” có nghĩa là code xong, đã test xong, đã có tài liệu, và khách hàng hài lòng vơi requirement đó.

Scrum chỉ là một trong các phương pháp Agile khác, bạn có thể xem Xtreme Programming, Lean, Kanban cũng được sử dụng nhiều trong ngành để chọn cho phương pháp nào phù hợp với dự án của bạn nhất.

Bài tiếp theo : Làm rõ nhu cầu của khách hàng và giới thiệu về yêu cầu phần mềm

Exit mobile version