Chuyển tới nội dung
Home » Mô Hình Phát Triển Phần Mềm | 1.2 Mô Hình Xoắn Ốc

Mô Hình Phát Triển Phần Mềm | 1.2 Mô Hình Xoắn Ốc

DEHA - Các mô hình phát triển phần mềm

1.1 Mô hình thác nước ( Waterfall model)

Mô tả

  • Đây được coi như là mô hình phát triển phần mềm đầu tiên được sử dụng.
  • Mô hình này áp dụng tuần tự các giai đoạn của phát triển phần mềm.
  • Đầu ra của giai đoạn trước là đầu vào của giai đoạn sau. Giai đoạn sau chỉ được thực hiện khi giai đoạn trước đã kết thúc. Đặc biệt không được quay lại giai đoạn trước để xử lý các yêu cầu khi muốn thay đổi.

Phân tích mô hình

  • Requirement gathering: Thu thập và phân tích yêu cầu được ghi lại vào tài liệu đặc tả yêu cầu trong giai đoạn này.
  • System Analysis: Phân tích thiết kế hệ thống phần mềm, xác định kiến trúc hệ thống tổng thể của phần mềm.
  • Coding: Hệ thống được phát triển theo từng unit và được tích hợp trong giai đoạn tiếp theo. Mỗi Unit được phát triển và kiểm thử bởi dev được gọi là Unit Test.
  • Testing: Cài đặt và kiểm thử phần mềm. Công việc chính của giai đoạn này là kiểm tra và sửa tất cả những lỗi tìm được sao cho phần mềm hoạt động chính xác và đúng theo tài liệu đặc tả yêu cầu.
  • Implementation: Triển khai hệ thống trong môi trường khách hàng và đưa ra thị trường.
  • Operations and Maintenance: Bảo trì hệ thống khi có bất kỳ thay đổi nào từ phía khách hàng, người sử dụng.

Ứng dụng

Mô hình thường được áp dụng cho các dự án phần mềm như sau:

  • Các dự án nhỏ , ngắn hạn.
  • Các dự án có ít thay đổi về yêu cầu và không có những yêu cầu không rõ ràng.

Ưu điểm

  • Dễ sử dụng, dễ tiếp cận, dễ quản lý.
  • Sản phẩm phát triển theo các giai đoạn được xác định rõ ràng.
  • Xác nhận ở từng giai đoạn, đảm bảo phát hiện sớm các lỗi.

Nhược điểm

  • Ít linh hoạt, phạm vi điều chỉnh hạn chế.
  • Rất khó để đo lường sự phát triển trong từng giai đoạn.
  • Mô hình không thích hợp với những dự án dài, đang diễn ra, hay những dự án phức tạp, có nhiều thay đổi về yêu cầu trong vòng đời phát triển.
  • Khó quay lại khi giai đoạn nào đó đã kết thúc.

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.
DEHA - Các mô hình phát triển phần mềm
DEHA – Các mô hình phát triển phần mềm

So sánh mô hình Scrum và mô hình waterfall, Sprial

Đặc điểm Waterfall Spiral Scrum
Xác định các giai đoạn phát triển Bắt buộc Bắt buộc Chỉ có giai đoạn lập kế hoạch và kết thúc
Sản phẩm cuối cùng Được xác định trong quá trình lập kế hoạch Được xác định trong quá trình lập kế hoạch Xác định trong suốt quá trình dự án
Chi phí sản xuất Được xác định trong quá trình lập kế hoạch Thay đổi cục bộ Xác định trong quá trình xây dựng dự án
Ngày hoàn thành sản phẫm Được xác định trong quá trình lập kế hoạch Thay đổi cục bộ Xác định trong quá trình xây dựng dự án

Via Techtalk

Có thể bạn muốn xem thêm:

  • Tìm hiểu về Jira – Sử dụng JIRA để tối ưu quy trình như nào?
  • Một số hàm thông dụng trong matlab để vẽ đồ thị
  • Những nguyên lý đằng sau việc tối ưu một ứng dụng React

Xem thêm việc làm Developer tại TopDev!

Tóm tắt nội dung

  • 1 Mô hình phát triển phần mềm là gì?
  • 2 Những hoạt động cơ bản trong mô hình phát triển phần mềm
  • 3 Tổng hợp các mô hình phát triển phần mềm phổ biến

    • 3.1 Waterfall model
    • 3.2 Spiral model
    • 3.3 V – Shaped Model
    • 3.4 Agile Model
    • 3.5 Mô hình Scrum
    • 3.6 Prototype
    • 3.7 Incremental Model
    • 3.8 Iterative model
  • 4 Nên lựa chọn mô hình phát triển phần mềm nào?

Đối với mỗi dự án thì các mô hình phát triển phần mềm có vai trò quan trọng trong việc xác định hướng đi cùng chất lượng đầu ra. Tùy theo tính chất của từng dự án cùng phương pháp làm việc của đội ngũ phát triển sẽ lựa chọn mô hình phù hợp. Hãy cùng trung tâm đào tạo Tester tìm hiểu về những mô hình được phổ biến nhất hiện nay trong bài viết dưới đây.

Waterfall model (Mô hình thác nước)

Waterfall model được coi là mô hình phát triển phần mềm đầu tiên được sử dụng. Đây là mô hình áp dụng theo tính tuần tự của các giai đoạn phát triển phần mềm; giai đoạn sau chỉ được thực hiện tiếp khi giai đoạn trước đã kết thúc. Do tính chất này, mỗi giai đoạn của mô hình thác nước phải được xác định chính xác.

Ưu điểm:

  • Dễ sử dụng, dễ tiếp cận.
  • Các giai đoạn và hoạt động được xác định rõ ràng.
  • Xác nhận ở từng giai đoạn, đảm bảo phát hiện sớm các lỗi.

Nhược điểm:

  • Rất khó để quay lại giai đoạn nào khi nó đã kết thúc
  • Ít tính linh hoạt và phạm vi điều chỉnh của nó khá là khó khăn, tốn kém.

Waterfall model (Mô hình thác nước)

Quy trình phát triển phần mềm #Waterfall và mô hình #Agile_Scrum
Quy trình phát triển phần mềm #Waterfall và mô hình #Agile_Scrum

Tạm kết

Trên đây là những thông tin về các mô hình phát triển phần mềm phổ biến mà chúng ta đã tìm hiểu trong bài viết này. Mỗi mô hình đều có những ưu điểm và hạn chế riêng, và lựa chọn mô hình phù hợp sẽ tùy thuộc vào tính chất và yêu cầu của dự án cũng như tầm nhìn và triển vọng của nhóm phát triển.

Hi vọng bài viết này đã giúp bạn hiểu rõ hơn về các mô hình phát triển phần mềm phổ biến và có thêm kiến thức để ứng dụng trong công việc của mình.

Stringee Communication APIs là giải pháp cung cấp các tính năng giao tiếp như gọi thoại, gọi video, tin nhắn chat, SMS hay tổng đài CSKH cho phép tích hợp trực tiếp vào ứng dụng/website của doanh nghiệp nhanh chóng. Nhờ đó giúp tiết kiệm đến 80% thời gian và chi phí cho doanh nghiệp bởi thông thường nếu tự phát triển các tính năng này có thể mất từ 1 – 3 năm.

Bộ API giao tiếp của Stringee hiện đang được tin dùng bởi các doanh nghiệp ở mọi quy mô, lĩnh vực ngành nghề như TPBank, VOVBacsi24, VNDirect, Shinhan Finance, Ahamove, Logivan, Homedy, Adavigo, bTaskee…

Quý bạn đọc quan tâm xin mời đăng ký NHẬN TƯ VẤN TẠI ĐÂY:

Tổng Kết

Đây chỉ là một vài trong số rất nhiều mô hình phát triển phần mềm mà chúng ta có thể áp dụng. Từ các phương thức truyền thống cho đến mô hình Kanban, mỗi lựa chọn đều có thế mạnh và nhược điểm riêng để cân nhắc. Trước khi đưa ra quyết định, hãy xét đến mức độ linh hoạt mà dự án cho phép, cũng như thời gian, chi phí và rủi ro có thể chấp nhận để có giải pháp tốt nhất cho chiến lược kinh doanh công nghệ của bạn.

Savvycom – Đối Tác Công Nghệ Hàng Đầu Tại Việt nam

Thành lập từ 2009, Savvycom là một trong những công ty Công nghệ thông tin hàng đầu tại Việt Nam, chuyên cung cấp các dịch vụ tư vấn chuyển đổi số và giải pháp phần mềm trong lĩnh vực tài chính, y tế và bán lẻ cho các doanh nghiệp trong nước và quốc tế. Với mong muốn góp phần nâng cao vị thế của Việt Nam trên bản đồ công nghệ thông tin toàn cầu, Savvycom hướng đến sứ mệnh đưa công nghệ đổi mới vào cuộc sống bằng cách tận dụng nguồn lực lao động kỹ thuật tại Việt Nam, và tầm nhìn trở thành công ty CNTT hàng đầu trong khu vực ASEAN.

Liên lạc với chúng tôi qua, hoặc gửi yêu cầu của bạn trực tiếp tại Form liên lạc:

  • Điện Thoại: +84 24 3202 9222
  • Hotline: +84 352 287 866 (VN)
  • Email: [email protected]

Giúp doanh nghiệp trở nên khác biệt trong Vận Hành,Tối Ưu Nguồn Lực và đạt được Mục Tiêu Kinh Doanh.

Cấu hình sản phẩm theo DN

Tối ưu sản phẩm theo nhu cầu của khách hàng. Tư vấn thay đổi tính năng nền tảng theo mô hình quản trị và sản xuất của doanh nghiệp.

Ổn định và an toàn

Giải pháp hoạt động ổn định cam kết theo SLA với từng doanh nghiệp, khách hàng. Toàn bộ dữ liệu được lưu trữ an toàn, bảo mật và có thể truy xuất mọi lúc, mọi nơi.

Tiết kiệm chi phí

Giảm tối đa các chi phí văn phòng như in ấn, tìm kiếm, chi phí đầu tư hạ tầng phần cứng, phần mềm. Rút ngắn thời gian luân chuyển giấy tờ, lưu trữ.

Tích hợp toàn diện, mọi lúc mọi nơi

Hoạt động ổn định trên tất cả các nền tảng hiện phổ biến hiện nay (Web, Mobile, Tablet). Có bản cài đặt trên iOS, Android.

Cấu hình sản phẩm theo DN

Tối ưu sản phẩm theo nhu cầu của khách hàng. Tư vấn thay đổi tính năng nền tảng theo mô hình quản trị và sản xuất của doanh nghiệp.

Ổn định và an toàn

Giải pháp hoạt động ổn định cam kết theo SLA với từng doanh nghiệp, khách hàng. Toàn bộ dữ liệu được lưu trữ an toàn, bảo mật và có thể truy xuất mọi lúc, mọi nơi.

Tiết kiệm chi phí

Giảm tối đa các chi phí văn phòng như in ấn, tìm kiếm, chi phí đầu tư hạ tầng phần cứng, phần mềm. Rút ngắn thời gian luân chuyển giấy tờ, lưu trữ.

Tích hợp toàn diện, mọi lúc mọi nơi

Hoạt động ổn định trên tất cả các nền tảng hiện phổ biến hiện nay (Web, Mobile, Tablet). Có bản cài đặt trên iOS, Android.

Chuyển đổi số để tăng trưởng kinh doanh

Mô hình phát triển phần mềm cơ bản Waterfall-V, giải thích rễ hiểu nhất.
Mô hình phát triển phần mềm cơ bản Waterfall-V, giải thích rễ hiểu nhất.

Kết luận

Mô hình phát triển phần mềm được xem là công cụ không thể thiếu với những nhà phát triển phần mềm. Có vô số các loại mô hình phát triển và mỗi mô hình có những ưu điểm và nhược điểm riêng. Để lựa chọn được mô hình phù hợp, bạn cần hiểu rõ mô hình đó cũng như dự án mà doanh nghiệp bạn thực hiện.

Nếu bạn cần hỗ trợ lựa chọn mô hình phát triển phần mềm hoặc bạn có nhu cầu sử dụng dịch vụ về công nghệ thì BAP Software có thể trợ giúp bạn. BAP tự hào là đơn vị cung cấp các dịch vụ công nghệ có chất lượng tiên tiến đi cùng với đội ngũ kỹ thuật viên chuyên nghiệp tại nhiều quốc gia trên thế giới như Nhật Bản, Hàn Quốc, Hoa Kỳ, Việt Nam. Các kỹ thuật viên của chúng tôi sẽ tư vấn cho bạn để bạn có thể triển khai dự án một cách tốt nhất, hạn chế các rủi ro về thời gian và kỹ thuật.

5 Mô Hình Phát Triển Phần Mềm Bạn Cần Biết

Các mô hình phát triển phần mềm (SDLC) là công cụ quan trọng để kỹ sư, lập trình viên có thể quản lý dự án của mình thật hiệu quả. Yêu cầu kỹ thuật, thời gian, kinh phí và kỳ vọng của nhà đầu tư là những yếu tố góp phần quyết định đâu là mô hình SDLC phù hợp nhất.

Hiện nay có hơn 50 mô hình phát triển phần mềm đang được sử dụng. Không có lựa chọn nào là giải pháp hiệu quả 100%, mỗi loại đều có ưu/nhược điểm riêng cho từng phần mềm, đội ngũ lập trình khác nhau. Bài viết đã chọn ra 8 mô hình đặc thù để so sánh các đặc điểm cốt lõi, cần được cân nhắc khi lựa chọn một mô hình SDLC cho những dự án.

Không có lựa chọn nào là giải pháp hiệu quả 100%, mỗi loại đều có ưu/nhược điểm riêng cho từng phần mềm, đội ngũ lập trình khác nhau.

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

V model (mô hình chữ V) là một quy trình phát triển phần mềm khá phổ biến, được sử dụng nhiều tại các công ty sản xuất phần mềm. Khi áp dụng V model, toàn bộ quy trình phát triển phần mềm được chia thành 2 giai đoạn tiến hành song song tương ứng nhau: Phát triển và Kiểm thử. Trong mô hình chữ V, việc kiểm thử được diễn ra ngay từ giai đoạn lấy yêu cầu nên lỗi được tìm ra ngay từ sớm để khắc phục. Muốn áp dụng được mô hình chữ V thì yêu cầu phần mềm phải xác định rõ ràng; công nghệ phần mềm và các công cụ phải được tìm hiểu kỹ.

Ưu điểm:

  • Quá trình phát triển và quy trình quản lý có tính tổ chức và hệ thống.
  • Hoạt động tốt cho các dự án có quy mô vừa và nhỏ.
  • Kiểm tra bắt đầu từ khi bắt đầu phát triển vì vậy sự mơ hồ được xác định ngay từ đầu.
  • Dễ dàng quản lý vì mỗi giai đoạn có các mục tiêu và mục tiêu được xác định rõ ràng.

Nhược điểm:

  • Không thích hợp cho các dự án lớn và phức tạp
  • Không phù hợp nếu các yêu cầu thường xuyên thay đổi.
  • Không có phần mềm làm việc được sản xuất ở giai đoạn trung gian.
  • Không có điều khoản cho việc phân tích rủi ro nên có sự không chắc chắn và có tính rủi ro.

V Model ( Mô hình chữ V)

Scrum cơ bản | Quy trình phát triển phần mềm | Ong Dev
Scrum cơ bản | Quy trình phát triển phần mềm | Ong Dev

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.4 Mô hình tiếp cận lặp

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.
Scrum – cách làm việc nhóm hiệu quả theo phương pháp Agile
Scrum – cách làm việc nhóm hiệu quả theo phương pháp Agile

