什麼是軟體開發生命週期 (SDLC)?

2025年2月21日

💎 加入 E+ 成長計畫 如果你喜歡我們的內容,歡迎加入 E+,獲得更多深入的軟體前後端內容

常常聽到人在談的軟體開發生命週期 (SDLC) 是什麼。如果你上網搜尋軟體開發生命週期 ,多半會看到以下這樣的圖。可以看到,要開發一個軟體產品,不僅僅是程式的實作,還包含其他重要的元素,往下我們會逐一說明。

SDLC.png

規劃

在軟體開發週期的起點,是規劃階段。在規劃階段會是由產品端,針對使用者與利害關係人的需求,來收斂出要開發什麼 (what),以及為什麼要開發該功能 (why)。

在 ExplainThis 寫過的《軟體工程師如何做好專案技術負責人的角色?》一文中有談到「先前有機會跟一位 L7 職級的資深前輩聊,他提到不要一看到需求就開始想技術。更關鍵的是先從使用者的角度出發,跟產品端一起把要解決的問題定義好。事實上,產品經理想不完整,是很常見的狀況。想要把專案帶起來,稱職的技術負責人,不會抱怨產品經理這個沒想到、那個沒想到,而是會主動跳出來,一起把產品端沒想清楚的地方釐清好。唯有在釐清好需求後,才回過頭來思考需要什麼技術解決方案」。

對此,工程師在規劃階段,不該只依賴於產品經理,而是要採取主動的思維,確保要解決的問題,真的能帶給使用者價值。要能做好這件事,推薦溫習 E+ 的 《工程師可以如何培養產品思維》 一文。

設計

在釐清完需求後,軟體團隊通常不會馬上進到開發實作,而是會先有完整的技術設計。這樣做才能避免因為缺乏良好的設計,導致在未來要維護程式時,會因為程式碼可擴展性差,導致很難維護;又或者因為缺乏妥善的設計,導致當未來流量逐漸變大後,效能與成本出現難以克服的瓶頸。

在設計階段,除了《軟體工程師如何做好專案技術負責人的角色?》 主題文談到的要點外,也推薦讀者可以溫習 E+ 的 《軟體工程師如何做好技術設計?》 主題文,來了解要做好技術設計,應該要注意什麼面向。

實作與測試

在完成技術設計後,軟體團隊才會真的進到實作階段,而實作完後會進一步測試來確保程式碼有如預期進行。目前軟體業界的趨勢,有逐漸測試左移的傾向,所謂的左移是指把測試的責任由 QA 轉移到開發者。

當某個人需要為自己所做的結果負責時,做出的成果品質會比較高,因為如果品質不高,後果不再是由別人幫忙扛,而是自己得負責。測試就是為軟體的品質把關,所以當測試是由開發者負責,當程式出問題時,就不能甩鍋說是 QA 沒測到。當沒辦法甩鍋,需要自己承擔時,在寫程式就會更加小心謹慎,以免未來的自己要幫現在的自己擦屁股。

對此,現代軟體團隊中,由開發者來寫單元、整合,以及端到端等不同測試是非常普遍的。甚至有測試驅動開發(TDD) 的方式,在程式實作前就先寫測試。即使不是所有人都認同 TDD 的方式,但由工程師來寫測試這點,是目前社群普遍一致認同的觀點。

部署與維護

在完成實作與測試後,軟體還需要透過部署才能真的讓使用者用到。在部署階段,有很多細節需要照顧,推薦讀者可以溫習 《軟體上線流程中有哪些階段?》 以及 《什麼是功能旗標(feature flags)? 為什麼要用功能旗標?》 一文。

在完成上線後,因為軟體持續被使用者用,可能隨時會有各種意外。要能夠確保有效及時捕捉到問題,推薦可以溫習 《軟體工程師該如何做好監控(monitoring)?》。在監控時遇到問題,也會需要有人立即去解決,這時需要團隊有人負責輪班,在《軟體工程師該如何值班(on-call)?》一文有詳細的討論。

在了解完軟體開發的生命週期後,接下來我們我進一步談,在規劃、設計,以及實作與測試階段,工程師可以如何善用 AI 來協助加速自己的效率與生產力。

閱讀更多

在談完以上的流程,接下來我們會進一步談在上線過程中要特別注意的事、避免踩到的誤區。 這些點我們在 E+ 成長計畫的主題文都有更詳細談到,推薦感興趣的讀者閱讀。

本文為 E+ 成長計畫的深度內容,截取段落開放免費閱讀。歡迎加入 E+ 成長計畫閱讀完整版本 (點此了解 E+ 的詳細介紹)。

🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們