CƠ SỞ LÝ THUYET
2.1 Các mô hình phát triển phần mềm truyền thống
Sự phát triển nhanh chóng của thị trường phát triển phần mềm đã và đang đặt ra những thách thức cho việc xây dựng một quy trình phát triển phần mềm nhanh chóng
và mang lại hiệu quả cao nhất. Những mô hình phát triển phần mềm cũ không đáp ứng được yêu cầu của thị trường đang dan bị thay thế bởi những mô hình mới phù hợp hơn.
2.1.1 Waterfall
Mô hình phát triển phần mềm thác nước (Waterfall) được nhắc đến lần đầu tiên
vào năm 1970 trong một bài báo của Winston W. Royce. Trong bài báo này, đây là một
mô hình phát triển phần mềm khả thi, hạn chế những rủi ro trong quá trình phát triển phần mềm và cung cấp được các sản phẩm theo yêu cầu. Tuy nhiên, Winston W. Royce không sử dụng thuật ngữ waterfall để gọi tên mô hình lúc này [7].
Mô hình Waterfall là quá trình phát triển phần mềm tuần tự, các bước để phát triển
phan mềm được tiền hành tuần tự từ trên xuống dưới, tương tự như dòng chảy của một thác nước. Mô hình này mô tả các giai đoạn phải được thực hiện để phát triển thành công một phần mềm [8]. Các giai đoạn của mô hình Waterfall được thể hiện trong hình
2.1.
Implementation
Hình 2.1: Các giai đoạn của mô hình Waterfall.
Trong mô hình Waterfall, giai đoạn phía sau chỉ có thể được tiến hành khi giai đoạn trước nó hoàn thành. Tuy nhiên, trong một số mô hình Waterfall đã được sửa đổi thì nếu phát hiện sai sót xảy ra 6 giai đoạn sau mà nguyên nhân gây ra nó nằm ở giai đoạn trước đó thì có thể quay lại giai đoạn trước đó để sửa đối cho phù hợp. Day là mô hình tiêu chuẩn để phát triển phần mềm.
2.1.2 Agile
Vào khoảng những năm 1990, sự thiéu linh hoạt trong mô hình Waterfall đã dẫn đến sự thất bại của một số dự án phát triển phần mềm sử dụng mô hình này. Với sự phát triển ngày càng nhanh chóng của thị trường phát triển phần mềm thì việc làm sao
đưa sản phẩm đến tay người tiêu dùng càng nhanh càng tốt ngày càng được chú trọng. Nhưng mô hình Waterfall lại không đáp ứng được điều này cho nên đã dẫn đến sự ra đời của mô hình phát triển phần mềm linh hoạt (Agile) [9].
Mô hình Agile thực chất là một tập hợp các nguyên lý, kỹ thuật dành cho phát triển phần mềm tập trung vào khả năng đáp ứng được những thay đổi khi có yêu cau [1].
“Tuyên ngôn Agile [10] được xuất bản năm 2001 đã hệ thống hóa các nguyên tắc của mô hình này. Một trong số các nguyên tắc trong Tuyên ngôn Agile nói rang: "Our highest
priority is to satisfy the customer through early and continuous delivery of valuable
software." Nguyên tắc này có thé được hiểu là: "Uw tiên cao nhất của chúng tôi là lam hài lòng khách hàng thông qua việc phân phối sớm và liên tục các phần mém có giá
trị.
So với mô hình Waterfall truyền thống, mô hình Agile lấy lặp đi lặp lại quy trình phát triển làm cơ sở và tập trung vào con người. Các quy trình Agile kết hợp sự lặp lại
và phản hồi liên tục để điều chỉnh và cung cấp thành công hệ thống phần mềm đáp ứng nhu cầu của khách hàng.
2.13. Scrum
Đầu những năm 1990, mô hình phát triển phần mềm Scrum được sử dụng để quản
lý quá trình phát triển những sản phẩm phức tạp hay những dự án lớn. Mô hình Scrum cho phép sử dụng nhiều quy trình và kỹ thuật khác nhau để con người có thể xác định các van dé đang diễn ra và đưa ra giải pháp phù hợp, đảm bảo được năng suất và chất lượng sản phẩm tốt nhất để đưa đến tay khách hàng.
'Vào năm 2002, một quyển sách mang tên "Agile Software Development with Scrum" [11] mô tả chỉ tiết về Scrum đã được xuất bản. Mô hình phát triển phần mềm Scrum
được minh họa trong hình 2.2.
Product Backlog Sprint Backlog vong lap Cac phần tăng trưởng
có thể chuyển giao.
Hình 2.2: Mô hình Scrum.
Mô hình Scrum chia toàn bộ dự án thành các quá trình nhỏ hơn kéo dài từ 2-4 tuần. Quá trình nhỏ này được lặp đi lặp lại và được gọi là Sprint. Sprint là thành phần quan trọng nhất của mô hình Serum. Một Sprint mới sẽ được bắt đầu ngay khi Sprint trước
đó kết thúc [12]. Day là sự khác biệt cơ bản giữa mô hình Scrum và mô hình Waterfall.
2.1.4 Lean
Quy trình phát triển phần mềm tinh gon (Lean) là quy trình ứng dung các nguyên tắc sản xuất tinh gọn của Hệ thóng sản xuất Toyota - Toyota Production System [13] vào lĩnh vực phát triển phần mềm. Phát triển phần mềm Lean bao gồm bay nguyên tắc chính được trình bay chỉ tiết trong quyến sách "Lean software development: an agile toolkit” [L4] xuất bản năm 2003:
* Hạn chế lãng phí
* Nâng cao kiến thức
* Quyết định càng muộn càng tốt
11
* Cung cấp càng nhanh càng tốt
Trao quyền quyết định cho nhóm phát triển
Xây dựng chất lượng sản phẩm
Có cái nhìn bao quát toàn bộ
Cốt lõi của quy trình phát triển phần mềm tinh gọn là hạn chế sự lãng phí - những yêu tố làm ảnh hưởng đến lợi nhuận thu được từ khách hàng - một cách tối đa.
Quy trình phát triển phần mềm Lean tập trung vào cách sử dụng CNTT để tạo ra các giá trị cho khách hàng chứ không tập trung vào quy trình phát triển phần mềm [15]. Lean là sự tổng hợp của một hệ thống các nguyên tắc và triết lý dùng để xây dựng hệ thống phần mềm cho khách hàng.