軟件開發生命周期(SDLC,Software Development Lifecycle)通常可以分為以下幾個階段:
第一階段:計划和需求分析(Planning and Requirement Analysis)
軟件開發生命周期從分析開始,過程的利益相關者討論對最終產品的要求。此階段的目標是系統要求的詳細定義。此外,還需要確保所有流程參與者都清楚地了解任務以及每個需求將如何實施。
第二階段:設計項目構架(Project Archiecture)
在軟件開發生命周期的第二階段,開發人員實際上正在設計架構。所有利益相關者(包括客戶)都會討論此階段可能出現的所有不同技術問題。此外,還定義了項目中使用的技術,團隊負載,限制,時間范圍和預算。最合適的項目決策是根據定義的要求做出的。
第三階段:開發和編程(Development and coding)
在批准要求后,該過程進入下一階段 - 實際開發。程序員從這里開始編寫源代碼,同時牢記先前定義的需求。系統管理員調整軟件環境,前端程序員開發程序的用戶界面以及與服務器交互的邏輯。
編程本身假設有四個階段:算法開發、源代碼編寫、匯編、測試與調試。
第四階段:測試(Testing)
測試階段包括調試過程。開發過程中遺漏的所有代碼缺陷都會在此處檢測到,記錄下來並傳回給開發人員進行修復。重復測試過程,直到刪除所有關鍵問題並且軟件工作流程穩定。
第五階段:部署(Deployment)
當程序最終確定並且沒有關鍵問題時,是時候為最終用戶啟動它了。新程序版本發布后,技術支持團隊加入。該部門提供用戶反饋; 在利用期間咨詢和支持用戶。此外,此階段還包括所選組件的更新,以確保軟件是最新的,並且不會受到安全漏洞的影響。
SDLC模型:瀑布模型(Waterfall model)、迭代模型(Iterative model)、螺旋模型(spiral model)、V型模型(V-shape model)、敏捷模型(Agile model)
瀑布模型:是一個級聯SDLC模型,其中開發過程看起來像流程,一步一步地進行分析,預測,實現,測試,實施和支持階段。
優點:簡單易用和理解;每個階段都有明確的結果和流程審查;易於確定開發周期中的關鍵點;易於分類和確定任務的優先級
缺點:只有在最后一個階段結束后,軟件才會准備就緒;高風險和不確定性;階段的進展很難衡量
適用性:適用於產品定義明確且不模棱兩可的小型或中型項目,不適合長期項目。
迭代模型:在項目開始之前,迭代模型不需要完整的需求列表。開發過程可以從對功能部件的要求開始,可以在以后擴展。該過程是重復的,允許為每個循環制作新版本的產品。每次迭代都包括開發系統的單獨組件,然后,將此組件添加到之前開發的功能中。說到數學術語,迭代模型是順序逼近方法的實現; 這意味着逐漸接近計划的最終產品形狀。
優點:某些功能可以在開發生命周期的開始階段快速開發;可以應用並行開發;進展很容易衡量
缺點:迭代模型比瀑布模型需要更多資源;需要持續管理;可能會出現架構或設計問題,因為在短期規划階段並未預見到所有要求;過程很難管理
適用性:主要任務是預定義的,但細節可能隨着時間而推進,小項目的糟糕選擇,適用於大型項目
螺旋模型:螺旋模型分階段結合了架構和原型。它是Iterative和Waterfall SDLC模型的組合,具有重要的風險分析重點。螺旋模型的主要問題是確定進入下一階段的正確時機。建議將初步設定的時間范圍作為此問題的解決方案。即使前一階段的工作尚未完成,也將根據計划完成向下一階段的轉變。該計划是根據統計數據引入的,即使從個人開發人員的經驗來看,也可以在之前的項目中收到。
優點:開發過程准確記錄,可根據變化進行擴展;可伸縮性允許在相對較晚的階段進行更改並添加新功能;早期的工作原型已經完成 - 用戶可以更快地指出這些缺陷
缺點:早期的工作原型已經完成 - 用戶可以更快地指出這些缺陷;大量的中間階段需要過多的文檔
適用性:對小項目可能無效,具有中級或高級風險的項目,防止這些風險非常重要,客戶不確定要求,預計在開發周期中會進行重大編輯。
V型模型:V型模型是經典瀑布模型的擴展,它基於每個開發階段的相關測試階段。這是一個非常嚴格的模型,下一階段僅在前一階段之后開始。這也稱為“驗證和驗證”模型。每個階段都有當前的過程控制,以確保可以轉換到下一個階段。
優點:V形模型的每個階段都有嚴格的結果,因此很容易控制;測試和驗證在早期階段進行
缺點:缺乏靈活性、相對較大的風險
適用性:適用於需求穩定且清晰的小型項目、對於需要進行准確產品測試的項目。
敏捷模型:在每次開發迭代之后的敏捷方法中,客戶能夠看到結果並理解他是否滿意或不滿意。這是敏捷軟件開發生命周期模型的優勢之一。其缺點之一是,由於缺乏明確的要求,很難估計資源和開發成本。極限編程是敏捷模型的實際應用之一。這種模型的基礎包括每周短暫的會議 - Sprint是Scrum方法的一部分。
優點:功能需求的更正被實施到開發過程中以提供競爭力;項目按短而透明的迭代划分;靈活的變更過程使風險最小化
缺點:新要求可能與現有架構沖突;通過所有更正和更改,項目可能會超出預期時間;由於永久性變化而無法衡量最終成本
適用性:用戶需求動態變化的項目