《软件生命周期与软件过程模型》由会员分享,可在线阅读,更多相关《软件生命周期与软件过程模型(54页珍藏版)》请在金锄头文库上搜索。
1、第二讲第二讲软件生命周期与软件生命周期与软件过程模型软件过程模型1提纲提纲软件生命周期软件生命周期 软件过程模型软件过程模型 瀑布模型瀑布模型瀑布模型瀑布模型 演化模型演化模型演化模型演化模型 增量模型增量模型增量模型增量模型 原型模型原型模型原型模型原型模型 螺旋模型螺旋模型螺旋模型螺旋模型 ( (风险分析风险分析风险分析风险分析) ) 喷泉模型喷泉模型喷泉模型喷泉模型总结总结2软件工程把整个软件开发过程视为一项工软件工程把整个软件开发过程视为一项工程,把整个工程分成若干个阶段,制定每程,把整个工程分成若干个阶段,制定每个阶段的计划,逐个实施。个阶段的计划,逐个实施。 V模型模型3用户用户需
2、求获取需求获取需求规需求规约约需需求求描描述述需求分析需求分析设计设计设计规设计规约约详细设计详细设计模块设模块设计书计书编码编码程序程序已测试已测试模块模块单元测试单元测试集成集成已集成已集成软件软件集成测试集成测试软件软件确认测试确认测试已已确确认认的的软件软件运行测试运行测试软件产软件产品品评评审审评评审审评评审审评评审审评评审审静静态态检检查查测试用例测试用例集成计划集成计划建立文档建立文档软件开发软件开发V模型模型评评审审评评审审评评审审4制定计划制定计划确定要开发软件系统的确定要开发软件系统的总目标总目标给出给出功能功能、性能性能、可靠性可靠性以及以及接口接口等方面等方面的要求的要
3、求完成该软件任务的完成该软件任务的可行性研究可行性研究估计可利用的估计可利用的资源资源(硬件、软件、人力等硬件、软件、人力等)、成本成本、效益效益、开发进度开发进度制定出完成开发任务的制定出完成开发任务的实施计划实施计划,连同,连同可可行性研究报告行性研究报告,提交管理部门审查,提交管理部门审查5需求分析和定义需求分析和定义对用户提出的要求进行分析并给出详细的定对用户提出的要求进行分析并给出详细的定义义编写编写软件需求说明书软件需求说明书或或系统功能说明书系统功能说明书及及初初步的系统用户手册步的系统用户手册评审评审6软件设计软件设计概要设计概要设计 把各项需求转换成把各项需求转换成软件的体系
4、软件的体系结构结构。结构中每一组成部分都是意义明确的。结构中每一组成部分都是意义明确的模块,每个模块都和某些需求相对应。模块,每个模块都和某些需求相对应。详细设计详细设计 对每个模块要完成的工作进行对每个模块要完成的工作进行具体的描述,为源程序编写打下基础。具体的描述,为源程序编写打下基础。编写编写设计说明书设计说明书,提交,提交评审评审。7程序编写程序编写 (软件实现软件实现)把软件设计转换成计算机可以接受的程序代把软件设计转换成计算机可以接受的程序代码,即写成以某一种特定程序设计语言表示码,即写成以某一种特定程序设计语言表示的的“源程序清单源程序清单”写出的程序应当结构良好、清晰易读,且与
5、写出的程序应当结构良好、清晰易读,且与设计相一致设计相一致8软件测试软件测试单元测试单元测试,查找各模块在功能和结构上存,查找各模块在功能和结构上存在的问题并加以纠正在的问题并加以纠正集成测试集成测试,将已测试过的模块按一定顺序,将已测试过的模块按一定顺序组装起来组装起来按规定的各项需求,逐项进行按规定的各项需求,逐项进行有效性测试有效性测试,决定已开发的软件是否合格,能否交付用决定已开发的软件是否合格,能否交付用户使用户使用9运行运行/维护维护改正性维护改正性维护 运行中发现了软件中的错误需运行中发现了软件中的错误需要修正要修正适应性维护适应性维护 为了适应变化了的软件工作环为了适应变化了的
6、软件工作环境,需做适当变更境,需做适当变更完善性维护完善性维护 为了增强软件的功能需做变更为了增强软件的功能需做变更预防性维护预防性维护 “ “把今天的方法学用于昨天的系把今天的方法学用于昨天的系统以满足明天的需要统以满足明天的需要”。为进一步改进软件。为进一步改进软件打基础打基础10软件生命周期软件生命周期 教材教材教材教材P7P7软件有一个孕育、诞生、成长、成熟、衰亡的生软件有一个孕育、诞生、成长、成熟、衰亡的生软件有一个孕育、诞生、成长、成熟、衰亡的生软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生命周期。存过程。这个过程即为计算机软件的生命周期。存过程。这个
7、过程即为计算机软件的生命周期。存过程。这个过程即为计算机软件的生命周期。软件生命周期的六个步骤,即软件生命周期的六个步骤,即软件生命周期的六个步骤,即软件生命周期的六个步骤,即制定计划、需求分制定计划、需求分制定计划、需求分制定计划、需求分析、设计、程序编码、测试析、设计、程序编码、测试析、设计、程序编码、测试析、设计、程序编码、测试及及及及运行维护运行维护运行维护运行维护。11软件过程软件过程12软件过程模型软件过程模型软件过程模型软件过程模型 是制作软件产品的一组活动是制作软件产品的一组活动以及结果,这些活动主要由软件人员来完以及结果,这些活动主要由软件人员来完成。成。软件活动软件活动 主
8、要有:主要有: 软件描述软件描述软件描述软件描述 定义软件功能及使用的限制定义软件功能及使用的限制定义软件功能及使用的限制定义软件功能及使用的限制 软件开发软件开发软件开发软件开发 软件的设计和实现软件的设计和实现软件的设计和实现软件的设计和实现 软件有效性验证软件有效性验证软件有效性验证软件有效性验证 保证能够满足客户的需要保证能够满足客户的需要保证能够满足客户的需要保证能够满足客户的需要 软件进化软件进化软件进化软件进化 软件随着客户需求的变化不断的改软件随着客户需求的变化不断的改软件随着客户需求的变化不断的改软件随着客户需求的变化不断的改进进进进13软件过程模型软件过程模型瀑布模型瀑布模
9、型演化模型:增量模型、原型模型、螺旋模型演化模型:增量模型、原型模型、螺旋模型喷泉模型喷泉模型统一过程模型统一过程模型敏捷开发敏捷开发14瀑布模型瀑布模型 教材教材P18主要思想主要思想软件开发过程与软件生命周期是一致的软件开发过程与软件生命周期是一致的相邻二阶段之间存在因果关系相邻二阶段之间存在因果关系需对阶段性产品进行评审需对阶段性产品进行评审1516瀑布模型在软件工程中占有重要的地位瀑布模型在软件工程中占有重要的地位局限性局限性 缺乏灵活性,如用户需求一开始很难确缺乏灵活性,如用户需求一开始很难确定定 到最后阶段才能得到可运行的软件版本到最后阶段才能得到可运行的软件版本17带有反馈的瀑布
10、模型带有反馈的瀑布模型18需求分析需求分析设计设计编码编码测试测试软件缺陷产生的原因软件缺陷产生的原因19演化模型演化模型 教材教材教材教材P20P20两个概念两个概念原型原型软件演化软件演化(进化进化)20演化模型之演化模型之 增量模型增量模型项目日历时间项目日历时间软软件件功功能能性性和和特特征征1 12 23 34 45 5第第2 2次增量发布次增量发布增量增量2 21 12 23 34 45 5第第n n次增量发布次增量发布增量增量n n1 12 23 34 45 5第第1 1次增量发布次增量发布增量增量1 15 5部署(发布,反馈)部署(发布,反馈)4 4构造(编码,测试)构造(编码
11、,测试)3 3建模(分析,设计)建模(分析,设计)2 2计划计划1 1交流交流21演化模型之演化模型之 增量模型增量模型项目日历时间项目日历时间软软件件功功能能性性和和特特征征1 12 23 34 45 5第第2 2次增量发布次增量发布增量增量2 21 12 23 34 45 5第第n n次增量发布次增量发布增量增量n n1 12 23 34 45 5第第1 1次增量发布次增量发布增量增量1 15 5部署(发布,反馈)部署(发布,反馈)4 4构造(编码,测试)构造(编码,测试)3 3建模(分析,设计)建模(分析,设计)2 2计划计划1 1交流交流22例如利用增量模型开发字处理软件例如利用增量模
12、型开发字处理软件第第第第1 1个增量中提供基本的文件管理、编辑和文档生个增量中提供基本的文件管理、编辑和文档生个增量中提供基本的文件管理、编辑和文档生个增量中提供基本的文件管理、编辑和文档生成的功能;成的功能;成的功能;成的功能;第第第第2 2个增量中提供复杂的编辑和文档生成功能;个增量中提供复杂的编辑和文档生成功能;个增量中提供复杂的编辑和文档生成功能;个增量中提供复杂的编辑和文档生成功能;第第第第3 3个增量中提供拼写和语法检查功能;个增量中提供拼写和语法检查功能;个增量中提供拼写和语法检查功能;个增量中提供拼写和语法检查功能;第第第第4 4个增量中提供高级页面排版功能个增量中提供高级页面
13、排版功能个增量中提供高级页面排版功能个增量中提供高级页面排版功能23增量模型将软件的开发过程分成若干个日程时间增量模型将软件的开发过程分成若干个日程时间增量模型将软件的开发过程分成若干个日程时间增量模型将软件的开发过程分成若干个日程时间交错的线性序列,每个线性序列产生软件的一个交错的线性序列,每个线性序列产生软件的一个交错的线性序列,每个线性序列产生软件的一个交错的线性序列,每个线性序列产生软件的一个可发布的可发布的可发布的可发布的“ “增量增量增量增量” ”版本,后一个版本是对前一版版本,后一个版本是对前一版版本,后一个版本是对前一版版本,后一个版本是对前一版本的修改和补充,重复增量发布的过
14、程,直至产本的修改和补充,重复增量发布的过程,直至产本的修改和补充,重复增量发布的过程,直至产本的修改和补充,重复增量发布的过程,直至产生最终的完善产品。生最终的完善产品。生最终的完善产品。生最终的完善产品。增量模型融合了瀑布模型的基本成分(重复地应增量模型融合了瀑布模型的基本成分(重复地应增量模型融合了瀑布模型的基本成分(重复地应增量模型融合了瀑布模型的基本成分(重复地应用)和演化模型的迭代特征用)和演化模型的迭代特征用)和演化模型的迭代特征用)和演化模型的迭代特征增量模型强调每一个增量都发布一个可运行的产增量模型强调每一个增量都发布一个可运行的产增量模型强调每一个增量都发布一个可运行的产增
15、量模型强调每一个增量都发布一个可运行的产品(品(品(品(第一个增量是核心产品)第一个增量是核心产品)第一个增量是核心产品)第一个增量是核心产品)24增量模型特别适用于:增量模型特别适用于: 需求经常变化的软件开发需求经常变化的软件开发 市场急需而开发人员和资金不能在设定的市场急需而开发人员和资金不能在设定的市场期限之前实现一个完善的产品的软件开市场期限之前实现一个完善的产品的软件开发发增量模型能有计划地管理技术风险,如早期增量模型能有计划地管理技术风险,如早期增量版本中避免采用尚未成熟的技术增量版本中避免采用尚未成熟的技术25演化模型之演化模型之 原型模型原型模型26原型应该包括目标系统的关键
16、问题和反映原型应该包括目标系统的关键问题和反映目标系统的大致面貌,展示目标系统的全目标系统的大致面貌,展示目标系统的全部或部分功能、性能部或部分功能、性能原型模型两个阶段原型模型两个阶段(1)原型开发阶段)原型开发阶段(2)目标软件开发阶段)目标软件开发阶段27原型的使用策略:原型的使用策略:废弃(废弃(废弃(废弃(throw awaythrow away)策略)策略)策略)策略 主要用于主要用于主要用于主要用于探索型探索型探索型探索型和和和和实验型实验型实验型实验型原型的开发。这些原型关原型的开发。这些原型关原型的开发。这些原型关原型的开发。这些原型关注于目标系统的某些特性,而不是全部特性,
17、开发这些注于目标系统的某些特性,而不是全部特性,开发这些注于目标系统的某些特性,而不是全部特性,开发这些注于目标系统的某些特性,而不是全部特性,开发这些原型时通常不考虑与探索或实验目的无关的功能、质量、原型时通常不考虑与探索或实验目的无关的功能、质量、原型时通常不考虑与探索或实验目的无关的功能、质量、原型时通常不考虑与探索或实验目的无关的功能、质量、结构等因素,这种原型通常被废丢,然后根据探索或实结构等因素,这种原型通常被废丢,然后根据探索或实结构等因素,这种原型通常被废丢,然后根据探索或实结构等因素,这种原型通常被废丢,然后根据探索或实验的结果用良好的结构和设计思想重新设计目标系统。验的结果
18、用良好的结构和设计思想重新设计目标系统。验的结果用良好的结构和设计思想重新设计目标系统。验的结果用良好的结构和设计思想重新设计目标系统。追加(追加(追加(追加(add onadd on)策略)策略)策略)策略 主要用于演化型原型的开发。这种原型通常是实现主要用于演化型原型的开发。这种原型通常是实现主要用于演化型原型的开发。这种原型通常是实现主要用于演化型原型的开发。这种原型通常是实现了目标系统中已明确定义的特性的一个子集,通过对它了目标系统中已明确定义的特性的一个子集,通过对它了目标系统中已明确定义的特性的一个子集,通过对它了目标系统中已明确定义的特性的一个子集,通过对它的不断修改和扩充,逐步
19、追加新的要求,最后使其演化的不断修改和扩充,逐步追加新的要求,最后使其演化的不断修改和扩充,逐步追加新的要求,最后使其演化的不断修改和扩充,逐步追加新的要求,最后使其演化成最终的目标系统。成最终的目标系统。成最终的目标系统。成最终的目标系统。28使用原型法需注意:使用原型法需注意:(1 1)用户对系统模糊不清,无法准确回答目标系统)用户对系统模糊不清,无法准确回答目标系统)用户对系统模糊不清,无法准确回答目标系统)用户对系统模糊不清,无法准确回答目标系统的需求的需求的需求的需求 (2 2)要有一定的开发环境和工具支持)要有一定的开发环境和工具支持)要有一定的开发环境和工具支持)要有一定的开发环
20、境和工具支持(3 3)经过对原型的若干次修改,应)经过对原型的若干次修改,应)经过对原型的若干次修改,应)经过对原型的若干次修改,应收敛收敛收敛收敛到目标范围到目标范围到目标范围到目标范围内,否则可能失败内,否则可能失败内,否则可能失败内,否则可能失败(4 4)对大型软件而言,原型可能非常复杂而难以快)对大型软件而言,原型可能非常复杂而难以快)对大型软件而言,原型可能非常复杂而难以快)对大型软件而言,原型可能非常复杂而难以快速形成,若没有现成的,不应考虑采用该方法速形成,若没有现成的,不应考虑采用该方法速形成,若没有现成的,不应考虑采用该方法速形成,若没有现成的,不应考虑采用该方法29优点优点
21、有助于获取用户需求,加强对需求的理解有助于获取用户需求,加强对需求的理解有助于获取用户需求,加强对需求的理解有助于获取用户需求,加强对需求的理解尽早发现软件中的错误尽早发现软件中的错误尽早发现软件中的错误尽早发现软件中的错误支持需求的动态变化支持需求的动态变化支持需求的动态变化支持需求的动态变化适合于需求动态变化、事先难以确定的系统适合于需求动态变化、事先难以确定的系统适合于需求动态变化、事先难以确定的系统适合于需求动态变化、事先难以确定的系统局限性局限性不能支持风险分析不能支持风险分析不能支持风险分析不能支持风险分析30演化模型之演化模型之 螺旋模型螺旋模型基本思想基本思想螺旋模型是瀑布模型
22、、原型模型的有机结螺旋模型是瀑布模型、原型模型的有机结合,同时增加了风险分析合,同时增加了风险分析3132螺旋模型沿着螺线旋转,在四个象限上分别螺旋模型沿着螺线旋转,在四个象限上分别表达四个方面的活动表达四个方面的活动制定计划制定计划制定计划制定计划 确定软件目标,选定实施方案,弄确定软件目标,选定实施方案,弄确定软件目标,选定实施方案,弄确定软件目标,选定实施方案,弄清项目开发的限制清项目开发的限制清项目开发的限制清项目开发的限制风险分析风险分析风险分析风险分析 分析所选方案,考虑如何识别和消分析所选方案,考虑如何识别和消分析所选方案,考虑如何识别和消分析所选方案,考虑如何识别和消除风险除风
23、险除风险除风险实施工程实施工程实施工程实施工程 实施软件开发实施软件开发实施软件开发实施软件开发客户评估客户评估客户评估客户评估 评价开发工作,提出修正建议评价开发工作,提出修正建议评价开发工作,提出修正建议评价开发工作,提出修正建议33优点优点有助于获取用户需求,加强对需求的理解有助于获取用户需求,加强对需求的理解尽早发现软件中的错误尽早发现软件中的错误支持需求的动态变化支持需求的动态变化支持风险分析,可降低或者消除软件开发支持风险分析,可降低或者消除软件开发风险风险适合于需求动态变化,事先难以确定并且适合于需求动态变化,事先难以确定并且开发风险较大的系统开发风险较大的系统34螺旋模型出现了
24、一些变种,它螺旋模型出现了一些变种,它螺旋模型出现了一些变种,它螺旋模型出现了一些变种,它可以有可以有可以有可以有3 3到到到到6 6个任务个任务个任务个任务区域区域区域区域。螺旋模型指引的软件项目开发沿着螺线自内向外螺旋模型指引的软件项目开发沿着螺线自内向外螺旋模型指引的软件项目开发沿着螺线自内向外螺旋模型指引的软件项目开发沿着螺线自内向外旋转,每旋转一圈,表示开发出一个更为完善的旋转,每旋转一圈,表示开发出一个更为完善的旋转,每旋转一圈,表示开发出一个更为完善的旋转,每旋转一圈,表示开发出一个更为完善的新软件版本。新软件版本。新软件版本。新软件版本。如果发现风险太大,开发者和客户无法承受,
25、则如果发现风险太大,开发者和客户无法承受,则如果发现风险太大,开发者和客户无法承受,则如果发现风险太大,开发者和客户无法承受,则项目就可能因此而终止。项目就可能因此而终止。项目就可能因此而终止。项目就可能因此而终止。多数情况下沿着螺线的活动会继续下去,自内向多数情况下沿着螺线的活动会继续下去,自内向多数情况下沿着螺线的活动会继续下去,自内向多数情况下沿着螺线的活动会继续下去,自内向外,逐步延伸,最终得到所期望的系统。外,逐步延伸,最终得到所期望的系统。外,逐步延伸,最终得到所期望的系统。外,逐步延伸,最终得到所期望的系统。35风险风险风险概念风险概念(1)风险涉及的是未来将要发生的事情)风险涉
26、及的是未来将要发生的事情(2)风险涉及改变)风险涉及改变(3)风险涉及选择,具有不确定性)风险涉及选择,具有不确定性36有关风险的几个例子:有关风险的几个例子:某项目已成功实施某项目已成功实施某项目已成功实施某项目已成功实施1 1个月,某天小谢突然告诉小王,个月,某天小谢突然告诉小王,个月,某天小谢突然告诉小王,个月,某天小谢突然告诉小王,他已办理好了去德国的签证,他已办理好了去德国的签证,他已办理好了去德国的签证,他已办理好了去德国的签证,2 2周后他会辞职离开周后他会辞职离开周后他会辞职离开周后他会辞职离开公司前往德国留学公司前往德国留学公司前往德国留学公司前往德国留学 (人员人员人员人员
27、) 小谢的离开显然将会影响项目组的正常运作,影响项目小谢的离开显然将会影响项目组的正常运作,影响项目小谢的离开显然将会影响项目组的正常运作,影响项目小谢的离开显然将会影响项目组的正常运作,影响项目的进度,为此将会给项目的实施带来损失的进度,为此将会给项目的实施带来损失的进度,为此将会给项目的实施带来损失的进度,为此将会给项目的实施带来损失 可以想象,可以想象,可以想象,可以想象,2 2周以后小谢的离开将会带来一系列问题:周以后小谢的离开将会带来一系列问题:周以后小谢的离开将会带来一系列问题:周以后小谢的离开将会带来一系列问题:谁来接替小谢的工作?在此之前谁来负责交接小谢的工谁来接替小谢的工作?
28、在此之前谁来负责交接小谢的工谁来接替小谢的工作?在此之前谁来负责交接小谢的工谁来接替小谢的工作?在此之前谁来负责交接小谢的工作?如何尽可能的避免由此给项目组带来的损失作?如何尽可能的避免由此给项目组带来的损失作?如何尽可能的避免由此给项目组带来的损失作?如何尽可能的避免由此给项目组带来的损失( (包括包括包括包括进度损失和工作损失等进度损失和工作损失等进度损失和工作损失等进度损失和工作损失等) ) 尽管还没发生,但必须考虑如何避免问题的发生,以及尽管还没发生,但必须考虑如何避免问题的发生,以及尽管还没发生,但必须考虑如何避免问题的发生,以及尽管还没发生,但必须考虑如何避免问题的发生,以及一旦发
29、生后该采取得措施,以便将损失减少到最少一旦发生后该采取得措施,以便将损失减少到最少一旦发生后该采取得措施,以便将损失减少到最少一旦发生后该采取得措施,以便将损失减少到最少37按照软件开发计划,需求分析应该在按照软件开发计划,需求分析应该在12月月31日之前完成,然而在软件项目实施过程中日之前完成,然而在软件项目实施过程中项目经理发现,由于原先对工作量估算过于项目经理发现,由于原先对工作量估算过于乐观,需求分析在乐观,需求分析在12月月31日之前已经不可日之前已经不可能完成能完成(计划计划)显然,原先计划制定的不科学和不准确,显然,原先计划制定的不科学和不准确,导致了实施过程中进度难以控制,如果
30、强导致了实施过程中进度难以控制,如果强行按照计划来执行显然是不可行的,为此,行按照计划来执行显然是不可行的,为此,必须对计划重新进行分析和调整必须对计划重新进行分析和调整38在软件设计阶段,软件设计负责人老王发在软件设计阶段,软件设计负责人老王发现,用户需求中的某项需求现,用户需求中的某项需求(例如,将已有例如,将已有word文档的内容显示在文档的内容显示在Web页面上页面上)至今至今尚未找到解决的技术途径尚未找到解决的技术途径(技术技术)显然,该问题将直接影响软件项目的后显然,该问题将直接影响软件项目的后续开发工作,影响到软件项目能否成功续开发工作,影响到软件项目能否成功完成完成39在需求分
31、析过程中,老王带领的需求分析小在需求分析过程中,老王带领的需求分析小组和用户在进行交流的过程中发生了矛盾,组和用户在进行交流的过程中发生了矛盾,出现了争吵,用户方说将不再配合需求分析出现了争吵,用户方说将不再配合需求分析小组的工作,而且他们确实没有配合开发方小组的工作,而且他们确实没有配合开发方的工作的工作(合作合作)显然,开发方和用户方出现这种状况显然是双显然,开发方和用户方出现这种状况显然是双显然,开发方和用户方出现这种状况显然是双显然,开发方和用户方出现这种状况显然是双方没有想到的方没有想到的方没有想到的方没有想到的这种状况延续下去必将对软件项目的实施产生这种状况延续下去必将对软件项目的
32、实施产生这种状况延续下去必将对软件项目的实施产生这种状况延续下去必将对软件项目的实施产生影响,影响软件项目的进度,甚至会导致项目影响,影响软件项目的进度,甚至会导致项目影响,影响软件项目的进度,甚至会导致项目影响,影响软件项目的进度,甚至会导致项目失败失败失败失败4041沟通沟通策划策划 建模建模构建构建部署部署 交付 反馈开始分析 设计编码 测试项目估算 制定进度计划 风险分析42喷泉模型喷泉模型43喷泉模型是一种支持面向对象开发的模型喷泉模型是一种支持面向对象开发的模型喷泉模型是一种支持面向对象开发的模型喷泉模型是一种支持面向对象开发的模型体现体现体现体现迭代迭代迭代迭代和和和和无间隙无间
33、隙无间隙无间隙特征特征特征特征 该模型认为软件开发过程自下而上周期的各阶段是该模型认为软件开发过程自下而上周期的各阶段是该模型认为软件开发过程自下而上周期的各阶段是该模型认为软件开发过程自下而上周期的各阶段是相互重叠和多次反复的,就像水喷上去又可以落相互重叠和多次反复的,就像水喷上去又可以落相互重叠和多次反复的,就像水喷上去又可以落相互重叠和多次反复的,就像水喷上去又可以落下来,类似一个喷泉。各个开发阶段没有特定的下来,类似一个喷泉。各个开发阶段没有特定的下来,类似一个喷泉。各个开发阶段没有特定的下来,类似一个喷泉。各个开发阶段没有特定的次序要求,并且可以交互进行,可以在某个开发次序要求,并且
34、可以交互进行,可以在某个开发次序要求,并且可以交互进行,可以在某个开发次序要求,并且可以交互进行,可以在某个开发阶段中随时补充其他任何开发阶段中的遗漏。阶段中随时补充其他任何开发阶段中的遗漏。阶段中随时补充其他任何开发阶段中的遗漏。阶段中随时补充其他任何开发阶段中的遗漏。 44软件的某个部分通常被重复多次,相关对象在每软件的某个部分通常被重复多次,相关对象在每次迭代中随之加入渐进的软件成分。各活动之间次迭代中随之加入渐进的软件成分。各活动之间无明显边界,例如设计和实现之间没有明显的边无明显边界,例如设计和实现之间没有明显的边界,这也称为界,这也称为“喷泉模型的无间隙性喷泉模型的无间隙性”。由于
35、对。由于对象概念的引入,表达分析、设计及实现等活动只象概念的引入,表达分析、设计及实现等活动只用对象类和关系,从而可以较容易地实现活动的用对象类和关系,从而可以较容易地实现活动的迭代和无间隙。迭代和无间隙。 45喷泉模型不像瀑布模型那样,需要分析活动结束喷泉模型不像瀑布模型那样,需要分析活动结束后才开始设计活动,设计活动结束后才开始编码后才开始设计活动,设计活动结束后才开始编码活动。该模型的各个阶段没有明显的界限,开发活动。该模型的各个阶段没有明显的界限,开发人员可以同步进行开发。人员可以同步进行开发。优点是可以提高软件项目开发效率,节省开发时优点是可以提高软件项目开发效率,节省开发时间,适应
36、于面向对象的软件开发过程。间,适应于面向对象的软件开发过程。由于喷泉模型在各个开发阶段是重叠的,因此在由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此开发过程中需要大量的开发人员,因此不利于项不利于项目的管理目的管理。此外这种模型要求严格管理文档,使得此外这种模型要求严格管理文档,使得审核的难审核的难度加大度加大,尤其是面对可能随时加入各种信息、需,尤其是面对可能随时加入各种信息、需求与资料的情况。求与资料的情况。46起始起始起始起始细化细化细化细化构建构建构建构建转换转换转换转换软件增量软件增量生产生产生产生产发布发布发布发布沟沟沟沟 通通通通策策策策 划划划划建
37、建建建 模模模模部部部部 署署署署构构构构 建建建建近年流行的近年流行的 统一过程模型统一过程模型47基于构件的软件开发模型基于构件的软件开发模型 教材教材P24形式化方法模型形式化方法模型 教材教材P25 形式化方法是建立在严格数学基础上的一种形式化方法是建立在严格数学基础上的一种软件开发方法。软件开发的全过程中,从需求分软件开发方法。软件开发的全过程中,从需求分析、规约、设计、编程、系统集成、测试、文档析、规约、设计、编程、系统集成、测试、文档生成,直至维护等各个阶段,凡是采用严格的数生成,直至维护等各个阶段,凡是采用严格的数学语言,具有学语言,具有精确的数学语义精确的数学语义的方法,都称
38、为形的方法,都称为形式化方法。式化方法。48软件过程模型总结:软件过程模型总结:瀑布模型瀑布模型瀑布模型瀑布模型建议线型流程的框架活动,这在软件世建议线型流程的框架活动,这在软件世建议线型流程的框架活动,这在软件世建议线型流程的框架活动,这在软件世界里通常与当代软件开发的现实情况不符界里通常与当代软件开发的现实情况不符界里通常与当代软件开发的现实情况不符界里通常与当代软件开发的现实情况不符( (例如,例如,例如,例如,持续的变更、演化的系统、紧迫的开发时间持续的变更、演化的系统、紧迫的开发时间持续的变更、演化的系统、紧迫的开发时间持续的变更、演化的系统、紧迫的开发时间) )。但。但。但。但瀑布
39、模型确实适用于需求定义清楚且稳定的软件瀑布模型确实适用于需求定义清楚且稳定的软件瀑布模型确实适用于需求定义清楚且稳定的软件瀑布模型确实适用于需求定义清楚且稳定的软件开发。开发。开发。开发。增量软件增量软件增量软件增量软件过程模型通过一系列的增量发布产生软过程模型通过一系列的增量发布产生软过程模型通过一系列的增量发布产生软过程模型通过一系列的增量发布产生软件。件。件。件。演化过程模型演化过程模型演化过程模型演化过程模型认识到大多数软件工程项目的迭代认识到大多数软件工程项目的迭代认识到大多数软件工程项目的迭代认识到大多数软件工程项目的迭代特性,其设计目的是为了适应变更。演化模型,特性,其设计目的是
40、为了适应变更。演化模型,特性,其设计目的是为了适应变更。演化模型,特性,其设计目的是为了适应变更。演化模型,例如原型开发及螺旋模型,快速地产生增量的工例如原型开发及螺旋模型,快速地产生增量的工例如原型开发及螺旋模型,快速地产生增量的工例如原型开发及螺旋模型,快速地产生增量的工作产品作产品作产品作产品( (或是软件的工作版本或是软件的工作版本或是软件的工作版本或是软件的工作版本) )。这些模型可以应。这些模型可以应。这些模型可以应。这些模型可以应用于所有的软件工程活动用于所有的软件工程活动用于所有的软件工程活动用于所有的软件工程活动从概念开发到长期从概念开发到长期从概念开发到长期从概念开发到长期
41、的软件维护。的软件维护。的软件维护。的软件维护。49统一过程模型统一过程模型统一过程模型统一过程模型是一种是一种是一种是一种“ “用例驱动、以体系结构为用例驱动、以体系结构为用例驱动、以体系结构为用例驱动、以体系结构为核心、迭代增量核心、迭代增量核心、迭代增量核心、迭代增量” ”的软件过程框架,由的软件过程框架,由的软件过程框架,由的软件过程框架,由UMLUML方法方法方法方法和工具支持。统一过程模型也是一种增量模型,和工具支持。统一过程模型也是一种增量模型,和工具支持。统一过程模型也是一种增量模型,和工具支持。统一过程模型也是一种增量模型,定义了五个阶段定义了五个阶段定义了五个阶段定义了五个阶段:起始阶段、细化阶段、构建阶起始阶段、细化阶段、构建阶起始阶段、细化阶段、构建阶起始阶段、细化阶段、构建阶段、转换阶段和生产阶段。段、转换阶段和生产阶段。段、转换阶段和生产阶段。段、转换阶段和生产阶段。50515253谢谢大家!谢谢大家!54