第二章 软件过程
目录
2.1 软件过程概念
内容总览:
(1)软件生命周期
(2)软件过程
(3)软件过程模型
(4)能力成熟度模型
一、软件生命周期
定义:软件产品/软件系统 设计 -> 投入使用 -> 被淘汰 的全过程
二、软件过程
1、定义:软件过程是在工作产品构建过程中,所需完成的工作活动、动作、任务的集合
(1)活动主要实现宽泛的目标,
与应用领域、项目大小、结果复杂性或者实施软件工程的重要程度没有直接关系
(2)动作:阶段目标,包含了主要工作产品生产过程中的一系列任务
(3)任务关注小而明确的目标,能够产生实际产品
2、基本框架活动
一个通用的软件工程过程框架通常会包含以下5个基本的框架活动:
(1)沟通:在技术工作开始前,先和利益相关者进行沟通与协作,以理解项目目标,并收集需求
(2)策划:制定项目计划,包括需要执行的技术任务、可能的风险、资源需求、工作产品…
(3)建模:构思软件的体系结构、构件如何结合等
(4)构建:包括编码和测试
(5)部署:交付全部软件或部分增量,由用户使用并反馈意见
三、软件过程模型
1、别称:软件开发模型 ;软件生存周期模型 ;软件工程范型
2、定义:是软件开发全部过程、活动、任务的结构框架
它能直观表达软件开发全过程,明确规定要完成的主要活动、任务、开发策略
四、软件过程评估
1、能力成熟度模型CMM
按成熟度划分为5个等级,等级越高,软件生产能力越成熟,软件开发能力越强
(1)迄今为止学术界和工业界公认的有关软件工程和管理实践的最好的软件过程评估模型
(2)为评估软件组织的生产力提供了标准
(3)为提高软件组织的生产过程指明了方向
2、ISO 9000 质量标准体系
3、ISO/IEC 15504 SPICE 信息技术软件过程评估
2.2 传统模型---早期提出的
一、瀑布模型 / 经典生命周期模型
1、简述
(1)第一个软件过程模型
(2)规定了各项软件工程活动,以及它们自上而下,相互衔接的固定次序,如同瀑布流水,逐级下落
(3)软件开发过程与软件生命周期一致
(4)线性模型
(5)阶段间具有顺序性和依赖性
(6)推迟实现的观点(编码在软件开发的中后期)
(7)是一种使用广泛,以文档为驱动的模型
(8)每个阶段都有与其相关联的里程碑和可交付产品
(9)每个阶段结束前完成文档审查,及早改正错误
(10)一直被用来规范软件开发活动
(11)很多其它模型都是在瀑布模型基础上的改进
2、实际(带反馈)的瀑布模型
(1)当后面阶段发现前面阶段的错误,则沿反馈线返回并修正
(2)对软件的维护,则反馈到相应的阶段
3、缺点
(1)增加工作量
各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量
(2)早期错误发现晚
早期的错误可能要等到开发后期的测试阶段才能发现, 进而带来严重的后果
(3)开发风险大
由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险
(4)不适应需求变化
不能反映实际的开发方式,软件开发需要迭代;
无法适应需求不明确和需求的变化
4、应用场合
适用于系统需求明确且稳定、技术成熟、工程管理较严格的场合,如军工、航天、医疗