目录
前言
本复习笔记基于王玉林老师的课堂PPT与复习大纲,供自己期末复习与学弟学妹参考用。
重点一览
软件过程模型的定义
软件过程模型是软件开发全部过程、活动和任务的结构框架。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。软件过程模型也常称为:
软件开发模型
软件生存周期模型
软件工程范型
常见的软件过程模型
- 瀑布模型(经典的生命周期模型)
- 演化过程模型
- 原型模型
- 并行开发模型
- 增量过程模型
- 增量模型
- RAD
- 螺旋模型
- 其他过程模型
- 基于构件模型
- 智能模型
- 敏捷过程模型
软件工程的中心与三要素
软件工程的中心:质量
软件工程三要素:方法、工具、过程
方法是完成软件开发的各项任务的技术方法,为软件开发提供技术;
工具是为运用方法而提供的自动或半自动的软件工程的支撑环境;
过程是为了获得高质量软件而所需要完成的一系列任务的框架。
软件生存期模型
瀑布模型
软件生命周期:软件产品或软件系统从设计、投入使用到被淘汰的全过程
瀑布模型:软件开发过程与软件生命周期是一致的,也称经典的生命周期模型。它规定了各项软件工程活动,以及它们自上而下,相互衔接的固定次序,如同瀑布流水,逐级下落,是一种使用广泛,以文档为驱动的模型。
优点
- 简单,过程透明性高,过程可管理性高
- 推迟实现,软件实现前必须进行系统分析和设计工作
- 以阶段评审和文档控制为手段进行质量控制,能够及时发现并纠正软件缺陷,能够达到预期质量要求
缺点
- 模型灵活性差,不适合需求不明确或准确的场合
- 模型风险控制能力弱
- 过多的文档增加了工作量,当技术具有不确定性情况下完全以文档来评估项目进度时会产生错误的结论
适用场合
- 瀑布模型适用于系统需求明确、技术成熟、工程管理较严格的场合。
快速原型模型
快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。快速原型模型是增量模型的另一种形式,在开发真实系统之前迅速建造一个可以运行的软件原型 ,以便理解和澄清问题,在该原型的基础上,逐渐完成整个系统的开发工作。
它允许在需求分析阶段对软件的需求进行初步而非完全的分析和定义,快速设计开发出软件系统的原型,该原型向用户展示待开发软件的全部或部分功能和性能;用户对该原型进行测试评定,给出具体改进意见以丰富细化软件需求;开发人员据此对软件进行修改完善,直至用户满意认可之后,进行软件的完整实现及测试、维护。
优点
- 克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险
- 适合预先不能确切定义需求的软件系统的开发
缺点
- 所选用的开发技术和工具不一定符合主流的发展;
- 快速建立起来的系统结构加上连续的修改可能会导致产品质量低下
- 使用前提是要有一个展示性的产品原型,一定程度上可能会限制开发人员的创新
运用方式
由于运用原型的目的和方式不同,在使用原型时也采取不同的策略,有抛弃策略和附加策略。
- 抛弃策略是将原型用于开发过程的某个阶段,促使该阶段的开发结果更加完整、准确、一致、可靠,该阶段结束后,原型随之作废。探索型和实验型就是采用此策略的。
- 附加策略是将原型用于开发的全过程,原型由最基本的核心开始,逐步增加新的功能和新的需求,反复修改反复扩充,最后发展为用户满意的最终系统,演化型快速原型就是采用此策略。
采用何种形式、何种策略运用快速原型主要取决于软件项目的特点、人员素质、可供支持的原型开发工具和技术等,这要根据实际情况的特点来决定。
增量模型
增量模型结合了原型模型的基本要素和迭代的特征,采用了基于时间的线性序列,每个确定线性序列都会输出该软件的一个“增量”
在前面增量的基础上开发后面的增量,每个增量的开发可用瀑布或快速原型模型和迭代的思路
优点
- 引入增量包概念,不需要提供完整的需求。只要有一个
- 增量包出现,开发就可以进行。
- 在项目的初始阶段不需要投入太多的人力资源。
- 增量可以有效地管理技术风险,降低系统失败风险。
- 有利于增加客户信心,提高系统可靠性、可维护性和稳定性。
缺点
- 增量粒度难以选择:每个增量必须提供一些系统功能,这使得开发者很难根据客户需求给出大小适合的增量。
- 确定所有的基本业务比较困难。
适用场合
- 进行已有产品升级或新版本开发,增量模型是非常适合的;
- 对完成期限严格要求的产品,可以使用增量模型;
- 对所开发的领域比较熟悉而且已有原型系统,增量模型也是非常适合的。
螺旋模型
最早由Boehm提出,该模型结合了瀑布模型和原型模型的特点
螺旋模型沿着螺线旋转,在笛卡尔坐标的四个象限上分别表达了四个方面的活动
制定计划
-确定软件目标,选定实施方案,弄清项目开发的限制条件
风险分析
-分析所选方案,考虑如何识别和消除风险
实施工程
-实施软件开发
客户评估
-评价开发工作,提出修正建议
优点
- 支持用户需求的动态变化
- 原型可看作可执行的需求规格说明书,易于用户和开发人员共同理解,可作为继续开发的基础,为用户参与关键决策提供了方便
- 螺旋模型特别强调原型的可扩充性和可修改性,原型的进化贯穿整个软件生存周期,这将有助于目标软件的适应能力
- 螺旋模型为项目管理人员及时调整管理决策提供了方便,进而可降低开发风险
缺点
- 如果每次迭代的效率不高,致使迭代次数过多,将会增加成本并推迟提交时间;
- 使用该模型需要有相当丰富的风险评估经验和专门知识,要求开发队伍水平较高
适用场合
支持需求不明确、特别是大型软件系统的开发,并支持面向规格说明、面向过程、面向对象等多种软件开发方法,是一种具有广阔前景的模型
如何选择过程模型
- 软件开发模型是不断发展的
- 各种软件开发模型各有优缺点
- 选用时不必拘泥与某种模型
- 可组合多种模型
- 也可根据实际创建新的模型
能力成熟度模型的五个级别
过程和产品的关系
软件过程决定了软件产品的质量,不同的项目需要不同的过程模型或者过程模型的组合。
本章小结
- 软件工程是以质量为中心,过程、方法和工具为三要素
- 过程定义了谁在做什么,何时以及如何达到一定的目标
- 软件过程决定了软件产品的质量,不同的项目需要不同的过程模型或者过程模型的组合