THÔNG TIN NÓNG:

SDLC là gì? Các giai đoạn và phương pháp trong SDLC

2022-11-09 22:33:32

SDLC không phải là một khái niệm mới và đã rất quen thuộc với những ai làm việc trong lĩnh vực phát triển phần mềm. Vậy chính xác SDLC là gì? Chúng ta hãy cùng tìm hiểu về SDLC, các mô hình phổ biến và các kỹ năng cần thiết để làm việc tốt với các mô hình trong bài viết này.

I. SDLC là gì?

SDLC là từ viết tắt của Software Development Life Cycle (vòng đời phát triển phần mềm).  SDLC là một quy trình có hệ thống để xây dựng phần mềm nhằm đảm bảo chất lượng và tính đúng đắn của phần mềm được xây dựng.

Quy trình SDLC nhằm mục đích sản xuất phần mềm chất lượng cao đáp ứng mong đợi của khách hàng. Việc phát triển hệ thống phải được hoàn thành trong khung thời gian và chi phí đã xác định trước.

SDLC bao gồm một kế hoạch chi tiết giải thích cách lập kế hoạch, xây dựng và duy trì phần mềm cụ thể. Mỗi giai đoạn của Vòng đời SDLC đều có quy trình riêng và các sản phẩm cung cấp cho giai đoạn tiếp theo.

SDLC bao gồm bảy giai đoạn chính của vòng đời phát triển phần mềm hiện đại. Các mô hình SDLC phổ biến bao gồm mô hình thác nước (waterfall model), mô hình xoắn ốc (spiral model), mô hình Agile và một số mô hình khác.

Lợi ích của SDLC

SDLC cung cấp một cái nhìn tổng thể về toàn bộ hệ thống, tài nguyên, dòng thời gian và mục tiêu của một dự án phần mềm. Các lý do chính tại sao SDLC là cần thiết để phát triển một hệ thống phần mềm:

  •     Sử dụng SDLC có thể dễ dàng đo lường sự tăng trưởng và chi phí của hệ thống đã phát triển.
  •     SDLC tăng cường kiểm soát và giám sát các dự án quan trọng hoặc phức tạp.
  •     SDLC bao gồm các bước chi tiết và toàn diện.
  •     Các đánh giá thiết kế giúp đảm bảo độ tin cậy và chất lượng của giải pháp đã phát triển.
  •     SDLC cung cấp tài liệu mở rộng về hệ thống.
  •     Nếu một thành viên chính của dự án rời đi, một thành viên mới có thể tiếp tục nơi họ đã dừng lại.
  •     SDLC giúp đánh giá, lập lịch và ước tính các sản được triển khai.
  •     SDLC đảm bảo bàn giao phần mềm chính xác và kịp thời cho khách hàng.
  •     Cung cấp framework cho một tập hợp các hoạt động và sản phẩm tiêu chuẩn
  •     Cải thiện tốc độ phát triển phần mềm

II. Các giai đoạn SDLC

Các giai đoạn SDLC

  1. Thu thập và phân tích thông tin (Requirement Analysis)

Giai đoạn đầu tiên của SDLC là về việc quyết định những gì bạn sẽ phát triển. Có thể nói giai đoạn này là quan trọng bật nhất của cả quy trình SDLC.

Nếu bạn đang phát triển cho khách hàng, giai đoạn này có thể sẽ bao gồm các cuộc họp để thảo luận về nhu cầu, mục tiêu và kỳ vọng của họ. Nếu bạn đang phát triển một phần mềm nội bộ, các việc có thể bao gồm phân tích thị trường hoặc phân tích đối thủ cạnh tranh, phỏng vấn khách hàng và kiểm tra các mục tiêu của công ty bạn. Ở cấp cao, bạn cần biết những vấn đề bạn đang cố gắng giải quyết và cách giải quyết.

Giai đoạn này cần các team lên yêu cầu chi tiết và chính xác. Điều này giúp các công ty chốt được timeline cần thiết để hoàn thành các công việc của hệ thống đó.