Agile model & Scrum Process (Mô hình Agile và quy trình Scrum)

Mô hình Agile và quy trình Scrum đang là xu hướng được các công ty phần mềm hướng tới sử dụng trong thời gian gần đây.

Agile model

Agile model được tạo ra dựa trên 2 mô hình: Iterative (Lặp lại) và Incremental (Tăng dần). Mô hình Agile có thể được sử dụng với bất kỳ loại hình dự án nào, nhưng cần sự tham gia và tính tương tác của khách hàng. Agile được sử dụng khi khách hàng yêu cầu chức năng sẵn sàng trong khoảng thời gian ngắn như 3 – 4 tuần.

Ưu điểm:

  • Giảm thời gian cần thiết để tận dụng một số tính năng của hệ thống.
  • Kết quả cuối cùng là phần mềm chất lượng cao trong thời gian ít nhất có thể và sự hài lòng của khách hàng.

Nhược điểm:

  • Phụ thuộc vào kỹ năng của người phát triển phần mềm.
  • Tài liệu được thực hiện ở giai đoạn sau.
  • Cần một team có kinh nghiệm.

Agile model (Mô hình Agile)

Scrum Process

Scrum là một “khung quản lý dự án” được áp dụng rất rộng rãi từ những dự án đơn giản với một nhóm phát triển nhỏ cho đến những dự án có yêu cầu rất phức tạp với hàng trăm người tham gia. Ngoài ra, Scrum Process cũng phù hợp với những dự án đòi hỏi khung thời gian cố định.

Trong Scrum, công việc sẽ được chia nhỏ thành nhiều giai đoạn gọi là Sprint. Mỗi Sprint chỉ kéo dài từ 1 đến 4 tuần, không quá một tháng. Đầu Sprint sẽ lên kế hoạch làm những yêu cầu nào rồi thực hiện code và test. Cuối Sprint là một sản phẩm hoàn thiện cả code lẫn test có thể demo và chạy được.

Scrum process (Quy trình Scrum)

Kết luận

Các mô hình phát triển phần mềm sẽ cung cấp cho bạn các cách thức và phương tiện để đạt được mục tiêu khi làm việc trong một dự án. Đồng thời, bạn sẽ có được các định hướng rõ ràng, phương pháp làm thế nào để đạt được mục tiêu và các giải pháp khi có sự cố. Với 3 mô hình phát triển phần mềm phổ biến được ITNavi cung cấp ở trên, các developer sẽ có những trang bị đầy đủ để đi sâu vào dự án của mình.

Mở rộng ngay cơ hội việc làm phát triển phần mềm tại ITNavi – Nền tảng kết nối việc làm It với hơn 1000++ jobs cập nhật mỗi ngày.

Xem thêm:

1000 việc làm IT tại Nền tảng kết nối việc làm ITNavi

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

Tổng hợp kiến thức về nghề lập trình viên

ITNavi – Nền tảng kết nối việc làm IT

Nguồn: 4 mô hình phát triển phần mềm phổ biến nhất – ITNavi

Các mô hình phát triển phần mềm

Bài đăng này đã không được cập nhật trong 2 năm

Định nghĩa

Mô hình phát triển phần mềm hay quy trình phát triển phần mềm xác định các pha/ giai đoạn trong xây dựng phần mềm. Có nhiều loại mô hình phát triển phần mềm khác nhau ví dụ như:

  • Mô hình thác nước ( Waterfall model)
  • Mô hình xoắn ốc ( Spiral model)
  • Mô hình agile
  • Mô hình tiếp cận lặp ( Iterative model)
  • Mô hình tăng trưởng ( Incremental model)
  • Mô hình chữ V ( V model)
  • Mô hình Scrum
  • RAD model ( Rapid Application Development)

Sau đây mình sẽ đi vào phân tích chi tiết từng mô hình.

4 mô hình phát triển phần mềm phổ biến nhất – ITNavi

Trong mỗi dự án phần mềm, mô hình phát triển đóng một vai trò cực kỳ quan trọng khi quyết định hướng đi cũng như toàn bộ chất lượng đầu ra của sản phẩm. Tùy theo đặc thù yêu cầu của từng dự án, phương pháp làm việc của mỗi công ty mà đội ngũ phát triển sẽ chọn một mô hình phát triển phần mềm phù hợp. Cùng ITNavi tìm hiểu tất cả thông tin hữu ích về các mô hình phát triển phần mềm tại bài viết dưới đây!

Các mô hình phát triển phần mềm có tầm quan trọng như thế nào trong các dự án?

Có 4 kiểu mô hình phát triển phần mềm được áp dụng phổ biến: Waterfall model (Mô hình thác nước), V model (Mô hình chữ V), Agile model & Scrum Process (Mô hình Agile và quy trình Scrum).

Agile Là Gì? | Cách Áp Dụng Agile Để Nâng Cao Hiệu Suất Làm Việc
Agile Là Gì? | Cách Áp Dụng Agile Để Nâng Cao Hiệu Suất Làm Việc

Tổng quan về những mô hình phát triển phần mềm phổ biến

Các mô hình này có thể được xếp vào một số nhóm dựa trên phương thức làm việc được đề ra, ví dụ như tuyến tính hoặc phi tuyến tính, hay yêu cầu giao tiếp giữa đội ngũ phát triển và khách hàng của họ. Trong muôn vàn các loại SDLC, chúng ta cần biết dự án cho phép bao nhiêu sự linh hoạt hay yêu cầu theo sát quy trình chuẩn chỉ. Cũng như khách hàng yêu cầu được đóng góp ý kiến vào bao nhiêu giai đoạn phát triển phần mềm. Nhờ vậy mới có thể đưa ra lựa chọn mô hình phát triển phù hợp nhất.

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

Spiral model (Mô hình xoắn ốc) là quy trình phát triển định hướng rủi ro cho các dự án phần mềm. Mô hình 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 xoắn ốc là một cách tiếp cận thực tế để phát triển các sản phẩm phần mềm quy mô lớn. Ngoài ra, nhà phát triển và khách hàng hiểu rõ hơn và phản ứng với các rủi ro ở mỗi cấp độ phát triển.

Ưu điểm

  • Hội tụ các tính năng tốt và khắc phục các yếu điểm của nhiều mô hình phát triển khác gặp phải.
  • Giám sát dự án dễ dàng và hiệu quả.
  • Phù hợp với dự án có nguy cơ thay đổi trong quá trình thực hiện dự án để giảm thiểu rủi ro.
  • Dự đoán về thời hạn và chi phí sát với thực tế.

Nhược điểm

  • Phân tích rủi ro khá tốn kém. Chủ yếu áp dụng cho dự án lớn, có tiềm lực về tài chính.
  • Yêu cầu thay đổi thường xuyên dẫn đến lặp vô hạn, phức tạp, cần có đội ngũ chuyên gia về phân tích rủi ro.
Agile Scrum 1/25: Giới thiệu về phương pháp luận Agile - Ưu điểm so với Waterfall
Agile Scrum 1/25: Giới thiệu về phương pháp luận Agile – Ưu điểm so với Waterfall

Mô hình Agile – Agile Model

Agile là một tập hợp các nguyên lý dành cho phát triển phần mềm, trong đó khuyến khích việc lập kế hoạch thích ứng, phát triển tăng dần, chuyển giao sớm, và cải tiến liên tục. Agile cũng chủ trương thích ứng nhanh chóng với các thay đổi. Những nguyên lý này được chia sẻ trong Tuyên ngôn Phát triển Phần mềm Linh hoạt và 12 Nguyên lý phía sau.

Agile không định nghĩa một phương pháp cụ thể để đạt được những điều này, nhưng lại có nhiều phương pháp phát triển phần mềm khác nhau thỏa mãn và hướng theo các tiêu chí đó.

Mục đích của các phương pháp Agile là giúp các doanh nghiệp đạt được sự linh hoạt (Agility), từ đó nâng cao sức cạnh tranh và phát triển bền vững. Các phương pháp Agile đã thay đổi diện mạo thế giới không chỉ trong Phát triển phần mềm mà còn đang thể hiện giá trị trong các lĩnh vực khác như Marketting (Agile Marketting), giáo dục (EduScrum, Lean Edu, v.v.), thiết kế (Lean UX, Design Thinking), khởi nghiệp (Lean Startup) và Phần cứng.

Áp dụng

Có thể được sử dụng với bất kỳ loại hình dự án nào, nhưng nó cần sự tham gia và tính tương tác của khách hàng. Ngoài ra, nó có thể được sử dụng khi khách hàng yêu cầu chức năng sẵn sàng trong khoảng thời gian ngắn ( 3 tuần )

Đặc điểm

Ưu điểm:

Giảm thời gian cần thiết để tận dụng một số tính năng của hệ thống Kết quả cuối cùng là phần mềm chất lượng cao trong thời gian ít nhất có thể và sự hài lòng của khách hàng Nhược điểm:

Phụ thuộc vào kỹ năng của người phát triển phần mềm Scalability Tài liệu được thực hiện ở giai đoạn sau

Tổng hợp các mô hình phát triển phần mềm phổ biến

Waterfall model

Mô tả
  • Đây là mô hình phát triển đầu tiên được sử dụng và mô hình này được áp dụng theo tuần tự các giai đoạn phát triển phần mềm. Điều này có nghĩa là đầu ra của giai đoạn trước là đầu vào của giai đoạn sau. Bạn sẽ không thể quay lại được giai đoạn trước để xử lý các yêu cầu khi muốn thay đổi.
  • Lợi ích của mô hình mang lại là phù hợp cho khách hàng hiểu được mục tiêu chung của sản phẩm và nhóm phát triển. Đồng thời hiểu rõ hơn về sự tương tác giữa khách hàng với phần mềm và môi trường nó phải thực hiện.
  • Điều kiện áp dụng là khi bạn có ý tưởng rõ ràng về những gì bạn muốn kết quả cuối cùng như thế nào. Hoặc khách hàng không thể thay đổi phạm vi của một dự án khi nó đã bắt đầu.
Phân tích

Mô hình gồm có:

  • Requirement gathering: Trong giai đoạn này thì bạn cần thu thập, phân tích yêu cầu được ghi lại vào tài liệu đặc tả yêu cầu.
  • System Analysis: Tiến hành phân tích thiết kế hệ thống phần mềm, xác định kiến trúc hệ thống tổng thể phần mềm.
  • Coding: Lúc này thì hệ thống được phát triển theo từng unit và được tích hợp trong giai đoạn kế tiếp. Mỗi Unit được phát triển và kiểm thử bởi lập trình viên gọi là Unit Test.
  • Testing: Giai đoạn cài đặt và kiểm thử phần mềm với công việc chính là kiểm tra, sửa tất cả những lỗi tìm được sao cho phần mềm hoạt động chính xác và đúng theo tài liệu đặc tả yêu cầu.
  • Implementation: Triển khai hệ thống trong môi trường khách hàng và đưa ra thị trường.
  • Operations and Maintenance: Tiến hành bảo trì hệ thống khi có sự thay đổi từ phía khách hàng hay người dùng.
Ứng dụng

Mô hình này được áp dụng cho các dự án sau:

  • Những dự án nhỏ và ngắn hạn
  • Các dự án có ít thay đổi về yêu cầu và không có những yêu cầu không rõ ràng.
Ưu điểm
  • Tiếp cận dễ dàng, sử dụng đơn giản và dễ quản lý.
  • Sản phẩm được phát triển theo các giai đoạn được xác định rõ rang.
  • Xác nhận ở từng giai đoạn giúp phát hiện sớm các lỗi để sửa chữa.
  • Kết quả được ghi chép tốt.
Nhược điểm
  • Tính linh hoạt kém và phạm vi điều chỉnh hạn chế
  • Khó khăn trong việc đi lường trong sự phát triển của từng giai đoạn.
  • Mô hình không thích hợp với những dự án dài đang diễn ra. Hoặc các dự án phức tạp cso nhiều thay đổi về yêu cầu trong vòng đời phát triển.
  • Không thể quay lại được giai đoạn nào đó khi đã kết thúc.

Spiral model

Mô tả
  • Là mô hình có sự kết hợp giữa các tính năng của mô hình prototyping và mô hình thác nước. Các hoạt động được tạo ra theo hình xoắn ốc và được thực hiện theo thứ tự được chọn dựa trên phân tích rủi ro.
  • Khi lặp lại mô hình thì các mục tiêu hoặc phương án thay thế được lựa chọn dựa trên các đặc điểm gồm kinh nghiệm cá nhân, tiêu chí đáp ứng cùng hình thức quản lý hệ thống.
  • Được ưa chuộng cho các dự án lớn, đắt tiền và phức tạp. Mô hình được sử dụng trong giai đoạn tương tự mô hình thác nước (Waterfall model) gồm thứ tự, plan, đánh giá rủi ro.
Phân tích

Các giai đoạn trong quy trình phát triển xoắn ốc gồm:

  • Planing – Lập kế hoạch: Đây là bước đầu tiên cần xác định và thiết lập các mục tiêu cần đạt được. Tiếp đó với tư cách là những lựa chọn thay thế thì trình bay cách tốt nhất để đáp ứng các mục tiêu. Những điều này cần có sự trao đổi giữa khách hàng và nhóm phát triển.
  • Risk analysis – Phân tích rủi ro: Trong khi lập kế hoạch và hoàn thiện chiến lược giảm thiểu rủi ro thì các mối nguy hiểm có thể xảy ra được xác định. Mỗi mối nguy hiểm được đánh dấu phải được kiểm tra kỹ lưỡng. Nguyên mẫu có thể được tạo ra để loại bỏ các khả năng các yêu cầu không rõ ràng. Rủi ro được giảm thiểu bằng cách thực hiện các biện pháp ngăn chặn.
  • Engineering – Kỹ thuật: Nó liên quan đến mã hóa, kiểm thử phẩn mềm. Sau khi đánh giá rủi ro thì mô hình phát triển phần mềm được thông qua. Nó được sử dụng để xác định mức độ rủi ro được công nhận cho giai đoạn đó.
  • Evaluation – Đánh giá: Là sự đánh giá của khách hàng về sản phẩm và nó được quyết định có lặp lại quy trình hay không. Đây là giai đoạn tiếp theo của dự án đang được lên kế hoạch.
Ứng dụng

Mô hình này thường 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. Đáp ứng mong muốn có bản phát hành phần mềm thường xuyên hoặc các dự án có độ rủi ro từ trung bình đến cao hoặc yêu cầu phần mềm phức tạp và lớn,…

Ưu điểm
  • Với khả năng lượng định, phân tích rủi ro cao và tránh được các rủi ro tăng cường.
  • Dễ dàng ước lượng chi phí giống như việc hoàn thành một prototype trong một fragment nhỏ.
  • Ứng dụng tốt với các dự án lớn và quan trọng
  • Kiểm soát tải liệu và phê duyệt chặt chẽ.
  • Luôn có thời gian cho khách hàng phản hồi về sản phẩm.
  • Dễ kiểm soát các mạo hiểm ở từng mức tiến hóa.
  • Đánh giá thực hơn bởi các lỗi quan trọng đã được phát hiện sớm.
  • Chức năng bổ sung và thay đổi có thể được thêm vào những giai đoạn sau.
Nhược điểm
  • Với rủi ro trong giai đoạn phân tích cần có chuyên gia với chuyên môn cao để thực hiện.
  • Phức tạp và không phù hợp với các dự án quy mô nhỏ.
  • Thời gian và chi phí cho dự án là vô hạn bởi đặc tính xoắn ốc của mô hình.
  • Tài liệu cho dựa án có thể rất dài vì có các giai đoạn trung gian.
  • Sự thành công của dự án phụ thuộc nhiều vào giai đoạn phân tích rủi ro.

