1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,软件工程与,Rose,建模案例教程(第三版),第,2,章 软件过程模型与面向对象方法,主编:刘志成,宁云智,林东升,本章学习导航,本章学习要点,瀑布模型的特点及应用,螺旋模型的特点及应用,原型模型的特点及应用,XP/,敏捷方法的特点及应用,RUP,的特点及应用,面向对象方法,教学课时:,4,课时,任务,1,比较常用软件过程模型的特点,能根据实际软件开发需要选择过程
2、模型,任务目标,小组讨论法,资料查询法,对比学习法,学习方法,任务,1,核心思想是采用“,工序,”的思想将复杂的软件开发问题简化。将软件设计与软件功能的实现分开由不同的阶段完成,便于分工协作。采用结构化的分析与设计方法,将逻辑实现与物理实现分开。,瀑布模型,任务,1,主要特点,:,(,1,)上一阶段活动的成果作为本阶段活动的输入;,(,2,)利用这一输入实施本阶段活动应完成的内容;,(,3,)得到本阶段活动的工作成果,再传递传给下一阶段活动;,(,4,)在每一阶段活动结束时,对阶段活动的工作成果进行评审,如果工作成果得到确认,则继续下一项活动,否则返回前一阶段,甚至更前阶段的活动进行返工。,瀑
3、布模型,主要缺点:,(,1,)由于开发模型呈线性,所以当开发成果尚未经过测试时,用户无法看到软件的效果。这样,软件与用户见面的时间间隔较长,增加了一定的风险。,(,2,)在软件开发前期末发现的错误传到后面的开发活动中时,可能会扩散,进而可能会造成整个软件项目开发失败。,(,3,)在软件需求分析阶段,要完全确定用户的所有需求是比较困难的,甚至可以说是不太可能的。,任务,1,将瀑布模型和演化模型结合起来,融合了两个模型的优点,而且还强调了其他模型均忽略了的,风险分析和评价,。,螺旋模型,任务,1,主要特点,:,在“瀑布模型”的每一个开发阶段前,引入一个非常严格的风险识别、风险分析和风险控制。它把软
4、件项目分解成一个个小项目,每个小项目都标识一个或多个主要风险,直到所有的主要风险因素都被确定。,螺旋模型支持用户需求的动态变化,为用户参与软件开发的所有关键决策提供了方便,有助于提高目标软件的适应能力,为项目管理人员及时调整管理决策提供了便利,从而降低了软件开发风险。,螺旋模型,主要缺点:,(,1,)过多的迭代次数会增加开发成本,延迟提交时间。,(,2,)采用螺旋模型,需要具有相当丰富的风险评估经验和专门知识。在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失。,任务,1,以,用户需求,为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。喷泉模型认为软件开发过程,自下
5、而上,周期的各阶段是相互重叠和多次反复的,喷泉模型,任务,1,主要特点,:,(,1,)软件的某个部分(如:组件)通常被重复工作多次;,(,2,)可以实现并行开发,提高软件项目开发效率,节省开发时间;,(,3,)适应于面向对象的软件开发过程;,喷泉模型,主要缺点:,(,1,)由于喷泉模型在各个开发阶段是重叠的,因此,在开发过程中,需要大量的开发人员,不利于项目的管理;,(,2,)喷泉模型要求对文档的管理较为严格,审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料。,任务,1,融合了瀑布模型的基本成分和原型实现的,迭代,特征。采用随着时间的进展而交错的线性序列,每一个线性序列产生软件的一个
6、可发布的“,增量,”。,增量模型,任务,1,主要特点,:,(,1,)人员分配灵活,刚开始不用投入大量人力资源,如果核心产品很受欢迎,则可增加人力实现下一个增量。,(,2,)当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径,这样就可以先发布部分功能给客户,以满足客户的局部需求。,(,3,)能够有计划地管理技术风险,增量模型,主要缺点:,如果增量包之间存在相交的情况且不能很好地处理,就必须做全盘的系统分析。,课堂实践,1,(,1,)以学习小组为单位分组讨论一个模型,讨论活动结束后,由小组代表进行演讲。,(,2,)可以通过上网查阅相关资料获取软件过程模型更为详细的信息。,(
7、3,)绘制的模型图以文件名,Chap02-1.doc,上交。,操作提示,(,1,)讨论瀑布模型的主要特点,并举例说明在哪些类型的软件系统开发中可以采用瀑布模型。,(,2,)讨论螺旋模型的主要特点,并举例说明在哪些类型的软件系统开发中可以采用螺旋模型。,(,3,)讨论喷泉模型的主要特点,并举例说明在哪些类型的软件系统开发中可以采用喷泉模型。,(,4,)讨论增量模型的主要特点,并举例说明在哪些类型的软件系统开发中可以采用增量模型。,(,5,)使用,Word,工具,分别绘制瀑布模型、螺旋模型、喷泉模型和增量模型的基本模型图。,操作要求,任务,1,是从,需求收集,开始,在获得一定的需求后,进行“,快
8、速设计,”,在此基础上创建软件系统的原型,并由用户对原型进行评估并进一步,精化,待开发软件的需求。,原型模型,任务,1,主要特点,:,(,1,)开发效率高,原型使总的开发费用降低,时间缩短;,(,2,)开发者与用户交流直观,可以澄清模糊需求,调动用户的积极参与,能及早的暴露系统潜在的一些问题;,(,3,)原型系统可作为培训环境,有利于用户培训和开发同步,开发过程也是学习过程。,喷泉模型,主要缺点:,(,1,)产品原型在一定程度上限制了开发人员的创新,没有考虑软件的整体质量和长期的可维护性,由于达不到质量要求产品可能被抛弃,而采用新的模型重新设计。因此,原型实现模型不适合嵌入式、实时控制、科学数
9、值计算等大型软件系统的开发。,(,2,)原型的开发需要耗费一定的人力和物力,增加了软件开发的成本。,任务,1,是一个,增量型,的软件开发过程模型,强调极短的开发周期。,RAD,模型是瀑布模型的一个“高速”变种,通过大量使用可复用构件,采用,基于构件,的建造方法实现快速开发。,RAD,模型,任务,1,主要特点,:,(,1,)采用基于构件的开发方法,复用已有的程序结构或使用可复用构件和或是创建可复用的构件。,(,2,)通过大量使用可复用构件加快了开发速度,对信息系统的开发特别有效。,RAD,模型,主要缺点:,(,1,),RAD,模型对模块化要求比较高,如果软件系统中有哪一项功能不能被模块化,那么创
10、建,RAD,所需要的构件就会有问题。因此,并非所有应用都适合,RAD,。,(,2,)开发者和客户必须在很短的时间完成一系列的需求分析,任何一方配合不当都会导致,RAD,项目失败。,(,3,),RAD,只适用于信息系统开发,不适合技术风险很高系统的开发。,任务,1,一种,轻量级,的开发方法,敏捷方法强调,适应性,而非预测性,强调以,人为中心,而非以流程为中心,强调对变化的适应和对人性的关注。,XP/,敏捷模型,任务,1,主要特点,:,(,1,)轻载,(,2,)基于时间,(,3,),Just Enough,(,4,)并行,(,5,)基于构件。,XP/,敏捷模型,主要思想:,XP,开发模型与传统模型
11、相比具有很大的不同,它的核心思想是,交流、简单、反馈和进取,。,XP,开发模型强调小组内成员之间要经常进行交流;在尽量保证质量可以运行的前提下,力求过程和代码的简单化;在,XP,开发小组中不仅包括开发人员,还包括管理人员和客户,来自客户、开发人员和最终用户的具体反馈意见可以提供更多的机会来调整设计,保证把握正确的开发方向;进取则包含在交流、简单和反馈三个原则中。,任务,1,一种,重量级,的开发方法,又是文档化的软件工程产品。,统一软件开发过程,任务,1,RUP,有,6,个核心工作流和,3,个核心支持工作流,采用,迭代式,开发 。,统一软件开发过程,任务,1,主要特点,:,(,1,)用例驱动,(
12、2,)以体系结构为中心,(,3,)迭代式开发,统一软件开发过程,通过以上各种软件过程模型的分析,我们可以看到:软件过程模型随着软件设计思想的改变而发展,经历了由最初的以,结构化程序设计,思想为指导的瀑布模型等,到以,面向对象思想,为指导的喷泉模型等,到以,构件开发思想,为指导的基于体系结构的开发模型等,到基于,UML,的,RUP,,到现在的,4GT,技术。每次新的软件设计思想的突破都会出现新的软件开发过程模型,以达到提高软件的生产效率和质量为目标,提出新的解决“软件危机”问题的方案。,软件开发过程小结,课堂实践,2,(,1,)以学习小组为单位分组讨论一个模型,讨论活动结束后,由小组代表进行演
13、讲。,(,2,)可以通过上网查阅相关资料获取软件过程模型更为详细的信息。,(,3,)绘制的模型图以文件名,Chap02-2.doc,上交。,操作提示,(,1,)讨论原型模型的主要特点,并举例说明在哪些类型的软件系统开发中可以采用原型模型。,(,2,)讨论,RAD,模型的主要特点,并举例说明在哪些类型的软件系统开发中可以采用,RAD,模型。,(,3,)讨论,XP/,敏捷方法的主要特点,并举例说明在哪些类型的软件系统开发中可以采用,XP/,敏捷方法。,(,4,)讨论统一软件开发过程的主要特点,并举例说明在哪些类型的软件系统开发中可以采用统一软件开发过程。,(,5,)使用,Word,工具,分别绘制原
14、型模型、,RAD,模型、,XP/,敏捷方法和统一软件开发过程的基本模型图。,操作要求,任务,2,了解面向对象软件工程的基本思想和,OOA,、,OOD,、,OOP,和,OOT,的基本内容,任务目标,小组讨论法,资料查询法,学习方法,任务,2,“,对象,”,指的是解决信息领域内所遇到问题的方法,特别是应用软件技术来解决问题的方法。如:面向对象的分析(,Object-Oriented Analysis,)、面向对象的设计(,Object-Oriented Design,)和面向对象的编程(,Object-Oriented Programming,)等。,面向对象方法,(,Object-Oriente
15、d Method,)是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称,OO,(,Object-Oriented,)方法,是建立在“对象”概念基础上的方法学。,面向对象方法的发展,60,年代中后期,,Simula,语言;,80,年代以来,人们将面向对象的基本概念和运行机制运用到其它领域,获得了一系列相应领域的面向对象的技术;,1986,年在美国举行了首届“面向对象编程、系统、语言和应用(,OOPSLA86,)”国际会议。,面向对象思想,任务,2,(,1,)对象,对象是要研究的任何事物。从一本书、一个人、一家图书馆、一家极其复杂的自动化工厂、架航天飞机都可看作对象,它不仅能
16、表示有形的实体,也能表示无形的(抽象的)规则、计划或事件。对象由数据(描述事物的属性)和作用于数据的操作(体现事物的行为)构成一独立整体。从程序设计者来看,对象是一个程序模块,从用户来看,对象为他们提供所希望的行为。,(,2,)类,类是对象的模板。即类是对一组有相同数据和相同操作的对象的定义,一个类所包含的方法和数据描述一组对象的共同属性和行为。类是在对象之上的抽象,对象则是类的具体化,是类的实例。类可有其子类,也可有其它类,形成类层次结构。,(,3,)消息,消息是对象之间进行通信的一种规格说明。一般它由三部分组成:接收消息的对象、消息名及实际变元。,面向对象基本概念,任务,2,(,1,)封装
17、性,封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。,(,2,)继承性,继承性是子类自动共享父类数据和方法的机制。它由类的派生功能体现。一个类直接继承其它类的全部描述,同时可修改和扩充。,(,3,)多态性,对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。,面向对象主要特征,任务,2,了解问题域所涉及的对象、对象间的关系和作用(即操作),然后构造问题的对象模型,力争该模型能真实地反映出所要解决的“实质问题”。,OOA,基本步骤,:,(,1,)确定对象和类,(,2,)确定结构,(,3,)确定主题(,subject,),(,4,)确定属
18、性(,attribute,),(,5,)确定方法(,method,),面向对象分析,任务,2,对面向对象分析的结果作进一步的规范化整理,以便能够被面向对象编程直接接受并设计软件的对象模型。,OOD,主要工作,:,(,1,)对象定义规格的求精过程,(,2,)数据模型和数据库设计,(,3,)优化,面向对象设计,任务,2,即指软件功能的编码实现,主要工作为面向对象的编程(,OOP,,,Object Oriented Programming,)。,面向对象编程的基本步骤,:,(,1,)分析确定在问题空间和解空间出现的全部对象及其属性。,(,2,)确定应施加于每个对象的操作,即对象固有的处理能力。,(,
19、3,)分析对象间的联系,确定对象彼此间传递的消息。,(,4,)设计对象的消息模式,消息模式和处理能力共同构成对象的外部特性。,(,5,)分析各个对象的外部特性,将具有相同外部特性的对象归为一类,从而确定所需要的类。,(,6,)确定类间的继承关系,将各对象的公共性质放在较上层的类中描述,通过继承来共享对公共性质的描述。,(,7,)设计每个类关于对象外部特性的描述。,(,8,)设计每个类的内部实现(数据结构和方法)。,(,9,)创建所需的对象(类的实例),实现对象间应有的联系(发消息)。,面向对象实现,课堂实践,3,(,1,)以学习小组为单位分组讨论进行讨论,每小组推荐一名成员进行演讲。,(,2,
20、通过上网查阅面向对象方法相关资料进行更为详细的信息。,操作提示,(,1,)使用面向对象方法对,DVD,和播放,DVD,的情景进行描述。,(,2,)举例说明,OOA,、,OOD,和,OOP,的具体任务及相关之间的联系。,(,3,)根据您的编程经验,比较面向对象编程和结构化编程的优缺点。,操作要求,课外拓展,(,1,)通过软件过程模型图的绘制,加深对软件过程模型的理解。,(,2,)查阅百度百科(,)的相关词条的内容,并对相关词条进行适当的补充。,操作提示,(,1,)使用,Word,或,Visio,工具,绘制瀑布模型的基本模型图,并理解瀑布模型各阶段的主要任务。,(,2,)使用,Word,或,Visio,工具,绘制,XP,方法的基本模型图,并解释,XP,方法的核心思想。,操作要求,