Kết quả của giai đoạn Requirement Analysis:

Kết quả của giai đoạn này là tài liệu đặc tả yêu cầu phần mềm (Software Requirements Specification hay SRS), đóng vai trò là điểm khởi đầu cho giai đoạn phát triển tiếp theo. Điều quan trọng cần lưu ý là giai đoạn đặc tả và phân tích yêu cầu chỉ tập trung vào những gì hệ thống phần mềm nên làm chứ không phải vào cách nó nên được thực hiện; nghĩa là, các chi tiết triển khai không được phép ảnh hưởng đến giai đoạn này. Yêu cầu phần mềm có thể được phân thành hai loại: yêu cầu chức năng và yêu cầu phi chức năng, và SRS cần bao gồm cả hai loại yêu cầu này.

  1. Lập kế hoạch (Planning hay Defining)

Thông thường, bạn thực hiện quá trình lập kế hoạch sau khi phân tích yêu cầu sau khi bạn đã có đầy đủ dữ liệu và chọn những gì cần phát triển.  Trong giai đoạn SDLC thứ hai này chúng ta cần xác định một số yếu tố:

  •     Về kinh tế: Có thể hoàn thành dự án trong phạm vi ngân sách hay không?
  •     Pháp lý: Có thể xử lý dự án này theo luật không gian mạng và các khuôn khổ / quy định pháp lý khác không.
  •     Tính khả thi của operation: Có thể tạo ra các hoạt động mà khách hàng mong đợi không?
  •     Kỹ thuật: Cần kiểm tra xem hệ thống máy tính hiện tại có thể hỗ trợ phần mềm hay không
  •     Lịch trình: Quyết định rằng dự án có thể được hoàn thành trong tiến độ đã cho hay không.

Kết quả của giai đoạn lập kế hoạch:

Kết quả đầu ra của giai đoạn lập kế hoạch bao gồm: kế hoạch dự án, thời gian thực hiện chi tiết, ước tính chi phí và các yêu cầu mua sắm.

  1. Thiết kế (Designing)

Giai đoạn thứ ba của SDLC tập trung vào việc thiết kế phần mềm mà bạn sẽ phát triển, bao gồm:

  •     Kiến trúc: Bạn sử dụng ngôn ngữ lập trình nào để xây dựng sản phẩm của mình? Các phương pháp tốt nhất trong ngành mà bạn đang xây dựng là gì? Cũng bao gồm các câu hỏi liên quan đến việc sử dụng các mẫu.
  •     Giao diện người dùng: Bạn mong đợi người dùng tiềm năng sẽ tương tác với sản phẩm như thế nào? Làm thế nào bạn sẽ làm cho điều đó dễ dàng hơn cho họ?
  •     Nền tảng: Sản phẩm của bạn sẽ chạy trên nền tảng gì? Trong giai đoạn này, một nhà phát triển trò chơi sẽ tự hỏi họ sẽ xuất bản bảng điều khiển nào, trong khi một nhà phát triển thiết bị di động sẽ quyết định xem họ sẽ tạo ứng dụng cho Apple, Android hay cả hai.
  •     Lập trình: Bạn đã tìm ra ngôn ngữ lập trình, nhưng bây giờ bạn sẽ làm thế nào để vượt qua những thách thức lập trình trong quá trình phát triển?
  •     Liên kết: Sản phẩm của bạn sẽ phải giao tiếp với những nội dung nào? Một máy chủ trung tâm? Các ứng dụng khác? Làm thế nào điều này sẽ xảy ra?
  •     Bảo mật: Bạn sẽ bảo vệ sản phẩm của mình như thế nào trước những nguy cơ tiềm ẩn? Bạn có phải tuân theo các yêu cầu bảo mật nhất định không? Bạn có được truy cập vào thông tin người dùng nhạy cảm cần được bảo vệ không?

Việc thiết kế này gần giống như việc tổng hợp các phương án kiến ​​trúc và thiết kế nội thất của một ngôi nhà mới trước khi bạn xây dựng nó.