V – Shaped Model

Mô tả

Mô hình chữ V hay còn được gọi là mô hình 4 tầng cung cấp các phương pháp quản lý chất lượng hỗ trợ và mô tả các giai đoạn riêng biệt có thể tương tác với nhau. Bên cạnh các giai đoạn phát triển của dự án.

Là phần mở rộng của mô hình thác nước và dựa trên sự kết hợp của một giai đoạn kiểm thử cho từng giai đoạn phát triển tương ứng. Đây là mô hình có tính kỷ luật cao và giai đoạn sau được tiến hành khi giai đoạn trước đã hoàn thành. Đối với mô hình này thì công việc kiểm thử được thực hiện ngay từ đầu.

Phân tích

Các giai đoạn trong mô hình V gồm:

Verification (giai đoạn xác minh):

  • Requirement Analysis – Phân tích yêu cầu: Đây là bước đầu của giai đoạn xác minh để hiểu được mong đợi của khách hàng về sản phẩm thông qua giao tiết và trao đổi.
  • System Design – Thiết kế hệ thống: Xác định các yêu cầu và mong đợi của khách hàng với sản phẩm, hệ thống thiết kế chi tiết phải được phát triển để phát triển phần mềm.
  • Architectural Design – Thiết kế cấu trúc: Thiết kế hệ thống được tách biệt thành các modul theo chức năng của chúng. Đồng thời việc truyền dữ liệu giữa các Modul nội bộ và các hệ thống khác được thừa nhận.

Validation (giai đoạn xác thực):

  • Unit Testing – Kiểm thử đơn vị: Tiến hành loại bỏ lỗi ở cấp code hoặc đơn vị.
  • Integration Testing – Kiểm thử tích hợp: Xác nhận thông tin nội bộ giữa các Modul trong hệ thống.
  • System Testing – Kiểm thử hệ thống: Kiếm tra các yêu cầu chức năng và phi chức năng của ứng dụng đã phát triển.
  • User Acceptance Testing (UAT) – Kiểm thử chấp nhận người dùng: xác nhận khả năng sử dụng của hệ thống đã phát triển.
Ứng dụng
  • Yêu cầu được xác định rõ ràng, sản phẩm ổn định.
  • Công nghệ không thay đổi và được hiểu rõ bởi nhóm dự án.
  • Áp dụng với dự án ngắn không có yêu cầu rõ ràng hoặc không xác định.
Ưu điểm
  • Mô hình có tính kỷ luật cao và các giai đoạn được hình thành cùng lúc.
  • Hoạt động tốt cho các dự án nhỏ khi yêu cầu được hiểu rõ.
  • Đơn giản, dễ hiểu, dễ sử dụng và quản lý.
Nhược điểm
  • Khó kiểm soát rủi ro.
  • Không phải là mô hình tốt cho các dự án phức tạp và hướng đối tượng hoặc các dự án dài và đang diễn ra.
  • Mô hình không thích hợp cho các dự án có nguy cơ thay đổi yêu cầu trùng bình đến cao.

Agile Model

Mô tả
  • Đây là mô hình phát triển phần mềm phát triển phần mềm linh hoạt để làm sao đưa sản phẩm đến tay người dùng càng nhanh càng tốt. Nó có sự cải tiến đáng kể so với các mô hình như: waterfall,…
  • Nó là tập hợp các phương thức phát triển lặp và tăng dẫn trong đó các yêu cầu và giải pháp được phát triển. Thông qua sự liên kết cộng tác giữa nhóm tự quản và liên chức năng.
  • Phát triển dựa trên mô hình iterative and incremental. Các yêu cầu và giải pháp được phát triển dựa trên kết hợp của các function.
  • Ở mô hình này thì các tác vụ sẽ được chia thành các khung thời gian nhỏ để cung cấp các tính năng cụ thể cho bản phát hành cuối.
Phân tích

Các giai đoạn trong mô hình Agile gồm:

  • Lên kế hoạch dự án: Trước khi bắt đầu thì team của bạn cần hiểu mục tiêu, giá trị đối với tổ chức hoặc khách hàng cùng các đạt được mục tiêu đó để áp dụng mô hình.
  • Tạo lộ trình sản phẩm: Đây là giai đoạn quan trọng để xây dựng các tính năng riêng lẻ ở mỗi Sprint. Bạn cần phát triển một product backlog để tạo nên một sản phẩm hoàn thiện cuối cùng.
  • Lập kế hoạch phát hành: Khi bắt đầu dự án thì bạn sẽ lập kế hoạch cấp cao cho các bản phát hành tính năng. Ở mỗi đầu giai đoạn thì bạn cần truy cập lại và đánh giá lại kế hoạch.
  • Tạo kế hoạch nước rút: Trước khi bắt đầu mỗi giai đoạn thì các bên liên quan cần tổ chức cuộc họp để xác định những gì sẽ hoàn thành. Cần chia sẻ đồng đều giữa các thành viên trong nhóm để hoàn thành nhiệm vụ trong thời gian chạy nước rút.
  • Đánh giá hiệu quả dự án mỗi ngày: Cần tổ chức các cuộc họp giao lưu ngắn hàng ngày để đánh giá xem cần thực hiện bất kỳ thay đổi nào không.
  • Đánh giá Sprint và hồi cứu: Khi kết thúc mỗi giai đoạn thì nhóm của bạn sẽ tổ chức 2 cuộc họp. Gồm tổ chức đánh giá giai đoạn với các bên liên quan của dự án để cho họ xem thành quả. Đồng thời cuộc họp cho phép cả 2 nhóm xây dựng mối quan hệ và thảo luận về các vấn đề phát sinh.
Ứng dụng

Sử dụng với bất kỳ loại hình thức dự án nào những cần sự tham gia và tương tác của khách hàng. Đồng thời áp dụng khi khách hàng yêu cầu chức năng sẵn sàng trong thời gian ngắn.

Ưu điểm
  • Gia tăng tinh thần làm việc nhóm và trao đổi công việc hiệu quả.
  • Các chức năng được xây dựng nhanh chóng và rõ ràng để quản lý.
  • Dễ dàng bổ sung và thay đổi yêu cầu đồng thời tài liệu dễ hiểu và sử dụng.
Nhược điểm
  • Không thích hợp để xử lý các phụ thuộc phức tạp.
  • Có nhiều sự rủi ro về tính bền vững, khả năng bảo trì cùng mở rộng.
  • Để triển khai đượcc cần một nhóm có kinh nghiệm.
  • Phụ thuộc rất nhiều vào sự tương tác rõ ràng của khách hàng.
  • Khó khăn khi chuyển giao công nghệ cho thành viên mới trong nhóm bởi thiếu tài liệu.

Mô hình Scrum

Mô tả
  • So với các mô hình phát triển phần mềm khác thì Scrum mang lại lợi ích cho các ý tưởng lớn hơn. Bởi các nhà phát triển cảm thấy tận tâm với các mục tiêu và chịu trách nhiệm cho sự thành công của ý tưởng.
  • Mô hình này được gọi là mô hình hướng khách hàng chia các yêu cầu thành từng giai đoạn. Mỗi sprint (giai đoạn) chỉ đáp ứng số lượng yêu cầu nhất định.
  • Một giai đoạn thường kéo dài từ 1 đến 4 tuần và đầu mỗi Sprint sẽ lên kế hoạch làm những yêu cầu nào. Sau đó tiến hành code và test rồi cuối mỗi giai đoạn là sản phầm sẽ hoàn thiện cả code lẫn Test được demo và chạy thử. Tiến hành các giai đoạn khác cho đến khi hoàn thành hết các yêu cầu.
Phân tích

Các giai đoạn trong mô hình Scrum

  • Product Backlog: Các nhiệm vụ ưu tiên được xác định kỹ lưỡng về dự án sẽ được tạo ra được thu thập.
  • Sprint: Đây là giai đoạn quan trọng nhất của quy trình scrum. Bởi khung thời gian một tháng trong đó sẽ diễn ra việc tạo ra một sản phẩm.
  • Burn Down: Tiến hành đo lường tiến độ của một dự án scrum. Khi mỗi lần chạy nước rút hoàn thành và scrum master sẽ chịu trách nhiệm cập nhật hình ảnh.
Ứng dụng
  • Mô hình được sử dụng trong các trường hợp cần có kết quả ngay lập tức. Hoặc các tình huống khi có nhiều sự mơ hồ và các nhiệm vụ không được xác định rõ ràng.
  • Khi khách hàng yêu cầu phương pháp phát triển tùy biến cao cho sản phẩm nhất định.
Ưu điểm
  • Khi áp dụng mô hình này thì một người có thể làm nhiều việc.
  • Phát hiện lỗi nhanh chóng.
  • Có thể sử dụng cho các dự án mà yêu cầu khách hàng không rõ ràng từ đầu.
Nhược điểm
  • Trình độ của nhóm cần có một kỹ năng nhất định và cần có sự hiểu biết về mô hình agile.
  • Khó khăn trong việc xác định ngân sách và thời gian.
  • Thời gian kéo dài bởi luôn lắng nghe ý kiến phản hồi của khách hàng và thay đổi.
  • Vai trò của Product Owner rất quan trọng bởi đây là người định hướng sản phẩm.

Prototype

Mô tả
  • Quy trình bắt đầu từ việc thu thập yêu cầu với sự có mặt của đại diện cả phía phát triển lẫn khách hàng. Nhằm định ra mục tiêu tổng thể của hệ thống phần mềm sau này và ghi nhận các yêu cầu có thể biết được và cần làm rõ.
  • Sau đó thực hiện thiết kế nhanh tập trung chuyển tải các khía cạnh thông qua nguyên mâu. Từ đó giúp khách hàng có thể hình dung, đánh giá và hoàn chỉnh yêu cầu cho toàn hệ thống. Điều này giúp tinh chỉnh yêu cầu và đội ngũ phát triển hiểu được những gì cần phát triển.
  • Mô hình này thường được triển khai trong trong thời gian ngắn. Tiếp sau giai đoạn làm prototype có thể chu trình theo mô hình thác thước hoặc mô hình khác.
Phân tích
  • Requirement: Là giai đoạn đầu liên quan đến việc thiết lập các yêu cầu của hệ thống mong muốn.
  • Design: Khi đã xác định các yêu cầu hệ thống mong muốn thì thiết kế ý tưởng cơ bản được hình thành.
  • Prototype formation: Nhờ có thiết kế ý tưởng cơ bản, nguyên mẫu hoạt động được xây dựng cho hệ thống mong muốn.
  • Initial Evaluation: Ở giai đoạn này thì mẫu được khách hàng thử nghiệm và đánh giá các chức năng cùng hạn chế.
  • Refining Prototype: Lúc này nguyên mẫu được tinh chỉnh cùng phân tích đánh giá do khách hàng thực hiện. Sau đó quá trình tinh chỉnh được thực hiện xong thì hệ thống cuối cùng được tạo ra để sử dụng trong thời gian thực.
Ứng dụng
  • Mô hình được áp dụng khi yêu cầu của hệ thống rõ ràng. Các chức năng cơ bản của hệ thống mong muốn vẫn chưa được đánh giá.
  • Khi các yêu cầu của hệ thống kết quả cần phải được thay đổi. Cần hiển thị các chức năng kỹ thuật của sản phẩm mong muốn bằng cách tạo nguyên mẫu.
  • Thời gian phát triển bị giảm nớt và các thành phần có thể tái sử dụng.
  • Đánh giá ban đầu được đưa ra nhanh chóng và khách hàng có thể đưa ra phản hồi theo từng nguyên mẫu.
Ưu điểm

Người dùng sẽ hình dung ra được chức năng cùng đặc điểm của hệ thống. Đồng thười cải thiện sự liên hệ giữa nhà phát triển và người sử dụng.

Nhược điểm
  • Trong trường hợp các nguyên mẫu không chuyển tải hết các chức năng và đặc điểm của hệ thống phần mềm. Người dùng sẽ thất vọng và mất đi sự quan tâm đến hệ thống được phát triển.
  • Mô hình nguyên mẫu được triển khai nhanh, vội vàng và có thể thiếu sự phân tích đánh giá cần thận các khía cạnh liên quan đến hệ thống cuối cùng.
  • Loại mô hình này chưa thể cải thiện được việc loại trừ khoảng cách giữa yêu cầu và ứng dụng cuối cùng.

Incremental Model

Mô tả
  • Ở mô hình này thì Spec được chia thành nhiều phần.
  • Chu kỳ được chia thành các module nhỏ để dễ quản lý.
  • Từng module sẽ trải qua các yêu cầu về thiết kế, thực hiện,… như vòng đời phát triển thông thường.
Phân tích

Nguyên lý vận hành của mô hình này tương tự với việc lắp ghép các miếng thành bức tranh hoàn chỉnh. Thành phần miếng ghép nào được hoàn thành trước thì một phần của bức tranh sẽ được thể hiện trước. Khi số miếng ghéo hoàn thành gia tăng thì sản phẩm sẽ ngày càng hoàn thiện hơn.

Ứng dụng
  • Được sử dụng cho các dự án có yêu cầu đã được mô tả, định nghĩa và hiểu một cách rõ ràng.
  • Khách hàng có nhu cầu về sản phẩm sớm.
Ưu điểm
  • Có khả năng phát triển nhanh chóng.
  • Mô hình linh hoạt hơn và ít tốn kém hơn khi thay đổi phạm vi cùng yêu cầu.
  • Dễ dàng trong việc kiểm tra cùng sửa lỗi.
Nhược điểm
  • Tuy nhiên cần phải lên kế hoạch và thiết kế tốt.
  • So với mô hình thác nước thì việc triển khai mô hình này cao hơn.

Iterative model

Mô tả

Đây là kỹ thuật phát triển phần mềm dựa trên mô hình phát hành và cập nhật theo chu kỳ và sự gia tăng ổn định của các tính năng bổ sung. Một mô hình được lặp đi lặp lại từ khi bắt đầu đến khi làm đầy đủ specification. Quá trình này tái diễn để tạo ra phiên bản mới của phần mềm vào cuối mỗi lần lặp.

Khác hoàn toàn so với việc phát triển phần mềm từ Spec đặc tả rồi mới bắt đầu thực thi. Mô hình này có thể review dần dẫn đến yêu cầu cuối cùng.

Phân tích

Các giai đoạn trong mô hình tiếp cận lặp gồm

  • Bắt đầu: Bao gồm phạm vi, nhu cầu cùng các mối nguy hiểm ở cấp độ cao hơn.
  • Thiết kế: Tạo ra kiến trúc khả thi để giảm thiểu rủi ro được xác định trong giai đoạn đầu tiên và đáp ứng các tiêu chí phi chức năng.
  • Xây dựng: Hoàn thiện dần dần các thành phần kiến trúc với mã sẵn sàng sản xuất được phát triển thông qua phân tích yêu cầu chức năng, triển khai, thiết kế và test.
  • Chuyển tiếp: Cung cấp hệ thống cho môi trường vận hành sản xuất trong giai đoạn chuyển tiếp.
Ứng dụng
  • Mô được áp dụng khi yêu cầu chính được xác định.
  • Công nghệ mới đang được sử dụng và được học tập bởi nhóm phát triển trong khi làm việc ở dự án.
  • Phù hợp cho các dự án lớn và nhiệm vụ quan trọng.
