0

SDLC là gì? Tìm hiểu chi tiết về vòng đời phát triển phần mềm

Mở đầu

  • Mỗi phần mềm luôn được xây dựng nên từ việc viết những dòng code cơ bản nhất! Nhưng liệu rằng chỉ viết code có đảm bảo rằng sẽ tạo ra được các phần mềm chất lượng? 🤔
  • Trong môi trường làm việc chuyên nghiệp, việc viết code chỉ là một bước nhỏ để có thể hoàn thiện một sản phẩm đưa đến tay khách hàng. Ngoài ra còn cần đến một quy trình làm việc bài bản, kế hoạch rõ ràng và được kiểm soát chặt chẽ.
  • Vậy quy trình đó là gì? Cùng tìm hiểu với mình trong bài viết này nhé!

SDLC là gì?

  • SDLC - Software Development Life Circle là một mẫu quy trình dùng để phát triển phần mềm.
  • Quy trình này giúp việc quản lý phần mềm trở nên hiệu quả hơn, bên cạnh đó đảm bảo được chất lượng và tiến độ hiện tại của phần mềm.

Các giai đoạn trong SDLC

  • Để xây dựng một phần mềm tối ưu, chúng ta cần có một quy trình bài bản. Việc tuân theo từng giai đoạn này sẽ giúp đảm bảo được quy trình phát triển, gia tăng hiệu quả và năng suất hơn.
  • Một quy trình phát triển phần mềm thường được chia thành 6 giai đoạn chính:

1. Planning & Requirement Analysis (Lập kế hoạch và phân tích yêu cầu)

  • Giai đoạn đầu tiên và quan trọng nhất của SDLC là tiếp nhận và phân tích yêu cầu từ khách hàng cùng các bên liên quan—những đối tượng có tác động trực tiếp đến nghiệp vụ của phần mềm.
  • Dựa trên thông tin thu thập được, nhóm phát triển có thể xác định rõ mục tiêu, phạm vi, ngân sách, cũng như đánh giá các rủi ro tiềm ẩn và khả năng thay đổi trong quá trình thực hiện dự án.
  • Giai đoạn này sẽ giúp trả lời được những câu hỏi quan trọng sau:
Vấn đề Câu hỏi
Mục tiêu Chức năng được xây dựng để làm gì? Giải quyết vấn đề gì?
Phạm vi thay đổi Những tính năng nào sẽ có trong bản thay đổi này?
Thời gian và chi phí Dự án sẽ kéo dài bao lâu? Cần bao nhiêu nhân lực?
Xác định rủi ro Phân tích những yếu tố nào có thể ảnh hưởng đến tiến độ hoặc chất lượng?
  • Khi đã làm rõ được những vấn đề này chúng ta mới có thể bước nào giai đoạn tiếp theo trong dự án!

2. Defining Requirements (Xác định yêu cầu)

  • Sau khi đã phân tích yêu cầu, bước tiếp theo cần xác định chính xác, rõ ràng các yêu cầu của sản phẩm và có được sự chấp thuận từ phía khách hàng.
  • Sau khi đã xác định rõ yêu cầu, cần xây dựng các tài liệu SRS (Software Requirements Specification) – đặc tả yêu cầu phần mềm, bao gồm tất cả các yêu cầu sản phẩm sẽ được thiết kế và phát triển trong vòng đời của dự án.
  • Giai đoạn này giúp: đảm bảo phần mềm được xây dựng đúng theo nhu cầu, tránh sai sót hoặc phải sửa đổi nhiều sau này.
  • Các loại yêu cầu sẽ được phân loại thành:
Loại yêu cầu Chi tiết
Yêu cầu chức năng (Functional Requirements) Xác định tính năng và hành vi mà hệ thống cần phải cung cấp.
Yêu cầu phi chức năng (Non-Functional Requirements - NFRs) Xác định hiệu suất, bảo mật, khả năng mở rộng, tính ổn định của hệ thống.
Yêu cầu kỹ thuật (Technical Requirements) Xác định công nghệ, nền tảng sẽ sử dụng để phát triển phần mềm.

3. Design (Thiết kế)

  • Giai đoạn Thiết kế là bước chuyển đổi các yêu cầu phần mềm đã phân tích ở giai đoạn trước thành kiến trúc và thiết kế hệ thống cụ thể.
  • Giai đoạn này thường được chia thành 2 bước chính:

