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