2005-9-6 1
提问
什么是软件?
软件与硬件相比,其特点是什么?
软件质量要素?
产生软件危机的原因?
什么是软件工程?
软件工程研究的内容
软件工程原理、基本框架
2005-9-6 2
第 2讲 软件过程模型
( Process Model)
2005-9-6 3
内容提要
软件过程
软件生命周期
软件过程模型
瀑布模型
快速原型模型
喷泉模型
演化模型
增量模型
螺旋模型
软件开发过程的一般视图
2005-9-6 4
质量焦点过程模型方法工具方法使用的顺序;要求交付的文档资料;为保证质量和适应变化所需要的管理;软件开发各个阶段完成的里程碑。
软件开发提供了,如何做” 的技术。
为软件工程方法提供了自动的或半自动的软件支撑环境,CASE
软件工程层次图
2005-9-6 5
软件过程(概要)
软件过程是近十年来人们关注的 焦点 。
软件过程是一个为开发高质量软件所需要完成的任务的 框架 。
软件工程是有创造力、有知识的人在定义好的、成熟的软件过程框架中进行的,该过程适合开发的软件和市场的需要。
2005-9-6 6
过程及软件过程
过程,为实现一个给定目标而进行的 一系列运作步骤 。
过程具有一系列的 性质,时间性、并发性、
嵌套性和度量性 等 。
软件过程,开发和维护软件及其相关产品所涉及的 一系列活动 。
2005-9-6 7
公共过程框架 Common process framework
保护性活动 Umbrella Activities
Project tracking & control? Formal technical reviews
Quality assurance? Configuration management
Documentation? Reusability management
Measurement? Risk management
框架活动 Framework Activities
任务集合 work tasks
工作任务 work products
交付物 milestones & deliverables
质量保证点 QA checkpoints
2005-9-6 8
软件过程
软件过程提供了一个 公共过程框架,在该框架下可以建立一个软件开发的综合计划:
若干 框架活动 适用于 所有软件项目,而不在乎其规模和复杂性 。
若干不同 任务的集合,使得框架活动适应于不同软件项目的特征和项目组的需求 。
若干 保护性活动,它们贯穿于整个过程模型之中 。 保护性活动独立于任何一个框架活动,且贯穿于整个过程之中 。
选择一个公共过程框架是根据产品,人员和项目而调整的 。
2005-9-6 9
内容提要
软件过程
软件生命周期
软件过程模型
瀑布模型
快速原型模型
喷泉模型
演化模型
增量模型
螺旋模型
软件开发过程的一般视图
2005-9-6 10
软件生命周期
软件生命周期是软件过程模型的基础,是软件产品或系统一系列相关活动的全周期。
软件生命周期阶段:
可行性研究及项目定义
需求分析
设计(总体设计和详细设计)
编程实现
测试
使用与维护
2005-9-6 11
软件生命周期模型定义开发维 护可行性研究报告需求规格说明书设计规格说明书程序测试报告软件定义可行性研究与计划需求分析设计编码测试运行和维护问题描述
2005-9-6 12
问题定义和可行性研究
确定要开发软件系统的 总目标和规模 。
从技术、经济和社会因素等方面的要求来论证完成该软件任务的 可行性 。
估计 可利用的资源 (计算机硬件,软件,人力等 )、
成本、效益、开发进度。
制定出完成开发任务的 实施计划,连同可行性研究报告,提交管理部门 审查 。
2005-9-6 13
需求分析
理解用户需求,并将用户需求用 书面形式 表达出来。
编写 软件需求规格说明书或系统功能说明书及初步的系统用户手册。需求说明书是以后阶段工作的基础。
将需求规格说明书提交管理机构 评审 。
2005-9-6 14
设计
总体设计 —,如何解决问题,
在需求说明书的基础上建立 软件的体系结构 。结构中每一组成部分都是意义明确的模块,每个模块都和某些需求相对应
可以列出多种解决方案进行比较
详细设计 — 对每个模块要完成的工作进行 具体的描述,为源程序编写打下基础
编写设计说明书(模块说明书、数据库或文件结构说明书等),提交 评审 。
2005-9-6 15
编码
把软件设计转换成计算机可以接受的 程序代码,
即写成以某一种 特定程序设计语言 表示的,源程序清单,。
写出的程序应当是结构良好、清晰易读的(如 匈牙利法则 ),且与设计相一致的。
2005-9-6 16
测试
单元测试,查找各模块在功能和结构上存在的问题并加以纠正。
集成测试,将已测试过的、并且相关的模块按一定顺序组装起来进行测试。
按规定的各项需求,逐项进行 系统测试,决定已开发的软件是否合格,能否交付用户使用。
2005-9-6 17
运行和维护
改正性维护,运行中发现了软件中的错误需要修正。
适应性维护,为了适应变化了的软件工作环境,需做适当变更。
完善性维护,为了增强软件的功能需做变更。
预防性维护,修改软件为将来的维护活动预先做准备
2005-9-6 18
软件过程模型的概念
软件过程模型是软件过程的 抽象表示 。
一个软件过程模型是软件开发全部过程、
活动和任务的 结构框架 。它能直观表达软件开发全过程,明确规定要完成的主要 活动,任务 和 开发策略 。
软件过程模型也常称为:
软件工程模式
软件生存周期模型
2005-9-6 19
过程模型的选择影响到整个软件开发生存期 。 就是说,它支配了
设计方法
编码语言
测试和维护技术的选择
2005-9-6 20
内容提要
软件过程
软件生命周期
软件过程模型
瀑布模型
快速原型模型
喷泉模型
演化模型
增量模型
螺旋模型
软件开发过程的一般视图
2005-9-6 21
传统瀑布模型 (Waterfall Model)
软件定义可行性研究与计划需求分析设计编码测试运行和维护
2005-9-6 22
实际瀑布模型软件定义可行性研究与计划需求分析设计编码测试运行和维护
2005-9-6 23
瀑布模型
所有过程模型的 鼻祖 。 ---- Royce,1970
瀑布模型把 软件开发过程划分成若干阶段,每个阶段的 任务相对独立,便于不同人员分工协作,从而降低 了整个软件开发工程的 困难程度 。在软件生存期的每个阶段都采用科学的管理技术和良好的方法与技术,而且每个阶段结束之前,都从技术和管理两个角度进行 严格的审查,经确认之后才开始下一阶段的工作。 ---- 项目是按照一定的顺序执行。
瀑布模型是 文档驱动 的,各个阶段不连续也不交叉。
2005-9-6 24
瀑布模型的特点
阶段间具有顺序性和依赖性。 (两重含义)
推迟程序的物理实现。( 重要指导思想)
质量保证,每个阶段必须完成规定的文档;每个阶段结束前完成文档审查,及早改正错误。 (两个重要做法)
易于组织,易于管理,因为你可以预先完成所有计划。
是一种 严格线性的,按阶段顺序的,逐步细化的 过程模型(开发模式)。
瀑布模型适合哪些场合呢?有何缺点呢?
2005-9-6 25
瀑布模型的缺陷
在项目开始的时候,用户常常 难以清楚 地给出所有 需求 ;用户与开发人员对需求 理解存在差异 。
缺乏灵活性:因为瀑布模型确定了需求分析的绝对重要性,但是在实践中要想获得完善的需求说明是非常困难的,导致,阻塞状态,。 反馈信息慢,开发周期长。
实际的项目 很少 按照 顺序 模型进行。
2005-9-6 26
瀑布模型适用场合
当 需求分析完全正确 和有很容易被理解的技术解决方案时,纯瀑布模型特别合适。
对于那些容易理解但很复杂的项目,采用纯瀑布模型比较合适,因为可以用顺序方法处理问题。
在质量需求高于成本需求和进度需求的时候,它尤为出色。
当开发队伍的技术力量比较弱或者缺乏经验时,
瀑布模型更为适合。
2005-9-6 27
瀑布模型变种,V型模型
该方法是对瀑布模型的修正,强调了验证活动
2005-9-6 28
内容提要
软件过程
软件生命周期
软件过程模型
瀑布模型
快速原型模型
喷泉模型
演化模型
增量模型
螺旋模型
基于构件的开发
软件开发过程的一般视图
2005-9-6 29
建立原型目标开发原型定义原型功能评估原型原型开发过程原型规划框架定义可执行原型评估报告用户意见反馈
2005-9-6 30
听取用户意见建造 /修改原型用户测试运行原型快速原型模型
( Rapid Prototype Model)
2005-9-6 31
原型模型分类
原型能完成的功能是项目系统最终产品能完成的功能的一个子集。
抛弃型原型,原型使用完毕后无需保留而抛弃,重新建立目标系统,开发的原型仅以演示为目的(用户界面的开发)。
演化型原型,原型是最终产品的一部分,原型系统根据用户的反馈意见不断被开发和被修正,最终它变为一个真正的系统。
2005-9-6 32
原型模型的特点适用于 用户驱动 的系统(即需求模糊或随时间变化的系统)。
2005-9-6 33
原型模型的优点
从实践中学习 (Learning by doing)
用户参与
使部分已知需求逐渐清晰化
提高系统的实用性、可维护性
节省开发的投入、缩短整个软件的开发周期
2005-9-6 34
原型模型存在的问题
用户有时误解了原型的角色,例如他们可能误解原型应该和真实系统一样可靠。
缺少项目标准,进化原型方法有点像编码修正。
缺少控制,由于用户可能不断提出新要求,因而原型迭代的周期很难控制。
额外的花费,研究结果表明构造一个原型可能需要
10%额外花费。
为了尽快实现原型,采用了 不合适的技术,运行效率可能会受影响。
原型法要求开发者与用户密切接触,有时这是不可能的。例如外包软件。
2005-9-6 35
内容提要
软件过程
软件生命周期
软件过程模型
瀑布模型
快速原型模型
喷泉模型
演化模型
增量模型
螺旋模型
软件开发过程的一般视图
2005-9-6 36
喷泉模维护确认实现设计分析演化
2005-9-6 37
喷泉模型的特点
是典型的面向对象生命周期模型
,喷泉”这个词体现了面向对象软件开发过程迭代和无缝的特性
应该把线性过程作为总目标
2005-9-6 38
内容提要
软件过程
软件过程模型
瀑布模型
快速原型模型
喷泉模型
演化模型
增量模型
螺旋模型
软件开发过程的一般视图
2005-9-6 39
演化软件过程模型
演化模型是利用一种 迭代的思想方法,它的特征是使软件工程师 渐进地 开发逐步完善的软件版本。
增量模型 (Incremental Model)
螺旋模型 (Spiral Model)
2005-9-6 40
内容提要
软件过程
软件过程模型
瀑布模型
快速原型模型
喷泉模型
演化软件过程模型
增量模型
螺旋模型
软件开发过程的一般视图
2005-9-6 41
增量模型可行性研究与计划需求分析概要设计维护针对每个构件,完成详细设计、编码和集成,经测试后交付给用户
2005-9-6 42
增量模型的特点
融合了 瀑布模型 的基本成分和 快速原型 的迭代特征;
以 功能递增 的方式进行软件开发;
能较快地产生 可操作 的系统;
在每一步递增中,均发布一个 新的增量版本,把用户 /开发者的经验结合到不断求精的产品中;
每个增量的开发没有必要使用相同的过程;
可改善测试效果和降低软件开发总成本。
2005-9-6 43
calendar time
analysis design code test
System/information
engineering
increment 1
delivery of
1st increment
Core
product
analysis design code testincrement 2 delivery of2nd increment
More features
and functionality
analysis design code test
analysis design code test
increment 3
increment 4
delivery of
3rd increment
delivery of
4th increment
Makes a better use of resources.
风险更大的增量模型
2005-9-6 44
增量模型和原型模型的区别
增量过程模型与快速原型模型,本质上 都是迭代的。
两者区别在,增量模型强调每一个增量发布一个可操作的产品。早期的增量提供了为用户服务的功能和给用户评价的平台。
2005-9-6 45
增量模型存在的问题
很难把用户的需求映射到 适当规模 的增量上。
大多数系统需要一组在系统许多部分都会用到的基本服务 。但由于增量实现前,需求不能被详细定义,所以,明确所有增量都会用到的基本服务就比较困难。
2005-9-6 46
内容提要
软件过程
软件过程模型
瀑布模型
原型实现模型
喷泉模型
演化软件过程模型
增量模型
螺旋模型
软件开发过程的一般视图
2005-9-6 47
螺旋模型( Spiral Model)
Spiral 模型( Boehm,1988提出)
综合了快速原型模型的迭代特征和顺序模型的控制和系统化的优点。
增加了风险分析,是以风险为导向的生命期模型。
从一个小范围的关键中心地带开始寻找风险因素,
制定风险控制计划,并交付给下一步骤,如此迭代,每次迭代将项目扩展到一个更大的规模。
2005-9-6 48
Review Commitment
Partition
风险分析 原型 1
建模 模拟 评价需求计划生存期计划原型 2
风险分析软件需求需求确认开发计划风险分析原型 3
软件产品设计设计确认和验证集成与测试计 划风险分析可运行原型详细设计单元测试编码集成测试验收测试实现计划下一个阶段 开发,确认以及下一级产品确定目标选择方案设定约束条件评估方案,识别并排除风险累计成本各步骤的进度
The spiral model
2005-9-6 49
螺旋模型的特点
把软件开发过程组成为一个 逐步细化的定义周期 (螺旋周期)序列,每经历一个周期,系统就得到进一步的细化和完善;
紧密围绕开发中的风险问题,用 风险分析推动 软件设计向深一层扩展、求精;
强调 持续地判断、确定和修改用户任务目标,并按成本、
效益来分析候选的软件产品性质对任务目标的贡献;
可结合采用多种软件开发方法,但究竟结合哪一种方法仍由风险分析来决定。
2005-9-6 50
螺旋模型
对于大型软件系统的开发,螺旋模型是一个 很现实的方法 。
优势,随着迭代的增加(成本的增加),风险程度随之降低。
缺陷,比较复杂,需要相当的风险评估技术,且成功依赖于这种技术。
2005-9-6 51
内容提要
软件过程
软件过程模型
瀑布模型
原型实现模型
喷泉模型
演化软件过程模型
增量模型
螺旋模型
软件开发过程的一般视图
2005-9-6 52
软件开发过程的一般视图
无论哪种软件过程模型,软件开发过程都要经历三个典型阶段:
定义 Definition
开发 Development
维护 Maintenance
2005-9-6 53
定义阶段
集中于,做什么,
三个基本任务
系统分析 system analysis
软件项目计划 software project planning
需求分析 requirements analysis
2005-9-6 54
开发阶段
集中于,如何做,
三个特定的任务
软件设计 software design
编码 coding
软件测试 software testing
2005-9-6 55
维护阶段
关注于,变化,
四种类型的修改
改正 correction
适应 adaptation
增强 enhancement
预防 prevention (软件再工程、逆工程 )
2005-9-6 56
小结
软件过程和软件过程模型的概念
一系列不同的软件过程模型,以及各自的优点和缺点。
软件通过应用三个不同的阶段-定义、开发和维护来实现工程化生产。
提问
什么是软件?
软件与硬件相比,其特点是什么?
软件质量要素?
产生软件危机的原因?
什么是软件工程?
软件工程研究的内容
软件工程原理、基本框架
2005-9-6 2
第 2讲 软件过程模型
( Process Model)
2005-9-6 3
内容提要
软件过程
软件生命周期
软件过程模型
瀑布模型
快速原型模型
喷泉模型
演化模型
增量模型
螺旋模型
软件开发过程的一般视图
2005-9-6 4
质量焦点过程模型方法工具方法使用的顺序;要求交付的文档资料;为保证质量和适应变化所需要的管理;软件开发各个阶段完成的里程碑。
软件开发提供了,如何做” 的技术。
为软件工程方法提供了自动的或半自动的软件支撑环境,CASE
软件工程层次图
2005-9-6 5
软件过程(概要)
软件过程是近十年来人们关注的 焦点 。
软件过程是一个为开发高质量软件所需要完成的任务的 框架 。
软件工程是有创造力、有知识的人在定义好的、成熟的软件过程框架中进行的,该过程适合开发的软件和市场的需要。
2005-9-6 6
过程及软件过程
过程,为实现一个给定目标而进行的 一系列运作步骤 。
过程具有一系列的 性质,时间性、并发性、
嵌套性和度量性 等 。
软件过程,开发和维护软件及其相关产品所涉及的 一系列活动 。
2005-9-6 7
公共过程框架 Common process framework
保护性活动 Umbrella Activities
Project tracking & control? Formal technical reviews
Quality assurance? Configuration management
Documentation? Reusability management
Measurement? Risk management
框架活动 Framework Activities
任务集合 work tasks
工作任务 work products
交付物 milestones & deliverables
质量保证点 QA checkpoints
2005-9-6 8
软件过程
软件过程提供了一个 公共过程框架,在该框架下可以建立一个软件开发的综合计划:
若干 框架活动 适用于 所有软件项目,而不在乎其规模和复杂性 。
若干不同 任务的集合,使得框架活动适应于不同软件项目的特征和项目组的需求 。
若干 保护性活动,它们贯穿于整个过程模型之中 。 保护性活动独立于任何一个框架活动,且贯穿于整个过程之中 。
选择一个公共过程框架是根据产品,人员和项目而调整的 。
2005-9-6 9
内容提要
软件过程
软件生命周期
软件过程模型
瀑布模型
快速原型模型
喷泉模型
演化模型
增量模型
螺旋模型
软件开发过程的一般视图
2005-9-6 10
软件生命周期
软件生命周期是软件过程模型的基础,是软件产品或系统一系列相关活动的全周期。
软件生命周期阶段:
可行性研究及项目定义
需求分析
设计(总体设计和详细设计)
编程实现
测试
使用与维护
2005-9-6 11
软件生命周期模型定义开发维 护可行性研究报告需求规格说明书设计规格说明书程序测试报告软件定义可行性研究与计划需求分析设计编码测试运行和维护问题描述
2005-9-6 12
问题定义和可行性研究
确定要开发软件系统的 总目标和规模 。
从技术、经济和社会因素等方面的要求来论证完成该软件任务的 可行性 。
估计 可利用的资源 (计算机硬件,软件,人力等 )、
成本、效益、开发进度。
制定出完成开发任务的 实施计划,连同可行性研究报告,提交管理部门 审查 。
2005-9-6 13
需求分析
理解用户需求,并将用户需求用 书面形式 表达出来。
编写 软件需求规格说明书或系统功能说明书及初步的系统用户手册。需求说明书是以后阶段工作的基础。
将需求规格说明书提交管理机构 评审 。
2005-9-6 14
设计
总体设计 —,如何解决问题,
在需求说明书的基础上建立 软件的体系结构 。结构中每一组成部分都是意义明确的模块,每个模块都和某些需求相对应
可以列出多种解决方案进行比较
详细设计 — 对每个模块要完成的工作进行 具体的描述,为源程序编写打下基础
编写设计说明书(模块说明书、数据库或文件结构说明书等),提交 评审 。
2005-9-6 15
编码
把软件设计转换成计算机可以接受的 程序代码,
即写成以某一种 特定程序设计语言 表示的,源程序清单,。
写出的程序应当是结构良好、清晰易读的(如 匈牙利法则 ),且与设计相一致的。
2005-9-6 16
测试
单元测试,查找各模块在功能和结构上存在的问题并加以纠正。
集成测试,将已测试过的、并且相关的模块按一定顺序组装起来进行测试。
按规定的各项需求,逐项进行 系统测试,决定已开发的软件是否合格,能否交付用户使用。
2005-9-6 17
运行和维护
改正性维护,运行中发现了软件中的错误需要修正。
适应性维护,为了适应变化了的软件工作环境,需做适当变更。
完善性维护,为了增强软件的功能需做变更。
预防性维护,修改软件为将来的维护活动预先做准备
2005-9-6 18
软件过程模型的概念
软件过程模型是软件过程的 抽象表示 。
一个软件过程模型是软件开发全部过程、
活动和任务的 结构框架 。它能直观表达软件开发全过程,明确规定要完成的主要 活动,任务 和 开发策略 。
软件过程模型也常称为:
软件工程模式
软件生存周期模型
2005-9-6 19
过程模型的选择影响到整个软件开发生存期 。 就是说,它支配了
设计方法
编码语言
测试和维护技术的选择
2005-9-6 20
内容提要
软件过程
软件生命周期
软件过程模型
瀑布模型
快速原型模型
喷泉模型
演化模型
增量模型
螺旋模型
软件开发过程的一般视图
2005-9-6 21
传统瀑布模型 (Waterfall Model)
软件定义可行性研究与计划需求分析设计编码测试运行和维护
2005-9-6 22
实际瀑布模型软件定义可行性研究与计划需求分析设计编码测试运行和维护
2005-9-6 23
瀑布模型
所有过程模型的 鼻祖 。 ---- Royce,1970
瀑布模型把 软件开发过程划分成若干阶段,每个阶段的 任务相对独立,便于不同人员分工协作,从而降低 了整个软件开发工程的 困难程度 。在软件生存期的每个阶段都采用科学的管理技术和良好的方法与技术,而且每个阶段结束之前,都从技术和管理两个角度进行 严格的审查,经确认之后才开始下一阶段的工作。 ---- 项目是按照一定的顺序执行。
瀑布模型是 文档驱动 的,各个阶段不连续也不交叉。
2005-9-6 24
瀑布模型的特点
阶段间具有顺序性和依赖性。 (两重含义)
推迟程序的物理实现。( 重要指导思想)
质量保证,每个阶段必须完成规定的文档;每个阶段结束前完成文档审查,及早改正错误。 (两个重要做法)
易于组织,易于管理,因为你可以预先完成所有计划。
是一种 严格线性的,按阶段顺序的,逐步细化的 过程模型(开发模式)。
瀑布模型适合哪些场合呢?有何缺点呢?
2005-9-6 25
瀑布模型的缺陷
在项目开始的时候,用户常常 难以清楚 地给出所有 需求 ;用户与开发人员对需求 理解存在差异 。
缺乏灵活性:因为瀑布模型确定了需求分析的绝对重要性,但是在实践中要想获得完善的需求说明是非常困难的,导致,阻塞状态,。 反馈信息慢,开发周期长。
实际的项目 很少 按照 顺序 模型进行。
2005-9-6 26
瀑布模型适用场合
当 需求分析完全正确 和有很容易被理解的技术解决方案时,纯瀑布模型特别合适。
对于那些容易理解但很复杂的项目,采用纯瀑布模型比较合适,因为可以用顺序方法处理问题。
在质量需求高于成本需求和进度需求的时候,它尤为出色。
当开发队伍的技术力量比较弱或者缺乏经验时,
瀑布模型更为适合。
2005-9-6 27
瀑布模型变种,V型模型
该方法是对瀑布模型的修正,强调了验证活动
2005-9-6 28
内容提要
软件过程
软件生命周期
软件过程模型
瀑布模型
快速原型模型
喷泉模型
演化模型
增量模型
螺旋模型
基于构件的开发
软件开发过程的一般视图
2005-9-6 29
建立原型目标开发原型定义原型功能评估原型原型开发过程原型规划框架定义可执行原型评估报告用户意见反馈
2005-9-6 30
听取用户意见建造 /修改原型用户测试运行原型快速原型模型
( Rapid Prototype Model)
2005-9-6 31
原型模型分类
原型能完成的功能是项目系统最终产品能完成的功能的一个子集。
抛弃型原型,原型使用完毕后无需保留而抛弃,重新建立目标系统,开发的原型仅以演示为目的(用户界面的开发)。
演化型原型,原型是最终产品的一部分,原型系统根据用户的反馈意见不断被开发和被修正,最终它变为一个真正的系统。
2005-9-6 32
原型模型的特点适用于 用户驱动 的系统(即需求模糊或随时间变化的系统)。
2005-9-6 33
原型模型的优点
从实践中学习 (Learning by doing)
用户参与
使部分已知需求逐渐清晰化
提高系统的实用性、可维护性
节省开发的投入、缩短整个软件的开发周期
2005-9-6 34
原型模型存在的问题
用户有时误解了原型的角色,例如他们可能误解原型应该和真实系统一样可靠。
缺少项目标准,进化原型方法有点像编码修正。
缺少控制,由于用户可能不断提出新要求,因而原型迭代的周期很难控制。
额外的花费,研究结果表明构造一个原型可能需要
10%额外花费。
为了尽快实现原型,采用了 不合适的技术,运行效率可能会受影响。
原型法要求开发者与用户密切接触,有时这是不可能的。例如外包软件。
2005-9-6 35
内容提要
软件过程
软件生命周期
软件过程模型
瀑布模型
快速原型模型
喷泉模型
演化模型
增量模型
螺旋模型
软件开发过程的一般视图
2005-9-6 36
喷泉模维护确认实现设计分析演化
2005-9-6 37
喷泉模型的特点
是典型的面向对象生命周期模型
,喷泉”这个词体现了面向对象软件开发过程迭代和无缝的特性
应该把线性过程作为总目标
2005-9-6 38
内容提要
软件过程
软件过程模型
瀑布模型
快速原型模型
喷泉模型
演化模型
增量模型
螺旋模型
软件开发过程的一般视图
2005-9-6 39
演化软件过程模型
演化模型是利用一种 迭代的思想方法,它的特征是使软件工程师 渐进地 开发逐步完善的软件版本。
增量模型 (Incremental Model)
螺旋模型 (Spiral Model)
2005-9-6 40
内容提要
软件过程
软件过程模型
瀑布模型
快速原型模型
喷泉模型
演化软件过程模型
增量模型
螺旋模型
软件开发过程的一般视图
2005-9-6 41
增量模型可行性研究与计划需求分析概要设计维护针对每个构件,完成详细设计、编码和集成,经测试后交付给用户
2005-9-6 42
增量模型的特点
融合了 瀑布模型 的基本成分和 快速原型 的迭代特征;
以 功能递增 的方式进行软件开发;
能较快地产生 可操作 的系统;
在每一步递增中,均发布一个 新的增量版本,把用户 /开发者的经验结合到不断求精的产品中;
每个增量的开发没有必要使用相同的过程;
可改善测试效果和降低软件开发总成本。
2005-9-6 43
calendar time
analysis design code test
System/information
engineering
increment 1
delivery of
1st increment
Core
product
analysis design code testincrement 2 delivery of2nd increment
More features
and functionality
analysis design code test
analysis design code test
increment 3
increment 4
delivery of
3rd increment
delivery of
4th increment
Makes a better use of resources.
风险更大的增量模型
2005-9-6 44
增量模型和原型模型的区别
增量过程模型与快速原型模型,本质上 都是迭代的。
两者区别在,增量模型强调每一个增量发布一个可操作的产品。早期的增量提供了为用户服务的功能和给用户评价的平台。
2005-9-6 45
增量模型存在的问题
很难把用户的需求映射到 适当规模 的增量上。
大多数系统需要一组在系统许多部分都会用到的基本服务 。但由于增量实现前,需求不能被详细定义,所以,明确所有增量都会用到的基本服务就比较困难。
2005-9-6 46
内容提要
软件过程
软件过程模型
瀑布模型
原型实现模型
喷泉模型
演化软件过程模型
增量模型
螺旋模型
软件开发过程的一般视图
2005-9-6 47
螺旋模型( Spiral Model)
Spiral 模型( Boehm,1988提出)
综合了快速原型模型的迭代特征和顺序模型的控制和系统化的优点。
增加了风险分析,是以风险为导向的生命期模型。
从一个小范围的关键中心地带开始寻找风险因素,
制定风险控制计划,并交付给下一步骤,如此迭代,每次迭代将项目扩展到一个更大的规模。
2005-9-6 48
Review Commitment
Partition
风险分析 原型 1
建模 模拟 评价需求计划生存期计划原型 2
风险分析软件需求需求确认开发计划风险分析原型 3
软件产品设计设计确认和验证集成与测试计 划风险分析可运行原型详细设计单元测试编码集成测试验收测试实现计划下一个阶段 开发,确认以及下一级产品确定目标选择方案设定约束条件评估方案,识别并排除风险累计成本各步骤的进度
The spiral model
2005-9-6 49
螺旋模型的特点
把软件开发过程组成为一个 逐步细化的定义周期 (螺旋周期)序列,每经历一个周期,系统就得到进一步的细化和完善;
紧密围绕开发中的风险问题,用 风险分析推动 软件设计向深一层扩展、求精;
强调 持续地判断、确定和修改用户任务目标,并按成本、
效益来分析候选的软件产品性质对任务目标的贡献;
可结合采用多种软件开发方法,但究竟结合哪一种方法仍由风险分析来决定。
2005-9-6 50
螺旋模型
对于大型软件系统的开发,螺旋模型是一个 很现实的方法 。
优势,随着迭代的增加(成本的增加),风险程度随之降低。
缺陷,比较复杂,需要相当的风险评估技术,且成功依赖于这种技术。
2005-9-6 51
内容提要
软件过程
软件过程模型
瀑布模型
原型实现模型
喷泉模型
演化软件过程模型
增量模型
螺旋模型
软件开发过程的一般视图
2005-9-6 52
软件开发过程的一般视图
无论哪种软件过程模型,软件开发过程都要经历三个典型阶段:
定义 Definition
开发 Development
维护 Maintenance
2005-9-6 53
定义阶段
集中于,做什么,
三个基本任务
系统分析 system analysis
软件项目计划 software project planning
需求分析 requirements analysis
2005-9-6 54
开发阶段
集中于,如何做,
三个特定的任务
软件设计 software design
编码 coding
软件测试 software testing
2005-9-6 55
维护阶段
关注于,变化,
四种类型的修改
改正 correction
适应 adaptation
增强 enhancement
预防 prevention (软件再工程、逆工程 )
2005-9-6 56
小结
软件过程和软件过程模型的概念
一系列不同的软件过程模型,以及各自的优点和缺点。
软件通过应用三个不同的阶段-定义、开发和维护来实现工程化生产。