需求收集與分析:在這個階段,項目團隊與利益相關者(包括客戶、用戶和其他參與者)討論項目的需求和目標。這個過程包括收集用戶的需求、分析它們的可行性,並將它們轉化為具體的項目規範。
系統設計:根據需求分析的結果,設計階段會確定軟體的架構、組件、接口以及其他關鍵元素。設計階段的結果通常包括系統設計規範,這將作為開發階段的藍圖。
實現/編碼:在這一階段,開發團隊開始基於設計階段的規範來寫代碼。這是整個生命週期中實際建構軟體產品的階段。
測試:開發完成後,軟體會經過一系列的測試來識別和修正錯誤或缺陷。這包括單元測試、集成測試、系統測試和用戶接受測試(UAT)等。
部署:在測試階段之後,如果軟體沒有重大問題,它將被部署到生產環境中供用戶使用。部署階段可能還包括對用戶的培訓和支持。
維護:軟體部署後,會進入維護階段。在這個階段,對軟體進行必要的更新和修正,以解決新發現的問題,並可能增加新的功能或改進。
此外在談論SDLC的時候也會談到很多的軟體開發的模型,以下是一些最常見的軟體開發模型:
瀑布模型(Waterfall Model):這是最古老且最簡單的一種模型,它將軟體開發過程劃分為一系列階段,每個階段完成後才能進行下一階段。這些階段依次為需求分析、系統設計、實現、測試、部署和維護。
V模型(V-Model):V模型也被稱為驗證和驗證模型,它是瀑布模型的一種變體,強調開發階段(需求分析、系統設計等)和測試階段(單元測試、集成測試等)之間的對應關係。
迭代模型(Iterative Model):迭代模型將開發過程分解為一系列可管理的小塊(迭代),每個迭代都包括一個完整的軟體開發周期,包括需求分析、設計、編碼和測試。每次迭代的結果都是可交付的產品。
敏捷開發模型(Agile Development Model):敏捷模型是一種高度靈活且迭代的開發方法,強調快速交付、客戶參與、跨功能團隊的協作以及對變化的適應。著名的敏捷開發方法包括Scrum、Kanban等。
螺旋模型(Spiral Model):螺旋模型結合了迭代開發的特點和瀑布模型的嚴格階段控制,強調風險管理。每個迭代被視為一個項目階段,並在這個階段內進行風險分析。
- XP, Extreme Programming (極限編程)
- 測試驅動(Test-driven development)TDD
- 雙人寫程式 Pair Programming : 一個人寫一個人看品質
- 持續整合 Continuous Integration:
- 極限編程XP被描述為有 12 種實踐,但XP不止12個practices. 主要的有13個,還有其它的輔助的practices.
最後都實作了,當然就是要來驗證是否有真的落實,所以就有很多的驗證機制也就是所謂的成熟度模型如下
- CMMI
- 開發、委外採購的廠商、服務能力時考量的點
- CMM早期有針對軟體開發,對外取得及服務交付有不同的模型,後來被整合成為CMMI. ISACA是這二年才併購了原本推廣CMMI的單位。
- CMMI 是一個統一的能力成熟度模型,用於評估軟件開發、採購和服務交付的能力。它不是評估流程效率和改進流程的理想工具。
- CMMI 是一種基於過程的模型,用於評估組織在軟體開發、採購或服務交付方面的能力成熟度。它不適用於軟體本身。
- CMMI等級
- Initial:土法煉鋼
- Managed : 各自為政
- Defined : 統一方法
- Quantitatively Managed : 量化管理
- Optimizing : 最佳化
- 新舊版差異要搞懂:
- SW-CMM
- Initial:這個階段的特點是沒有正式的程序。該公司可能仍會產生工作代碼,但它以一種雜亂無章的方式進行。
- Repeatable:可重複級別 2 中,組織引入了基本的生命週期管理流程。開始以有組織的方式重用代碼,並且預計類似項目的可重複結果。此級別的關鍵過程域包括需求管理、軟件項目規劃、軟件項目跟踪和監督、軟件分包管理、軟件質量保證和軟件配置管理。
- Defined:SW-CMM 的定義階段以基本生命週期管理流程和代碼重用的存在為標誌。它包括使用需求管理、軟件項目規劃、質量保證和配置管理實踐。SW-CMM 的定義階段的特點是使用正式的、文檔化的軟件開發過程。
- Managed:組織使用定量測量來詳細了解開發過程。
- OWASP SAMM
- OSG:設計內威脅評估、威脅建模和安全需求等活動都是 SAMM 下設計功能的一部分。
- 開源
- 安全冠軍,每個團隊派出一個資安種子選手來統合相關資安事務
- SAMM 是一個規範模型
- SAMM 代表 軟體保障成熟度模型。
- SAMM 支援完整的軟體生命週期,並且與技術和流程無關。
- SAMM 將三個成熟度級別定義為目標,有五個Domain
- 治理,包含教育和指導計劃,包括培訓和意識以及組織和文化
- 設計:威脅評估/需求分析/架構
- 實施:Build
- 驗證Verificarion:Testing
- 營運Operation:資安事故/環境/營運
- SAMM 本質上是演變的和風險驅動的,因為沒有一個單一的配方適用於所有組織。
- 一個易於使用、完全定義且可衡量的開放框架。解決方案的詳細資訊很容易遵循,即使對於非安全人員也是如此。它幫助組織分析其當前的軟體安全實踐,在定義的反覆運算中構建安全程式,展示安全實踐的逐步改進,以及定義和衡量與安全相關的活動。SAMM 在定義時充分考慮了靈活性,因此使用任何開發風格的小型、中型和大型組織都可以自定義和採用 SAMM。它提供了一種方法來瞭解您的組織在軟體保障之旅中所處的位置,並了解建議進入下一個成熟度級別。
- BSIMM 安全成熟度模型(The Building Security in Maturity Model, BSIMM)
- 在四大領域、12個面向對您的軟體進行評比,以了解軟體的安全計劃與同業相比之間的差異,然後將您的軟體安全倡議(Software Security Initiative, SSI)建立在行業最佳的實踐基礎上,使用200多個指標將您的SSI與其他廠家進行比較,建立基準和追踪SSI增長,以及與BSIMM社群同業互動並向他們學習,
- BSIMM vs. SAMM
- 如果您絕對必須與其他組織進行比較,那麼您的兩個選擇是進行 BSIMM 參與以接收報告,該報告將顯示您的組織將如何與 BSIMM 框架中的其他參與組織進行比較,或者執行 SAMM 評估並執行分數的高級比較。它將在較高級別上具有相對可比性,因為安全實踐仍然非常相似。在 SAMM 基準測試項目進一步發展之前,這是唯一真正的選擇。
- 如果您想進行自我評估,SAMM將是顯而易見的選擇,因為該模型是開放的,可用於自我評估。SAMM 還提供了許多資源,包括快速入門指南和工具箱,以説明捕獲和衡量評估。