Doanh thu thuần là gì? Tính doanh thu thuần như thế nào?

Kết quả của giai đoạn thiết kế:

Vào cuối giai đoạn này, tài liệu thiết kế (Software Design Document – SDD)  được hoàn thành. SDD sẽ được xem xét bởi tất cả các bên liên quan (stackholders) và dựa trên các thông số khác nhau như đánh giá rủi ro, tính lâu dài của phầm mềm, các mô-đun thiết kế, hạn chế về ngân sách và thời gian, phương pháp thiết kế tốt nhất được lựa chọn cho sản phẩm…

  1. Phát triển (Development)

Giai đoạn phát triển là giai đoạn mà các developer thực sự viết code và xây dựng ứng dụng theo các tài liệu thiết kế và các thông số kỹ thuật đã vạch ra, sử dụng ngôn ngữ lập trình và framework đã được chọn. Các developer sẽ tuân theo mọi nguyên tắc viết code của công ty và sử dụng các công cụ khác nhau như trình biên dịch, trình gỡ lỗi và trình thông dịch. Các nhiệm vụ được chia thành các đơn vị hoặc mô-đun và được phân bổ cho các nhà phát triển cụ thể.

Kết quả của giai đoạn phát triển: các chứng năng của phần mềm mà chúng ta cần xây dựng

  1. Kiểm thử (Testing)

Khi code hoàn tất, quá trình kiểm tra bắt đầu và các mô-đun được đánh giá và kiểm tra để tránh bất kỳ lỗi nào. Phần mềm đã xây dựng được xem xét toàn diện trong quá trình này và bất kỳ vấn đề nào được tìm thấy đều được giao cho các developers sửa chữa, thay đổi.

Kiểm tra lại và kiểm tra hồi quy được tiến hành cho đến khi phần mềm đúng như kế hoạch của người sử dụng. Tester thường tham khảo tài liệu SRS để đảm bảo phần mềm phù hợp với tiêu chuẩn của khách hàng hay yêu cầu.

Kết quả của giai đoạn kiểm thử:

  •     Sản phẩm hoàn thiện hơn sau các lỗi được chỉnh sửa hoặc các yêu cầu còn thiếu được phát triển
  •     Testing report
  •     User Acceptant Test
  1. Triển khai (Deployment)

Ở giai đoạn này, mục tiêu là triển khai phần mềm tới môi trường production để người dùng có thể bắt đầu sử dụng. Tuy nhiên, nhiều công ty chọn triển khai phần mềm qua các môi trường triển khai khác nhau như môi trường thử nghiệm (testing) hoặc môi trường dàn dựng (staging).

Điều này cho phép bất kỳ bên liên quan nào có thể trải nghiệm phần mềm một cách an toàn trước khi đưa ra sử dụng chính thức. Bên cạnh đó, điều này cho phép mọi sai sót cuối cùng được phát hiện và chỉnh sửa trước khi phát hành.

Kết quả của giai đoạn triển khai:

Giai đoạn Triển khai hoàn thành khi phần mềm đã được đưa vào hoạt động thành công và thỏa mãn tất cả các yêu cầu kinh doanh và kỹ thuật thông qua việc xem xét và ký tên của các bên liên quan trong Implementation Report (báo cáo triển khai), và Maintenance Manual (Sổ tay Bảo trì) đã được giao cho mhóm bảo trì phần mềm, Training Manual (tài liệu đào tạo) đã được chuyển cho trainer / user và Tài liệu hướng dẫn sử dụng đã được chuyển đến người sử dụng.

  1. Bảo trì

Sau khi triển khai một sản phẩm trên môi trường production, việc bảo trì sản phẩm sẽ bắt đầu. Trong giai đoạn này bất kỳ vấn đề nào xuất hiện cần được khắc phục hoặc bất kỳ cải tiến nào cần thực hiện sẽ được đánh giá và triển khai. Trong một số trường hợp, quy trình SDLC có thể lặp lại từ đầu (phát triển chức năng mới, thay đổi lớn trong phần mềm…)