Ưu điểm
  • Thời gian làm tài liệu sẽ được tối ưu và ít tốn kém hơn khi thay đổi phạm vi hay yêu cầu.
  • Dễ dàng quản lý rủi ro.
  • Trong suốt vòng đời thì phần mềm được sản xuất sớm để tạo điều kiện cho khách hàng phản hồi, đánh giá.
  • Một số chức năng làm việc có thể được phát triển nhanh và sớm,…
Nhược điểm
  • Yêu cầu nhiều tài nguyên.
  • Các vấn đề về thiết kế cùng 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 và tiến độ của dự án phụ thuộc vào giai đoạn phân tích rủi ro.
Phân biệt Agile và Scrum trong phát triển phần mềm
Phân biệt Agile và Scrum trong phát triển phần mềm

Mô hình phát triển phần mềm là gì?

Mô hình phát triển phần mềm được sử dụng trong nhiều lĩnh vực, đặc biệt là ngành công nghiệp. Nguồn: thinksys.com

Mô hình phát triển phần mềm là hệ thống các quy trình và phương pháp được triển khai để phát triển dự án. Có nhiều loại mô hình để tạo ra phần mềm, tùy thuộc vào mỗi doanh nghiệp sẽ có cách sử dụng để đạt được mục tiêu khác nhau.

Mô hình chữ V – V- Shaped Model

Mô hình V hiện nay là một trong những quy trình phát triển phần mềm được sử dụng rộng rãi nhất. Trong mô hình V việc thực hiện kiểm tra được diễn ra ngay từ giai đoạn lấy yêu cầu. V mô hình cũng được gọi là mô hình xác minh (verification) và mô hình xác nhận (validation).

Để hiểu được mô hình V, trước hết chúng ta hãy hiểu xác minh (verification) và xác nhận hợp lệ (validation) trong phần mềm là gì.

Xác minh (verification) : Xác minh là một kỹ thuật phân tích tĩnh. Trong kiểm thử, kỹ thuật này được thực hiện mà không phải chạy code. Nó bao gồm một số hoạt đông như xem lại (review), kiểm tra (inspection) và kiểm tra từ đầu tới cuối (walkthrough).

Xác nhận (validation): Xác nhận là một kỹ thuật phân tích động, trong đó việc kiểm thử được thực hiện bằng cách thực hiện code. Ví dụ bao gồm kỹ thuật kiểm tra chức năng (function) và phi chức năng (non-function).

Áp dụng

Yêu cầu phần mềm phải xác định rõ ràng Công nghệ phần mềm và các công cụ phải được tìm hiểu kĩ

Đặc điểm

Ưu điểm:

Đơn giản dễ sử dụng Phân phối cụ thể theo mỗi giai đoạn Thực hiện verification và validation sớm trong mỗi giai đoạn phát triển Nhược điểm:

Phạm vi điều chỉnh khá là khó khăn và tốn kém. Trong mô hình V, các hoạt động phát triển và đảm bảo chất lượng được thực hiện đồng thời. Không có pha rời rạc được gọi là kiểm thử, thay vào đó kiểm thử được bắt đầu ngay từ giai đoạn lấy yêu cầu. Các hoạt động xác minh và xác nhận đi liền với nhau.

Chuyên gia phong thủy Song Hà: Năm Giáp Thìn sẽ là một năm nhiều biến động về kinh tế | VTC Now
Chuyên gia phong thủy Song Hà: Năm Giáp Thìn sẽ là một năm nhiều biến động về kinh tế | VTC Now

1.3 Mô hình Agile

Agile là một phương pháp phát triển phần mềm linh hoạt để làm sao đưa sản phẩm đến tay người dùng càng nhanh càng tốt và được xem như là sự cải tiến so với những mô hình cũ như mô hình “Thác nước (waterfall)” hay “CMMI”. Phương thức phát triển phần mềm Agile là một tập hợp các phương thức phát triển lặp và tăng dần trong đó các yêu cầu và giải pháp được phát triển thông qua sự liên kết cộng tác giữa các nhóm tự quản và liên chức năng.

Mô tả

  • Dựa trên mô hình iterative and incremental.
  • Các yêu cầu và giải pháp phát triển dựa trên sự kết hợp của các function.
  • Trong Agile, các tác vụ được chia thành các khung thời gian nhỏ để cung cấp các tính năng cụ thể cho bản phát hành cuối.

Ứng dụng

  • Có thể được sử dụng với bất kỳ loại hình dự án nào, nhưng cần sự tham gia và tính tương tác của khách hàng.
  • Sử dụng khi khách hàng yêu cầu chức năng sẵn sàng trong khoảng thời gian ngắn.

Ưu điểm

  • Tăng cường tình thần làm việc nhóm và trao đổi công việc hiệu quả.
  • Các chức năng được xây dựng nhanh chóng và rõ ràng, dế quản lý.
  • Dễ dàng bổ sung, thay đổi yêu cầu.
  • Quy tắc tối thiểu, tài liệu dễ hiểu, dễ sử dụng.

Nhược điểm

Mô hình Agile được sử dụng rộng rãi trên thế giới nhưng cũng không đồng nghĩa với phù hợp với tất cả các dự án phần mềm.

  • Không thích hợp để xử lý các phụ thuộc phức tạp.
  • Có nhiều rủi ro về tính bền vững, khả năng bảo trì và khả năng mở rộng.
  • Cần một team có kinh nghiệm.
  • Phụ thuộc rất nhiều vào sự tương tác rõ ràng của khách hàng.
  • Chuyển giao công nghệ cho các thành viên mới trong nhóm có thể khá khó khăn do thiếu tài liệu.

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.
KINH TẾ NĂM RỒNG & TRIỂN VỌNG PHỤC HỒI CỦA DOANH NGHIỆP: BCTC 2023 TOÀN CẢNH
KINH TẾ NĂM RỒNG & TRIỂN VỌNG PHỤC HỒI CỦA DOANH NGHIỆP: BCTC 2023 TOÀN CẢNH

Những hoạt động cơ bản trong mô hình phát triển phần mềm

Trong hầu hết các quy trình phát triển phần mềm thì có 4 thao tác nền tảng gồm:

  • Đặc tả phần mềm gồm định nghĩa các chức năng cùng điều kiện hoạt động của phần mềm.
  • Còn quy trình phát triển phần mềm là quá trình xây dựng các đặc tả.
  • Đánh giá phần mềm để chắc chắn rằng ít nhất có thể thực hiện được những gì mà tài liệu đặc tả yêu cầu.
  • Tiến hóa phần mềm là quá trình hoàn thiện các chức năng cùng giao diện để ngày càng hoàn thiện phần mềm cùng các yêu cầu từ khách hàng.

Mô hình xoắn ốc – Spiral Model

Mô hình xoắn ốc (tiếng Anh: spiral model) là quy trình phát triển định hướng rủi ro cho các dự án phần mềm. Kết hợp của thế mạnh của các mô hình khác và giải quyết khó khăn của các mô hình trước còn tồn tại. Dựa trên các mô hình rủi ro riêng biệt của mỗi dự án, mô hình xoắn ốc đưa ra cách áp dụng các yếu tố của một hoặc nhiều mô hình xử lý, chẳng hạn như mô hình gia tốc, mô hình thác nước hoặc mô hình tạo mẫu tiến hóa.

Các giai đoạn của mô hình xoắn ốc

Lập kế hoạch – Planning phase:

Thu thập, phân tích yêu cầu từ của dự án từ phía khách hàng. Bao gồm các công việc: Ước lượng chi phí (estimating cost), lên lịch trình thực hiện dự án (shedule-master), xác định số lượng nhân lực, môi trường làm việc (identifying necessary resources and work environment), tìm hiểu yêu cầu hệ thống (requirements) từ đó đưa ra các tài liệu đặc tả (Bussiness Requirement Specifications và System Requirement specifications) để phục vụ cho việc trao đổi giữa khách hàng và phân tích hệ thống sau này.

Phân tích rủi ro – Risk analysis phase:

Một quá trình phân tích sẽ được thực hiện để xác định rủi ro và đưa ra các giải pháp thay thế. Một prototype sẽ được tạo ra ở cuối giai đoạn phân tích rủi ro. Nếu có bất kỳ rủi ro nào được tìm thấy trong quá trình này thì các giải pháp thay thế sẽ được đề xuất và thực hiện.

Thực thi kỹ thuật – Engineering phase:

Đây là giai đoạn mà dự án được các dev tiến hành code, các tester tiến hành test và deploying software trên trang web của khách hàng.

Đánh giá – Evaluation phase:

Khách hàng sẽ tham gia vào giai đoạn này để đánh giá công việc, sản phẩm và đảm bảo rằng sản phẩm đáp ứng tất cả các yêu cầu đã đặt ra trước đó. Nếu có bất kỳ yêu cầu thay đổi nào từ khách hàng, các giai đoạn sẽ được lặp lại. Đây là giai đoạn quan trọng vì cần có sự phản hồi của khách hàng về sản phẩm trước khi sản phẩm được release.

Áp dụng

Thường đượ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

Đặc điểm

Ưu điểm:

Estimates (i.e. budget, schedule, etc.) trở nên thực tế hơn như là một quy trình làm việc, bởi vì những vấn đề quan trọng đã được phát hiện sớm hơn. Có sự tham gia sớm của deverlopers Quản lý rủi ro và phát triển hệ thống theo phase Nhược điểm:

Chi phí cao và thời gian dài để có sản phẩm cuối cùng Phải có kỹ năng tốt để đánh giá rủi ro và giả định.

(Số 03) Nhân dân và Phật tử về chùa Khai Nguyên lễ Phật, tham quan ngày mùng 04 Tết Giáp Thìn.
(Số 03) Nhân dân và Phật tử về chùa Khai Nguyên lễ Phật, tham quan ngày mùng 04 Tết Giáp Thìn.

Các hoạt động cơ bản của quy trình phát triển phần mềm

  • Đặc tả phần mềm: Định nghĩa được các chức năng, điều kiện hoạt động của phần mềm.
  • Phát triển phần mềm: Là quá trình xây dựng các đặc tả.
  • Đánh giá phần mềm: Phầm mềm phải được đánh giá để chắc chắn rằng ít nhất có thể thực hiện những gì mà tài liệu đặc tả yêu cầu.
  • Tiến hóa phần mềm: Đây là quá trình hoàn thiện các chức năng cũng như giao diện để ngày càng hoàn thiện phần mềm cũng như các yêu cầu đưa ra từ phía khách hàng.

Các mô hình phát triển phần mềm

Mô hình thác nước – Waterfall model

Mô hình thác nước (tiếng Anh: waterfall model) là một mô hình của quy trình phát triển phần mềm, trong đó quy trình phát triển trông giống như một dòng chảy, với các pha được thực hiện theo trật tự nghiêm ngặt và không có sự quay lui hay nhảy vượt pha là: phân tích yêu cầu, thiết kế, triển khai thực hiện, kiểm thử, liên kết và bảo trì.

Các giai đoạn của mô hình thác nước

Thu thập yêu cầu (Requirement gathering) : Đây là giai đoạn xác định các yêu cầu chức năng và phi chức năng mà hệ thống phần mềm cần có. Kết quả của giai đoạn này là bản tài liệu đặc tả yêu cầu. Tài liệu này sẽ là nền tảng cho những giai đoạn tiếp theo cho đến cuối dự án.

Phân tích hệ thống ( System Analysis): Là giai đoạn định ra làm thế nào để hệ thống phần mềm đáp ứng đúng yêu cầu của khách hàng. Giai đoạn này thực hiện phân tích, thiết kế hệ thống phần mềm.

Coding: Là giai đoạn thực hiện sản phẩm dựa trên đặc tả yêu cầu và tài liệu thiết kế module.

Testing: Tester sẽ nhận sản phẩm từ dev và thực hiện kiểm thử cho nhóm các thành phần và kiểm thử hệ thống. Khâu kiểm thử cuối cùng sẽ là Kiểm thử chấp nhận, giai đoạn này còn có sự tham gia của khách hàng.

Implementation: Triển khai hệ thống ra môi trường của khách hàng.

Operations &Maintenance: Đây là giai đoạn cài đặt, cấu hình và đào tạo cho khách hàng. Giai đoạn này sửa chữa những lỗi của sản phẩm (nếu có) và phát triển những thay đổi mới được khách hàng yêu cầu.

Áp dụng

Thường được áp dụng cho các dự án không thường xuyên bị thay đổi về yêu cầu.

Đặc điểm

Ưu điểm:

Dễ sử dụng, dễ tiếp cận Các giai đoạn và hoạt động được xác định rõ ràng Xác nhận ở từng giai đoạn, đảm bảo phát hiện sớm các lỗi Nhược điểm:

Rất khó để quay lại giai đoạn nào khi nó đã kết thúc Ít tính linh hoạt và phạm vi điều chỉnh của nó khá là khó khăn, tốn kém.

CI/CD là gì? Hiểu CI/CD trong 10 phút !!!
CI/CD là gì? Hiểu CI/CD trong 10 phút !!!

Top các mô hình phát triển phần mềm tốt nhất hiện nay

Theo thống kê của Good Firm, việc phát triển phần mềm thường cần khoảng 36.000 USD. Do đó, trước khi triển khai dự án của doanh nghiệp mình, bạn cần tìm hiểu kỹ thông tin về các loại mô hình phát triển để đảm bảo chọn được mô hình phù hợp nhất cho doanh nghiệp bạn. Dưới đây là một số loại mô hình phát triển phần mềm phổ biến cũng như ưu và nhược điểm từng loại mô hình.

2.Mô hình Waterfall

Mô hình Waterfall là mô hình ra đời đầu tiên trên thế giới. Nguồn: amela.vn

Mô hình Waterfall là phương pháp đầu tiên để phát triển phần mềm. Mô hình Waterfall có 6 giai đoạn chính gồm phân tích, thiết kế, phát triển, thử nghiệm, triển khai và bảo trì. Mô hình này có một số ưu và nhược điểm như sau:

Về ưu điểm:

  • Mô hình Waterfall có tính tuần tự, đơn giản, bất cứ ai cũng có thể sử dụng.
  • Thích nghi tốt với những môi trường mới.
  • Áp dụng kế hoạch có lộ trình rõ ràng, kết cấu chặt chẽ.
  • Thích hợp với những dự án nhỏ, thời gian ngắn và có yêu cầu đơn giản.

Về nhược điểm:

  • Đây không phải là mô hình lý tưởng cho dự án có quy mô lớn.
  • Nếu yêu cầu đưa ra từ đầu không rõ ràng thì đây là phương pháp kém hiệu quả hơn.
  • Khó có thể sửa chữa các lỗi trong quá trình tạo ra sản phẩm.
  • Sau khi quá trình phát triển kết thúc, việc sửa chữa các lỗi khá khó khăn và tốn kém chi phí.

2.Mô hình phát triển phần mềm Evolutionary

Mô hình Evolutionary có các module lõi được kiểm tra thường xuyên. Nguồn:computersciencejunction.in

Mô hình Evolutionary là mô hình phát triển kết hợp giữa mô hình lặp và sự tăng dần của vòng đời phát triển phần mềm. Mô hình Evolutionary thường rất hữu ích đối với các dự án lớn, các dự án mà khách hàng cần số lượng sản phẩm lớn.

Về ưu điểm:

  • Các module lõi được kiểm tra kỹ lưỡng nên giảm thiểu các lỗi khi vận hành.
  • Người dùng có thể thử nghiệm hệ thống đã được phát triển một phần hay kiểm tra chất lượng ở mọi giai đoạn trong quá trình phát triển sản phẩm.
  • Mô hình Evolutionary phân tích rủi ro tốt hơn.
  • Hỗ trợ thay đổi môi trường cho sản phẩm đầu ra.
  • Thời gian hoạt động ban đầu ít hơn.
  • Phù hợp với các dự án quan trọng, có nhiệm vụ lớn và yêu cầu cao.
  • 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.

