10.4软件开发生命周期软件开发生命周期的几个阶段1.项目启动2.功能设计分析和规划3.系统规范设计4.软件开发5.测试6.安全/实现7.操作/维护8.处理10.4.2需求收集阶段安全方面,这个阶段应该完成下列工作o安全需求o安全风险评估o隐私风险评估o风险级别验收10.4.3设计阶段从安全角度讲,下列事项也应该在这个阶段完成o攻击面分析o威胁建模10.4.5测试/验证阶段测试类型o单元测试:个体组件位于一个受控的环境中,编程人员在这里确证数据结构、逻辑和边界条件o集成测试:验证组件是否按设计规范中概述的那样协同工作o验收测试:确保代码满足客户的需求o回归测试:进行系统变更后重新测试,以确保功能性、性能和保护级别10.4.6发布/维护阶段验证(verification):判断产品是否准确体现和满足了产品规范确证(validation):判断产品是否为所针对的实际问题提供了必要的解决方案10.6软件开发模型边做边改模型:预先没有真正的计划,一般是在软件发布后被动地处理缺陷,形式主要为打补丁和升级瀑布模型:是一种顺序方法,它要求每个阶段完成后下一个阶段才可以开始,很难整合变更,也不灵活V模型:强调在各个阶段开展验证和确认,同时要求在项目全过程开展测试工作,而不能仅仅在项目结尾开展原型模型:为了概念验证目的创建样品或代码模型增量模型:可以在同一个软件的整个开发阶段并行多个开发周期,每个阶段都能提供一个可用的软件版本螺旋模型:它使用了迭代方法,强调每次迭代都要进行风险分析,通过使用灵活的演化方法可允许客户反馈集成到开发中来快速应用开发(RapidApplicationDevelopment,RAD):为了加速软件开发过程,进行整合原型和迭代开发过程敏捷模型:它采用了迭代和增量开发过程来鼓励团队协作,用灵活性和适应性代替了严格的过程结构10.7能力成熟度模型理论前提:软件产品的质量与软件开发和维护过程的执行质量直接相关能力成熟度模型(CapabilityMaturityModel,CMM):描述了软件开发流程的基本规程、原则和实践软件开发公司的产品开发过程由第三方公司认证成熟度级别o初始(initial):开发过程很随意,甚至非常混乱o可重复(repeatable):正式的管理结构、变更控制和质量保证o定义(defined):有正式流程,其中描述和定义了在不同项目中的过程o管理(managed):公司有一个正式的过程,可以收集和分析定性数据o优化(optimizing):公司对持续改善过程有了预算和整体计划10.9编程语言和概念...