3.1. Thiết kế cấp cao (High-Level Design - HLD)

Tập trung vào tổng quan hệ thống, bao gồm:

  • Cấu trúc tổng thể của phần mềm (Software Architecture).
  • Các thành phần chính và cách chúng tương tác (Module & Component Design).
  • Công nghệ sử dụng (Ngôn ngữ lập trình, cơ sở dữ liệu).
  • Mô hình triển khai (Cloud, Microservices).

3.2. Thiết kế chi tiết (Low-Level Design - LLD)

Tập trung vào từng module cụ thể, bao gồm:

  • Thiết kế chi tiết cấu trúc dữ liệu, thuật toán, API, giao diện.
  • Mô hình quan hệ cơ sở dữ liệu (ERD - Entity Relationship Diagram).
  • Sơ đồ luồng dữ liệu (DFD - Data Flow Diagram).
  • Sơ đồ lớp (Class Diagram) trong lập trình hướng đối tượng.

4. Development (Phát triển)

  • Đây chính là giai đoạn mà nhóm phát triển - cụ thể là các lập trình viên sẽ viết nên những thay đổi cho phần mềm dựa theo các thiết kế đã được xây dựng trước đó.
  • Bao gồm các bước như: Thiết lập môi trường phát triển, viết code, review code, kiểm thử bằng unit test, quản lý mã nguồn,...

5. Testing and Integration (Kiểm thử và tích hợp)

  • Sau khi hoàn tất quá trình phát triển phần mềm, kiểm thử và tích hợp vào hệ thống là một bước vô cùng quan trọng.
  • Giúp tìm ra những thiếu sót trong quá trình phát triển, từ đó sửa lỗi kịp thời. Quá trình này lập đi, lập lại đến khi phần mềm chạy mượt mà và sẵn sàng để tích hợp vào môi trường production (môi trường thực tế mà khách hàng đang sử dụng).

6. Deployment and Maintenance (Triển khai và bảo trì)

  • Sau khi đảm bảo chất lượng sau giai đoạn kiểm thử, phần mềm đã sẵn sàng cho việc triển khai (deployment) đến khách hàng.

  • Đầu tiên, phần mềm sẽ được phát hành trong môi trường thử nghiệm gần giống thực tế (UAT – thử nghiệm chấp nhận của người dùng). Dựa trên những phản hồi từ UAT, phần mềm có thể được phát hành theo đúng dự tính hoặc có thêm các cải tiến, chỉnh sửa được đề xuất trong môi trường Production.

  • Trong quá trình vận hành và sử dụng phần mềm, các vấn đề phát sinh hay những lỗi không mong muốn đã được hạn chế nhờ giai đoạn bảo trì (maintenance). Đội nhóm này có vai trò giải quyết các vấn đề phát sinh, quản lý những thay đổi về phần mềm. Ngoài ra, nhóm có vai trò giám sát trải nghiệm người dùng, bảo mật và hiệu suất hệ thống chung để xác định những giải pháp cải thiện phần mềm hiện có.

Tầm quan trọng của SDLC

  • Phát triển phần mềm là một quá trình dài hạn và có thể phát sinh nhiều vấn đề như: thay đổi yêu cầu từ khách hàng, các cập nhật mới từ công nghệ sử dụng trong dự án, các nhóm chức năng phát triển song song,... Đây chính là lúc quy trình phát triển phần mềm phát huy được vai trò của mình!

1. Đảm bảo tính linh hoạt

  • Trong quá trình phát triển phần mềm, những vấn đề phát sinh luôn có thể xảy ra, nếu quy trình phát triển cứng ngắc sẽ gây ra khó khăn, mất nhiều thời gian để thay đổi.
  • SDLC với khả năng linh hoạt luôn sẵn sàng đáp ứng những thay đổi bất ngờ từ khách hàng, các phản hồi từ phía người dùng hay các kĩ thuật sử dụng trong phần mềm cần được cập nhật.

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

  • Chất lượng là yếu tố quan trọng đảm bảo được sự uy tín, tin cập đối với khách hàng.
  • Nhờ việc lập kế hoạch và phân tích yêu cầu chính xác, kiểm thử phần mềm toàn diện, triển khai phần mềm an toàn và giám sát chặt chẽ giúp đảm bảo phần mềm được xây dựng có chất lượng đáp ứng tiêu chuẩn tốt nhất khi đến tay khách hàng.

