资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象的开发方法,传统开发方法存在问题,1.,软件重用性差 重用性是指同一事物不经修改或稍加修改就可多次重复使用的性质。软件重用性是软件工程追求的目标之一。,2.,软件可维护性差 软件工程强调软件的可维护性,强调文档资料的重要性,规定最终的软件产品应该由完整、一致的配置成分组成。实践证明,用传统方法开发出来的软件,维护时其费用和成本仍然很高,其原因是可修改性差,维护困难,导致可维护性差。,3.,开发出的软件不能满足用户需要 用传统的结构化方法开发大型软件系统涉及各种不同领域的知识,在开发需求模糊或需求动态变化的系统时,所开发出的软件系统往往不能真正满足用户的需要。,面向对象的定义,面向对象是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,面向对象软件开发技术,面向对象分析,(OOA),面向对象设计,(OOD),面向对象实现,(OOP),OOA-,面向对象分析,不论采用哪种方法开发软件,分析的过程都是提取系统需求的过程。,分析工作主要包括,3,项内容,这就是,理解、表达和验证。,分析过程得出的最重要的文档资料是软件需求规格说明,(,在面向对象分析中,主要由对象模型、动态模型和功能模型组成,),。,面向对象分析,(OOA),的关键,:,识别出问题域内的类与对象,并分析它们相互间的关系,最终建立起问题域的简洁、精确、可理解的正确模型。,在用面向对象观点建立起的,3,种模型中,对象模型是最基本、最重要、最核心的。,一、面向对象分析的基本过程,面向对象分析,就是抽取和整理用户需求并建立问题域精确模型的过程。,三个模型、五个层次,3,个模型,:,对象模型,(,静态结构,),、,动态模型,(,交互次序,),和,功能模型,(,数据变换,),。,复杂问题(大型系统)的对象模型由,5,个层次组成,三种模型之间的关系,三种模型分别从,3,个不同侧面描述了所要开发的系统。它们相互补充、相互配合,使得我们对系统的认识更加全面:,功能模型,指明了系统应该,“,做什么,”,;,动态模型,明确规定了什么时候,(,即在何种状态下接受了什么事件的触发,),做;,对象模型,则定义了做事情的实体。,在面向对象方法学中,对象模型是最基本最重要的,它为其他两种模型奠定了基础。,OOA,过程,概念上:,OOA,大体上按照下列顺序进行:寻找类与对象,识别结构,识别主题,定义属性,建立动态模型,建立功能模型,定义服务。,但,正如前面已经多次强调指出过的,分析不可能严格地按照预定顺序进行,大型、复杂系统的模型需要,反复构造,多遍才能建成。通常,先构造出模型的子集,然后再逐渐扩充,直到完全、充分地理解了整个问题,才能最终把模型建立起来。,二、需求陈述,需求陈述的内容包括:问题范围,功能需求,性能需求,应用环境及假设条件等。总之,需求陈述应该阐明“做什么”而不是“怎样做”。,书写需求陈述时,要尽力做到语法正确,而且应该慎重选用名词、动词、形容词和同义词。,需求陈述可简可繁。,反复迭代,逐步完整、准确、有效。,三、建立对象模型,获取客户对,OO,系统的需求,使用基本的需求作为指引来选择类和对象,为每个系统对象标识属性和操作,定义组织类的结构和层次,建造对象,关系模型,1,、确定类和对象,找出候选的类与对象,筛选出正确的类与对象,ATM,系统,ATM,系统候选类和对象:,银行,,ATM,,系统,中央计算机,分行计算机,柜员终端,网络,总行,分行,软件,成本,市,街道,营业厅,储蓄所,柜员,储户,现金,支票,账户,事务,现金兑换卡,余额,磁卡,分行代码,卡号,用户,副本,信息,密码,类型,取款额,账单,访问。,冗余:,用户、磁卡、副本,-,储户、现金兑换卡,无关:,成本、市、街道、营业厅、储蓄所,笼统:,银行、网络、系统、软件、信息、访问,属性:,有些名词实际上描述的是其他对象的属性,应该把这些名词从候选类与对象中去掉。当然,如果某个性质具有很强的独立性,则应把它作为类而不是作为属性。,在,ATM,系统的例子中,,“,现金,”,、,“,支票,”,、,“,取款额,”,、,“,账单,”,、,“,余额,”,、,“,分行代码,”,、,“,卡号,”,、,“,密码,”,、,“,类型,”,等,实际上都应该作为属性对待。,操作、实现,2,、确定关联,初步确定关联,筛选,进一步完善,ATM,系统原始的类图,3,、划分主题,4,、确定属性(分析、选择),5,、识别继承关系,6,、反复修改,修改后的,A,T,M,对,象,模,型,四、建立动态模型,在开发交互式系统时,动态模型却起着很重要的作用。,第一步,,是编写典型交互行为的脚本。虽然脚本中不可能包括每个偶然事件,但是,至少必须保证不遗漏常见的交互行为。,第二步,,从脚本中提取出事件,确定触发每个事件的动作对象以及接受事件的目标对象。,第三步,,排列事件发生的次序,确定每个对象可能有的状态及状态间的转换关系,并用状态图描绘它们。,最后,,比较各个对象的状态图,检查它们之间的一致性,确保事件之间的匹配。,1,、编写脚本,脚本:,系统在某一执行期间内出现的一系列事件。脚本描述用户,(,或其他外部设备,),与目标系统之间的一个或多个典型的交互过程,以便对目标系统的行为有更具体的认识。,编写脚本的目的:,是保证不遗漏重要的交互步骤,它有助于确保整个交互过程的正确性的和清晰性。,编写脚本:,首先编写正常情况的脚本。然后,考虑特殊情况,最后,考虑出错情况。,2,、设想用户界面,界面对用户是否喜欢、是否接受一个系统起着很重要的作用。,界面中的信息交换方式是非常重要的。,设想用户界面的目的就是确保能够完成全部必要的信息交换,而不会丢失重要的信息。,3,、画事件跟踪图,/,状态图,确定事件与状态,UML,顺序图、活动图表示事件活动的过程,UML,状态图表示事件与对象状态的关系,ATM,取款类的状态图,ATM,正常情况的事件顺序图,五、建立功能模型,/,定义服务,功能模型表明了系统中数据之间的依赖关系,以及有关的数据处理功能。,建立功能模型:数据流图、,UML,的用例图,定义服务,OOD OO,系统的设计,子系统设计,类及对象设计,消息设计,责任设计,OOD,设计金字塔,OOD,OO,系统的设计,尽管分析和设计的定义有明显区别,但是在实际的,软件开发过程中二者的界限是模糊的,。许多分析结果可以直接映射成设计结果,而在设计过程中又往往会加深和补充对系统需求的理解,从而进一步完善分析结果。因此,分析和设计活动是一个多次反复迭代的过程。,面向对象方法学在概念和表示方法上的一致性,保证了在各项开发活动之间的平滑,(,无缝,),过渡,领域专家和开发人员能够比较容易地跟踪整个系统开发过程,这是面向对象方法与传统方法比较起来所具有的一大优势。,生命周期方法学把设计进一步划分成,总体设计和详细设计,两个阶段。,面向对象设计细分为,系统设计和对象设计,。,系统设计,确定实现系统的策略和目标系统的高层结构。,对象设计,确定解空间中的类、关联、接口形式及实现服务的算法。,系统设计与对象设计之间的界限,比分析与设计之间的界限更模糊。,OOD,设计一般过程,以可实现的方式描述每个子系统,对象设计,消息设计,复审设计模型并在需要时迭代,分析,系统设计,对象设计,OOD,设计准则,模块化,抽象,信息隐藏,弱耦合(,减少交互耦合、增加继承耦合,),强内聚(,服务内聚、类内聚、一般,-,特殊内聚,),可重用,OOD,系统设计过程,划分分析模型,并发性和子系统分配,任务管理构件,数据管理构件,资源管理构件,人机界面构件,子系统间通信,OOD,对象设计过程,对象描述,涉及算法和数据结构,程序构件和接口,OOP-,面向对象实现,面向对象实现,(OOP),实现语言,基本实现手段,实现环境(类库、开发工具),编码调试,测试,基本实现手段,类定义,对象创建,结构定义,实例关联定义,操作调用和消息发送,内存管理,封装,多态,小 结,近年来,面向对象方法学日益受到人们的重视,特别是在用这种方法开发大型软件产品时,可以把该产品看作是由一系列本质上相互独立的小产品组成,这就不仅降低了开发工作的技术难度,而且也使得对开发工作的管理变得比较容易了。,使用面向对象范型能够开发出稳定性好、可重用性好和可维护性好的软件。,UML,是基于面向对象技术的标准建模语言。通常,使用,UML,的类图来建立对象模型,使用,UML,的状态图来建立动态模型,使用数据流图或,UML,的用例图来建立功能模型。,
展开阅读全文