《软件过程模型》由会员分享,可在线阅读,更多相关《软件过程模型(48页珍藏版)》请在金锄头文库上搜索。
1、软件工程授课教师:蓝授课教师:蓝 天天联系电话:联系电话:13488929723电子邮箱:电子邮箱:课程群号课程群号:302950664第二章 软件过程模型软件过程的概念1一些典型的软件过程模型3成熟度模型成熟度模型2小结5过程和产品4本章学习目标1 12 23 3掌掌掌掌握握握握如如如如何何何何为为为为不不不不同同同同的的的的项项项项目目目目选选选选择择择择过过过过程程程程模模模模型。型。型。型。理理理理解解解解不不不不同同同同模模模模型型型型的的的的特特特特征征征征和和和和优缺点优缺点优缺点优缺点了解软件过了解软件过了解软件过了解软件过程和软件过程和软件过程和软件过程和软件过程模型概念。程
2、模型概念。程模型概念。程模型概念。定义定义定义软件生命周期(SoftwareLifeCycle):软件产品或软件系统从设计、投入使用到被淘汰的全过程。软件生命周期一个典型的软件开发周期1 13 34 4什么是软件过程?定义定义定义软软软软件件件件过过过过程程程程定定定定义义义义了了了了软软软软件件件件生生生生产产产产的的的的一一一一系系系系列列列列活活活活动动动动,这这这这些些些些活动贯穿于软件开发的整个过程。活动贯穿于软件开发的整个过程。活动贯穿于软件开发的整个过程。活动贯穿于软件开发的整个过程。问题定义问题定义技术开发技术开发方案集成方案集成目标现状目标现状2 2什么是软件过程?虽然过程是
3、多种多样的,但所有过程都具有以下虽然过程是多种多样的,但所有过程都具有以下的共同活动的共同活动沟通沟通沟通沟通该活动包括软件设计者与客户沟通,该活动包括软件设计者与客户沟通,该活动包括软件设计者与客户沟通,该活动包括软件设计者与客户沟通,客户提出要求,软件设计者收集材料,客户提出要求,软件设计者收集材料,客户提出要求,软件设计者收集材料,客户提出要求,软件设计者收集材料,以及其它相关活动。以及其它相关活动。以及其它相关活动。以及其它相关活动。计划计划计划计划软件开发小组讨论使用何种方法及何软件开发小组讨论使用何种方法及何软件开发小组讨论使用何种方法及何软件开发小组讨论使用何种方法及何种工具来实
4、现客户需求。种工具来实现客户需求。种工具来实现客户需求。种工具来实现客户需求。建模建模建模建模在这一部分,软件开发小组讨论选择在这一部分,软件开发小组讨论选择在这一部分,软件开发小组讨论选择在这一部分,软件开发小组讨论选择何种模型来满足需求。不同的需求需何种模型来满足需求。不同的需求需何种模型来满足需求。不同的需求需何种模型来满足需求。不同的需求需要不同的模型。要不同的模型。要不同的模型。要不同的模型。构造构造构造构造部署部署部署部署编码和测试。编码和测试。编码和测试。编码和测试。软件交付给客户。客户给出建议和反软件交付给客户。客户给出建议和反软件交付给客户。客户给出建议和反软件交付给客户。客
5、户给出建议和反馈,软件实施小组改进软件。馈,软件实施小组改进软件。馈,软件实施小组改进软件。馈,软件实施小组改进软件。什么是软件过程?软件过程的三个流派CMU-SEI的CMM能力成熟度模型;ISO 9000质量标准体系;ISO/IEC 15504(SPICE)信息技术软件过程评估能力成熟度模型(CMM)迄今为止学术界和工业界公认的有关软件工程和管理实践的最好的软件过程。为评估软件组织的生产能力提供了标准。为提高软件组织的生产过程指明了方向。CMM发展史1984:CMU成立软件工程学院(SEI)。1987:发表CMM技术报告初稿。1989:发表第一本有关软件成熟度架构的著作。1991:发表CMM
6、 1.0。1993/1994:发表CMM 1.1以及PSP(个体软件过程)。1995:发表各种专门化的CMM,包括SA-CMM、SE-CMM、IPD-CMM,以及P-CMM。1996:TSP(团队软件过程)发表。1997:新的品质管理标准,如EIA/IS 731出现;开始CMMI整合计划。2000:发表CMMI 1.0。2001:发表CMMI 1.1。2006:发表CMMI 1.2。2010:发表CMMI 1.3。能力成熟度模型5优化级持续的过程改进量化管理4量化管理级过程标准化3已定义级基本项目管理有能力的人和个人英雄主义2可重复级1初始级C CMMMM工作无序,项目进行过程中常放弃当初的计
7、划。管理无章法,缺乏健全的管理制度。开发项目成效不稳定,项目成功主要依靠项目负责人的经验和能力,他一但离去,工作秩序面目全非。管理制度化,建立了基本的管理制度和规程,管理工作有章可循。初步实现标准化,开发工作比较好地按标准实施。变更依法进行,做到基线化,稳定可跟踪,新项目的计划和管理基于过去的实践经验,具有重复以前成功项目的环境和条件。开发过程,包括技术工作和管理工作,均已实现标准化、文档化。建立了完善的培训制度和专家评审制度,全部技术活动和管理活动均可控制,对项目进行中的过程、岗位和职责均有共同的理解。产品和过程已建立了定量的质量目标。开发活动中的生产率和质量是可量度的。已建立过程数据库。已
8、实现项目产品和过程的控制。可预测过程和产品质量趋势,如预测偏差,实现及时纠正。可集中精力改进过程,采用新技术、新方法。拥有防止出现缺陷、识别薄弱环节以及加以改进的手段。可取得过程有效性的统计数据,并可据进行分析,从而得出最佳方法中国通过CMM5认证的企业(部分)摩托罗拉中国软件中心(摩托罗拉中国软件中心(20002000年年9 9月)月)沈阳东软股份有限公司(沈阳东软股份有限公司(20022002年年1212月)月)华为印度研究所(华为印度研究所(20032003年年8 8月)月)惠普中国软件研发中心惠普中国软件研发中心 (2004(2004年年6 6月月) )北京用友软件工程有限公司(北京用
9、友软件工程有限公司(20042004年年1212月)月)埃森哲全球信息技术中心(埃森哲全球信息技术中心(20052005年年4 4月)月)普天信息技术研究院(普天信息技术研究院(20062006年年1111月)月)上海宝信软件股份有限公司(上海宝信软件股份有限公司(20062006年年1212月)月)亚信科技(中国)有限公司(亚信科技(中国)有限公司(20072007年年2 2月)月)大连现代高技术发展有限公司(大连现代高技术发展有限公司(20042004年年1010月)月) 长沙新宇计算机系统有限公司(长沙新宇计算机系统有限公司(20032003年年1111月)月)联想软件公司(联想软件公司
10、(20062006年年2 2月)月)软件过程模型是软件开发全部过程、活动和软件过程模型是软件开发全部过程、活动和任务的任务的结构框架结构框架。它能直观表达软件开发全过程,。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。明确规定要完成的主要活动、任务和开发策略。软件过程模型也常称为:软件过程模型也常称为: 软件开发模型软件开发模型 软件生存周期模型软件生存周期模型 软件工程范型软件工程范型软件过程模型常用过程模型瀑布模型瀑布模型 (经典的生命周期模型经典的生命周期模型)增量过程模型增量过程模型o增量模型增量模型oRAD模型模型演化过程模型演化过程模型o原型模型原型模型o螺
11、旋模型螺旋模型喷泉模型喷泉模型其他过程模型其他过程模型1.1.瀑布模型(Waterfall Model)(Waterfall Model)由由WinstonRoyce在在1970年最早提出的年最早提出的软件开发模型。软件开发模型。o软件开发过程与软件生命周期是一致的,也称经典的软件开发过程与软件生命周期是一致的,也称经典的生命周期模型。生命周期模型。规定了各项软件工程活动,以及它们自上规定了各项软件工程活动,以及它们自上而下,相互衔接的固定次序,如同瀑布流而下,相互衔接的固定次序,如同瀑布流水,逐级下落。水,逐级下落。是一种使用广泛、以文档为驱动的模型。是一种使用广泛、以文档为驱动的模型。瀑布
12、模型瀑布模型验收测试验收测试验收测试验收测试组装测试组装测试组装测试组装测试实现实现实现实现详细设计详细设计详细设计详细设计概要设计概要设计概要设计概要设计需求分析需求分析需求分析需求分析退役退役退役退役可行性研究可行性研究可行性研究可行性研究使用与维护使用与维护使用与维护使用与维护带反馈的瀑布模型带反馈的瀑布模型按照传统瀑布模型开发软件的特点1.阶段间具有顺序性和依赖性。阶段间具有顺序性和依赖性。2.推迟实现的观点。推迟实现的观点。3.每个阶段必须完成规定的文档每个阶段必须完成规定的文档; 每个每个阶段结束前完成文档审查阶段结束前完成文档审查,及早改正及早改正错误。错误。瀑布模型主要问题线性
13、过程太理想化线性过程太理想化o各个阶段的划分完全固定,阶段之间产生大量的文档,各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;极大地增加了工作量;o由于开发模型是线性的,用户只有等到整个过程的末由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险;期才能见到开发成果,从而增加了开发的风险;o早期的错误可能要等到开发后期的测试阶段才能发现,早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。进而带来严重的后果。瀑布模型适用于系统需求明确、技术成熟、工程瀑布模型适用于系统需求明确、技术成熟、工程管理较严格的场合管理较严格的场合。
14、怎么办怎么办?增量过程模型(Incremental Model)增量模型是一种非整体开发的模型。是一增量模型是一种非整体开发的模型。是一种进化式的开发过程。它允许从部分需求种进化式的开发过程。它允许从部分需求定义出发,先建立一个不完整的系统,通定义出发,先建立一个不完整的系统,通过测试运行这个系统取得经验和反馈,进过测试运行这个系统取得经验和反馈,进一步使系统扩充和完善。如此反复进行,一步使系统扩充和完善。如此反复进行,直至软件人员和用户对所设计的软件系统直至软件人员和用户对所设计的软件系统满意为止。满意为止。o增量模型增量模型oRAD增量模型增量模型结合了原型模型的基本要素和迭代的特征,采增
15、量模型结合了原型模型的基本要素和迭代的特征,采用了基于时间的线性序列,每个确定线性序列都会输出用了基于时间的线性序列,每个确定线性序列都会输出该软件的一个该软件的一个“增量增量”。增量模型特点增量增量o小而可用的软件小而可用的软件特点特点o在前面增量的基础上开发后面的增量在前面增量的基础上开发后面的增量o每个增量的开发可用瀑布或快速原型模型每个增量的开发可用瀑布或快速原型模型o迭代的思路迭代的思路增量模型的优缺点增量包概念的引入,以及它不需要提供完整的需求。只要增量包概念的引入,以及它不需要提供完整的需求。只要有一个增量包出现,开发就可以进行。有一个增量包出现,开发就可以进行。在项目的初始阶段
16、不需要投入太多的人力资源。在项目的初始阶段不需要投入太多的人力资源。增量可以有效地管理技术风险。增量可以有效地管理技术风险。每个增量必须提供一些系统功能,这使得开发者很难根据每个增量必须提供一些系统功能,这使得开发者很难根据客户需求给出大小适合的增量。客户需求给出大小适合的增量。 AdvantagesAdvantages Disadvantages Disadvantages快速应用开发模型(RAD)快速应用开发模型(快速应用开发模型(RAD)是一个增)是一个增量过程模型,强调短暂的开发周期。量过程模型,强调短暂的开发周期。RAD 模型是瀑布模型的模型是瀑布模型的“高速高速”变体,变体,通过通
17、过基于组件的构建方法基于组件的构建方法实现快速开实现快速开发。如果需求以及项目范围得到明确发。如果需求以及项目范围得到明确界定,界定,RAD 能使开发团队在很短的时能使开发团队在很短的时间内(如间内(如60 到到90 天)建立一个天)建立一个“全功全功能系统能系统”。快速应用开发模型(RAD)RAD 模型的不足之处1)对大型项目而言,)对大型项目而言,RAD 需要足够的人力需要足够的人力资源。资源。2)开发者和客户都要实现承诺,否则将导致)开发者和客户都要实现承诺,否则将导致失败。失败。3)并非所有系统都适合(不能合理模块化的)并非所有系统都适合(不能合理模块化的系统、高性能需求并且要调整构件
18、接口的、系统、高性能需求并且要调整构件接口的、技术风险很高的系统均不适合)。技术风险很高的系统均不适合)。演化模型演化过程模型演化过程模型o原型模型原型模型o螺旋模型螺旋模型演化模型的思想是演化模型的思想是首先实现软首先实现软件的最核心的、最重要的功能件的最核心的、最重要的功能原型模型适用情况适用情况适用情况适用情况客户定义一个总体目标集,但是他们并客户定义一个总体目标集,但是他们并不清楚系统的具体输入输出;或开发者不清楚系统的具体输入输出;或开发者不确定算法的效率、软件与操作系统是不确定算法的效率、软件与操作系统是否兼容以及客户与计算机交互的方式。否兼容以及客户与计算机交互的方式。此时,原型
19、法是很好的选择此时,原型法是很好的选择。原型模型缺点缺点: 1). 设计者在质量和原型间有所折中设计者在质量和原型间有所折中 2). 客户意识不到一些质量问题客户意识不到一些质量问题螺旋模型(Spiral Model)l螺螺旋旋模模型型最最早早由由Boehm Boehm 在在Boehm1988Boehm1988中中提提出出,与与RAD RAD 模模型型相相似似,该该模模型型结结合了瀑布模型和原型模型的特点。合了瀑布模型和原型模型的特点。l螺螺旋旋模模型型强强调调风风险险管管理理,因因此此该该模模型型适用于大型系统的开发。适用于大型系统的开发。螺旋模型(螺旋模型(Spiral ModelSpir
20、al Model)四个象限上分别表达四个方面的活动螺旋模型沿着螺线旋转,在笛卡尔坐螺旋模型沿着螺线旋转,在笛卡尔坐标的四个象限上分别表达了四个方面标的四个象限上分别表达了四个方面的活动:的活动:o制定计划。确定软件目标,选定实施方案,弄清项目制定计划。确定软件目标,选定实施方案,弄清项目开发的限制条件。开发的限制条件。o风险分析。分析所选方案,考虑如何识别和消除风险。风险分析。分析所选方案,考虑如何识别和消除风险。o实施工程。实施软件开发。实施工程。实施软件开发。o客户评估。评价开发工作,提出修正建议。客户评估。评价开发工作,提出修正建议。螺旋模型的优点支持用户需求的动态变化。支持用户需求的动
21、态变化。原型可看作形式的可执行的需求规格说明,易于原型可看作形式的可执行的需求规格说明,易于为用户和开发人员共同理解,还可作为继续开发为用户和开发人员共同理解,还可作为继续开发的基础,并为用户参与所有关键决策提供了方便。的基础,并为用户参与所有关键决策提供了方便。螺旋模型特别强调原型的可扩充性和可修改性,螺旋模型特别强调原型的可扩充性和可修改性,原型的进化贯穿整个软件生存周期,这将有助于原型的进化贯穿整个软件生存周期,这将有助于目标软件的适应能力。目标软件的适应能力。螺旋模型为项目管理人员及时调整管理决策提供螺旋模型为项目管理人员及时调整管理决策提供了方便,进而可降低开发风险。了方便,进而可降
22、低开发风险。螺旋模型的缺点和适应场合如果每次迭代的效率不高,致使迭代次数过多,如果每次迭代的效率不高,致使迭代次数过多,将会增加成本并推迟提交时间;将会增加成本并推迟提交时间;使用该模型需要有相当丰富的风险评估经验和专使用该模型需要有相当丰富的风险评估经验和专门知识,要求开发队伍水平较高。门知识,要求开发队伍水平较高。支持需求不明确、特别是大型软件系统的开发,支持需求不明确、特别是大型软件系统的开发,并支持面向规格说明、面向过程、面向对象等多并支持面向规格说明、面向过程、面向对象等多种软件开发方法,是一种具有广阔前景的模种软件开发方法,是一种具有广阔前景的模型。型。 缺点缺点缺点缺点 适应场合
23、适应场合适应场合适应场合喷泉模型喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。喷泉模型的优缺点喷泉模型不像瀑布模型那样,需要分析活动结束后才开始喷泉模型不像瀑布模型那样,需要分析活动结束后才开始设计活动,设计活动结束后才开始编码活动。该模型的设计活动,设计活动结束后才开始编码活动。该模型的各各个阶段没有明显的界限个阶段没有明显的界限,开发人员可以同步进行开发。其,开发人员可以同步进行开发。其优点是可以提高软件项目开发效率,节省开发时间,适应优点是可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程。于面向对象的软件开发过程。由于喷泉模型
24、在各个开发阶段是重叠的由于喷泉模型在各个开发阶段是重叠的,在,在开发过程中需开发过程中需要大量的开发人员,因此要大量的开发人员,因此不利于项目的管理不利于项目的管理。此外这种模。此外这种模型要求严格管理文档,使得型要求严格管理文档,使得审核的难度加大审核的难度加大,尤其是面对,尤其是面对可能随时加入各种信息、需求与资料的情况。可能随时加入各种信息、需求与资料的情况。优点优点缺点缺点协同开发模型大多数软件开发过程模型大多数软件开发过程模型均为时间驱动的;越到模均为时间驱动的;越到模型的后端,就越到开发过型的后端,就越到开发过程的后一阶段。而一个协程的后一阶段。而一个协同过程模型是由同过程模型是由
25、用户要求用户要求、管理决策管理决策和和结果复审结果复审驱动驱动的。的。 建模活动非活动状态表示软件工程活动或任务的某一状态完成状态已建立基线正在评审状态正在开发状态等待变更请求正在修改状态基于构件的模型基于构件的模型四个阶段需求需求o与其它模型相同,这里不再赘述。与其它模型相同,这里不再赘述。组件分析组件分析o根据需求规格搜索可满足该需求的组件。通常情况下,没有完全匹配的根据需求规格搜索可满足该需求的组件。通常情况下,没有完全匹配的情况,因而组件通常需要加以修改。情况,因而组件通常需要加以修改。系统设计系统设计o与其它模型的系统设计有所不同,因为该模型是基于重用的。设计者必与其它模型的系统设计
26、有所不同,因为该模型是基于重用的。设计者必须考虑到重用的概念,但遗憾的是,如果没有可重用的组件,还要设计须考虑到重用的概念,但遗憾的是,如果没有可重用的组件,还要设计新的软件。新的软件。开发和集成开发和集成o在这个阶段,组件集成到系统中。在这个阶段,组件集成到系统中。基于构件的模型优缺点组件的重用,降低了成本和风险,节约了时组件的重用,降低了成本和风险,节约了时间间x模型复杂模型复杂x导致需求的折衷,进而导致系统不能完全导致需求的折衷,进而导致系统不能完全符合需求符合需求x无法完全控制所开发系统的演化无法完全控制所开发系统的演化x项目划分的好坏直接影响项目结果的好坏项目划分的好坏直接影响项目结
27、果的好坏一些新的过程模型敏捷软件过程敏捷软件过程o是基本原理和开发准则的结合。基本原理强调客户满是基本原理和开发准则的结合。基本原理强调客户满意度和较早的软件增量交付;小但有激情的团队;非意度和较早的软件增量交付;小但有激情的团队;非正式的方法;最小的软件工程产品;简化整体开发。正式的方法;最小的软件工程产品;简化整体开发。开发准则强调分析和设计的交付,以及开发者和客户开发准则强调分析和设计的交付,以及开发者和客户之间积极持续的交流。之间积极持续的交流。o目前的敏捷过程模型主要包括极限编程(目前的敏捷过程模型主要包括极限编程(XP),),SCRUM,自适应软件开发(,自适应软件开发(ASD),
28、动态系统开发方),动态系统开发方法(法(DSDM)等。)等。o敏捷软件开发宣言敏捷软件开发宣言http:/agilemanifesto.org/ 如何选择过程模型?软件开发模型是不断发展的软件开发模型是不断发展的各种软件开发模型各有优缺点各种软件开发模型各有优缺点选用时不必拘泥与某种模型选用时不必拘泥与某种模型可组合多种模型可组合多种模型也可根据实际创建新的模型也可根据实际创建新的模型参考原则1. 1. 在在前期需求明确的情况前期需求明确的情况下,尽量采用瀑布模型或改进的下,尽量采用瀑布模型或改进的瀑布模型瀑布模型。2. 2. 在用户无系统使用经验,在用户无系统使用经验,需求分析人员技能不足情
29、况需求分析人员技能不足情况下一定要借助下一定要借助原原型型。3. 3. 在在不确定因素很多不确定因素很多,很多东西前面无法计划的情况下尽量采用,很多东西前面无法计划的情况下尽量采用增量迭增量迭代和螺旋模型代和螺旋模型。4. 4. 在在需求不稳定需求不稳定的情况下尽量采用的情况下尽量采用增量迭代模型增量迭代模型。5. 5. 在在资金和成本无法一次到位的情况资金和成本无法一次到位的情况下可采用下可采用增量模型增量模型,软件产品多个,软件产品多个版本进行发布。版本进行发布。6. 6. 对于完成多个对于完成多个独立功能开发独立功能开发可以在需求分析阶段就进行功能并行,但可以在需求分析阶段就进行功能并行
30、,但每个功能内部每个功能内部都应该遵循都应该遵循瀑布模型瀑布模型。7. 7. 对于对于全新系统的开发全新系统的开发必须在总体设计完成后再开始必须在总体设计完成后再开始增量增量或并行。或并行。8. 8. 对于对于编码人员经验较少的情况编码人员经验较少的情况下建议不要采用敏捷或迭代等生命周期下建议不要采用敏捷或迭代等生命周期模型。模型。9. 9. 增量、迭代和原型增量、迭代和原型可以综合使用,但每一次增量或迭代都必须有可以综合使用,但每一次增量或迭代都必须有明确明确的交付和出口原则的交付和出口原则。 以产品为中心过程过程过程过程 B B B B产品产品产品产品过程过程过程过程 C C C C过程过
31、程过程过程 A A A A需求FocusFocus产品产品产品产品产品产品产品产品过程和产品以过程为中心产品产品产品产品过程过程过程过程FocusFocus产品产品产品产品产品产品产品产品小结软件生命周期软件生命周期-软件过程软件过程-软件过程模型软件过程模型过程定义了谁在做什么,何时以及如何达过程定义了谁在做什么,何时以及如何达到一定的目标。到一定的目标。软件过程标准软件过程标准CMM常见的过程模型:瀑布、增量、原型、螺常见的过程模型:瀑布、增量、原型、螺旋等旋等软件过程决定了软件产品的质量,不同的软件过程决定了软件产品的质量,不同的项目需要不同的过程模型或者过程模型的项目需要不同的过程模型或者过程模型的组合组合问题