Kết quả của giai đoạn bảo trì:

Một số kết quả của giai đoạn bảo trì là hệ thống hoạt động một cách hiệu quả nhất, phần mềm được cập nhật khi cần thiết và được nâng cấp khi có yêu cầu.

III. Các phương pháp SDLC

Có nhiều mô hình (hay phương pháp) vòng đời phát triển phần mềm khác nhau được áp dụng trong quá trình phát triển phần mềm.  Mỗi mô hình quy trình tuân theo một chuỗi các bước duy nhất cho kiểu của nó để đảm bảo sự thành công trong quá trình phát triển phần mềm. Chúng ta hãy cùng điểm qua một số phương pháp phổ biến:

Waterfall model - Mô hình thác nước trong SDLC

Nhân viên hành chính tiếng anh là gì? - Giải đáp chính xác

Waterfall model - Mô hình thác nước trong SDLC

Waterfall là một mô hình SDLC phổ biến rộng rãi. Theo cách tiếp cận này, toàn bộ quá trình phát triển phần mềm được chia thành các giai đoạn khác nhau của SDLC.

Trong mô hình SDLC này, kết quả của một giai đoạn đóng vai trò là đầu vào cho giai đoạn tiếp theo.

Mô hình SDLC này đòi hỏi nhiều tài liệu, với các giai đoạn trước đó ghi lại những gì cần được thực hiện trong các giai đoạn tiếp theo.

Incremental Model - Mô hình gia tăng trong SDLC

Mô hình gia tăng không phải là một mô hình riêng biệt. Về bản chất nó là một chuỗi các chu kỳ thác nước. Các yêu cầu được chia thành các nhóm khi bắt đầu dự án. Đối với mỗi nhóm, mô hình SDLC được tuân theo để phát triển phần mềm.

Quy trình vòng đời SDLC được lặp lại, với mỗi bản phát hành sẽ bổ sung thêm nhiều chức năng cho đến khi đáp ứng tất cả các yêu cầu. Trong phương pháp này, mọi chu kỳ hoạt động như giai đoạn bảo trì cho bản phát hành phần mềm trước đó. Việc sửa đổi đối với mô hình gia tăng cho phép các chu kỳ phát triển chồng chéo lên nhau. Sau đó chu kỳ tiếp theo có thể bắt đầu trước khi chu kỳ trước đó hoàn thành.

Mô hình V-Model trong SDLC

Với mô hình chữ V, toàn bộ quy trình được chia thành hai nhóm giai đoạn tương ứng nhau: phát triển và kiểm thử. Mỗi giai đoạn phát triển sẽ kết hợp với một giai đoạn kiểm thử tương ứng

Tinh thần chủ đạo của V-model là các hoạt động kiểm thử phải được tiến hành song song (theo khả năng có thể) ngay từ đầu chu trình cùng với các hoạt động phát triển. Ví dụ, các hoạt động cho việc lập kế hoạch kiểm thử toàn hệ thống có thể được thực hiện song song với các hoạt động phân tích và thiết kế hệ thống.

Mô hình V-Model trong SDLC

Mô hình Agile trong SDLC

Phương pháp Agile là một phương pháp thực hành thúc đẩy sự tương tác liên tục giữa phát triển và kiểm tra trong quá trình SDLC của bất kỳ dự án nào. Trong phương pháp Agile, toàn bộ dự án được chia thành các bản xây dựng nhỏ tăng dần. Tất cả các bản dựng này đều được cung cấp theo nhiều lần lặp lại và mỗi lần lặp lại kéo dài từ một đến ba tuần.

Hạn chế của mô hình này là quá chú trọng vào tương tác với khách hàng có thể dẫn dự án đi sai hướng trong một số trường hợp.

Spiral - Mô hình xoắn ốc

Mô hình xoắn ốc là một mô hình quá trình theo hướng rủi ro (risk-driven process). Mô hình thử nghiệm SDLC này giúp nhóm áp dụng các yếu tố của một hoặc nhiều mô hình quy trình như thác nước, tăng dần, thác nước, v.v.