Về nhược điểm:

  • Việc quản lý mô hình Evolutionary khá phức tạp so với nhiều mô hình khác.
  • Không phù hợp với các dự án nhỏ, thời hạn ngắn.
  • Chi phí sử dụng cao hơn.
  • Yêu cầu nguồn nhân lực có chuyên môn cao hơn để phân tích rủi ro.
  • Thời gian tạo ra sản phẩm lâu hơn do sự thay đổi yêu cầu của khách hàng trong quá trình phát triển.

2.Mô hình V-Model

Mô hình V-Model được xem là mô hình mở rộng của mô hình Waterfall. Nguồn: testsigma.com

Mô hình V-Model hay còn gọi là mô hình Xác minh, là mô hình được mở rộng từ mô hình Waterfall và được bổ sung thêm kế hoạch thử nghiệm sớm. Thay vì di chuyển tuyến tính qua từng giai đoạn phát triển, mô hình V – Model di chuyển xuống cho đến giai đoạn viết mã và nó bắt đầu đi lên để tạo thành chữ “V”.

Về ưu điểm:

  • Mô hình V – Model cho phép phát hiện sớm các lỗi trong mã lệnh và kiến trúc trong quá trình phát triển dự án.
  • Mô hình V – Model cho phép bổ sung kế hoạch thử nghiệm sớm, mang lại cơ hội thành công cao hơn so với mô hình Waterfall.

Về nhược điểm:

  • Bởi vì là mô hình tuyến tính nên V – Model không linh hoạt.
  • Các giai đoạn tiến hành dự án tách biệt nhau nên việc điều chỉnh trở nên khó khăn, tốn kém và tốn rất nhiều thời gian.
  • Mô hình V – Model không thích hợp với các dự án có thời gian dài, phức tạp.

2.Mô hình Spiral

Mô hình Spiral là một loại mô hình phát triển công nghệ phần mềm kết hợp giữa mô hình Waterfall và mô hình tiếp cận lặp.

Mô hình Spiral chú trọng vào việc phân tích rủi ro dự án, mỗi giai đoạn trong mô hình này bắt đầu với 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 giai đoạn.

Mô hình Spiral gồm có 4 giai đoạn chính:

  • Lập kế hoạch: Nhà phát triển phần mềm sẽ thu thập thông tin, phân tích những yêu cầu của khách hàng. Giai đoạn này gồm các nhiệm vụ như ước lượng chi phí, lên lịch trình thực hiện, xác định số nhân lực, môi trường làm việc…
  • Phân tích rủi ro: Quá trình phân tích xác định những rủi ro và đưa ra giải pháp thay thế. Ở cuối giai đoạn sẽ có một prototype ra đời.
  • Thực thi dự án: Đây là thời gian mà các nhà phát triển phần mềm tiến hành viết mã, thử nghiệm.
  • Đánh giá: Sau khi nhận được sản phẩm cuối cùng, khách hàng sẽ đánh giá sản phẩm với các yêu cầu đã đặt ra.

Về ưu điểm:

  • Sự phát triển mang tính lặp liên tục cho phép thực hiện các thay đổi và bổ sung tính năng mới cũng như quản lý rủi ro.
  • Mô hình Spiral có tính hệ thống giúp hợp lý hóa quy trình.
  • Là mô hình có tính tùy biến cao, phù hợp với từng khách hàng.

Về nhược điểm:

  • Khách hàng sẽ đánh giá từng giai đoạn khiến cho quá trình phát triển giảm tiến độ do khách hàng chậm phản hồi.
  • Những yêu cầu của khách hàng không được thay đổi trong giai đoạn thực thi kỹ thuật.
  • Số vòng lặp không xác định dẫn đến tình trạng vượt quá ngân sách hoặc không đáp ứng được thời hạn.

2.Mô hình phát triển phần mềm Agile

Mô hình Agile là mô hình phần mềm có tính lặp. Nguồn: agiletech.vn

Mô hình Agile là một phương pháp phát triển phần mềm dựa trên sự phát triển lặp đi lặp lại. Các giai đoạn trong mô hình được chia thành các bước lặp nhỏ và không trực tiếp liên quan tới việc lập kế hoạch dài hạn.

Mô hình phát triển phần mềm Agile gồm có 6 giai đoạn như sau:

  • Thu thập yêu cầu
  • Thiết kế
  • Xây dựng lặp đi lặp lại
  • Kiểm tra chất lượng
  • Triển khai
  • Đánh giá

Về ưu điểm:

  • Nhà phát triển phần mềm sẽ giao tiếp trực tiếp với khách hàng để đảm bảo chất lượng sản phẩm tốt nhất.
  • Bất cứ lúc nào cũng có thể thay đổi các tính năng trong dự án.
  • Tiết kiệm thời gian phát triển.
  • Thiết kế hiệu quả và đáp ứng yêu cầu kinh doanh.

Về nhược điểm:

  • Do thiếu các tài liệu chính thức nên mô hình Agile có thể tạo ra sự nhầm lẫn khi đưa ra quyết định quan trọng trong các giai đoạn phát triển.
  • Thiếu tài liệu phù hợp khiến cho quá trình bảo trì dự án đã hoàn thành sẽ trở nên khó khăn hơn.

Nên lựa chọn mô hình phát triển phần mềm nào?

  • Bằng việc phân tích và so sánh các mô hình phát triển phần mềm theo những tiêu chí ở trên thì có thể thấy mỗi loại mô hình đều có ưu, nhược điểm riêng.
  • Mỗi mô hình sẽ được áp dụng với từng dự án cụ thể và phù hợp nhất. Trong đó mô hình đi sau sẽ là sự cải tiến và phát triển hơn so với mô hình đi trước.
  • Sự thay đổi này giúp các nhà quản lý có sự lựa chọn đa dạng về sản phẩm, dự án. Tuy nhiên cần chọn mô hình thích hợp với tiến trình phát triển của phần mềm cùng yêu cầu của khách hàng.
  • Với những dự án nhỏ, kinh phí thấp cùng với các yêu cầu điều kiện rõ ràng từ đầu thì bạn nên lựa chọn mô hình thác nước. Còn nếu khách hàng muốn sử dụng các tính năng sản phẩm theo giai đoạn hoặc yêu cầu chưa rõ thì nhà quản lý có thể lựa chọn mô hình Scrum hoặc mô hình khác.

Qua những chia sẻ về các mô hình phần mềm phát triển thì bạn đọc đã học hỏi thêm thêm nhiều kiến thức bổ ích trong lĩnh vực công nghệ thông tin. Nếu bạn cần giải đáp bất cứ thắc mắc gì hãy để lại bình luận phía dưới bài viết nhé!

QUY TRÌNH PHÁT TRIỂN PHẦN MỀM VÀ CÁC MÔ HÌNH PHÁT TRIỂN PHẦN MỀM

Bài đăng này đã không được cập nhật trong 3 năm

Quy trình phát triển phần mềm là gì?

ĐẦU TƯ & KINH DOANH GÌ KIẾM BỘN TIỀN NĂM 2024 (p1)
ĐẦU TƯ & KINH DOANH GÌ KIẾM BỘN TIỀN NĂM 2024 (p1)

Nhóm mô hình phát triển phần mềm Agile

Những mô hình SDLC còn lại được lựa chọn làm nội dung bài viết thuộc vào nhóm Agile. Phương thức Agile hiện đang được hơn 70% doanh nghiệp sử dụng trong mảng phát triển phần mềm. Với đặc điểm chính nằm ở tốc độ làm việc, giao tiếp hiệu quả và phản hồi tích cực với góp ý của khách hàng.

Mỗi giai đoạn phát triển sản phẩm bằng phương pháp Agile sẽ diễn ra trong vòng vài tuần và cho ra một sản phẩm hoàn chỉnh. Các mô hình SDLC trong nhóm này tập trung vào việc hoàn thiện từng cấu kiện của phần mềm qua những khung thời gian đã định, ít tập trung vào việc ghi chép thông số, cấu hình mà hướng đến việc thử nghiệm nhiều hơn. Cách làm này cải thiện thời gian tạo ra phần mềm nhưng có thể khiến công đoạn bảo trì, chuyển giao tới bộ phận hỗ trợ lâu hơn, bởi vì không có ghi chép cụ thể cũng đồng nghĩa với việc phát hiện lỗi sẽ trở nên khó khăn.

Ở cuối giai đoạn phát triển một hay nhiều phần sản phẩm, đội ngũ kỹ sư và các nhà đầu tư sẽ cùng ngồi lại để đánh giá và trao đổi, tìm ra ưu tiên tiếp theo trọng dự án sao cho lợi nhuận từ phần mềm sẽ đạt mức tối ưu nhất, đồng thời đảm bảo sự hài lòng cho người tiêu dùng, phù hợp với trọng tâm kinh doanh.

Phần mềm được làm theo mô hình Agile thường tung ra những bản cập nhật rất nhanh chóng do đặc thù linh hoạt, dễ chỉnh sửa và bổ sung tính năng. Song điều này có thể khiến việc xác định chi phí, thời gian và nhân lực cần thiết phức tạp hơn và không có sự cố định.

Khi nào bạn nên áp dụng Mô Hình Phát Triển Phần Mềm Agile

  • Các dự án startup chú trọng vào phản hồi của người dùng
  • Dự án tầm trung mà chưa xác định yêu cầu và thông số cụ thể của phần mềm vì yêu cầu linh hoạt
  • Dự án lớn cho phép chia nhỏ thành các giai đoạn làm việc song song

Một số Mô Hình Phát Triển Phần Mềm phổ biến trong nhóm Agile sẽ được nhắc đến tiếp theo là Scrum, Extreme Programming và Kanban.

Lập trình Cực hạn là Mô Hình Phát Triển Phần Mềm cũng theo các vòng lặp bước kéo dài khoảng 1-2 tuần.

3.Scrum

Scrum có lẽ là mô hình Agile phổ biến nhất, với vòng lặp bước phát triển phần mềm (sprint) thường diễn ra từ 2 đến 4 tuần và kèm theo đó là việc lên kế hoạch, đánh giá các giai đoạn trước rất kỹ càng. Sửa đổi phần mềm là không thể một khi hoạt động sprint tiếp theo đã được đề ra.

3.Extreme Programming (XP)

Extreme Programming, hay Lập trình Cực hạn là Mô Hình Phát Triển Phần Mềm cũng theo các vòng lặp bước kéo dài khoảng 1-2 tuần. Các thay đổi phần mềm vẫn được phép thêm vào miễn là đội ngũ chưa đi vào bước hoàn thiện sau cùng. Mức độ linh hoạt này có thể làm phức tạp việc triển khai sản phẩm. Để hạn chế rủi ro, XP sẽ yêu cầu thêm các tác vụ lập trình đôi, kiểm tra tăng cường, cập nhật liên tục theo từng phần nhỏ để đảm bảo chất lượng.

3.Kanban

Trọng tâm của mô hình Kanban là việc lên kế hoạch chi tiết, còn vòng lặp lập trình, phát triển sản phẩm như đối với Scrum hay XP sẽ diễn ra theo quy mô nhỏ hơn, có thể tính theo đơn vị hàng ngày. Công cụ chính ở đây là chiếc bảng Kanban mô tả rõ các hoạt động, tiến độ và nhân sự liên quan trong dự án.

Bằng việc theo dõi sát sao kế hoạch làm việc, Kanban đảm bảo tính minh bạch trong sự phân công và giao tiếp, nhất là đối với những tác vụ quan trọng. Dự án đi theo hướng Kanban sẽ không có giai đoạn lên kế hoạch cụ thể riêng từ ban đầu nên mọi thay đổi có thể được thêm vào bất kỳ lúc nào.

Giao tiếp với khách hàng, nhà đầu tư cũng là một cốt lõi khác của Kanban. Mọi người có quyền theo dõi tiến độ theo ý muốn và việc họp sẽ diễn ra thường xuyên hơn. Đặc thù của Kanban sẽ phù hợp với những dự án hỗ trợ phát triển, cập nhật phần mềm lâu dài.

Các mô hình phát triển phần mềm phổ biến

Dưới đây là mô tả chi tiết của các mô hình phát triển phần mềm phổ biến, bao gồm đặc điểm, mô tả và áp dụng:

3.1 Mô hình Waterfall – Mô hình thác nước

  • Đặc điểm: Mô hình Waterfall là 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 phải hoàn thành hoàn toàn trước khi bắt đầu giai đoạn tiếp theo. Giai đoạn sau chỉ bắt đầu khi giai đoạn trước đó đã hoàn thành và kiểm tra.
  • Mô tả: Mô hình Waterfall thích hợp cho các dự án có yêu cầu cụ thể và ổn định từ đầu. Nó có cấu trúc rõ ràng, dễ dàng quản lý và đảm bảo các bước tiến trình tuần tự. Tuy nhiên, nó có thể gặp khó khăn khi phải đối mặt với sự thay đổi yêu cầu hay khi xuất hiện rủi ro không mong muốn.
  • Áp dụng: Mô hình Waterfall thích hợp cho các dự án nhỏ, có yêu cầu rõ ràng và ổn định, không đòi hỏi nhiều sự thay đổi trong quá trình phát triển. Nó được sử dụng chủ yếu trong các dự án phần mềm có mục tiêu và phạm vi đã được xác định rõ ràng từ đầu.

3.2 Mô hình Spiral – Mô hình xoắn ốc

  • Đặc điểm: Mô hình Spiral là mô hình linh hoạt, lặp lại và tập trung vào kiểm soát rủi ro. Nó kết hợp các khía cạnh của mô hình Waterfall và phương pháp Agile. Mô hình này bao gồm nhiều vòng lặp để kiểm soát rủi ro và đánh giá tiến độ.
  • Mô tả: Mô hình Spiral thích hợp cho các dự án lớn, phức tạp hoặc có nhiều rủi ro. Nó giúp định danh và quản lý rủi ro một cách cẩn thận từng bước một và cho phép điều chỉnh phạm vi và kế hoạch dự án trong quá trình phát triển.
  • Áp dụng: Mô hình Spiral thích hợp cho các dự án lớn, có yêu cầu thay đổi liên tục và cần giám sát rủi ro thường xuyên. Nó được sử dụng trong các dự án phần mềm có tính chất linh hoạt và cần phối hợp chặt chẽ giữa khách hàng và nhóm phát triển.

3.3 Mô hình Agile – Mô hình linh hoạt

  • Đặc điểm: Mô hình Agile là mô hình linh hoạt và tập trung vào việc tạo ra giá trị cho khách hàng một cách nhanh chóng. Phát triển được chia thành các chu kỳ ngắn, thường từ 1 đến 4 tuần, gọi là “Sprint” trong Scrum. Agile đề cao sự tương tác liên tục giữa các thành viên trong nhóm phát triển và khách hàng.
  • Mô tả: Mô hình Agile thích hợp cho các dự án có yêu cầu thay đổi liên tục hoặc có tính chất linh hoạt. Nó cho phép các chức năng quan trọng được triển khai trước, tạo ra giá trị ngay từ đầu và cho phép thay đổi yêu cầu trong suốt quá trình phát triển.
  • Áp dụng: Mô hình Agile phù hợp với các dự án phần mềm có quy mô nhỏ đến trung bình, yêu cầu thay đổi liên tục từ khách hàng và đòi hỏi sự tương tác tích cực giữa các thành viên trong nhóm phát triển và khách hàng.

