您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > UML面向对象的分析
第一章面向对象的软件工程简介一、传统软件工程方法存在的问题软件工程提出至今,并没有从根本上解决软件开发问题,软件危机现象依然存在。就其原因:主要是随着软件应用范围的扩大,软件问题越来越复杂,但也有传统软件工程本身存在的问题,表现在:1、预定义需求的假设是不现实的:需求是模糊的、变化的;需求的沟通是困难的。2、结构化分析和设计方法存在的问题:需求以功能为基础,分析和设计以过程为基础。3、思维方式(认识、分析问题的思想方法)与人们平常的习惯不一致。为了解决这一问题,软件工程有了新的发展:快速原型法和面向对象法。下面只介绍面向对象的软件工程方法。二、面向对象的软件工程方法简介1、基本思想:使软件开发的过程、方法和思想与现实问题的结构以及人类认识和解决问题的方法相一致。要点:认为客观世界是由各种对象组成的所有对象都划分成各种对象类自然界中的所有类组成类的层次结构对象之间通过消息相互联系面向对象=对象+类+继承+通讯软件开发的优点:与人类习惯的思维方式一致稳定性好:传统方法基于功能的分析和分解,功能的变化常常会引起软件系统结构的变化。而在OO方法中,功能的变化往往采用从已有类派生出新的子类的方法以实现功能的扩充和修改。可重用性好:对象和类都是可重用的软件“预制件”,通过参数化和实例化增加重用性。可维护性好:独立性好,稳定、易于修改、修改造成的影响小、易于理解。2、基本概念:对象:是现实中任何可以明确界定和区别的事物或其抽象的实体和概念。Object=ID,MS,DS,MI其中:ID:标识;MS:操作集合;DS:数据结构;MI:消息集合类:一组对象共同属性(数据和操作)的抽象。实例:一个具体的个体。消息:对象操作的具体调用说明。方法:操作的具体算法。属性:描述对象特性的数据。继承:子类自动共享父类中定义的数据和方法的机制。对象之间的关系:ISA(抽象),PART–OF(聚合),关联(除此之外)。多态性:类层次中不同对象对同一消息的响应方式不同的机制(不同动物对“叫”不同响应)。重载:函数重载:同一作用域内若干参数特征不同的函数可以使用相同的函数名运算符重载:同一运算符可以施加于不同类的操作数上。3、几种主要的面向对象的软件工程方法的概况Coad/Yourdon:OOA/OOD方法;OOA的过程和步骤:标识对象,标识结构,标识主题,定义属性,定义服务。OOD设计:系统设计和对象设计系统设计:人机交互部分;问题域部分;任务管理部分;数据管理部分对象设计:关联设计;服务设计Booch方法;基于四个主图和两个辅图;主图:类图(类及其关系:P24),对象图(对象和对象间消息),模块图(实现类和对象的程序构件:P24)和进程图(分布环境下,进程与CPU及硬件的关系:P25)辅图:状态图(描述一个类的状态变化和变化条件:P25),时序图(对象交互的时间特性:P26)方法的过程和步骤:P26Rambough:OMT方法(对象模型技术,也叫三视点技术);基于三个模型:对象模型;动态模型和功能模型。(对象模型技术:OMT,也叫三视点技术)对象模型:表示问题域中的对象和类的组成以及它们之间的关系。类对象(加虚框)对象与对象之间的关系有:归纳(ISA);组合(Partof);其它关联关系(数量、关联性质:用链属性、用限定以及消息关联等)。它们的含义和表示方法此处略。具体表示方法与书上P277有一点差异。动态模型:对所有对象由于受外来事件的影响而产生的行为和状态变化的抽象表示。表示形式:状态图(具体形式略)。事件(操作):表示某个特定时刻所发生的事情,它瞬间完成。状态:表示对象在生命期中某个特定阶段所处的某种形态,用对象属性的一组取值表示,它是持续性的。类名属性服务类名属性服务行为(活动):对象达到某种状态时所做的一系列处理操作。功能模型:表示系统所完成的“功能”,用DFD来表示。三个模型的关系:对象模型表示是谁,动态模型表示了在什么时候、什么情况下,功能模型表示做了什么,完成了什么功能。Jacboson:OOSE方法主要通过建立五个模型来完成系统的开发,这五个模型是:需求模型(RM):主要包括用例图(UseCase,是OOSE的核心),问题域对象模型以及人与系统接口界面。分析模型(AM):通过定义实体对象、界面对象和控制对象来描述系统的逻辑关系,建立问题域对象与AM中三个对象之间的关系。设计模型(DM):考虑AM在真实环境中的实现,并表现一个个类模块,有较详细的算法实现。实现模型(IM):对DM的基于某种语言的具体实现。测试模型(TM):类底层测试、组装测试、集成测试等,依据RM和AM。OOSE开发的三个核心步骤:分析(RM、AM),构造(DM、IM)和测试(TM)有关用例(UseCase)以及用例之间的扩展和使用关系以后再介绍。UML:UnifiedModelingLanguage来源:以Booch、OOSE以及OMT方法为基础,通过改进和演化而来。软件的开发过程就是以计算机能够运行的形式对现实问题及其问题的解法进行建模的过程。UML不仅可以用来进行软件建模,也可以用于其它方面的建模。4、面向对象的分析和设计方法(Coad与Yourdon分析和设计方法)(基于OMT的OOA/OOD的方法)1)基本概念和基本方法:对象的五个层次:类-&-对象;结构(关联关系);主题;属性;服务。主题:是指导读者理解大型复杂模型的一种机制,通过主题将一个大型复杂的对象模型分解成一个个不同概念范畴。需求陈述:通过调研形成的,对系统应做什么的一种自然语言描述。2)OOA的基本方法:理解、表达与验证-》反复的过程调研形成需求陈述-》识别类-&-对象-》识别结构-》划分主题-》定义属性-》定义动态模型-》定义功能模型-》定义服务。建立对象模型:确定类-&-对象:从需求陈述中找名词,找出侯选的类-&-对象,筛选出正确的类-&-对象。确定关联:从需求陈述中找动词词组,找出侯选的关联,筛选出正确的关联划分主题:按问题域,不要按功能,对应以后的子系统。确定属性:从需求陈述中找名词词组或形容词,找出侯选的属性,筛选出正确的属性。识别继承:自底向上或自顶向下。反复验证和修改。建立动态模型:编写脚本(设想用户界面)-》提取事件-》排列事件次序-》画事件跟踪图(原P279)-》画状态图(原P285)建立功能模型:画数据流程图(DFD)定义服务:常见服务:常规行为;从事件导出;与DFD中的处理框对应,利用继承减少冗余服务。3)OOD的基本方法分析:建立问题域模型设计:建立解空间模型。面向对象的设计分成:系统设计和对象设计两部分系统设计:主要完成目标系统的高层结构设计以及与实现策略有关的设计。主要包括:问题域子系统设计;人-机交互子系统的设计;任务管理子系统的设计以及数据管理子系统的设计等内容:对象设计:包括服务设计和关联设计。面向对象设计结果的优化处理。关于面向对象的设计今后就不再讲了,本课程重点介绍基于UML的面向对象的分析方法。关于面向对象的实现主要是选择一个语言和开发环境,按设计结果进行实现。面向对象的测试有其特殊性和复杂性,以后再讲第二章UML简介一、UML的出现和发展四个发展阶段:各自为政(70年代中—93年,尤其是89年以后):50多种,主要的以上介绍的四种,使用无所适从,统一成为需要和趋势。统一阶段(94—96):Booch和OMT结合形成UM0.8+OOSE—》UML0.9和UML0.91标准化(96—97):企业参与,成立UML成员协会,发布UML1.0(97.1)和UML1.1(97.10)工业化(97—今):97.11,UML正式被OMG(ObjectManagementGroup)正式接受为标准后,大大推动了UML在工业界的应用。二、UML的主要内容和特点1、主要内容:5大类9种图形。用例图:从用户的角度描述系统的功能,一个用户可以扮演多种角色。静态图:类图(类及其类与类的关系,长期有效),对象图(一段时间有效)和包图。行为图:状态图(对必要的类),活动图(对用例,可描述并发活动)交互图:描述对象间的交互关系。包括:顺序图(强调时序)和合作图(强调连接)实现图:构件图(物理实现),配置图(实现系统的体系结构)2、特点:统一性:统一了Booch、OMT和OOSE的概念和方法,带来了广泛的认同,表达形式更加清晰、更加一致。发展性:不仅吸取了众家之长,而且在演变过程中有所发展,因而更加实用,表达能力更强。完整性:实用范围更加广泛(不仅用于信息系统建模,还可以用于机械系统、企业系统、商业系统等的建模);支持从需求、设计、实现直到系统的测试和维护的系统的全生命周期。三、UML面向对象分析的一般过程1、调研、交流形成系统的问题域描述2、从用户的角度,确定系统的边界、主要功能和活动,建立用例模型3、深入分析用例中用户需求的功能,分析这些功能实现的活动。使用顺序图、合作图和活动图来辅助进行。4、分析用户功能的完成基础,建立类和对象模型。5、对某些具有复杂状态变化关系的类建立状态图,深入分析它们的行为和状态的变化。6、在上述过程中,要收集并整理系统的性能指标,研究系统的测试策略和测试方法,并对照用例模型检测系统需求结果。注意:1、用例驱动2、分析要建立系统的需求模型,主要包括静态模型和动态模型。3、虽与设计无明显的界限,但不要过早引入设计因素和实现细节。四、有关本课程介绍内容的几点说明:1、重点介绍基于UML的面向对象的分析建模,有关设计和实现等较少涉及。2、侧重介绍UML面向对象的分析建模的实践操作,不介绍UML形式化的描述语言OCL(ObjectConstraintLanguage)。3、以UML1.1为基础进行介绍,与UML1.3版在细节上有区别:如:用例的使用(uses)和扩展(extends)关系在UML1.3中已被用例的继承关系所代替。4、现有UML版本存在的问题:构件图和配置图的描述能力不够不支持用户和系统交互界面建模不能有效支持数据密集型应用系统建模目前UML仍然在发展。第三章UML静态建模机制静态建模:通过某些手段和方法对系统的静态结构进行描述的过程。UML静态建模机制:主要包括用例图、类和对象图、包图以及构件图和配置图。本章主要介绍用例图、类和对象图,简单介绍包图。构件图和配置图与系统的设计和实现有关,而且UML中这两类图还不是很成熟,因此就不介绍了。一、用例图(UseCase)1、几个概念:角色、用例、用例图、扩展关系、使用关系角色:是系统用户为完成系统功能而表现的职责体现。角色不同于用户:一个用户在一个系统中可承担多个不同的角色,一个角色也有可能由多个用户担当。角色与系统的功能实现有关,也一定与系统具有交互行为。角色是一个类,而不是类的实例,因此角色之间可以具有继承关系。角色的表示:稻草人(见P36)用例:是系统角色对系统的使用情况和过程,用来描述角色感受的完整的系统功能。UML定义为:“由系统执行的一个动作序列,并能产生可观察的结果值给某个特定的角色”用例通常由某个角色来(直接或间接)驱动(启动)执行。用例把执行结果的值反馈给角色。用例在功能上具有完整性。应包括用例执行过程中可能产生的诸多变化情况、错误处理以及异常情况处理等。用例是一个类。用例的实例化通常称为“场景”,它描述系统执行的一个特定情况。例如:“李四去银行用填单方式取了300元钱”,它是“取款”用例的实例。用例的表示:椭圆(见P51)用例图:包括角色、系统边界、用例以及用例和角色之间的关联(驱动执行和返回结果)。如图5.1,见P36。扩展关系:表明用例间的一般/特殊化的关系,它反映用例的变化情况,它用UML的“扩展”模板类型来表示,表示如图5.6,见P42。指向的为“一般化用例”。是一种继承关系(特殊继承一般)。使用关系:表明用例间的相似和抽象的关系,它反映用例间的相似性,它用UML的“扩展”模板类型来表示,表示如图5.7,见P43。指向的为“相似和抽象的用例”。是一种继承关系(使用继
本文标题:UML面向对象的分析
链接地址:https://www.777doc.com/doc-2852954 .html