Mô Hình Phát Triển Phần Mềm

Chào tất cả các bạn, chúc các bạn năm mới an lành và hạnh phúc.

Hôm nay, mùng 4 tết, mình rảnh rỗi xíu nên chia sẽ với mọi người bài viết mới, tổng hợp nhỏ về các mô hình phát triển phần mềm

1. Mô hình thác nước (waterfall model)

Mô hình thác nước là một mô hình tuyến tính, trong đó các giai đoạn phát triển diễn ra theo một trình tự tuyến tính. Mỗi giai đoạn chỉ được thực hiện tiếp khi giai đoạn trước đã kết thúc. Mô hình này dễ sử dụng, dễ tiếp cận, nhưng rất khó để quay lại giai đoạn nào khi nó đã kết thúc và ít tính linh hoạt.

Các giai đoạn đi theo từng bước:

Requirements Gathering and Analysis » System Design » Implementation » Testing Deployment » Maintenance

2. Mô hình chữ V (V model)

là mô hình thác nước mở rộng, phát triển các bài kiểm tra và kiểm thử song song với từng giai đoạn phát triển, nhằm hạn chế những khuyết điểm của mô hình waterfall. Phù hợp với dự án vừa và nhỏ.

Vẽ hơi xấu

Requirements Gathering and Analysis << acceptance test design >> acceptance testing

↓                                                                ↑

 System Design <<  system test design   >>System testing

↓                                             ↑

 Architecture Design << integration test design >> integration testing

↓                                                     ↑

Module design     << Unit test design  >> Unit test

↓                                           ↑

 Implementation

Đối với dự án lớn, thì không nên áp dụng mô hình này.

3. Mô hình tiếp cận lặp (Interactive Model)

mỗi quy trình phát triển là một vòng lặp

           Requirement     ==>   Analytic and design
                ↑                       ↓

init ==> plaining implement => deploy ↑ ↓ evaluation <== testing

4. Mô hình xoắn ốc (Spiral model)

Mô hình linh hoạt kết hợp các khía cạnh của mô hình thác nước và phương pháp Agile. Mô hình này chú trọng vào phân tích rủi ro dự án, bắt đầu với yêu cầu/mục tiêu thiết kế và kết thúc với việc khách hàng kiểm tra tiến độ của từng giai đoạn. Mô hình này có tính linh hoạt cao, nhưng cũng tốn nhiều thời gian và tài nguyên

Ưu: đặt trọng tâm vào quản lý và giảm thiểu rủi ro

Nhược: chi phí cao

thích hợp cho các dự án lớn, dự án phức tạp, dự án có nguy cơ thay đổi cao, dự án lần đường dò bước.

  1. Mô hình tăng trưởng (Incremental model):

Mô hình phát triển từng bước một, bổ sung các tính năng mới vào phiên bản cũ cho đến khi đạt được phiên bản hoàn chỉnh.

Mô hình này giúp sản xuất phần mềm làm việc ở giai đoạn trung gian, nhưng cũng có thể gây khó khăn trong việc tích hợp các phiên bản khác nhau.

6. Nhóm mô hình Agile

6.1 Mô hình SCRUM

Mô hình này hiện đang được rất nhiều công ty product và outsource sử dụng, gồm có các thành phần cơ bản sau

  • Tổ chức Organization : Product Owner, ScrumMaster, Development Team

  • Tài liệu (Atifacts): Product Backlog, Sprint Backlog, Estimation

  • Qui trình(Process): Sprint Planning meeting, Review, Daily Scrum Meeting

Ưu điểm của mô hình:

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 của mô hình:

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áchthờ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.

6.2 Mô hình KANBAN

Mô hình này xây dựng 1 bảng tên là KANBAN để quản lý công việc, cái này khá đơn giản nhưng cực kỳ hiệu quả, chúng ta có thể xây dựng team KANBAN và member KANBAN (mỗi member tự xây dựng)

6.3 Mô hình EXTREME PROGRAMMING - lập trình cực hạn - XP

Khác với mô hình Scrum tập trung vào cấp độ quản lý dự án trọng tâm là ưu tiên công việc và lấy phản hồi, XP lại tập trung vào phát triển phần mềm chất lượng cao song song với chất lượng cuộc sống của nhóm phát triển

Hình ảnh - Nguồn wikipedia

Các vai trò trong CP: Huấn luyện viên(Coach), Khách hàng (Customer), Lập trình viên (Programmer), và Kiểm định viên (Tester).

Các yếu tố cốt lõi của XP:

  1. Giá trị:

    • Giao tiếp: XP nhấn mạnh các cuộc thảo luận trực tiếp kèn theo bảng và bút, nói chung là thảo luận face-to-face, không screen.

    • Đơn giản: Tập trung vào giải pháp đơn giản nhất mà vẫn đáp ứng nhu cầu hoạt động. Tránh sự phức tạp không cần thiết, tránh sự dự đoán.

    • Phản hồi: Liên tục thu thập phản hồi để cải thiện.

    • Dũng cảm: Hành động mạnh mẽ trước sự sợ hãi. Sẵn lòng nêu lên vấn đề tổ chức, dừng các thực hành không hiệu quả và chấp nhận phản hồi.

    • Tôn trọng: Các thành viên trong nhóm phải tôn trọng lẫn nhau để giao tiếp hiệu quả và cộng tác, tương tác tốt với nhau (hơi khó).

  2. Cách thức thực hiện:

    • Phát hành Thường xuyên: Chu kỳ phát triển ngắn, cập nhật thường xuyên.

    • Lập Trình Đôi: Nhà phát triển làm việc theo cặp, liên tục xem xét và cải thiện mã nguồn.

    • Kiểm thử Đơn vị: Kiểm thử tất cả mã nguồn để đảm bảo độ chính xác.

    • Thiết kế Đơn giản: Giữ cho thiết kế hệ thống càng đơn giản càng tốt.

    • Tương Tác với Khách hàng: Giao tiếp thường xuyên với khách hàng để hiểu rõ yêu cầu đang thay đổi.

  3. XP phù hợp cho:

    • Yêu cầu phần mềm thay đổi động.

    • Rủi ro trong các dự án có thời gian cố định sử dụng công nghệ mới.

    • Nhóm phát triển nhỏ, đặt tại cùng một địa điểm.

    • Công nghệ cho phép kiểm thử tự động đơn vị và chức năng.

Nguồn:

https://en.wikipedia.org/wiki/Extreme_programming

Comments