资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,软件工程导论概述,1.4.2,快速原型模型,Rapid Prototype Model,定义:快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集,步骤:,快速建立一个能反映用户主要需求的原型系统,用户试用原型系统之后会提出许多修改意见,开发人员按照用户的意见快速地修改原型系统,返回上一步,用户认为这个原型系统确实能做他们所需要的工作,开发人员便可据此书写规格说明文档,根据这份文档开发出的软件可以满足用户的真实需求,1.4.2 快速原型模型,1.4.2 快速原型模型,快速原型模型是不带反馈环的,这是它的主要优点。软件产品的开发基本上是线性顺序进行的。线性开发的主要原因是:,(1)原型系统已经通过与用户交互而得到验证,据此产生的规格说明文档正确地描述了用户需求,(2)开发人员通过建立原型系统已经学到了许多东西,因此,在设计和编码阶段发生错误的可能性比较小,这自然减少了在后续阶段修改前面阶段所犯错误的可能性一。,快速原型,验证,规格说明,验证,设计,验证,编码,验证,变化的需求,验证,综合测试,维护,图,1.4,快速原型模型,维护时需要返回到各个阶段如图所示,1.4.3 增量模型Incremental Model,定义:把软件产品作为一系列的增量构件来设计、编 码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。,软件产品分解成增量构件要遵守的,约束条件,当把新构件集成到现有软件中时,所形成的产品必须是可测试的,1.4.3 增量模型Incremental Model,增量模型分批地逐步向用户提交产品,一个构件一个构件地向用户提交产品,这种方式产生的,优点,:,在较短时间内向用户提交可完成部分工作的产品,逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击,。,7 敏捷过程与极限编程,使得软件重用可能,降低软件开发的复杂性,测试驱动开发:强调“测试先行”,定义:快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集,5表明,必须在开始实现各个构件之前就全部完成需求分析、规格说明和概要设计的工作,由于在开始构建第一个构件之前已经有了总体设计,因此风险较小。,快速建立一个能反映用户主要需求的原型系统,线性开发的主要原因是:,已经确定了70%以上的需求,开始设计,,5表明,必须在开始实现各个构件之前就全部完成需求分析、规格说明和概要设计的工作,由于在开始构建第一个构件之前已经有了总体设计,因此风险较小。,(2)可以工作的软件胜过详尽的文档:,软件工程-原理、方法与应用(第二版),陈世鸿编著,武汉大学出版社,2004.,使得软件重用可能,降低软件开发的复杂性,(2)开发人员通过建立原型系统已经学到了许多东西,因此,在设计和编码阶段发生错误的可能性比较小,这自然减少了在后续阶段修改前面阶段所犯错误的可能性一。,(2)可以工作的软件胜过详尽的文档:,集体所有:代码属于集体,每个成员都对代码质量负责,软件工程-原理、方法与应用(第二版),陈世鸿编著,武汉大学出版社,2004.,图1.,1.4.3 增量模型Incremental Model,为了便于向软件中增加新构件,要求,软件体系结构必须是开放的,向现有产品中加入新构件的过程必须简单、方便,需要更精心的设计,增量模型的矛盾:,把软件看作一个整体,又把软件看作构件序列。要协调好,整体与个别,的矛盾,所以要精心设计.,图1.5 增量模型,图1.5表明,必须在开始实现各个构件之前就全部完成需求分析、规格说明和概要设计的工作,由于在开始构建第一个构件之前已经有了总体设计,因此风险较小。,一旦确定了用户需求之后,就着手拟定第一个构件的规格说明文档,完成后规格说明组将转向第二个构件的规格说明,与此同时设计组开始设计第一个构件,用这种方式开发软件,不同的构件将并行地构建,因此有可能加快工程进度。,1.4.4 螺旋模型Spiral Model,软件开发的风险:,用户不满意,未能按期完成,成本超预算,关键技术人员跳槽,相同产品的竞争,基本思想,:,使用原型及其他方法来尽量降低风险。,1.4.4 螺旋模型Spiral Model,螺旋模型的每一个周期都包括,计划(需求定义)、风险分析、工程实现和评审4个阶段,计划(需求定义),第一周期开始利用需求分析技术理解应用领域,获取初步用户需求,制定项目开发计划(即整个软件生命周期计划)和需求分析计划。经过一个周期后,根据用户和开发人员对上一周期工作成果评价和评审,修改、完善需求,明确下一周期软件开发的目标、约束条件,并据此制定新一轮的软件开发计划。,1.4.4 螺旋模型Spiral Model,风险分析,根据本轮制定的开发计划,进行风险分析,评估可选方案,并构造原型进一步分析风险,给出消除或减少风险的途径。此时根据风险分析的结果决策项目是否继续。所以,螺旋模型是一个风险驱动的模型。,1.4.4 螺旋模型Spiral Model,工程实现,利用构造的原型进行需求建模或进行系统模拟,直至实现软件系统。,用户评价与阶段评审,将原型提交用户使用并征求改进意见。开发人员应在用户的密切配合下进一步完善用户需求,直到用户认为原型可满足需求,或对软件产品设计进行评价或确认等。,1.4.4 螺旋模型Spiral Model,优点,:,对可选方案和约束条件的强调有利于已有软件的重用,有助于把软件质量作为软件开发的一个重要目标;,减少了过多测试(浪费资金)或测试不足(产品故障 多)所带来的风险;,随着成本的增加,风险程度随之降低,风险驱动,在成本过大时可考虑中止项目。,1.4.5 喷泉模型,迭代是软件开发过程中普遍存在内在属性,面向对象方法用得更多,使用统一的软件概念对象,生命周期的各阶段不明显,产生重叠。,“,喷泉,”,模型体现了面向对象软件开发过程的迭代和无缝的特性。,图,1.9,喷泉模型,1.4.6 Rational 统一过程,Rational Unified Process,,,RUP,Rational,公司推出的一种完整的软件过程,总结多年商业化验证的,6,条有效的,开发经验,,被称为,“,最佳实践,”,(1)迭代开发,(可运行版本),:,通过一系列的细化、若干个渐进的反复过程得出有效解决方案,1.4.6 Rational 统一过程,(2)管理需求,:,如何提取、组织系统的功能性需求和约束条件并文档化;捕获需求的有效方法包括用例、脚本。,(3)使用基于构件的体系结构,:,使得软件重用可能,降低软件开发的复杂性,(4)可视化建模(UML),用UML,语言建立起软件系统的可视化模型,帮助管理复杂的软件。,1.4.6 Rational 统一过程,(5)验证软件质量,:,内建的质量评估过程,评估过程不再是事后型的软件过程,(6),控制软件变更,控制、跟踪和监控软件修改,以保证迭代开发的成功。,目前有上千家软件公司在用RUP,1.4.7 敏捷过程与极限编程,捷过程与极限编程,敏捷过程(,Agile Process,AP),敏捷方法(,Agile Methodology,AM),敏捷建模(,Agile Modeling,AM),极限编程(,eXtreme Programming,XP),1.4.7 敏捷过程与极限编程,敏捷过程,由来:,2001.2月17位软件方法学家联合成立“敏捷软件开发联盟”,起草“敏捷软件开发宣言”,“敏捷软件开发宣言”阐述的4条价值观,(1),个体和交互胜过过程和工具:强调优秀的团队成员是软件开发项目获得成功的最重要因素,1.4.7 敏捷过程与极限编程,(2),可以工作的软件胜过详尽的文档,:,软件开发的主要目标是向用户提供可以工作的软件而非文档,需要时要编制简明扼要的文档,(3),与客户协作胜过合同谈判,:,能够满足用户不断变化的需求的切实途径是与客户密切合作,(4),响应计划胜过遵循计划,:,计划必须有足够的灵活性和可塑性,能迅速调整,2,极限编程,eXtreme Programming,XP,(1)XP的12个有效实践,客户作为开发团队成员,使用用户素材,:,正在进行的关于需求谈话内容的助记符,短交付周期,:,一般每,2周交付依次实现的用户需求,验收测试,:,通过执行由客户指定的验收测试,2,极限编程,eXtreme Programming,XP,结对编程:一人编码一人审查,测试驱动开发:强调,“测试先行”,集体所有:代码属于集体,每个成员都对代码质量负责,持续集成:一天之内多次集成,可持续的开发速度:,40Hours/week,连续加班不超过2week,开放的工作空间:在一个开放的场所,自由讨论,2,极限编程,eXtreme Programming,XP,11,即时调整计划,:灵活、循序渐进,12,简单的设计,:设计与计划与本次迭代相符,不需要考虑多余 的设计,13,重构,:不改变系统功能前提下优化系统降低复杂性.不能 过度以赖重构,要先做好设计,14,使用隐喻,:整个系统联系起来的全局视图,它描写系统如何动作,怎样增加新功能,图1.11 XP项目的整体开发过程,1.4.8 微软过程,2微软软件生命周期,规划阶段,设计阶段,开发阶段,稳定阶段,发布阶段,2 微软软件生命周期,(1),规划阶段,:市场获取用户情 况、客户需求、竞争对手等信息.在统计分析的基础上完成下述工作.,确定产品目标,,获取竞争对手的信息,完成对客户和市场的调研分析,确定新版本产品应该具备的主要特殊性,确定新版本应该解决的问题和需要增加的功能,2 微软软件生命周期,(2),设计阶段,:,已经确定了,70%以上的需求,开始设计,,主要工作,包括系统规格说明书、,制订设计方案、绘制系统结 构图、,划分子系统、制定产 品开发计划书,软件工程(英)Ian Sommerville 著,程成、陈霞等译.,(2)开发人员通过建立原型系统已经学到了许多东西,因此,在设计和编码阶段发生错误的可能性比较小,这自然减少了在后续阶段修改前面阶段所犯错误的可能性一。,用户试用原型系统之后会提出许多修改意见,已经确定了70%以上的需求,开始设计,,对可选方案和约束条件的强调有利于已有软件的重用,测试驱动开发:强调“测试先行”,在统计分析的基础上完成下述工作.,7 敏捷过程与极限编程,软件工程(英)Ian Sommerville 著,程成、陈霞等译.,定义:把软件产品作为一系列的增量构件来设计、编 码、集成和测试。,(4)可视化建模(UML),完成对客户和市场的调研分析,2微软软件生命周期,(3),开发阶段,:,完成编码,书写文档,并进行单元测试,(4),稳定阶段,:,完整的进行集成测试,确保真实环境下的使 用和操作,(5),发布,:,把项目移交给运营和支持人员,以获得最终用户对项目的认可。,3 3 微软过程模型,图1.14描绘了微软过程的生命周期模型,微软过程的每一个生,命周期发布一个递,进的软件版本,各,个生命周期持续,,快速地迭代循环。,图1.14 微软过程的生命周期模型,2、主要参考资料:,软件工程原理、方法与应用史济民等主编.高等教育出版社,软件工程(英)Ian Sommerville 著,程成、陈霞等译.机械工业出版社,软件开发的过程与管理,张湘辉编著,清华大学出版社,2005,.,软件工程原理与应用,陈世鸿编著,武汉大学出版社,2004,.,软件工程-原理、方法与应用(第二版),陈世鸿编著,武汉大学出版社,2004,.,软件项目管理案例教程,韩万江、姜立新编著,机械工业出版社,2004.,(九)、课程考核与成绩评定方法,课程考核包含理论知识、实践过程和参与过程,理论知识期末闭卷考试。,最终成绩由平时成绩、实践成绩和期末考试三部分组成(平时成绩占10%,上课占10%,期末考试占80%),作业,P3233,3,6,7,感谢观看,
展开阅读全文