Mô tả
- Một mô hình được lặp đi lặp lại từ khi start cho đến khi làm đầy đủ spec.Quá trình này sau đó được lặp lại, tạo ra một phiên bản mới của phần mềm vào cuối mỗi lần lặp của mô hình.
- Thay vì phát triển phần mềm từ spec đặc tả rồi mới bắt đầu thực thi thì mô hình này có thể review dần dần để đi đến yêu cầu cuối cùng.
Ứng dụng
- Yêu cầu chính phải được xác định; tuy nhiên, một số chức năng hoặc yêu cầu cải tiến có thể phát triển theo thời gian.
- Một công nghệ mới đang được sử dụng và đang được học tập bởi nhóm phát triển trong khi làm việc trong dự án.
- Phù hợp cho các dự án lớn và nhiệm vụ quan trọng.
Ưu điểm
- Xây dựng và hoàn thiện các bước sản phẩm theo từng bước.
- Thời gian làm tài liệu sẽ ít hơn so với thời gian thiết kế.
- Một số chức năng làm việc có thể được phát triển nhanh chóng và sớm trong vòng đời.
- Ít tốn kém hơn khi thay đổ phạm vi, yêu cầu.
- Dễ quản lý rủi ro.
- Trong suốt vòng đời, phần mềm được sản xuất sớm để tạo điều kiện cho khách hàng đánh giá và phản hồi.
Nhược điểm
- Yếu cầu tài nguyên nhiều.
- Các vấn đề về thiết kế hoặc kiến trúc hệ thống có thể phát sinh bất cứ lúc nào.
- Yêu cầu quản lý phức tạp hơn.
- Tiến độ của dự án phụ thuộc nhiều vào giai đoạn phân tích rủi ro.
1.5 Mô hình tăng trưởng
Mô tả
- Spec được chia thành nhiều phần.
- Chu kỳ được chia thành các module nhỏ, dễ quản lý.
- Mỗi module sẽ đi qua các yêu cầu về thiết kế, thực hiện, … như 1 vòng đời phát triển thông thường.
Ứng dụng
- Áp dụng cho những dự án có yêu cầu đã được mô tả, định nghĩa và hiểu một cách rõ ràng.
- Khahcs hàng có nhu cầu về sản phẩm sớm.
Ưu điểm
- Phát triển nhanh chóng.
- Mô hình này linh hoạt hơn, ít tốn kém hơn khi thay đổi phạm vi và yêu cầu.
- Dễ dàng hơn trong việc kiểm tra và sửa lỗi.
Nhược điểm
- Cần lập plan và thiết kế tốt.
- Tổng chi phí là cao hơn so với mô hình thác nước.
1.6 Mô hình chữ V( V model)
Mô tả
- Mô hình chữ V là một phần mở rộng của mô hình thác nước và được dựa trên sự kết hợp của một giai đoạn thử nghiệm cho từng giai đoạn phát triển tương ứng. Đây là một mô hình có tính kỷ luật cao và giai đoạn tiếp theo chỉ bắt đầu sau khi hoàn thành giai đoạn trước.
- Với V model thì công việc test được tham gia ngay từ đầu.
Ứng dụng
- Yêu cầu được xác định rõ ràng.
- Xác định sản phẩm ổn định.
- Công nghệ không thay đổi và được hiểu rõ bởi nhóm dự án.
- Không có yêu cầu không rõ ràng hoặc không xác định.
- Dự án ngắn.
Ưu điểm
- Đây là một mô hình có tính kỷ luật cao và các giai đoạn được hoàn thành cùng một lúc.
- 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ược điểm
- Khó quản lý kiểm soát rủi ro, rủi ro cao.
- Không phải là một mô hình tốt cho các dự án phức tạp và hướng đối tượng.
- Mô hình kém cho các dự án dài và đang diễn ra.
- Không thích hợp cho các dự án có nguy cơ thay đổi yêu cầu trung bình đến cao.
1.7 Mô hình Scrum
Mô tả
- Chia các yêu cầu ra làm theo từng giai đoạn. Mỗi 1 giai đoạn(sprint) chỉ làm 1 số lượng yêu cầu nhất định.
- Mỗi một sprint thường kéo dài từ 1 tuần đến 4 tuần ( ko dài hơn 1 tháng).
- Đầu sprint sẽ lên kế hoạch làm những yêu cầu nào. Sau đó, sẽ thực hiện code và test. Cuối sprint là 1 sản phẩm hoàn thiện cả code lẫn test có thể demo và chạy được.
- Hoàn thành sprint 1, tiếp tục làm sprint 2, sprint... cho đến khi hoàn thành hết các yêu cầu.
- Trong mỗi 1 sprint thì sẽ có họp hàng ngày – daily meeting từ 15 – 20 phút. Mỗi thành viên sẽ báo cáo: Hôm qua tôi đã làm gì? Hôm nay tôi sẽ làm gì? Có gặp khó khăn gì không?
- Scrum là mô hình hướng khách hàng (Customer oriented).
Các nhân tố tạo nên quy trình Scrum
Có 3 thành tố quan trọng cấu thành nên SCRUM:
- Tổ chức (Organization)
- Tổ chức nhóm dự án và Roles: Vài trò.
- Product Owner: Người sở hữu sản phẩm.
- ScrumMaster: Người điều phối.
- Development Team: Nhóm phát triển.
- Tài liệu (Atifacts): đó chính là các kết quả đầu ra.
- Product Backlog: Danh sách các chức năng cần phát triển của sản phẩm.
- Sprint Backlog: Danh sách các chức năng cần phát triển cho mỗi giai đoạn.
- Estimation:Kết quả ước lượng của team.
- Qui trình(Process): Qui định cách thức vận hành của SCRUM.
- Sprint Planning meeting: Hoạch định cho mỗi giai đoạn.
- Review: Tổng kết cho mỗi giai đoạn.
- Daily Scrum Meeting: Review hàng ngày.
Tổ chức dự án
- Product Owner
- Product Owner là người sở hữu sản phẩm, người quyết định sản phẩm có những chức năng nào và là người quyết định Product Backlog.
- Thông thường Role này được khách hàng hoặc người đại diện cho khách hàng đảm nhận.
- ScrumMaster
- Scrum Master là người đảm bảo các qui trình của Scrum được thực hiện đúng và thuận lợi.
- Development Team
- Một nhóm từ 4-7 kỹ sư phần mềm chịu trách nhiệm phát triển sản phẩm.
- Nhóm dự án phải làm việc với Product Owner để quyết định những gì sẽ làm trong Sprint (giai đoạn )này và kết quả sẽ ra sao.
- Thảo luận để đưa ra các giải pháp, ước lượng thời gian thực hiện công việc, họp đánh giá kết quả công việc.
- Product Backlog
- Product Backlog là danh sách các chức năng cần được phát triển của sản phẩm.
- Danh sách này do Product Owner quyết định.
- Thường xuyên được cập nhật để đáp ứng được nhu cầu thay đổi của khách hàng và dự án.
Ưu điểm
- Một người có thể thực hiện nhiều việc ví dụ như dev có thể test.
- Phát hiện lỗi sớm.
- Có khả năng áp dụng được cho những dự án mà yêu cầu khách hàng không rõ ràng ngay từ đầu.
Nhược điểm
- Trình độ của nhóm cần có một kỹ năng nhất định.
- Phải có sự hiểu biết về mô hình aglie.
- Khó khăn trong việc xác định ngân sách và thời gian.
- Luôn nghe ý kiến phản hồi từ khách hàng và thay đổi theo nên thời gian sẽ kéo dài.
- Vai trò của PO rất quan trọng, PO là người định hướng sản phẩm. Nếu PO làm không tốt sẽ ảnh hưởng đến kết quả chung.
1.8 Mô hình RAD
Mô tả
- Mô hình RAD là một phương pháp phát triển phần mềm sử dụng quy hoạch tối thiểu có lợi cho việc tạo mẫu nhanh.
- Các mô-đun chức năng được phát triển song song như nguyên mẫu và được tích hợp để tạo ra sản phẩm hoàn chỉnh để phân phối sản phẩm nhanh hơn.
- Đảm bảo rằng các nguyên mẫu được phát triển có thể tái sử dụng được.
Ứng dụng
Mô hình RAD có thể được áp dụng thành công cho các dự án:
- Module hóa rõ ràng. Nếu dự án không thể được chia thành các mô-đun, RAD có thể không thành công.
- RAD nên được sử dụng khi có nhu cầu để tạo ra một hệ thống có yêu cầu khách hàng thay đổi trong khoảng thời gian nhỏ 2-3 tháng.
- Nên được sử dụng khi đã có sẵn designer cho model và chi phí cao.
Ưu điểm
- Giảm thời gian phát triển.
- Tăng khả năng tái sử dụng của các thành phần.
- Đưa ra đánh giá ban đầu nhanh chóng.
- Khuyến khích khách hàng đưa ra phản hồi.
Nhược điểm
- Trình độ của nhóm cần có một kỹ năng nhất định.
- Chỉ những hệ thống có module mới sử dụng được mô hình này.
2. Tổng kết vòng đời phát triển phần mềm
- SDLC( Software Development Life Circicle) là một quá trình đi theo suốt trong một dự án phần mềm, trong một tổ chức phần mềm. Nó bao gồm một kế hoạch chi tiết mô tả cách phát triển, duy trì, thay thế và thay đổi hoặc nâng cao phần mềm cụ thể. Vòng đời xác định một phương pháp để cải thiện chất lượng phần mềm và quy trình phát triển tổng thể.
- Mỗi mô hình sẽ có sự khác nhau, tuy nhiên, mỗi mô hình bao gồm tất cả hoặc một số giai đoạn / hoạt động / nhiệm vụ sau.
Planning - Lập kế hoạch
- Phân tích yêu cầu được thực hiện bởi các senior member của nhóm với đầu vào từ khách hàng, bộ phận bán hàng, khảo sát thị trường và các chuyên gia trong ngành.
- Lập kế hoạch cho các yêu cầu đảm bảo chất lượng và xác định các rủi ro liên quan đến dự án.
Defining - Xác định yêu cầu
- Xác định rõ ràng và ghi lại các yêu cầu.
- Thực hiện xác định yêu cầu thông qua một tài liệu SRS (Software Requirement Specification) bao gồm tất cả các yêu cầu sản phẩm được thiết kế và phát triển trong suốt vòng đời của dự án.
Designing - Phân tích thiết kế kiến trúc hệ thống
- Trong giai đoạn này, thiết kế hệ thống và phần mềm được chuẩn bị từ các đặc tả yêu cầu đã được nghiên cứu trong giai đoạn đầu tiên.
- Thiết kế hệ thống giúp xác định các yêu cầu phần cứng và kiến trúc hệ thống tổng thể.
Building - Phát triển
- Khi nhận được tài liệu thiết kế hệ thống, công việc được chia thành các module nhỏ và coding được bắt đầu.
- Đây là giai đoạn trọng tâm và dài nhất của vòng đời phát triển phần mềm.
Testing - Kiếm thử
- Sau khi coding được phát triển, nó được kiểm tra dựa trên các yêu cầu để đảm bảo rằng sản phẩm thực sự hoạt động đúng trong giai đoạn phân tích yêu cầu.
- Trong giai đoạn này tất cả các loại kiểm thử chức năng như kiểm thử đơn vị, kiểm thử tích hợp, kiểm thử hệ thống, kiểm thử chấp nhận được thực hiện cũng như test phi chức năng cũng được thực hiện.
Deployment - Phát hành/triển khai
- Sau khi thử nghiệm thành công, sản phẩm được phân phối / triển khai cho khách hàng để họ sử dụng.
- Khách hàng sẽ thực hiện test beta. Nếu có bất kỳ vấn đề nào xảy ra, thì họ sẽ báo cáo cho nhóm kỹ thuật để được hỗ trợ.
Maintenance - Bảo trì
- Trong quá trình bảo trì của SDLC, hệ thống được đánh giá để đảm bảo nó không trở nên lỗi thời.
- Một khi khách hàng bắt đầu sử dụng hệ thống đã phát triển thì những vấn đề thực sự xuất hiện và cần được giải quyết theo thời gian.
Như vậy trong bài chia sẻ này, mình đã giới thiệu ngắn gọn một số mô hình phát triển phần mềm phổ biến hiện nay. Hy vọng rằng kiến thức mình tổng hợp sẽ giúp ích cho các bạn trong quá trình học tập cũng như làm việc.