3.4 Mô hình V-Model – Mô hình chữ V

  • Đặc điểm: Mô hình V-Model là mô hình phát triển mở rộng từ mô hình Waterfall. Các bài kiểm tra và kiểm thử được phát triển đồng thời và song song với từng giai đoạn phát triển. Điều này đảm bảo rằng từng bước phát triển có một bài kiểm tra hoặc kiểm thử tương ứng, giúp đảm bảo tích hợp và kiểm tra hiệu quả.
  • Mô tả: Mô hình V-Model thích hợp cho các dự án đòi hỏi tính chính xác và đáng tin cậy trong kiểm thử. Nó tạo mối liên kết mạnh mẽ giữa các giai đoạn phát triển và kiểm thử, giúp đảm bảo rằng dự án được kiểm tra toàn diện và chất lượng sản phẩm đạt được.
  • Áp dụng: Mô hình V-Model thích hợp cho các dự án phần mềm cần đảm bảo tính chính xác và đáng tin cậy trong quá trình kiểm thử. Nó được sử dụng trong các dự án có yêu cầu kiểm thử chi tiết và cần đảm bảo tích hợp hiệu quả giữa các bước phát triển và kiểm thử.

3.5 Mô hình Incremental – Mô hình tăng dần

  • Đặc điểm: Mô hình Incremental là 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. Nó cho phép phát triển dần dần và kiểm tra từng bước phát triển một cách độc lập.
  • Mô tả: Mô hình này thích hợp cho các dự án đòi hỏi sự tiến bộ từng bước và kiểm tra liên tục. Nó giúp giảm thiểu rủi ro và tiết kiệm thời gian và tài nguyên, vì chỉ cần tập trung vào các tính năng quan trọng và cần thiết.
  • Áp dụng: Mô hình Incremental phù hợp với các dự án có phạm vi lớn và phức tạp, được triển khai từ từ để đảm bảo sự ổn định và chất lượng của ứng dụng ngay từ các phiên bản đầu tiên.
CÔNG NGHỆ PHẦN MỀM - BUỔI 3 - CÁC MÔ HÌNH TIẾN TRÌNH PHÁT TRIỂN
CÔNG NGHỆ PHẦN MỀM – BUỔI 3 – CÁC MÔ HÌNH TIẾN TRÌNH PHÁT TRIỂN

Các mô hình phát triển phần mềm

Waterfall model – Mô hình thác nước

  • Mô tả

    • Mô hình thác nước là mô hình áp dụng theo tính tuần tự của các giai đoạn phát triển phần mềm
    • Có nghĩa là: giai đoạn sau chỉ được thực hiện tiếp khi giai đoạn trước đã kết thúc
    • Không được quay lại giai đoạn trước để xử lí các thay đổi trong yêu cầu
    • Đây được coi là mô hình phát triển phần mềm đầu tiên.
  • Áp dụng

    • Thường được áp dụng cho các dự án không thường xuyên bị thay đổi về yêu cầu.
  • Đặc điểm

    • Ưu điểm:

      • Dễ sử dụng, dễ tiếp cận
      • Các giai đoạn và hoạt động được xác định rõ ràng
      • Xác nhận ở từng giai đoạn, đảm bảo phát hiện sớm các lỗi
    • Nhược điểm:

      • Rất khó để quay lại giai đoạn nào khi nó đã kết thúc
      • Ít tính linh hoạt và phạm vi điều chỉnh của nó khá là khó khăn, tốn kém.
  • Ưu điểm:

Tham khảo thêm: https://melsatar.wordpress.com/2012/03/15/software-development-life-cycle-models-and-methodologies/

V- Shaped Model- Mô hình chữ V

  • Mô tả

    • Đây là mô hình mở rộng từ mô hình thác nước
    • Thay vì di chuyển xuống theo tuần tự các bước thì quy trình sẽ đi theo hình chữ V
  • Áp dụng

    • Yêu cầu phần mềm phải xác định rõ ràng
    • Công nghệ phần mềm và các công cụ phải được tìm hiểu kĩ
  • Đặc điểm

    • Ưu điểm:

      • Đơn giản dễ sử dụng
      • Phấn phối cụ thể theo mỗi giai đoạn
      • Thực hiện verification và validation sớm trong mỗi giai đoạn phát triển
    • Nhược điểm:

      • Phạm vi điều chỉnh khá là khó khăn và tốn kém.
  • Ưu điểm:

Tham khảo thêm: https://melsatar.wordpress.com/2012/03/15/software-development-life-cycle-models-and-methodologies/

Spiral Model – Mô hình xoắn ốc

  • Mô tả

    • Là mô hình kết hợp giữa các tính năng của mô hình prototyping và mô hình thác nước.
    • Mô hình xoắn ốc được ưa chuộng cho các dự án lớn, đắt tiền và phức tạp.
    • Mô hình này sử dụng nhiều những giai đoạn tương tự như mô hình thác nước, về thứ tự, plan, đánh giá rủi ro, …
  • Áp dụng

    • Thường đượ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
  • Đặc điểm

    • Ưu điểm:

      • Estimates (i.e. budget, schedule, etc.) trở nên thực tế hơn như là một quy trình làm việc, bởi vì những vấn đề quan trọng đã được phát hiện sớm hơn.
      • Có sự tham gia sớm của deverlopers
      • Quản lý rủi ro và phát triển hệ thống theo phase
    • Nhược điểm:

      • Chi phí cao và thời gian dài để có sản phẩm cuối cùng
      • Phải có kỹ năng tốt để đánh giá rủi ro và giả định.
  • Ưu điểm:

Tham khảo thêm: https://melsatar.wordpress.com/2012/03/15/software-development-life-cycle-models-and-methodologies/

Iterative Model- Mô hình tiếp cận lặp

Example:

Diagram:

  • 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
    • 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.
    • Quy trình phát triển được lặp đi lặp lại cho mỗi một version của sản phẩm trong mỗi chu kỳ.
  • Áp dụng

    • Yêu cầu của hề thống đã hoàn chỉnh, được xác định rõ ràng và dễ hiểu
    • Yêu cầu chính cần được xác định, và một số chi tiết có thể được đổi mới theo thời gian
  • Đặc điểm
    • Ư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
      • Nhận được phản hồi của người sử dụng từ những bản phác thảo
      • Thời gian làm tài liệu sẽ ít hơn so với thời gian thiết kế
    • Nhược điểm:

      • Mỗi giai đoạn lặp lại thì cứng nhắc
      • Tốn kiến trúc hệ thống hoặc thiết kế các vấn đề có thể phát sinh nhưng không phải tất cả đều xảy ra trong toàn bộ vòng đời.
  • Ưu điểm:

Tham khảo thêm: http://istqbexamcertification.com/what-is-incremental-model-advantages-disadvantages-and-when-to-use-it/https://melsatar.wordpress.com/2012/03/15/software-development-life-cycle-models-and-methodologies/

Incremental Model – Mô hình tăng trưởng

Example:

Diagram:

  • Mô tả

    • Trong mô hình này thì 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.
  • Áp 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
    • Có nhu cầu về sản phẩm sớm
  • Đặc điểm

    • Ưu điềm:

      • Phần mềm làm việc một cách nhanh chóng trong suốt vòng đời phát triền
      • Mô hình này linh hoạt hơn, ít tốn kém hơn để 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 với sự lặp lại nhỏ hơn
    • Nhược điểm:

      • Cần lập plan và thiết kế tốt
      • Cần một định nghĩa rõ ràng và đầy đủ của toàn bộ hệ thống trước khi nó có thể được chia nhỏ và được xây dựng từng bước
      • Tổng chi phí là cao hơn so với thác nước.
  • Ưu điềm:

Tham khảo thêm: https://melsatar.wordpress.com/2012/03/15/software-development-life-cycle-models-and-methodologies/

RAD Model (Rapid Application Development)

  • Mô tả

    • Là một dạng của incremental model
    • Trong mô hình RAD các thành phần hoặc chức năng được phát triển song song như thể chúng là các dự án nhỏ
    • Việc phát triển này theo thời gian nhất định, cung cấp và lắp ráp thành một nguyên mẫu làm việc
    • Điều này có thể nhanh chóng đưa ra một cái gì đó cho khách hàng để xem và sử dụng và cung cấp thông tin phản hồi liên quan đến việc cung cấp và yêu cầu của họ.
  • Áp dụng

    • RAD nên được sử dụng khi có nhu cầu để tạo ra một hệ thống có Modularized trong khoảng thời gian 2-3 tháng.
    • Nên được sử dụng khi đã có sẵn designer cho model và chi phí cao
    • Đặc điểm:
    • Ư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:

      • Cần có một team giỏi để xác định yêu cầu phần mềm
      • Chỉ những hệ thống có module mới sứ dụng được mô hình này
      • Yêu cầu về dev/ design phải có nhiều kinh nghiệm
      • Phụ thuộc rất nhiều vào kỹ năng model

Tham khảo thêm Quy trình phát triển phần mềm: http://istqbexamcertification.com/what-is-rad-model-advantages-disadvantages-and-when-to-use-it/

Agile Model

  • Mô tả

    • Dựa trên mô hình iterative and incremental
    • Các yêu cầu và giải pháp phát triển dựa trên sự kết hợp của các function
  • Áp dụng

    • Nó có thể được sử dụng với bất kỳ loại hình dự án nào, nhưng nó cần sự tham gia và tính tương tác của khách hàng. Ngoài ra, nó có thể được sử dụng khi khách hàng yêu cầu chức năng sẵn sàng trong khoảng thời gian ngắn ( 3 tuần )
  • Đặc điểm

    • Ưu điểm:

      • Giảm thời gian cần thiết để tận dụng một số tính năng của hệ thống
      • Kết quả cuối cùng là phần mềm chất lượng cao trong thời gian ít nhất có thể và sự hài lòng của khách hàng
    • Nhược điểm:

      • Phụ thuộc vào kỹ năng của người phát triển phần mềm Scalability
      • Tài liệu được thực hiện ở giai đoạn sau
      • Cần một team có kinh nghiệm Needs special skills for the team.
  • Ưu điểm:

Tham khảo thêm Quy trình phát triển phần mềm: http://istqbexamcertification.com/what-is-rad-model-advantages-disadvantages-and-when-to-use-it/

Scrum (Scrum là một quy trình phát triển phần mềm thuộc họ agile)

Mô tả: Scrum là một phương pháp linh hoạt (agile), vì thế nó tuân thủ các nguyên tắc của Agile Manifesto (xem thêm Tuyên ngôn Agile). Ngoài ra Scrum hoạt động dựa trên ba giá trị cốt lõi, còn gọi là Ba chân của Scrum bao gồm Minh bạch, Thanh tra và Thích nghi.

  • Scrum là gì? Cùng hiểu rõ về Scrum
  • 18 công cụ quản lý dự án theo Agile
  • Những điểm khác biệt giữa Kanban và Scrum
  • Agile và văn hóa Việt Nam

1.2 Mô hình xoắn ốc

Mô tả

  • Là mô hình kết hợp giữa các tính năng của mô hình prototyping và mô hình thác nước.
  • Mô hình xoắn ốc được ưa chuộng cho các dự án lớn, đắt tiền và phức tạp.
  • Mô hình này sử dụng những giai đoạn tương tự như mô hình thác nước, về thứ tự, plan, đánh giá rủi ro, …

Phân tích mô hình

Các pha trong quy trình phát triển xoắn ốc bao gồm:

  • Objective identification- Thiết lập mục tiêu: xác định mục tiêu, đối tượng cho từng pha của dự án.
  • Alternate evaluation- Đánh giá và giảm thiểu rủi ro: đánh giá rủi ro và thực hiện các hành động để giảm thiểu rủi ro.
  • Product development- Phát triển sản phẩm: Lựa chọn mô hình phù hợp để phát triển hệ thống.
  • Next phase planning- Lập kế hoạch: đánh giá dự án và lập kế hoạch cho pha tiếp theo.

Ứng dụng

Mô hình này thường đượ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.

Ưu điểm

  • Tốt cho các hệ phần mềm quy mô lớn.
  • Dễ kiểm soát các mạo hiểm ở từng mức tiến hóa.
  • Đánh giá thực tế hơn như là một quy trình làm việc, bởi vì những vấn đề quan trọng đã được phát hiện sớm hơn.

Nhược điểm

  • Manager cần có kỹ năng tốt để quản lý dự án, đánh giá rủi ro kịp thời.
  • Chi phí cao và mất nhiều thời gian để hoàn thành dự án.
  • Phức tạp và không thích hợp với các dự án nhỏ và ít rủi ro.
  • Yêu cầu thay đổi thường xuyên dẫn đến lặp vô hạn.
  • Chưa được dùng rộng rãi.
Quy trình phát triển, sản xuất phần mềm tại công ty công nghệ như thế nào?
Quy trình phát triển, sản xuất phần mềm tại công ty công nghệ như thế nào?

Mô hình phát triển phần mềm là gì?

  • Là tập hợp các kỹ thuật và phương pháp để tạo ra phần mềm máy tính hay còn gọi là quy trình phát triển phần mềm. Nó được hiểu là phương pháp để tạo ra phần mềm và mô hình phát triển ảnh hưởng đến chất lượng của phần mềm.
  • Mục đích của mô hình phát triển đó là tạo ra những sản phẩm chất lượng với chi phí thấp nhất. Điều này giúp tiết kiệm thời gian cho người lập trình trong việc đáp ứng yêu cầu của khách hàng.
  • Các mô hình phát triển phần mềm mang đến một framework giúp quản lý sự phát triển của hệ thống thông tin. Những framework này gồm phát triển chương trình cùng các công cụ cần thiết để hỗ trợ quá trình phát triển.
  • Hiện nay có nhiều mô hình phát triển và mỗi loại lại có cách triển khai công việc khác nhau. Người kỹ sư và lập trình viên cần hiểu rõ đặc điểm của từng loại thì mới có thể áp dụng. Đồng thời tạo ra các phần mềm chất lượng.

Mô hình phát triển phần mềm mang lại lợi ích gì?

Mô hình phát triển phần mềm mang lại nhiều lợi ích quan trọng cho quá trình phát triển và triển khai phần mềm. Dưới đây là một số lợi ích chi tiết của việc sử dụng mô hình phát triển phần mềm:

Tổ chức và quản lý

Mô hình phát triển phần mềm cung cấp một khuôn khổ cụ thể và có cấu trúc để tổ chức và quản lý quá trình phát triển phần mềm. Nó định rõ các bước, pha và hoạt động cần thiết để hoàn thành dự án phần mềm. Nhờ đó, các thành viên trong nhóm phát triển có thể hiểu rõ công việc của mình, phân công công việc một cách rõ ràng và phối hợp hiệu quả với nhau.

Đáp ứng yêu cầu

Đảm bảo rằng quá trình xác định yêu cầu được thực hiện cẩn thận từ đầu. Điều này giúp sản phẩm cuối cùng sẽ đáp ứng được các yêu cầu và nhu cầu của khách hàng. Việc xác định yêu cầu đầy đủ và rõ ràng từ đầu cũng tránh được các thay đổi yêu cầu không cần thiết và tiết kiệm thời gian, công sức, tài nguyên.

Kiểm soát rủi ro

Mô hình phát triển phần mềm thường bao gồm các bước kiểm thử và đánh giá tiến độ, giúp nhận biết và quản lý rủi ro trong quá trình phát triển. Điều này giúp tránh các vấn đề và sai sót không mong muốn, và giúp đảm bảo dự án được thực hiện một cách ổn định và hiệu quả.

Tiết kiệm thời gian và tài nguyên

