1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,UML,及其建模工具的使用,内容提要,一、软件工程方法学,二、,UML,的基本概念,静态建模,动态建模,物理架构,建模步骤,三、,Rose,的使用,四、三个实例,五、,Java,代码生成,六、,Rational,统一过程,2,1.,瀑布模型,(,线形顺序模型,),可行性研究与计划,需求分析,设计,编码,运行维护,测试,定义,阶段,开,发,阶,段,维护阶段,一,.,软件工程方法学,按照传统瀑布模型开发软件的特点,1.,阶段间具有顺序性和依赖性。,2.,推迟实现的观点。,3.,每个阶段必须完成规定的文档,;,每
2、个阶段结束前完成文档审查,及早改正错误。,2.,原型模型,(,快速原型法,),建造,/,修改,原型,用户测试,运行原型,听取用,户意见,原型范型,采用,原型,模型的,软件生存,周期,分析定义,系统需求,生成,原型,系统,设计,程序,设计,编码,测试,运 行,和维护,原型化,含原型化的,软件生存期,技术发展背景,1,面向对象的含义,面向对象技术回顾,UML,的产生,7,技术发展背景,2,面向对象的含义,面向对象中有几个非常重要的概念:,封装,(,encapsulation,),信息,/,实现的隐藏,(,information/implementation hiding,),状态保持,(,stat
3、e retention,),对象标识,(,object identity,),消息,(,message,),类,(,class,),继承,(,inheritance,),多态性,(,polymorphism,),一般性,(,generality,),8,技术发展背景,3,面向对象的含义,封装,,将属性和操作包装成一个单元,使得对状态的访问和修改只能通过封装提供的接口进行。,信息,/,实现的隐藏,,将某些属性或方法限制在封装内部使用,限制外部的可见性。,状态保持,,对象能够保持状态,可以用于后续的处理。,对象标识,,每个对象可以作为软件实体被标识和处理,每个对象都有一个对象标识符(,object
4、 identifier OID,)。,消息,,对象间发送请求的载体。,9,技术发展背景,4,面向对象的含义,类,,,类是对象的类型(模版),对象是类的实例。,继承,,子类隐式使用超类(或父类)的属性和操作。,多态性,,子类覆盖,(,overriding,),父类的方法,它和重载(,overloading,),的区别在于重载是在同一个类中定义,利用参数的不同来进行动态绑定(,dynamic binding,)。,一般性,,类的定义是参数化的或模版化的,提高了定义的通用性。,10,技术发展背景,5,面向对象技术回顾,面向对象技术是许多人历经多年研究积累的产物。,类的概念,是面向对象的重要组成部分。
5、Smalltalk,,,提出许多面向对象技术的核心概念,如:消息和继承。,Dijkstra,的软件正确性理念,提出了用抽象层构造软件的观点。,ADT,抽象数据类型,奠定面向对象的基础,支持信息的隐藏。,Ada,语言,提出了一般性和包两个概念。,C+,语言,最广泛使用的面向对象的语言。,Eiffel,语言,融合了许多最佳的计算机科学思想和面向对象思想。,11,为什么对面向对象方法感兴趣,?,面向对象方法的主要优点:,自然性,追求软件系统对现实系统的直接模拟,尽量实现将现实世界中的事物直接映射到软件系统的解空间中。,软件复用,可复用性,(,可,重,用性,),reusebility,可,扩展,性,
6、可,管理,性,12,可,复,用性,(,可,重,用性,),面向对象技术允许复用的不仅仅是,代码,通过面向对象技术,我们可以复,用需求、分析、设计、测试计划、用户,界面以及体系结构等等,事实上,软件,工程生存期中的每个部分都可以,复,用,。,13,传统系统分析,:,面向功能,把系统看成,一组功能,OOA,:,把问题当作一组相互作用,的实体,并确定实体间关系,14,面向对象技术是一个有全新概念的,开发模式,其特点是,:,(1),方法是对软件开发过程所有阶段进,行综合考虑而得到的,;,(2),从生存期的一个阶段到下一个阶段,所使用的方法与技术具有高度的连,续性,;,(3),将,OOA,(分析),、,O
7、OD,(设计),、,OOP,(实现),集成到生存期的相应阶段,.,15,开发方法的组合,分析,设计,编程,结构化,结构化,面向对象,结构化,面向对象,面向对象,面向对象,结构化,第三代或第四代语言,面向对象,面向对象,第三代或第四代语言,面向对象,面向对象,传统编程与面向对象的混合,面向对象,面向对象,面向对象,16,OO,方法的开发过程,OO,方法改进了在生存期各个阶段间的界面,因为生存期各个阶段开发出来的“部件”都是,类,,在面向对象生存期的各个阶段对各个,类,的信息进行细化,,类,成为分析、设计和实现的,基本单元,。,17,对象模型,对象模型表示静态的、结构的系统数据的性质。,对模拟客观
8、世界实体的对象以及对象彼此之间的关系的映射,描述了系统的静态结构。,OO,方法强调围绕对象而不是功能来构造系统,。,18,对象,(,object),现实世界中某个具体的物理实体或概念在计算机逻辑中的映射和体现。,对象具有的含义:,在现实世界中:是客观世界中的一个实体,在面向对象程序中:,表达成计算机可理解、可操纵、具有一定,属性,和,行为,的对象,在计算机世界中:,是一个可标识的存储区域,19,面向对象方法是一种运用对象、类、继承、封装、聚合、消息传递、多态性等概念来构造系统的,软件开发方法,。,面向对象,=,对象,+,类,+,继承,+,消息通信,面向对象的主要特征:,封装性,(Encapsu
9、lation),继承性,(Inheritance),多态性,(Polymorphism),20,类(,class,),具有共同属性和行为的对象的抽象,类与对象的关系,类是对象的抽象,对象是类的实例,类,对象,21,对象、实体与类,对象,实体,类,抽象数据类,计算机世界,现实世界,计算机逻,辑的实现,影射,抽,象,实,例,化,抽,象,概念世界,22,封装,封装是软件开发方法的重要原则,有两个涵义:,把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(对象)。,尽可能隐蔽对象的内部细节,(信息隐蔽),23,传统方法数据与过程是分离的,过程,1,输入,输出,过程,2,过程,3,数据实体
10、属于该对象,的数据,对象,处理数据的方法,消息,消息,对象把数据和处理数据的方法封状成一个单元,24,传统方法和面向对象方法的比较,传统方法,系统是过程的集合,过程与数据实体交互,过程接受输入并产生输出,面向对象方法,系统是交互对象的集合,对象与人或其它对象交互,对象发送与响应消息,25,继承(继承性,inheritance,),继承性是父类和子类之间共享数据和方法的机制,继承性具有传递性,继承性包括单继承和多重继承,子类,继承部分,增加部分,父类,共性部分,26,继承性作用,使软件系统具有开放性,更好地进行抽象与分类,增强代码的重用率,27,多态(多态性,),不同的对象收到同一消息可产生完
11、全 不同的结果,这一现象叫做,多态,多态的效果,用户发送一个通用的消息,而实现,的细节则由接收对象自行决定,实现机制:重载(,override,),28,多态性的作用,增强了操作的透明性,可理解性和可扩展性,增强了软件的灵活性和重用性,29,消息,(message,),消息,对象之间相互请求或相互协作的途径,是要求某个对象执行某个功能操作的规格说明,消息内容,通常包含接收方及请求接收方完成的功能信息,发送方,发出消息,请求接收方响应,接收方,收到消息后,经过解释,激活方法,予以响应,30,面向对象的软件工程,对传统软件工程的改进:,1,、快速原型法(试用反馈修改,多次反复),2,、面向对象的软
12、件工程:面向对象的方法,(基本概念:对象、类、消息、继承、多态性、封装),优点:思维一致、稳定性好、可重用性好、可维护性好,31,两种技术的比较,1,、这两种途径,并不是相互排斥,的,相反,它们是相互促进相互补充的。,工作要素:确定“做什么”、确定“怎样做”,“实现”,“测试”,2,、传统的,生命周期方法学强调,:需求分析的重要性、强调软件文档的重要性,适用于需求模糊或者需求不稳定的系统。,3,、面向对象方法学:工作重点在,分析和设计阶段,,阶段的划分是十分模糊的,通常在分析、设计和实现等阶段多次迭代。既适用于线性的瀑布开发模型,也适用于快速原型法。,32,软件系统的建模及建模原则,计算机软件
13、是“产品”,因为它具有产品特征:,1,)软件产品为用户提供功能;,2,)开发者和使用者是脱离的;,3,)软件产品具有质量的概念;,4,)软件产品具备完备的用户手册技术文档;,5,)软件产品的生产过程具有工业化生产的特点;,6,)开发团队协同工作,软件产品需要使用工具,技术可重用,质量必须稳定,不应在不同版本的软件之间产生质量不稳定。,33,在解决问题之前必须首先理解所要解决的问题。对问题理解得越透彻,就越容易解决它。为了更好地理解问题,人们常常采用建立问题模型的方法。,所谓模型,就是为了理解事物而对事物作出的一种抽象。,34,软件建模基本目的有四点:,规范(,specifying,)、,可视化
14、visualizing,)、,建造(,constructing,),和建档(,documentation,)。,(1),规范。在分析和设计阶段为软件系统的各个组成部分规定其功能、结构和对外接口。,(2),可视化。有助于软件规范的表达和交流。,35,(3),建造(生成源代码)。完整定义的软件规范可以实现通过模型向源代码的映射,支持软件系统的建造。,(4),建档。完整定义的软件模型是反映软件系统的结构和实现的重要技术资料,可以作为技术档案保存,以便后续产品或相关产品能有效地重用其中的成熟技术。,36,2.,建模的原则,(1,),准确的原则,模型必须准确地反映软件系统的真实情况。模型必须准确,意
15、味着在软件开发的整个周期内模型必须和产品始终保持一致。,(2,),分层的原则,在建模的过程中,必须有不同的模型,以不同的抽象程度,反映系统的不同侧面。在软件构筑的不同阶段,不同的开发人员如:投资者、管理者、设计者、程序员、测试者和使用者看待软件的侧重面有所不同。因此,软件系统的建模需要不同的模型以反映系统的不同侧面。如,一类模型描绘系统的外部边界和行为,另一类模型描绘系统的内部逻辑关系。,37,(3,),分治的原则,不可能单独用一个模型来反映整个系统的任何侧面。软件系统是复杂的,对于软件模型的任意一个侧面不可能用一个模型来反映所有内容,需要把问题分解为不同的子模型,分别处理这些模型,相对独立但
16、又互相联系,综合起来构成了此侧面的一个完整的模型。,(4,),标准的原则,模型必须在某种程度上是通用的。建模的基本目的是交流,一个开发队伍内部的交流,同一软件的不同时期的版本的开发队伍的交流,不同软件的开发队伍之间的交流,以实现最大程度的软件复用。交流需要语言,语言是通用的、标准的。,38,二、统一的,建模语言,方法,由,Rumbaugh,、,Booch,、,Jacobson,提出的统一建模语言,(Unify,Modeing,Language,简称,UML),UML,是一种定义良好,易于表达,功能强大且普遍实用的建模语言。,39,UML,的产生,1988,年到,1992,年是面向对象方法学蓬勃
17、发展的时期,人们从各自的经历和软件开发的经验提出了各种面向对象的开发方法,代表的有:,Sally,Shlaer,和,Steve Mellor,以信息模型化方法作为基础,并为目标系统增设了状态模型和过程模型;,Peter,Coad,和,Ed Yourdon,则在信息模型化、面向对象的程序设计语言和基于知识的系统的基础上,建立了他们的,OOA,和,OOD,,,主要工具是类与对象图、对象状态图和服务图;,HP,公司的,Fusion,开发方法。,40,UML,的产生,Wirfs,-Brock,的职责驱动设计,(Responsibility-Driven Design),,,也称类,-,职责,-,协作,
18、Class-Responsibility-Collaboration(CRC)cards,,,用类所承担的责任来描述系统,利用责任把封装的概念带到分析与设计活动中去;,Grady,Booch,在,Rational,软件公司开发,Ada,系统作了许多构件,(Component),,,并以此由底向上构筑大型软件系统,即,OOD,方法;,Jim,Rumbaugh,在通用电子,(General Electric),领导一个研究小组,提出了对象建模技术,(OMT),方法,通过面向对象的三种模型:对象模型、动态模型和功能模型,从不同角度对系统进行描述;,41,UML,的产生,Ivar,Jacobson,和
19、他的,Objectory,公司开发了,OOSE,(,Object Oriented Software Engineering),面向对象的软件工程,利用,Use Cases,来表达系统要求。,1994,年任职于,Rational,公司的,Grady,Booch,首先联合,Jim,Rumbaugh,加盟,Rational,软件公司开始了统一,OO,方法学和工具的历程。以融合,Booch,和,OMT,方法的,UML,开发开始。,1995,年,10,月,UML0.8,发布。,1995,年秋,,Ivar,Jacobson,和他的,Objectory,公司加盟,Rational,,,UML,中加入了,O
20、OSE,方法,使其有可能最集中地包容当今最适用的各种,OO,方法。,1996,年,,UML0.9,版本发布,,1997,年,1,月,,UML1.0,被提交给,OMG,组织,作为软件建模语言的候选,,1997,年,11,月,7,日,,UML1.1,正式被,OMG,组织采纳为业界标准。,UML,经历了,1.2,,,1.3,,,1.4,,目前,UML2.0,版本正在制定。,42,Rational,三剑客,Jim,Rumbaugh,Grady,Booch,Ivar,Jacobson,43,UML,的基本概念,1,UML,简介,UML,的目标,UML,概念范围,44,UML,的基本概念,2,UML,简介
21、UML(Unified Modeling Language),是一种构建软件系统和文档的通用可视化建模语言。,UML,能与,所有的开发方法一同使用,可用于软件开发的整个生命周期。,UML,能表达系统的静态结构和动态信息,并能管理复杂的系统模型,便于软件团队之间的合作开发。,UML,不是编程语言,但支持,UML,语言的工具可以提供从,UML,到各种编程语言的代码生成,也可以提供从现有程序逆向构建,UML,模型。,45,UML,的基本概念,3,UML,简介,UML,并不是万能的,它是一种离散的建模语言,对于特定的领域,比如:,GUI,、,VLSI,电路设计或基于规则的人工智能,用特定的语言和工具
22、可能更合适。,46,UML,的基本概念,4,UML,的目标,最,重要目标,:,UML,是所有建模人员可以使用的通用建模语言。它包含主流建模方法的概念,从而可以替代现有的软件分析和设计方法,比如:,OMT,Booch,OOSE,等。,UML,不是完整的开发方法,它不包括逐步的开发流程,但它提供所有必要的概念,具备足够的表达能力。,UML,的另一个目标是:能尽量简洁地表达系统的模型。,47,UML,的目标是:,1,易于使用,表达能力强,进行可视化建模;,2,与具体的软件开发过程无关,可应用于任何软件开发的过程;,3,简单、可扩展。扩展无需对核心概念进行修改;,4,为面向对象的设计和开发过程中涌现出
23、的高级概念(例如协作、框架、组件)提供支持;,5,吸收当代最好的软件工程实践经验;,6,可升级,具有广阔的适用性和可用性;,7,有利于面向对象工具的市场成长。,48,UML,语言包含三方面内容:,1,UML,基本图素:它是构成,UML,模型图的基本元素。,2,UML,模型图:它由,UML,基本图素按照,UML,建模规则构成。,3,UML,建模规则:,UML,模型图必须按特定的规则有机地组合而成,从而构成一个有机的、完整的,UML,模型图(,well-formed UML diagram,)。,49,一、基本图素分为四类:,结构模型图素、,行为模型图素、,成组模型图素、,其他模型图素、,公用机制
24、50,UML,的基本概念,5,UML,概念范围,UML,概念可以划分为以下范围:,系统需求,静态结构,动态行为,交互行为,物理实现,各种图之间的关系,模型组织,扩展机制,51,UML,的基本概念,6,UML,概念范围,系统需求,用例视图,(Use Cases View),从外部用户的角度来描述系统的行为,它将系统功能划分为对用户有意义的事务,这些事务被称为,用例,,,用户被称为,执行者,,,用例视图,也就是描述活动者在各个用例中的参与情况,它指导所有的行为视图。,52,UML,的基本概念,7,UML,概念范围,静态结构,:,静态视图,(Static View),,,一个模型必须首先定义各种
25、事物的内部特征和相互之间的关系,应用概念建模成,类,,类描述事物的,属性,和以及在这些属性上的,操作,。类之间可以存在不同的,关系,,比如,泛化,(继承)、,关联,和,依赖,等,静态视图表示成,类图,,静态视图在某一时刻的快照称为,对象图,。,53,UML,的基本概念,8,UML,概念范围,动态行为:,状态机视图,(State Machine View),,,通过对每个类的对象的生命周期进行建模,描述了对象时间上的动态行为。,状态机,是由,状态,和,迁移,组成的图,状态机通常附属于类,描述类实例对接受,事件,的响应。,活动视图,(Activity View),是利用状态机对运算和,工作流,进行
26、建模的特殊形式。,活动图,的状态代表了运算执行的状态,而非一般对象的状态,活动图和流程图很相似,不过它支持并发。,54,UML,的基本概念,9,UML,概念范围,交互行为:,交互视图,(Interaction View),,,对象通过交互来实现行为,交互视图通过,协作,来进行建模,协作具有结构和行为两个方面,结构包含为行为方面而定义的一系列角色和关系,行为方面是绑定于角色的对象间的一系列交换的消息,这些消息在协作中称为,交互,,消息序列可用两种图来表示:,顺序图,(重点在消息的时间顺序)和,协作图,(重点在交换消息的对象间的关系)。,55,UML,的基本概念,10,UML,概念范围,物理实现:
27、物理视图,(Physical View),,,许多系统模型独立于最终的实现,在实现方面,必须充分考虑系统的重用性和性能。,UML,有两种视图来表示系统的实现:,实现视图,和,部署视图,,实现视图将可重用的系统片段打包成,组件,,部署视图描述系统运行时资源的物理分布,这些资源称为,结点,。,56,UML,的基本概念,11,UML,概念范围,各种图之间的关系,静态视图(类图,对象图),物理视图(实现视图,部署视图)是描述系统的静态结构。,用例图是描述系统的外部视图。,活动图描述系统的外部,/,内部视图。,交互视图(顺序图,协作图)描述系统的内部视图。,状态图描述单个类的动态行为。,57,UML,
28、的基本概念,12,UML,概念范围,模型组织,模型管理视图,(Model Management View),,,任何大系统必须划分为较小的单元,以使人们能在某一时刻只接触有限的信息,不影响团队间的并行工作。模型是利用,包,(Package),和,包的依赖,来进行管理的。包是,UML,模型中通用的层次组织结构,包上的依赖总结了包内容的依赖关系。,58,UML,的基本概念,13,UML,概念范围,扩展机制,扩展机制,(Extension Mechanisms),,,UML,能,满足绝大部分系统建模的需要,但任何语言都不是万能的,它必须考虑一定的扩展机制,,UML,的,扩展机制包括,约束,、,标签值
29、和,原型,。这些扩展机制可以用来为特定领域剪裁,UML,的配置,这样带来一些好处:根据自身需要来使用建模语言。,59,基本图素,一个模型必须首先定义各种事物的内部特征和相互之间的关系,下面介绍一些基本的模型元素:,分类,:共,12,个,类(,Class,),接口(,Interface,),包(,Package,),角色(,Actor,),用例(,Use Cases,),组件(,Component,),结点(,Node,),状态(,state,),关系:,关联(,Association,),泛化(,Generalization,),依赖(,Dependency,),实现(,Realizatio
30、n,),约束(,Constraint),60,基本图素,1,角色,角色,是与系统、子系统或类交互的外部人员,进程或事务。在运行时,具体人员会充当系统的多个执行者,不同用户可能会成为一个执行者。,Student,Professor,Billing System,Registrar,根据上下文的不同而具有不同的含义,61,基本图素,2,用例,用例,是,系统提供的外部可感知的功能单元,用例的目的是定义清晰的系统行为,但不解释系统的内部结构。,用例可以与角色关联,也可以参与其他的多种关系,比如扩展、泛化和包含等。,用户的动态部分用交互视图来描述,比如顺序图、协作图。,用例用椭圆来表示,用例名标在椭圆下
31、方,用实线与同自身通信的用户相连。,求一元二次方程根,62,基本图素,3,系统,系统也叫做系统边界,用于界定系统功能范围。,它用一个矩形框表示。描述该系统功能的用例都置于其中,而描述的与系统交互的角色都置于其外。系统(边界)常常省略不画。,63,基本图素,4,类,类,是具有相同属性、操作和关系的对象集合的总称。通常在,UML,中类被画成矩形,包括三个部分:名称、属性和操作。下面是可选的。,名称:,每个类都必须有一个名字,用来区分其它的类。类名是一个字符串,称为简单名字。路径名字是在类名前加包含类的包名为前缀。例如,Wall,、,java:awt:Wall,都是合法的类名。,属性:,类可以有任意
32、多个属性,也可以没有属性。在类图中属性只要写上名字就可以了,也可以在属性名后跟上类型甚至缺省取值。,操作:,操作是类的任意一个实例对象都可以调用的,并可能影响该对象行为的实现。,64,基本图素,4,类,类名,属性,操作,65,基本图素,5,对象,1,、对象是类的实例。,2,、对象图素中对象名的下面加下划线,对象图素所使用的符号与类图素基本相同。二者的区别在于对象图素展示的是类的实例,而不是类本身。,3,、对象图素除第一格外,其他格是可选的。,对象常常出现在活动图、序列图和协作图中。,66,67,基本图素,6,接口,接口,是未给出实现的对象行为的描述,接口包含操作,但没有属性,一个或多个类可以实
33、现接口,每个类实现接口的操作。,思考:为什么会有接口?,String,isEqual(String,):Boolean,Hash():Integer,Hashable,Comparable,接口标记,68,基本图素,7,协作,协作实质代表一组模型元素协同完成对应用例的功能。,协作与对应的用例存在着一种所谓的实现关系。,协作与对应的用例分离带来的好处是为描述一个用例可以用不同的协作实现提供了可能。,69,求一元二次方程根,求一元二次方程根,70,基本图素,8,组件,组件,是可重用的系统片段,具有良好定义接口的物理实现单元。每个组件包含了系统设计中某些类的实现。,组件设计的原则,:良好的组件不直接
34、依赖于其它组件,而是依赖于其它组件所支持的接口。这样的好处是系统中的组件可以被支持相同接口的组件所取代。,一个组件可能是,源代码,、,可执行程序,或,动态库,。,Student,71,基本图素,9,结点,结点,代表系统运行时的物理对象,结点通常拥有运算能力,它可以容纳对象和组件实例。,Registration,Database,Library,客户,Main,Building,72,基本图素,10,包,任何大系统都必须划分为较小的单元,以便人们在某一时刻可以和有限的信息工作,使团队的工作不相互影响。,包可以包含各种模型元素和其它的包,包之间还可能存在一定的依赖。,Finances,Credit
35、s,Accounts,BankInterface,73,基本图素,10,包,具有独立的说明和实现部分的包,它代表了与系统其它部分具有清晰接口的清晰单元,它通常代表了系统在功能或实现范围上的划分。,74,基本图素消息,消息代表软件系统内两个对象中一个对象向另一个对象发出的执行某种操作的请求。,序列图中的消息有简单、异步、同步之分,1,、简单消息是一个对象到另一个对象的转移。,2,、如一个对象发送了同步消息,必须等待对方的回答后才继续自己的操作。,3,、相反,如一个对象发送了异步消息,不必等待对方的回答就继续自己的操作。,75,76,基本图素,11,关系关联,关联,描述了系统中对象和其它实例之间的
36、离散的连接,关联是有序的,它允许重复,关联的实例是,链,。,关联至对象的连接点称为,关联端点,,很多信息被附在关联端点上,它拥有角色名、重数(多少个类的实例可以关联于另一个类的实例),可见性等。,关联有自己的名称,可以拥有自己的属性,这时关联本身也是类,称为,关联类,。,77,基本图素,11,关系关联,Manages,Job,boss,worker,employee,employer,1.*,*,*,0.1,Company,Person,Job,Salary,角色名,重数,关联名称,关联类,二元关联,自关联,78,基本图素,11,关系关联,聚集,(,Aggregation,),用来表达整体部分
37、关系的关联。,组合,(,Composition,),是一种聚集,是关联更强的形式。,Polygon,Point,1,3.*,points,Contains,Polygon,Window,Slider,1,2,Scrollbar,Header,1,Title,1,1,Panel,1,Body,聚集,组合,79,基本图素,11,关系泛化,泛化,是,一般化和具体化之间的一种关系。,继承,就是一种泛化关系,更一般化的描述称为,双亲,,双亲的双亲称为,祖先,,更具体化的描述称为,孩子,,在类的范畴,双亲对应超类,孩子对应子类。,Tree,Oak,Elm,Birch,孩子,双亲,Person,Studen
38、t,Graduate,祖先,80,基本图素,11,关系泛化,多重继承,:一个孩子可以从多个双亲继承属性和方法。多重继承可能存在,冲突,,因为被继承的双亲可能存在相同的类声明,这时,最好显式解决冲突问题。,Assistant,Teacher,Student,81,基本图素,11,关系依赖,依赖,指明两个或两个以上模型元素之间的关系。,依赖有很多种类,比如:实现(,realize,)、,使用、(,usage,)、,实例化(,instantiate,)、,调用(,call,),,派生(,derive,)、,访问(,access,)、,引入(,import,)、,友元(,friend,),等等。,Ap
39、plication Server,DataBase,依赖类型,82,基本图素,11,关系实现,实现,是依赖的一种,但由于它具有特殊意义,所以将它独立讲述。实现是连接说明和实现之间的关系。,String,isEqual(String,):Boolean,Hash():Integer,Comparable,Comparable,isEqual(String,):Boolean,Hash():Integer,实现,特殊的实现标记,83,基本图素,11,关系约束,约束,用来表示各种限制,如关联路径上的限制,和属性特征检测(存在、所有)。,Person,Committee,Member-of,约束,Ch
40、air-of,subset,84,模型图,静态视图:,类图,对象图,部署图,组件图,85,静态建模,1,类图,静态视图,是,UML,的基础,静态视图表示为类图,主要是描述类和类之间的关系。,继承,关联,Person,House,residence,0.*,owner,0.*,FinancialInstitution,client,creditor,0.*,0.*,Mortgage,principal,rate,term,关联类,ordered,0.*,1,Bank,TrustCompany,86,静态建模,2,对象图,对象图是系统在某一时刻的快照。,Smith:Person,cottage:H
41、ouse,home:House,first:Mortgage,second:Mortgage,RoyalBank,:Bank,链,87,静态建模,3,组件图,组件图,描述可重用的系统组件以及组件之间的依赖。,Course,Course,Offering,Student,Professor,Course.dll,People.dll,Course,User,Register.exe,Billing.exe,Billing,System,88,静态建模,3,部署图,部署图,描述系统资源在运行时的物理分布,系统资源成为结点。,Registration,Database,Library,Dorm,Ma
42、in,Building,89,动态建模,1,用例图:从外界对系统的感知,状态图:对象自身的活动,活动图,序列图:对象之间的关系,协作图,90,动态建模,1,用例图,用例图,描述执行者在各个用例中的参与情况。,Student,Registrar,Professor,Maintain Schedule,Maintain Curriculum,Request Course Roster,Billing System,91,动态建模,1,用例图,用例图,描述各个执行者在各个用例中的参与情况,描述系统为用户所感知的外部视图。,用例图的功能:,捕获系统用户需求,描述系统边界,指明系统外部行为,指导系统开发
43、者的功能开发,系统建模的起点,指导所有的类图和交互图的设计,产生测试用例,用户文档,估计项目大小和进度。,92,动态建模,1,用例图,用例,可以参与多种关系:关联、扩展、泛化和包含。,Customer,Salesman,Supplier,Supervisor,Sale,Management,Supply,执行者,用例,系统边界,93,动态建模,2,状态机图,状态机图,是对单个类的对象的生命周期进行建模,描述了对象时间上的动态行为,每个对象被认为是,事件驱动,的孤立实体。,事件,表达对象间的调用、显式信号、值的改变或时间的推移。,调用事件、变更事件、信号事件、时间事件,状态,描述对象生命周期的一
44、段时间,可以是等待其它事件时所处的时间,或是执行某一活动时所处的时间,状态分为,简单状态,和,复合状态,。,94,动态建模,2,状态机图,状态机图是由,状态,和,跃迁,组成的图,通常状态机附属于类,描述类实例对接受事件的响应。,跃迁,定义对象对某一事件发生的反应,通常,迁移具有,触发事件,、,跃迁条件,、,动作,和,目标状态,。,跃迁的种类有,外部跃迁,和,内部跃迁,。外部跃迁是最普通的跃迁,会发生状态改变;内部跃迁不发生状态改变。,跃迁有两个隐式动作:,进入动作,和,退出动作,。无论何时进入和退出时都要执行,这方便进入时进行初始化工作,退出时进行资源的释放工作。,95,它强调对象行为的事件顺
45、序,强调对象对外部事件的响应及相应的状态变迁。,通过状态图可以了解一个对象所能到达的所有状态以及对象涉及的事件(消息、超时、错误、条件满足)对对象状态的影响。,96,动态建模,2,状态机图,created,ready,HandleEvent,InitializeObject,TerminateObject,Wait forEvent,start/master.ready(),poll/,master.ack,(),stop/,初始状态,结束状态,状态机,状态,触发事件,动作表达式,跃迁,97,动态建模,3,活动图,活动图,是用状态机对工作流进行建模的特殊形式,它和流程图很类似,不过它支持并发控
46、制。,活动图一般不描述所有的运算细节,它显示活动的流,但不显示执行活动的对象。,活动图处于系统的外部和内部视图之间,所以它可以作为设计的起点,为了完成设计,每个活动必须扩展成一个和多个操作,每个操作被指派给特定的对象来实现。,带有生命线的活动图和无生命线的活动图。,98,动态建模,3,活动图,Customer,Sales,Stockroom,Request,Service,Pay,Take Order,Fill Order,Deliver Order,Collect Order,泳道,99,动态建模,3,带有对象流的活动图,Customer,Sales,Stockroom,Request,Se
47、rvice,Pay,Take Order,Fill Order,Deliver Order,Collect Order,泳道,Order,Placed,Order,Entered,Order,Filled,Order,Delivered,对象,100,动态建模,4,序列图,对象行为是通过交互来实现的,,交互,是对象间为完成某一目的而进行的一系列,消息,交换。,消息,是对象间的单向通信,从发送者到接受者的携带信息的控制流。消息可能带有,值参,。,消息序列可用两种图表示:,序列图,(重点在消息的时间顺序)和,协作图,(重点在交换消息的对象间的关系)。对协作图来说,时间顺序可以从顺序号获得。,101
48、动态建模,4,序列图,序列图,用二维表来表示交互,纵向是时间轴,横向是参与的角色以及它们交换的消息。,角色的生命周期表现为,生命线,,一条垂直的线,在激活的时间段里是双线,在状态保持的时间里是虚线。,消息表示为从一条生命线出发到另一条生命线的有向线,从上而下,表示消息的时间顺序。,102,动态建模,12,序列图,Caller,Operator,Callee,时间轴,call,ack,number,call,ack,talk,transfer,顺序图,生命线,激活,状态保持,角色,103,动态建模,5,协作图,协作图,包含分类角色和关联角色,当它实例化时,对象被绑定到分类角色,链被绑定到关联角
49、色,.,关联角色还可能被各种暂时性的链来充当,如过程参数和局部过程变量,链可以指定暂时性的原型:,、,或自身调用,。,协作图对实现协作的对象和链进行建模,而忽略其他对象。,104,动态建模,5,协作图,Student,Registration Form,Registration Manager,1:fill in info,2:submit,3:add(smith,math),math,4:add(smith),105,动态建模,5,协作图,通常在一个协作图中每个对象分配一个符号,然而有时不同状态的对象需要显式指出,,流,将同一个对象的不同状态版本关系在一起,使用,原型。流的,原型不太常用。,
50、Controller,:Directoryclosed,:Directoryopen,1:expand(),2:sort(),1.1,流,106,公用机制,注释,规范说明,修饰,扩充机制,公共划分,107,公用机制,1,注释,注释,用于解释设计的思路,便于理解。,一个好的模型应该有详尽的注释。,Represents,an incorporated entity,Company,注释,108,规范说明,软件模型必须是完整的,以便于软件系统的建造。也就是说,此模型必须具备足够的详细信息以供软件建造使用。这些构成完整模型的详细信息就是模型的规范说明(简称规范)。所有,UML,模型成员都有规范说明。