3. Quản lý rủi ro tốt hơn

  • Rủi ro trong việc phát triển phần mềm là điều không thể tránh khỏi.
  • Tuy nhiên nhờ vào việc lập kế hoạch rõ ràng, thiết kế hệ thống tối ưu, kiểm thử phần mềm kĩ càng đã giảm thiểu tối đa những rủi ro có thể xảy ra, bên cạnh đó có thể phát hiện nhanh chóng, kịp thời và cập nhật một cách hiệu quả khi có lỗi xảy ra.

4. Tiết kiệm thời gian & chi phí

  • Trong phát triển phần mềm, thời gian và chi phí luôn là hai yếu tố quan trọng ảnh hưởng đến hiệu quả của dự án.
  • Nếu không có kế hoạch rõ ràng, dự án có thể bị trễ hạn, đội chi phí hoặc rủi ro cao dẫn đến thất bại.
  • SDLC giúp tối ưu quy trình phát triển, giảm thiểu lãng phí thời gian, nguồn lực và tránh những rủi ro không đáng có.

Các mô hình SDLC phổ biến

  • SDLC là một khuôn mẫu để phát triển phần mềm, dựa trên khuôn mẫu này các lập trình viên trong quá trình phát triển đã xây dựng nên các mô hình lập trình dựa trên SDLC phổ biến giúp tối ưu quá trình phát triển phần mềm tùy vào mục đích, phạm vi, yêu cầu phát triển của dự án.

1. Mô hình Waterfall (mô hình thác nước)

  • Mô hình Waterfall (Thác nước) là một trong những mô hình phát triển phần mềm cổ điển và truyền thống nhất trong SDLC.
  • Mô hình này tuân theo một quy trình tuần tự, tuyến tính, trong đó mỗi giai đoạn phải hoàn thành trước khi chuyển sang giai đoạn tiếp theo.
  • Như tên gọi mô hình này như một thác nước và không thể quay ngược lại giai đoạn trước đó.

2. Mô hình Iterative (mô hình lặp)

  • Mô hình Iterative (mô hình lặp) là một phương pháp phát triển phần mềm trong đó quá trình phát triển được chia thành nhiều vòng lặp nhỏ (iterations).
  • Mỗi vòng lặp sẽ tạo ra một phiên bản phần mềm có thể hoạt động được và tiếp tục được mở rộng, cải tiến qua các vòng tiếp theo.

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

  • Mô hình Spiral (Xoắn ốc) kết hợp giữa mô hình Waterfall (tuần tự)mô hình Iterative (lặp), tập trung mạnh vào quản lý rủi ro trong suốt vòng đời phát triển phần mềm.
  • Mô hình này chia quá trình phát triển thành nhiều vòng lặp, mỗi vòng giúp cải tiến sản phẩm thông qua phân tích rủi ro và kiểm thử.
  • Mỗi vòng xoắn tương đương với một giai đoạn phát triển, với độ chi tiết tăng dần qua từng vòng.

4. Mô hình Agile (Mô hình linh hoạt)

  • Mô hình Agile là một phương pháp phát triển phần mềm linh hoạt, trong đó sản phẩm được xây dựng thông qua các vòng lặp ngắn (iterations hoặc sprints).
  • Mô hình tập trung vào sự thay đổi linh hoạt, nhóm phát triển liên tục cải tiến, điều chỉnh dựa trên phản hồi của khách hàng.

Kết luận

  • Chúng ta đã tìm hiểu về khái niệm SDLC, các giai đoạn phát triển phần mềmcác mô hình phần mềm được triển khai từ SDLC. Đây là những khái niệm quan trọng, cần hiểu rõ vì rất cần thiết khi các bạn đi làm và bắt tay vào các dự án thực tế.
  • Hy vọng qua bài viết này, giúp các bạn hiểu rõ hơn về vai trò của mình trong một dự án cũng như nắm rõ về vòng đời phát triển của phần mềm! 🤩

All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí