软件开发生命周期
- 软件需求分析:确定软件的功能、性能、数据、界面等要求,生成软件需求规约
- 软件设计:软件设计通常可分为系统设计(也称概要设计或总体设计)和详细设计:1、系统设计的任务是设计软件系统的体系结构,包括软件系统的组成成分、各成分的功能和接口、成分间的连接和通信,同时设计全局数据结构 2、详细设计的任务是设计各个组成成分的实现细节,包括局部数据结构和算法等
- 编码:用某种程序设计语言,将设计的结果转换为可执行的程序代码
- 测试:发现并纠正软件中的错误和缺陷。测试主要包括单元测试、集成测试、确认测试和系统测试
- 运行和维护:在软件运行期间,当发现了软件中潜藏的错误或需要增加新的功能或使软件适应外界环境的变化等情况出现时对软件进行修改
安全软件开发生命周期
- 安全原则、规则及规章
- 安全需求工程
- 架构和设计评审、威胁建模:在项目组中成立一个安全小组;分解系统需求(从安全角度);确定系统可能面临哪些威胁(威胁树);选择应对威胁或者缓和威胁的方法;确定最终技术(威胁树中增加防护手段)
- 软件安全编码:需要代码的实现者对软件漏洞的来源有所了解,软件编码人员应该遵照一些软件安全编码原则(内存安全怎样实现?怎样保证线程安全?如何科学地处理异常?输入输出安全怎样保障?怎样做权限控制?怎样保护数据?怎样对付篡改和抵赖?怎样编写优化的代码?);编译器做安全检查
- 软件安全测试:一轮多角度、全方位的攻击和反攻击;包括白箱/黑箱/灰箱测试,软件渗透测试,基于风险的测试
能力成熟度模型CMM
评价软件机构的软件过程能力成熟度的模型
软件过程成熟度等级 :
1.初始(initial)级:
软件过程的特点是无秩序的,甚至是混乱的。几乎没有什么过程是经过妥善定义的,成功往往依赖于个人或小组的努力
2.可重复(repeatable)级:
建立了基本的项目管理过程来跟踪成本、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功
3.已定义(defined)级:
己将管理和工程活动两方面的软件过程文档化、标准化,并综合成该机构的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件
4.已管理(managed)级:
收集对软件过程和产品质量的详细度量值,对软件过程和产品都有定量的理解和控制
5.优化(optimizing)级:
整个组织关注软件过程改进的持续性、预见及增强自身,防止缺陷及问题的发生。过程的量化反馈和先进的新思想、新技术促使过程不断改进