10.1 軟件的重要性
10.2 何處需要安全
軟件控制方式:
- 操作系統控制:如在ARP中插入僞造的數據
- 應用程序和數據庫管理控制
- 以上兩種方式結合:這是常用的方式
10.3 系統開發生命週期
system development life cycle,SDLC
SDLC的階段:啓動,購買/開發,安裝,操作/維護,處理
認證:對系統進行的技術測試
認可:管理層允許系統在特定環境中運行的正式授權
10.4 軟件開發生命週期
software development life cycle,SDLC
需求收集、設計、開發、測試/驗證、發佈/維護
如果軟件是爲特定客戶開發的,往往就需要一個工作聲明(Statement of Work,SOW),描述產品和客戶的要求。
工作分解結構(work breakdown structure,WBS)是一個項目管理工具,定義和分組項目的各工作單元。
測試/驗證階段:單元測試、集成測試、驗收測試、迴歸測試
10.5 安全軟件開發最佳實踐
Web應用安全聯盟WASC
開放式Web應用程序安全項目OWASP
美國美土安全部DHS/構建安全Build Security In,BSI
ISO/IEC27034
10.6 軟件開發模型
10.6.1 邊做邊改模型
不是一個正式的系統開發生命週期模型
10.6.2 瀑布模型
線性生命週期模型,每一個階段都依賴上一個階段的結果,不適合複雜的項目,因爲項目中通常存在很多變量
10.6.3 V模型
類似瀑布模型,但在項目的每個階段都進行測試,所以成功率更高。但不允許平行處理事件,變更成本也高。適合前期可以理解所有需求且變更範圍很小的場合。
10.6.4 原型模型
快速原型:也稱拋棄型,團隊快速開發出原型以判斷是否可行或是需要開發另一種解決方案,快速原型在完成服務目的後是被丟棄的
液化原型:原型會被持續改進直到最後的產品階段,在實驗室環境中創建和改進
運行原型:類似液化原型,但是在生產環境中開發和改進的
10.6.5 增量模型
多個瀑布模型,每一個瀑布都交付一個可運行的產品
適合涉及風險、程度複雜性、資金和功能需求問題,且需要在產品開發週期早起階段考慮的項目
10.6.6 螺旋模型
使用迭代方法將重點放在風險分析上,適合有動態需求的複雜項目
10.6.7 快速應用開發PAD
原型+迭代的方式,允許用戶在開發階段參與其中,以保證最終的結果能滿足需求
10.6.8 敏捷模型
採用迭代和增量開發的方式,更靈活
除此以外,還有探索型模型、複用模型、淨室模型、聯合分析開發
10.7 能力成熟度模型CMM
Capability Maturity Model
CMM模型描述了軟件開發流程的基本規程、原則和實踐。