1、 UML语言从4个抽象层次(元-元模型,元模型,模型,用户对象)定义UML的概念、模型元素、结构、机制等,并规定了相应的表示法和图形符号。 UML语言对其建模的概念和语言成分给出了三方面的严格规定:抽象语法、良构规则和语义。良构规则是使用模型元素建立面向对象的良构模型(Well-formed Model)的规则。 UML语言强调模型的可视化。一个UML的系统模型可以采用多种模型图形和相应的说明、文档来表达。 UML语言定义了扩展机制。用户可根据需要把UML用户化,成为针对某个应用领域的特定的建模语言,用户还可以增加一些自定义的构造型、标记值和约束等模型元素,以方便描述特定的模型特征。 UML语
2、言是用半形式化的方法定义的,即用图形符号、自然语言(英语)和形式语言(OCL)相结合的办法来描述定义的。容易理解,容易使用,十分有效。,第2章 UML语言,Home,第2章 UML语言,2.1 UML语言结构,2.2 元模型,2.3 符号与图形,2.4 图与模型组织,2.5 公共机制,Home,2.6 扩展机制,2.7 UML 2.0,问题的求解就是一个从领域问题到计算机系统的映射,如图2.1(a)所示 。 一个模型是一个系统的完整的抽象。模型由模型元素构成,具有一定的体系结构。 一个抽象的系统模型需要用图形可视化地表达,才有利于理解和交流。 图2.1(b)表示了问题求解和语言的关系。,Hom
3、e,2.1 UML语言结构,图2.1 问题求解和语言,UML语言建立在面向对象的基础上,它采用面向对象的概念和范型。 UML语言的体系结构建立在四层元模型结构之上,这4层元模型分别为:元元模型(Meta-meta model) 元模型(Meta model) 模型(Model)用户对象(User Objects),Home,2.1 UML语言结构,(1)元元模型(Meta-meta model)元-元模型建立元模型体系结构的基础结构(Infrastructure)。元元模型层定义描述元模型的语言,是任何模型的基础,用于对概念的形式化。例:元元模型和元模型示例,如图2.2所示。,Home,2.1
4、 UML语言结构,图2.2 元元模型和元模型示例,(2)元模型(Meta model) 元模型层定义描述模型的语言。元模型是关于模型的模型。 在UML语言的元模型中,定义了面向对象的范型的概念,如“对象类”、“属性”、“操作”、“组件”等,它们是元模型层的元对象。 元模型是元元模型的一个实例。 元模型示例见图2.2(b),其中的“对象类”、“对象”、“关联”、“链接”等概念都是元-元模型中的“事物”概念的实例。,Home,2.1 UML语言结构,(3)模型(Model) 模型是元模型的一个实例,模型层定义用于描述信息领域的语言。 模型是对现实世界的抽象。无论是问题领域还是解决方案,都可以抽象成
5、模型。 例:一个软件开发管理系统的部分模型,在对象类“人”与“开发组”之间存在着“成员”关联,如图2.3所示。,Home,2.1 UML语言结构,图2.3 模型示例,(4)用户对象层 用户对象(User Objects)是模型的实例,用户对象层定义一个特定的信息领域。 用户对象层用于表达一个模型的特定情况。 例:图2.4表示的是图2.3的模型的一个实例。,Home,2.1 UML语言结构,图2.4 用户对象示例,2.2 元模型,Home,元模型是关于模型的模型。UML元模型用于定义UML语言的概念和表示法。 UML元模型通常表示为一个元对象类图。 UML元模型是一种逻辑模型,而非物理(实现)模
6、型,它由一些逻辑包(Package)组成,这些包又由一些子包组成。 UML元模型由基础包、行为元素包和模型管理包定义,行为元素包和模型管理包均依赖于基础包。,2.2 元模型,Home,UML元模型的体系结构用一个包图表示,如图2.5所示,包与包之间的虚箭线表示依赖关系。,图2.5 UML元模型体系结构,2.2 元模型,Home,1.基础包 基础包是UML语言的基础结构(Infrastructure)。 基础包定义了模型的静态结构以及结构建模和语言扩展机制所必须的概念。 基础包由以下子包组成:核心包、数据类型包、扩展机制包、辅助元素包,如图2.5所示。,2.2 元模型,Home,(1)核心包核心
7、包定义了为建立面向对象模型所需要的基本的抽象元模型构造物和具体元模型构造物。包括:抽象元模型构造物:模型元素(Model Element)可泛化元素(Generalizable Element)分类符(Classifier) 具体元模型构造物:对象类、属性、操作、关联等。,2.2 元模型,Home,模型元素 模型元素是从被建立模型的系统中抽象出来的元素。在元模型中,模型元素是一个模型中的有名的实体,是UML语言中元对象类建模的基础。 每一个模型元素都可以看作是一个模板(Template),它具有一组模板参数。 模型元素由名称、结构特征、行为特征、参数、约束等定义。 模型元素的结构特征包括多重性
8、、可变性、目标范围。模型元素的行为特征包括操作、方法。,2.2 元模型,Home,可泛化元素 可泛化元素是可以参与泛化联系的模型元素,即它们允许存在有一般与特殊关系。 可泛化元素是一个抽象的元对象类。 在元模型中,一个可泛化元素可以是其他可泛化元素的泛化,即在祖先中定义的全部的特征和所包含的模型元素,也出现在该可泛化元素中。,2.2 元模型,Home,分类符 在元模型中,分类符是一个抽象的元对象类,是元对象类“可泛化元素”的子类。 分类符描述特征的集合,包括结构特征和行为特征,如属性、操作和方法等。 分类符有名字,它在包含它的名字空间中是唯一的。 分类符可以继承特征,参与关联。在分类符的范围内
9、,可以嵌套其他的分类符。被嵌套的分类符只有当它具有合适的可视性时才可能被访问。,2.2 元模型,Home,分类符 UML分类符的定义如图2.6所示。 在核心包中定义的分类符有:对象类(Class)、接口(Interface)、数据类型(Data Type)、节点(Node)、组件(Component)等。组件由模型元素组成,节点由组件组成。,图2.6 分类符定义,2.2 元模型,Home,(2)数据类型包 数据类型包定义在UML元模型中使用的各种数据类型。在元模型中,数据类型声明对象类的属性的型(Type)。 数据类型包定义的元数据类型有:基本型:Integer(整型)、UnlimitedIn
10、teger(无限整型)、String(字符串)、Time(时间)。它们是带有构造型的元对象类。枚举型:AggregationKind(聚合型)、Boolean(布尔型)、CalConcurrencyKind(调用并发型)、ChangeableKind(可变型)、OrderingKind(有序型)、ParmeterDirectionKind(有向参数型)、PseudostateKind(伪状态型)、ScopeKind(范围型)、VisbilityKind(可视型)。它们是带有构造型的元对象类。,2.2 元模型,Home,(2)数据类型包表达式:表达式定义一个语句,当在一个上下文环境中执行时,它对
11、一组实例(可以为空)计值。 表达式有:ActionExpression(动作表达式)、ArgListsExpression(变量列表表达式)、BooleanExpression(布尔表达式)、IterationExpression(循环表达式)、MappingExpression(映射表达式)、ObjectSetExpression(对象集表达式)、ProcedureExpression(过程表达式)、TimeExpression(时间表达式)、TypeExpression(型表达式)。 映射(Mapping) :映射用于模型元素的映射。映射一般用一个字符串表示。 名字:在元模型中,名字(Na
12、me)定义一个为模型元素命名的语言符号,一般用字符串表示。名字用于在某个范围内唯一地标识一个模型元素。,2.2 元模型,Home,(2)数据类型包定位引用:定位引用(LocationReference)在扩展se Case的插入行为序列中确定位置。定位引用可以在代码中用一条线表示,或者在状态机中用一个或一组状态表示,或用其他方式表示。多重性:多重性(Multiplicity)定义一个非负整数的非空集合。,2.2 元模型,Home,(3)扩展机制包 扩展机制包规定怎样对模型元素用户化和扩展新的语义。 扩展机制包定义了构造型、标记值和约束的语义。 (4)辅助元素包 辅助元素包定义核心包以外的一些概
13、念与模型元素。辅助元素包中包含的元对象类有:注解(Comment)、绑定(Binding)。 注解是附加在模型元素或模型元素集上的解释说明。 绑定是一个模板(Template)与由该模板生成的模型元素之间的联系。绑定必须有一个供应者(模板)和一个客户(模型元素)。,2.2 元模型,Home,2行为元素包 行为元素包定义了建立系统行为模型所需要的概念。 行为元素包由以下子包组成:公共行为包、Use Case包、协同包、状态机包、活动包,如图3.5所示。 (1)公共行为包 定义动态元素的核心概念,为Use Case、协同、状态机等提供基础设施结构。 在公共行为包中包含的元对象类有:动作、信号。,2
14、.2 元模型,Home,(1)公共行为包动作 动作是一个可执行语句的说明,它是一个导致模型的状态的变更的计算过程的抽象。 动作可以通过发送一个消息给对象,或修改一个链接,或修改一个属性值来实现。 动作是一个抽象的元对象类,它的属性有:“isAsynchronous”(是否异步)、“recurrence”(重复)、“script”(脚本)、“target”(目标)。 动作可以含有实在变量的说明。 公共行为包定义的动作有:CallAction(调用)、CreateAction(创建)、DestroyAction(销毁)、ReturnAction(返回)、SendAction(发送信号)、Termi
15、nateAction(终止)、AssignmentAction(指定)、UninterpretedAction(在UML中无解释)等。,2.2 元模型,Home,(1)公共行为包信号 信号(Signal)是实例之间通信的一个异步激发的说明。接受信号的实例用一个状态机处理信号。 信号必须有构造型标志。信号的属性中必须含有参数,但不能有操作。 (2)Use Case包 定义实体功能的建模所需要的概念,或系统提供什么给外界的用户。这些概念主要有活动者和Use Case。 活动者是一个实体的外部事物的模型。活动者定义一组与该实体进行交互的用户角色。 在元模型中,Use Case是一个元对象类,它的定义
16、如图2.7所示。,2.2 元模型,Home,图2.7 Use Case定义,2.2 元模型,Home,(3)协同包 协同(Collaboration)为系统中的一批分类符(如对象类、接口等)及其关联的集体命名,并说明它们怎样一起合作完成某个特定的任务。 在元模型中,协同含有一组分类符角色(Classifier Role)和关联角色(Association Role)。 (4)状态机包 定义了一组概念,用于有限状态转移系统(Finite State-transition System),以便对离散的行为建立模型。 在状态机包中定义的概念主要有状态、转移、事件等。 状态机是一种说明,它描述某个动态
17、模型元素的所有可能的行为。 状态机用于对一个模型元素建立行为模型,该模型元素通常是一个对象类、一个Use Case或整个系统。,2.2 元模型,Home,3模型管理包 模型管理包定义模型元素如何组织。模型管理包定义了模型、包和子系统,它们均作为其他模型元素的组成单元。 在元模型中,模型由多个模型元素组成,模型是包的子类,如图2.8所示。,图2.8 模型的继承结构,2.3 符号与图形,Home,2.3.1 图形符号,2.3.2 语义规则,UML为每一个模型元素规定了独特的图形表示符号,称为图标(Icon)。 在UML的核心包中定义的分类符,如对象类、接口、数据类型、节点、组件、信号、Use Ca
18、se、子系统等,它们的图标如图2.9所示。 UML定义的联系,如依赖、关联、泛化、实现(Realization)等,它们的图标如图2.10所示。 消息的图标如图2.11(a)所示。 状态机所涉及的模型元素有状态、转移、事件、活动等。状态与活动的图标分别如图2.11(b)和图2.11(c)所示。 注释的图标如图2.12所示。,2.3.1 图形符号,Home,2.3.1 图形符号,Home,图2.9 分类符图标示例,图2.10 联系图标示例,2.3.1 图形符号,Home,图2.11 消息、状态和活动图标示例,图2.12 注释图标示例, UML定义了一系列的语义规则,用于建立良构模型(Well-f
19、ormed Model)。 所谓良构模型是指本身在语义上是一致的,且与其他相关的模型协调的模型。 UML对于每一个模型元素规定了以下语义规则。 (1)命名(Name) (2)范围(Scope) (3)可视性(Visibility),2.3.2 语义规则,Home,图2.13 拥有者范围示例,(3)可视性(Visibility) 可视性规则规定怎样使一个名字能为外部识别和使用。 UML规定了3种可视性层次:public(公共)、protected(保护)、private(私用)。 可视性分别用符号“+”、“#”、“-”表示。 (4)完整性(Integrity)完整性规则规定事物相互之间怎样是合适
20、的、一致的。 (5)可执行性(Execution) 可执行性规则规定运行或模拟一个动态模型意味着什么。,2.3.2 语义规则,Home,2.4 图与模型组织,Home,2.4.1 模型组织,2.4.2 图,2.4.3 视图,系统由子系统组成。子系统是一个模型元素的集合,是表示系统的一个行为单位。子系统依赖于接口,通过接口互相交换信息,协同工作。 一个子系统可以用一般的包图标加上构造型表示,也可以用一个带有小分支图形符号的包表示,如图2.14所示。,2.4.1 模型组织,Home,图2.14 子系统相互联系示例,模型是系统的语义抽象。一个系统模型可以由多个不同观点的模型组成,它们是从某个特定的角
21、度对系统的抽象。 在UML中,一个模型可以用一个带有小三角形的包表示,并且可以在模型的名字上加上构造型等。 一个模型包含了系统所需要的全部模型元素,这些模型元素按照最高层包/子系统的层次结构进行组织,最高层的包/子系统代表物理系统的边界。 一个模型的表达由若干个视图组成。视图反映模型的某一个侧面。在UML中,视图是用图形与文字说明来表达的。,2.4.1 模型组织,Home,2.4.1 模型组织,Home,图2.15 系统模型示例,图2.16 系统的结构层次 ,图是对组成系统的元素的图形化表示,通常由节点(模型元素)和弧(联系)构成。 UML定义的图有3大类型:Use Case图、静态结构图和动
22、态行为图。 Use Case图表达Use Case、活动者和它们之间的联系。 静态结构图包括对象类图、对象图、组件图和配置图。 动态行为图包括交互图(顺序图与协同图)、状态图、活动图。 上述UML图加上支持说明文档组成系统模型。 注意,UML没有提供在传统的软件生命周期法中常用的数据流图(DFD,Data Flow Diagram)。,2.4.2 图,Home,视图是系统模型在系统的组织结构上的投影,着重于系统的某一个侧面,省略与所表达的景象无关的实体。 UML常用的视图: (1)Use Case视图 (2)设计视图(Design View) (3)过程视图(Process View) (4)
23、实现视图(Implementation View) (5)配置视图(Deployment View) 在建立一个系统模型时,上述的视图和图可根据需要采用。,2.4.3 视图,Home,UML规定了语言的4种公共机制:说明、装饰、通用划分、扩展机制。 (1)说明(Specification) 使用UML的说明叙述系统的细节。 (2)装饰(Adornment) UML元素有唯一的直接的图形表示法,表达该元素的最重要的特征。此外,还可以对该元素加上各种装饰,说明其他方面的性质细节特征,如可视性标记等。,2.5 公共机制,Home,图2.17 装饰示例,(3)通用划分(Common Division)
24、 对UML的模型元素规定了两种类型的划分:型实例(或值)、接口实现。 型实例(TypeInstance)是一个通用描述符与单个元素项之间的对应关系。 通用描述符称为型元素(Type Element),它是元素的类,含有名字和对其内容的一个描述; 单个元素项是实例元素(Instance Element),它是元素的类的示例。,2.5 公共机制,Home,图2.18 型实例,接口声明了一个约定(协议),该约定规定了一项服务。 接口的实现则负责执行接口的全部语义,实现该项服务。 例:在图2.19中,疾病诊断应用服务器组件实现两个接口:“应用”接口和“配置”接口。,2.5 公共机制,Home,图2.1
25、9 接口与实现示例,2.6 扩展机制,Home,2.6.1 构造型,2.6.2 标记值,2.6.3 约束,UML的扩展机制有3种:构造型(Stereotype)、标记值(Tagged Value)和约束。,构造型是UML的一种模型元素,用于对模型元素的分类或标记,引入新的模型元素。 一个为构造型所限定的对象类共享它的基类的属性、操作和关联,但是可以有自己的附加的约束,以及不同的含义和附加的标记值。 构造型用括在双尖括号中的字符串表示,放置在模型元素的名字之前,如图2.20所示。 UML允许用户自定义新的构造型,扩展UML的描述功能,满足特定的需要。,2.6.1 构造型,Home,图2.20 构
26、造型示例,UML预定义了一批标准的构造型。例如: 用于对象类,说明一组用户与 Use Case 交互的角色。 用于依赖,说明目标包的公共内容对于源包是可访问的。 用于消息,说明目标对象与源对象是相同的,只不过在时间点上靠后,而且可能有不同的值、状态和角色。 用于依赖,说明源对象类是通过把实在参数绑定到目标模板的形式参数而创建的。 用于依赖,说明源操作调用目标操作。 用于消息,说明目标对象是源对象的一个完全一样的独立拷贝。 用于注释,说明该注释是一个约束。 用于依赖,说明源元素可以从目标元素计算而得。 用于事件和消息,说明目标对象将被该事件或消息销毁。,2.6.1 构造型,Home,标记值用于规
27、定模型元素的特性。 标记(Tag)代表具有给定值的任意性质的名称,是一个用字符串表示的关键字。标记可用于表示管理信息、代码生成,或一个构造型要求的附加语义信息。 任何一个模型元素可以用一个由“标记值”对组成的性质列表增添任意信息。 通常把标记与值用等号相连括在花括号中,放在模型元素的名字的后面。 UML允许用户自行定义新的标记值。 UML预定义了一批标准的标记值,如:documentation、location、 persistence、responsibility、semantics。,2.6.2 标记值,Home,约束(Constraint)是模型元素中的语义联系,规定某个条件或命题必须保
28、持为真,否则该模型表示的系统无效。 凡是分类符上都可以附加约束,如对象类、关联等都可以附加约束。 约束用括在花括号中的文字串表示。 对于单个模型元素,如一个对象类,约束可以置于类名旁,或置于类图标的附近。 对于两个模型元素之间的约束关系,约束可以表示为从一个模型元素指向另一个模型元素的虚箭线,其上标有约束的文字串,如图2.21所示。 约束也可以用一个含有约束表达式的注释节点表示,并用虚线连接到被施加约束的模型元素,如图2.21所示。 用户可以自定义 约束。UML预定义了一批标准的约束,如: Complete、destroyed、disjoint、frozen、implicit、incomple
29、te、new、overlapping、transient、XoR,2.6.3 约束,Home,约束示例,2.6.3 约束,Home,图2.21 约束示例,2.7 UML 2.0,Home,在新标准版本UML2.0中,整个UML分成了四个部分:UML的基础结构、上层结构、对象约束语言OCL和图交换标准。 在基础结构(Infrastructrue)中定义了UML的基本语言结构,即描述UML自身的元模型(Metamodel)。 在上层结构(Superstructrue)中定义了UML的用户层。 对象约束语言OCL(Object Constraint Language)是描述约束的陈述性语言。 图交换
30、标准(Diagarm Interchange)是在UML2.0中新提出的,其目的是使得在不同的UML工具之间能够平滑无缝地交换符合规范的模型内容。 定义UML2.0的元模型按照以下原则构建:模块化(Modularity)、层次化(Layering)、可分解化(Patitioning)、可扩展性(Extensibility)、可重用(Reuse)。,2.7 UML 2.0,Home,2.7.1 图的表示,2.7.2 图的分类,一个图有图框(Frame)、内容区(Contents Area)和标题(Heading),如图2.22所示,其中图2.22(b)是一个具有复合结构的类图的示例。,2.7.1
31、 图的表示,Home,图2.22 图的表示,class Car,rear:Wheel2,e:Engine,(a),(b),UML2.0图分为两大类:结构图(Structure Diagram)和行为图(Behavioer Diagram),共13种 。 结构图用于对系统的静态结构建模,包括类图、对象图、复合结构图、组件图、包图和配置图。 行为图用于对系统的动态行为建模,包括Use Case图、交互图(顺序图、通信图、交互概观图、计时图)、状态机图和活动图。 原来在UML 1.x中的状态图更名为状态机图(State Machine Diagram),协同图更名为通信图(Communication Diagram)。 复合结构图(Composite Structure Diagram)、交互概观图(Ineraction Overview Diagram)、计时图(Timing Diagram)是新增加的。 对于原有的图,如Use Case图、类图、顺序图、活动图、状态图、组件图等,都有所改进。变化较大的是交互图和活动图。,2.7.2 图的分类,Home,UML2.0图分类,2.7.2 图的分类,Home,图2.23 图的分类,Diagram,Class Diagram,Component Diagram,Object Diagram,