Mô hình này áp dụng các tính năng tốt nhất của mô hình tạo mẫu và mô hình thác nước. Phương pháp xoắn ốc là sự kết hợp giữa tạo mẫu nhanh và tính đồng thời trong các hoạt động thiết kế và phát triển.

Big bang - Mô hình vụ nổ lớn

Mô hình vụ nổ lớn tập trung vào tất cả các loại tài nguyên trong phát triển phần mềm và mã hóa, không có hoặc có rất ít kế hoạch. Các yêu cầu được hiểu và thực hiện khi chúng đến.

Mô hình này hoạt động tốt nhất cho các dự án nhỏ với nhóm phát triển quy mô nhỏ hơn đang làm việc cùng nhau. Nó cũng hữu ích cho các dự án phát triển phần mềm học thuật. Đây là một mô hình lý tưởng mà các yêu cầu không xác định hoặc ngày phát hành cuối cùng không được đưa ra.

DevOps

DevOps là phương pháp mới nhất. DevOps mang đến sự kết hợp giữa phát triển (Dev) và vận hành (Ops) ở tất cả các giai đoạn của quy trình SDLC. Sự hợp tác và chia sẻ trách nhiệm này giúp đảm bảo rằng sản phẩm được phát triển vận hành tốt trong quá trình phát triển.

Trong mô hình DevOps, các nhóm Nhà phát triển và Vận hành làm việc cùng nhau chặt chẽ để đẩy nhanh sự đổi mới và triển khai các chức năng và sản phẩm phần mềm chất lượng cao hơn, đáng tin cậy hơn. Cập nhật cho các sản phẩm là nhỏ nhưng thường xuyên. Kỷ luật, phản hồi liên tục và cải tiến quy trình cũng như tự động hóa các quy trình phát triển thủ công là tất cả các điểm nổi bật của mô hình DevOps.

IV. Cần phát triển kỹ năng gì để làm việc tốt với SDLC?

Các phương pháp SDLC có một điểm giống nhau: làm việc theo nhóm. Để làm việc tốt với bất kỳ mô hình SDLC nào, bạn có các kỹ năng mềm sau:

  •     Giao tiếp – Các nhà phát triển phải giao tiếp với đồng đội và các bên liên quan mọi lúc. Họ cần có kỹ năng giao tiếp bằng nhiều phương thức khác nhau.
  •     Hợp tác – Làm việc đơn độc không hoạt động trong một dự án phần mềm lớn. Mỗi thành viên trong nhóm phải có khả năng đồng bộ hóa các nỗ lực của họ với các đồng nghiệp của họ.
  •     Tính linh hoạt – Các phương pháp luận phát triển phần mềm như Agile và DevOps đều hướng đến khả năng thích ứng và linh hoạt. Bạn phải có khả năng xoay sở với bất kỳ thay đổi đột ngột nào về hướng của dự án trong khi vẫn tập trung vào mục tiêu cuối cùng.
  •     Chú ý đến chi tiết – Lỗi của developer có thể làm tăng thời gian của vòng đời phát triển phần mềm. Thậm chí tệ hơn, một sai sót hoặc sự giám sát quá mức có thể dẫn đến sản phẩm cuối cùng không ổn định.
  •     Ý thức bảo mật – Với sự gia tăng của tội phạm mạng, hầu hết các nhóm phần mềm hiện áp dụng cách tiếp cận ưu tiên bảo mật để phát triển phần mềm. Mọi người trong nhóm phải suy nghĩ về bảo mật và quyền riêng tư dữ liệu khi thực hiện ngay cả những thay đổi có vẻ nhỏ nhất.

Hy vọng bài viết SDLC là gì? Các giai đoạn và phương pháp trong SDLC giúp bạn hiểu hơn về SDLC và các phương pháp SDLC. Mọi thông tin chỉ giúp bạn tham khảo.

HR là gì? Nhiệm vụ của HR trong doanh nghiệp là gì

TAGS
Scroll To Top