Mô hình phát triển phần mềm giúp tối ưu hóa việc sử dụng thời gian và tài nguyên. Việc sắp xếp công việc theo các giai đoạn và pha cho phép nhóm phát triển tiến hành công việc một cách có hệ thống và tuần tự. Điều này giúp tránh sự rối loạn và lãng phí, từ đó giảm thiểu chi phí không cần thiết và tăng hiệu quả trong việc sử dụng tài nguyên.

Đảm bảo chất lượng

Các mô hình phát triển phần mềm thường bao gồm các bước kiểm thử và đảm bảo chất lượng. Việc thực hiện kiểm thử thường xuyên giúp phát hiện và sửa chữa lỗi ngay từ khi chúng xuất hiện, giúp đảm bảo rằng sản phẩm cuối cùng có chất lượng tốt và đáp ứng yêu cầu của khách hàng.

Dễ dàng duy trì và mở rộng

Mô hình phát triển phần mềm thường cung cấp sự cân nhắc và chi tiết trong việc xây dựng kiến trúc và thiết kế phần mềm. Điều này giúp dễ dàng duy trì, sửa đổi và mở rộng phần mềm sau khi hoàn thành. Việc có kiến trúc và thiết kế rõ ràng từ đầu giúp giảm thiểu sự rối loạn và rủi ro khi thực hiện các thay đổi và mở rộng phần mềm sau này.

>>> Tham khảo thêm các phương pháp kiểm thử phần mềm:

Black box testing là gì? Các phương pháp được sử dụng trong Black box testing

End-to-end testing là gì? Các bước thực hiện end-to-end testing

Load testing là gì? Các công cụ hỗ trợ load testing

Performance testing là gì? Quy trình các bước thực hiện performance testing

Stress testing là gì? Phân biệt stress testing và load testing

TÌM HIỂU VỀ AGILE - QUY TRÌNH SCRUM - ĐỨC GIANG TESTER
TÌM HIỂU VỀ AGILE – QUY TRÌNH SCRUM – ĐỨC GIANG TESTER

Mô hình phát triển phần mềm là gì?

Mô hình phát triển phần mềm là một quy trình hoặc khuôn khổ hướng dẫn cách xây dựng và triển khai phần mềm một cách có tổ chức. Nó bao gồm các bước, pha, hoạt động và vai trò của các thành viên trong nhóm phát triển để đảm bảo việc phát triển phần mềm thành công và đáp ứng được yêu cầu của khách hàng.

Mô hình phát triển phần mềm giúp quản lý dự án, phân chia công việc, xác định các bước tiến trình và đảm bảo rằng sản phẩm phần mềm cuối cùng có chất lượng tốt và đáp ứng yêu cầu của khách hàng. Có nhiều mô hình phát triển phần mềm phổ biến được sử dụng trong ngành công nghiệp phần mềm, bao gồm:

  • Mô hình Waterfall: 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ô hình Spiral: Mô hình linh hoạt kết hợp các khía cạnh của mô hình Waterfall và phương pháp Agile.
  • Mô hình Agile: Mô hình linh hoạt, tập trung vào việc chia nhỏ quá trình phát triển thành các chu kỳ ngắn và linh hoạt, cho phép thay đổi yêu cầu và phản hồi nhanh chóng từ khách hàng.
  • Mô hình V-Model: Mô hình Waterfall mở rộng, đồng thời 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.
  • Mô hình Incremental: 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.

Xem thêm bài viết:

– Hướng dẫn cài đặt Web server Apache trên CentOS 7

– Cài đặt cấu hình cân bằng tải với HaProxy và Docker

– Tìm hiểu về ràng buộc (Constraint) trong SQL

Mô hình Scrum

Scrum là một quy trình phát triển phần mềm thuộc họ agile.

Là một quy trình phát triển phần mềm theo mô hình linh hoạt (agile). Với nguyên tắc chủ đạo là chia nhỏ phần mềm cần sản xuất ra thành các phần nhỏ để phát triển (các phần nhỏ này phải đọc lập và Release được), lấy ý kiến khách hàng và thay đổi cho phù hợp ngay trong quá trình phát triển để đảm bảo sản phẩm release đáp ứng những gì khách hàng mong muốn. Scrum chia dự án thành các vòng lặp phát triển gọi là các sprint. Mỗi sprint thường mất 2- 4 tuần (30 ngày) để hoàn thành. Nó rất phù hợp cho những dự án có nhiều sự thay đổi và yêu cầu tốc độ cao.

Ưu điểm

Một người có thể làm nhiều việc ví dụ như dev có thể test Phát hiện lỗi sớm hơn rất nhiều so với các phương pháp truyền thống Khách hàng nhanh chóng thấy được sản phẩm qua đó đưa ra phản hồ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 là 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 khi có quá nhiều yêu cầu thay đổi từ khách hàng. Vai trò của PO (Product Owner) 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.

All rights reserved

Vòng đời phát triển phần mềm là quy trình lập kế hoạch, thiết kế, phát triển và triển khai phần mềm chất lượng cao với chi phí thấp nhất. Để đạt được mục tiêu này, các nhà phát triển cần sử dụng các mô hình để tạo ra những phần mềm để phù hợp với yêu cầu của khách hàng. Hiện nay có khá nhiều loại mô hình này, vậy mô hình phát triển phần mềm là gì? Làm sao để chọn được loại mô hình phù hợp? Hãy cùng tìm hiểu về mô hình này ngay qua bài viết dưới đây!

Mô hình phát triển phần mềm thác nước và mô hinh chữ V
Mô hình phát triển phần mềm thác nước và mô hinh chữ V

Tổng quan về quy trình phát triển phần mềm

  • Một quy trình tốt và hợp lí luôn tạo ra những sản phẩm đạt tiêu chuẩn. Nó giúp tương tác hóa các hoạt động và yếu tố với nhau một các nhịp nhàng, đem lại hiệu quả.
  • Có thể cho rằng quy trình phần mềm đem lại chất lượng, năng suất, giá thành phần phềm, từ đó tăng tính cạnh tranh và đem lại lợi nhuận cao cho doanh nghiệp.

Khái niệm Quy trình phát triển phần mềm

Quy trình phát triển phần mềm là một tập hợp các hoạt động tổ chức mà mục đích của chúng là xây dựng và phát triển phần mềm.

  • Những câu hỏi được đặt ra ở đâu là:

    • Nhân sự: Ai sẽ làm? Ai làm gì?
    • Thời gian: Khi nào làm? Làm mất bao nhiêu thời gian?
    • Phương pháp: Làm như thế nào?
    • Công cụ: Dùng công cụ gì để làm công việc này?
    • Chi phí: Chi phí bỏ ra bao nhiêu? Thu về bao nhiêu? (ước tính)
    • Mục tiêu: Mục tiêu hướng đến là gì?

      • Mỗi loại hệ thống khác nhau thì cần những quy trình phát triển khác nhau.

Các hoạt động cơ bản của quy trình phát triển phần mềm

Có 4 thao tác là nền tảng của hầu hết các quy trình phát triển phần mềm:

  • Đặc tả phần mềm: Định nghĩa được các chức năng, điều kiện hoạt động của phần mềm.
  • Quy trình phát triển phần mềm: Là quá trình xây dựng các đặc tả.
  • Đánh giá phần mềm: Phầm mềm phải được đánh giá để chắc chắn rằng ít nhất có thể thực hiện những gì mà tài liệu đặc tả yêu cầu.
  • Tiến hóa phần mềm: Đây là quá trình hoàn thiện các chức năng cũng như giao diện để ngày càng hoàn thiện phần mềm cũng như các yêu cầu đưa ra từ phía khách hàng.

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.

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.

All rights reserved

Waterfall model – Mô hình thác nước

  • Mô tả

    • Mô hình thác nước là mô hình áp dụng theo tính tuần tự của các giai đoạn phát triển phần mềm
    • Có nghĩa là: giai đoạn sau chỉ được thực hiện tiếp khi giai đoạn trước đã kết thúc
    • Không được quay lại giai đoạn trước để xử lí các thay đổi trong yêu cầu
    • Đây được coi là mô hình phát triển phần mềm đầu tiên.
  • Áp dụng

    • Thường được áp dụng cho các dự án không thường xuyên bị thay đổi về yêu cầu.
  • Đặc điểm

    • Ưu điểm:

      • Dễ sử dụng, dễ tiếp cận
      • Các giai đoạn và hoạt động được xác định rõ ràng
      • Xác nhận ở từng giai đoạn, đảm bảo phát hiện sớm các lỗi
    • Nhược điểm:

      • Rất khó để quay lại giai đoạn nào khi nó đã kết thúc
      • Ít tính linh hoạt và phạm vi điều chỉnh của nó khá là khó khăn, tốn kém.
  • Ưu điểm:

V- Shaped Model- Mô hình chữ V

  • Mô tả

    • Đây là mô hình mở rộng từ mô hình thác nước
    • Thay vì di chuyển xuống theo tuần tự các bước thì quy trình sẽ đi theo hình chữ V
  • Áp dụng

    • Yêu cầu phần mềm phải xác định rõ ràng
    • Công nghệ phần mềm và các công cụ phải được tìm hiểu kĩ
  • Đặc điểm

    • Ưu điểm:

      • Đơn giản dễ sử dụng
      • Phấn phối cụ thể theo mỗi giai đoạn
      • Thực hiện verification và validation sớm trong mỗi giai đoạn phát triển
    • Nhược điểm:

      • Phạm vi điều chỉnh khá là khó khăn và tốn kém.
  • Ưu điểm:

Spiral Model – Mô hình xoắn ốc

  • Mô tả

    • Là mô hình kết hợp giữa các tính năng của mô hình prototyping và mô hình thác nước.
    • Mô hình xoắn ốc được ưa chuộng cho các dự án lớn, đắt tiền và phức tạp.
    • Mô hình này sử dụng nhiều những giai đoạn tương tự như mô hình thác nước, về thứ tự, plan, đánh giá rủi ro, …
  • Áp dụng

    • Thường đượ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
  • Đặc điểm

    • Ưu điểm:

      • Estimates (i.e. budget, schedule, etc.) trở nên thực tế hơn như là một quy trình làm việc, bởi vì những vấn đề quan trọng đã được phát hiện sớm hơn.
      • Có sự tham gia sớm của deverlopers
      • Quản lý rủi ro và phát triển hệ thống theo phase
    • Nhược điểm:

      • Chi phí cao và thời gian dài để có sản phẩm cuối cùng
      • Phải có kỹ năng tốt để đánh giá rủi ro và giả định.
  • Ưu điểm:

Iterative Model- Mô hình tiếp cận lặp

Example:

Diagram:

  • 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
    • 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.
    • Quy trình phát triển được lặp đi lặp lại cho mỗi một version của sản phẩm trong mỗi chu kỳ.
  • Áp dụng

    • Yêu cầu của hề thống đã hoàn chỉnh, được xác định rõ ràng và dễ hiểu
    • Yêu cầu chính cần được xác định, và một số chi tiết có thể được đổi mới theo thời gian
  • Đặc điểm

    • Ư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
      • Nhận được phản hồi của người sử dụng từ những bản phác thảo
      • Thời gian làm tài liệu sẽ ít hơn so với thời gian thiết kế
    • Nhược điểm:

      • Mỗi giai đoạn lặp lại thì cứng nhắc
      • Tốn kiến trúc hệ thống hoặc thiết kế các vấn đề có thể phát sinh nhưng không phải tất cả đều xảy ra trong toàn bộ vòng đời.
  • Ưu điểm:

Incremental Model – Mô hình tăng trưởng

Example:

Diagram:

  • Mô tả

    • Trong mô hình này thì 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.
  • Áp 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
    • Có nhu cầu về sản phẩm sớm
  • Đặc điểm

    • Ưu điềm:

      • Phần mềm làm việc một cách nhanh chóng trong suốt vòng đời phát triền
      • Mô hình này linh hoạt hơn, ít tốn kém hơn để 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 với sự lặp lại nhỏ hơn
    • Nhược điểm:

      • Cần lập plan và thiết kế tốt
      • Cần một định nghĩa rõ ràng và đầy đủ của toàn bộ hệ thống trước khi nó có thể được chia nhỏ và được xây dựng từng bước
      • Tổng chi phí là cao hơn so với thác nước.
  • Ưu điềm:

RAD Model (Rapid Application Development)

  • Mô tả

    • Là một dạng của incremental model
    • Trong mô hình RAD các thành phần hoặc chức năng được phát triển song song như thể chúng là các dự án nhỏ
    • Việc phát triển này theo thời gian nhất định, cung cấp và lắp ráp thành một nguyên mẫu làm việc
    • Điều này có thể nhanh chóng đưa ra một cái gì đó cho khách hàng để xem và sử dụng và cung cấp thông tin phản hồi liên quan đến việc cung cấp và yêu cầu của họ.
  • Áp dụng

    • RAD nên được sử dụng khi có nhu cầu để tạo ra một hệ thống có Modularized trong khoảng thời gian 2-3 tháng.
    • Nên được sử dụng khi đã có sẵn designer cho model và chi phí cao
    • Đặc điểm:
    • Ư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:

      • Cần có một team giỏi để xác định yêu cầu phần mềm
      • Chỉ những hệ thống có module mới sứ dụng được mô hình này
      • Yêu cầu về dev/ design phải có nhiều kinh nghiệm
      • Phụ thuộc rất nhiều vào kỹ năng model

Agile Model

  • Mô tả

    • Dựa trên mô hình iterative and incremental
    • Các yêu cầu và giải pháp phát triển dựa trên sự kết hợp của các function
  • Áp dụng

    • Nó có thể được sử dụng với bất kỳ loại hình dự án nào, nhưng nó cần sự tham gia và tính tương tác của khách hàng. Ngoài ra, nó có thể được sử dụng khi khách hàng yêu cầu chức năng sẵn sàng trong khoảng thời gian ngắn ( 3 tuần )
  • Đặc điểm

    • Ưu điểm:

      • Giảm thời gian cần thiết để tận dụng một số tính năng của hệ thống
      • Kết quả cuối cùng là phần mềm chất lượng cao trong thời gian ít nhất có thể và sự hài lòng của khách hàng
    • Nhược điểm:

      • Phụ thuộc vào kỹ năng của người phát triển phần mềm Scalability
      • Tài liệu được thực hiện ở giai đoạn sau
      • Cần một team có kinh nghiệm Needs special skills for the team.
  • Ưu điểm:

Scrum (Scrum là một quy trình phát triển phần mềm thuộc họ agile)

Mô hình phát triển đóng vai trò quan trọng trong quá trình xây dựng và triển khai các ứng dụng và dự án phần mềm. Trong bài viết này, chúng ta sẽ tìm hiểu về các mô hình phát triển phần mềm phổ biến nhất và những ưu điểm của từng mô hình. Bạn sẽ hiểu rõ hơn về cách mỗi mô hình hoạt động và tại sao chúng được áp dụng trong cộng đồng phát triển phần mềm.

Scrum hoạt động như thế nào?
Scrum hoạt động như thế nào?

Các mô hình phát triển phần mềm và loại dự án phù hợp tương đương

2.Waterfall

Waterfall, hay “thác nước”, như cái tên gợi ra ám chỉ đến phương thức chú trọng vào sự theo sát các quy trình: phân tích, thiết kế, lập trình, thử nghiệm và triển khai. Mỗi bước sẽ được làm và ghi chép cẩn thận, một khi đã chuyển giai đoạn thì không thể quay lại. Sản phẩm cũng chỉ có thể được thử nghiệm trong các giai đoạn sau cùng của dự án, từ đó có thể dẫn đến nhiều rủi ro và sự khó đoán về chất lượng phần mềm. Công đoạn sửa lỗi cũng vì vậy mà tốn nhiều chi phí hơn.

Khi nào bạn nên dùng Waterfall

  • Các dự án nhỏ, hoặc trung bình với thông số và công năng đề ra rõ ràng (những doanh nghiệp nhỏ)
  • Các dự án có ngân sách và thời gian cố định (dự án cho chính phủ)
  • Các dự án cần tuân theo nhiều quy định nghiêm ngặt (dự án y tế)
  • Dự án sử dụng những công nghệ lập trình phổ biến, dễ nắm bắt

2.Mô Hình Phát Triển Phần Mềm V-model (Validation & Verification)

Đây là một mô hình tuyến tính với mỗi giai đoạn dự án đều có một bước kiểm tra sản phẩm. Chất lượng phần mềm rất được chú trọng, tuy nhiên V-model cũng là một trong những phương thức tốn kém và đòi hỏi thời gian nhất. Dù việc phát hiện lỗi có thể thực hiện dễ dàng, đưa thêm những bản sửa xen kẽ trong quá trình đó vẫn là một việc khó khăn. Và giống như Waterfall, các thông số cần thiết cho dự án sẽ được thu thập ở thời gian đầu và không thể thay đổi.

Khi nào bạn nên dùng V-model

Những dự án có yêu cầu nghiêm ngặt về yếu tố thời gian và chất lượng, độ chính xác (phần mềm y tế, hệ thống quản lý hàng không).

2.Incremental & Iterative

Mô Hình Phát Triển Phần Mềm Incremental & Iterative sử dụng những “cấu kiện”, hay module phần mềm thêm vào nhau qua mỗi giai đoạn phát triển.Trình tự này có thể được ví như những bậc thang xếp chồng bước và tạo thêm các lớp cập nhật cần thiết cho sản phẩm. Công việc lập trình diễn ra theo mô hình cuốn chiếu như vậy giúp đẩy nhanh tốc độ phần mềm có thể ra đến thị trường, tuy nhiên nếu lặp bước quá nhiều có thể dẫn đến phát sinh thời gian và chi phí không cần thiết.

Với Mô Hình Phát Triển Phần Mềm này, từng cấu kiện của phần mềm sẽ được chia nhỏ, tập trung phát triển, mỗi phiên bản sau là sự cải tiến của bản trước và vẫn đảm bảo duy trì được cốt lõi thiết kế. Khi làm việc theo từng phần như vậy, dự án không yêu cầu phải có đủ thông số ngay từ lúc lên kế hoạch và người làm hay khách hàng đều có thể đưa ra một số thay đổi nhỏ xen kẽ.

Khi nào bạn nên dùng Mô Hình Phát Triển Phần Mềm Incremental & Iterative

Những dự án lớn quan trọng nhưng vẫn cần sự linh động trong thiết kế (dịch vụ web, thanh toán trực tuyến)

Trọng tâm của mô hình xoắn ốc là đánh giá rủi ro, yêu cầu người làm phải tương tác với nhóm chuyên gia có kinh nghiệm.

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

Trọng tâm của mô hình xoắn ốc là đánh giá rủi ro, yêu cầu người làm phải tương tác với nhóm chuyên gia có kinh nghiệm. Quá trình áp dụng phương pháp này có thể diễn ra trong vòng 6 tháng với 4 hoạt động chính: lên kế hoạch, phân tích rủi ro, tạo nguyên mẫu, đánh giá từng phần của cấu kiện. Tùy vào quy trình “vòng xoắn” được lặp lại trong bao lâu mà thời gian dự án sẽ ảnh hưởng theo.

Mô hình phát triển phần mềm này cần nhiều tương tác giữa nhóm chuyên môn và kỹ sư nên sự can thiệp của khách hàng cũng sẽ nhiều hơn đáng kể. Họ có quyền tham gia vào giai đoạn lên ý tưởng, nhận định chất lượng công việc qua mỗi lần giám sát nguyên mẫu. Tất nhiên khi nhóm kỹ sư đang phát triển phần mềm thì khách hàng vẫn không được can thiệp,

Khi nào bạn nên dùng Spiral

  • Những dự án có yêu cầu phức tạp
  • Dự án phát triển (R&D) hướng đến đưa ra giải pháp, sản phẩm mới cho doanh nghiệp

2.Rational Unified Process (RUP)

RUP là sự kết hợp giữa những framework quản lý lập trình theo phương pháp tuyến tính và lặp bước. Tại đây Mô Hình Phát Triển Phần Mềm được chia làm 4 giai đoạn: lên ý tưởng, hoàn thiện, triển khai và chuyển dịch. Các bước ngoại trừ phần lên ý tưởng thường được làm theo vài hướng song song.để đạt nhiều giải pháp linh hoạt trong một thời gian ngắn. Tuy nhiên RUP vẫn chưa có khả năng tùy biến cao như nhóm mô hình Agile mà bài viết sẽ đề cập ngay sau đây (Scrum, Kanban, XP, v.v.).

Khi nào bạn nên dùng RUP

Dự án lớn và có tính chất phức tạp, được nghiên cứu, phân tích cụ thể và yêu cầu cho ra những phần mềm chất lượng cao trong thời gian ngắn

TÌm hiểu về Mô hình Scrum

Khái niệm Scrum

Là một quy trình phát triển phần mềm theo mô hình linh hoạt (agile). Với nguyên tắc chủ đạo là chia nhỏ phần mềm cần sản xuất ra thành các phần nhỏ để phát triển (các phần nhỏ này phải đọc lập và Release được), lấy ý kiến khách hàng và thay đổi cho phù hợp ngay trong quá trình phát triển để đảm bảo sản phẩm release đáp ứng những gì khách hàng mong muốn. Scrum chia dự án thành các vòng lặp phát triển gọi là các sprint. Mỗi sprint thường mất 2- 4 tuần (30 ngày) để hoàn thành. Nó rất phù hợp cho những dự án có nhiều sự thay đổi và yêu cầu tốc độ cao.

Một số đặc điểm của Quy trình phát triển phần mềm SCRUM

    • Scrum (hay agile nói chung) được xếp vào nhóm “Feature-driven development”. Sản phầm được phát triển theo tính năng, chứ không phát triển sản phẩm theo kiến trúc hệ thống.

Scrum khác với các mô hình Agile ở chỗ nó là mô hình hướng khách hàng (Customer oriented), vai trò của khách hàng trong việc đánh giá sản phẩm rất quan trọng. Chỉ sau mỗi sprint (2-4 tuần) khách hàng sẽ thấy được sự thay đổi của sản phẩm của mình qua đó đưa ra phản hồi sớm để định hướng -> Thích ứng nhanh với sự thay đổi yêu cầu.

    • Scrum giảm thiểu tài nguyên dành cho việc quản lý mà tập trung nhiều hơn cho những công việc liên quan trực tiếp đến việc làm ra sản phẩm. Bằng cách giảm vai trò quản lý (PM) bằng cách đẩy việc quản lý tới từng người.
    • Giảm thời gian dành cho việc viết tài liệu bằng cách tăng thời gian trao đổi trực tiếp. Thông thường khi estimate công việc, thì team estimate cả thời gian dành cho communication để hoàn thành task đó nữa.
    • Tập trung vào sản phẩm, sản phẩm mới là đích cuối cùng chứ không phải qui trình.

Tham khảo thêm: Tuyển dụng lập trình Scrum lương cao tại Topdev.

Ưu điểm, nhược điểm của mô hình Scrum

ƯU ĐIỂM:
  • Một người có thể làm nhiều việc ví dụ như dev có thể test
  • Phát hiện lỗi sớm hơn rất nhiều so với các phương pháp truyền thống
  • Khách hàng nhanh chóng thấy được sản phẩm qua đó đưa ra phản hồ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 là 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 khi có quá nhiều yêu cầu thay đổi từ khách hàng.
  • Vai trò của PO (Product Owner) 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.

Các nhân tố cấu tạo lên 1 quy trình phát triển phần mềm trong Scrum

Một cách đơn giản có 03 thành tố quan trọng cấu thành nên SCRUM: Tổ chức (Organization), Qui trình (Process), Tài liệu (Atifacts). Trong mỗi thành tố có 03 thành tố con. Như vậy, chúng ta chỉ cần hiểu và áp dụng được 9 thành tố này là có thể áp dụng 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): 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 (Họp để hoạch định cho mỗi giai đoạn)
      • Sprint Review (Họp để tổng kết cho mỗi giai đoạn)
      • Daily Scrum Meeting (Họp review hàng ngày)
4.1 Tổ chức của dự án(Organization)
  • 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, họ sẽ tham gia 1 phần vào quy trình phát triển phần mềm. 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, giúp đỡ cho Team thực hiện công việc phát triển sản phẩm một cách tốt nhất.

  • Development Team (Nhóm phát triển)

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. Đồng thời nhóm cũng 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. Nếu dự án lớn chúng ta cần chia ra thành các dự án nhỏ.

4.2 Tài liệu (Atifacts)
  • 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 trong quy trình phát triển phần mềm. Danh sách này do Product Owner quyết định. Nó thường xuyên được cập nhật để đáp ứng được nhu cầu thay đổi của khách hàng cũng như các điều kiện của dự án.

  • Sprint Backlog

Sprint là một giai đoạn phát triển trong quá trình phát triển sản phẩm, nó được khuyến khích có chiều dài từ 2 – 4 tuần. Mỗi Sprint được xác định bằng thời gian phát triển, danh sách các chức năng phát triển (Sprint Backlog).

Mỗi sprint phải Release được sản phẩm để đảm bảo lấy được ý kiến khách hàng, qua được các qui trình phát triển của sản phẩm nhằm rút kinh nghiệm và tránh sự cố sau này.

Sprint Backlog là danh sách chức năng phát triển trong Sprint, nó được quyết định bởi cuộc họp Sprint Planning. Sprint Backlog là các chức năng được chọn từ Product Backlog dựa trên mức độ ưu tiên và khả năng của team phát triển.

  • Estimation (ước lượng)

Trong SCRUM thì các thành viên của Team sẽ tự lựa chọn Task cho mình và ước lượng thời gian phát triển dự kiến và chịu trách nhiệm với ước lượng này. Sau khi hoàn thành sẽ cập nhật vào bảng Sprint Backlog.

4.3 Qui trình(Process)
  • Sprint Planning meeting (Họp lập kế hoạch cho mỗi Sprint)

Như chúng ta đã biết ở trên Sprint là một giai đoạn phát triển có thời gian từ 2-4 tuần. Để chuẩn bị cho mỗi Sprint team cần phải họp để xác định những chức năng nào (story) sẽ phát triển trong giai đoạn này (sprint backlog), kết quả đầu ra dự kiến (Goal, kết quả Release), Estimate (ước lượng ai làm việc gì) và thảo luận các giải pháp. Tất cả được ghi thành biên bản để có cơ sở thực hiện và Review sau này.

  • Sprint Review

Là cuộc họp để đánh giá lại kết quả thực hiện của Sprint vừa qua, xác định những chức năng được Release, những chức năng tiếp tục sửa hoặc phát triển thêm, xác định những vấn đề phát sinh và bàn phương án giải quyết, bổ sung Product Backlog v….

  • Daily Scrum Meeting (hay còn gọi là Standup Meeting)

    • Daily Scrum Meeting là cuộc họp hàng ngày và được đề nghị không quá 15 phút và họp đứng để đảm bảo thời gian họp không bị kéo dài vào đầu mỗi ngày, mỗi thành viên chỉ trả lời 3 câu hỏi:
      • Phát sinh vấn đề gì trong quy trình phát triển phần mềm?
      • Hôm nay bạn sẽ làm gì
      • Hôm qua bạn làm được gì?
      • Nếu thành viên gặp vấn đề thì nên làm việc riêng để giải quyết để không mất nhiều thời gian của các thành viên. Scrum Master phải đảm bảo cuộc họp này được thực hiện đúng qui định.
      • Các Sprint sẽ được lặp đi lặp lại cho tới khi nào các hạng mục trong Product Backlog đều được hoàn tất hoặc khi Product Owner quyết định có thể dừng dự án căn cứ tình hình thực tế. Do sử dụng chiến thuật “có giá trị hơn làm trước” nên các hạng mục mang lại nhiều giá trị hơn cho chủ dự án luôn được hoàn tất trước. Do đó Scrum luôn mang lại giá trị cao nhất cho người đầu tư cho dự án. Do quy trình luôn luôn được cải tiến, nhóm Scrum thường có năng suất lao động rất cao. Đây là hai lợi ích to lớn mà quy trình phát triển phần mềm Scrum mang lại cho tổ chức.
Quy trình phát triển phần mềm #waterfall  và mô hình #agile scrum
Quy trình phát triển phần mềm #waterfall và mô hình #agile scrum

Cách lựa chọn mô hình phát triển phần mềm phù hợp với doanh nghiệp của bạn

Tiêu chí để chọn mô hình phát triển phần mềm phù hợp với doanh nghiệp của bạn gồm chi phí, thời gian phát triển và độ phức tạp của dự án. Nguồn: tigosoftware.com

Để lựa chọn phương pháp thiết kế phần mềm sao cho phù hợp với doanh nghiệp của bạn, bạn cần tìm hiểu rõ về các tiêu chí như trị giá, tốc độ phát triển, tần số phân phối, một số lỗi có thể có trong mô hình, độ phức tạp của dự án và sự phổ biến của mô hình.

Quy trình để bạn có thể chọn được mô hình phù hợp có thể gồm các bước sau:

Bước 1: Xác định chi phí cho các mô hình phát triển dựa vào mục tiêu và độ phức tạp của dự án.

Bước 2: Xác định thời gian phát triển phần mềm, tốc độ phân phối của các mô hình.

Bước 3: Xác định thời gian một mô hình cần để hoàn thành một vòng lặp hay chu trình phát triển phần mềm. Khoảng thời gian này có thể là hàng tuần, hàng tháng, hàng quý hoặc là liên tục mỗi ngày.

Bước 4: Cần dự tính các lỗi của sản phẩm so với thông số kỹ thuật tiêu chuẩn trong tài liệu miêu tả sản phẩm ban đầu.

Bước 5: Cần xác định độ phức tạp của dự án bao gồm các thuộc tính như thời gian, chi phí, quy mô, chất lượng, chức năng…

Bước 6: Tìm hiểu rõ mức độ phổ biến của mô hình trong lĩnh vực mà doanh nghiệp bạn triển khai.

Sau khi tìm hiểu rõ từng khía cạnh như trên và so sánh với những tiêu chuẩn do doanh nghiệp bạn đưa ra, bạn có thể cân nhắc được mô hình nào phù hợp với doanh nghiệp của bạn.

Bộ công cụ quản trị doanh nghiệp

Giải quyết mọi thách thức trong kinh doanh và quản trị chỉ trong 1 nền tảng duy nhất.

Được tin tưởng bởi các doanh nghiệp hàng đầu

Doanh nghiệp lựa chọn MDO Việt Nam

Khách hàng nói gì về chúng tôi

Báo chí nói về chúng tôi

Đăng ký

Sẵn sàng đồng hành giải quyết những thách thức phức tạp nhất của bạn
với các giải pháp tùy chỉnh.
Là sản phẩm được các doanh nghiệp lớn tin tưởng lựa chọn.

IT Comtor - Vòng đời phát triển của phần mềm (SDLC)
IT Comtor – Vòng đời phát triển của phần mềm (SDLC)

Keywords searched by users: mô hình phát triển phần mềm

See more here: kientrucannam.vn

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *