UML建模语言
1. UML概述
UML(Unified Modeling Language) 是软件界第一个统一的建模语言,该方法结合了Booch,OMT,和OOSE方法的优点,统一了符号体系,并从其他的方法和工程实践中吸收了许多经过实际检验的概念和技术
他是一种标准的表示,已成为国际软件界广泛承认的标准。他是第三代面向对象的开发方法,是一种基于面向对象的可视化的通用建模语言。为不同领域的用户提供了统一的交流标准--UML图
UML应用领域很广泛,可用于软件开发建模的各个阶段,商业建模,也可用于其他类型的系统
1.1 什么模型?为什么要建模?
模型是一个系统的完整的抽象。人们对某个领域特定问题的求解及解决方案,对他们的理解和认识都蕴含在模型中。
通常,开发一个计算机系统是为了解决某个领域的特定问题,问题的求解过程,就是领域问题到计算机系统的映射。
UML作为一种可视化的建模语言,提供了丰富的基于面向对象概念的模型元素及其图形表示元素
1.2 UML的形成
九十年代中,面向对象方法已经成为软件分析和设计方法的主流。
1994年10月Jim Rumbaugh和Grady Booch共同合作把他们的OMT和Booch方法统一起来,到1995年成为“统一方法”(Unified Method)版本0.8。随后,IvarJacobson加入,并采用他的用例(User case)思想,到1996年,成为“统一建模语言”版本0.9。
1997年1月,UMIL版本1.0被提交给OMG组织,作为软件建模语言标准的候选。其后的半年多时间里,一些重要的软件开发商和系统集成商都成为“UML伙伴”,如IBM,Mircrosoft,HP等.1997年11月7日被正式采纳作为业界标准。
1.3 UML的主要内容
UML的定义包括UML语义和UML表示法两个部分
(1)UML语义 描述基于UML的精确元模型定义。元模型为UML的所有元素在语法和语义上提供了简单、一致、通用的定义性说明,使开发者能在语义上取得一致,消除了因人而异的表达方法所造成的影响。此外UML还支持对元模型的扩展定义。
UML支持各种类型的语义。如布尔、表达式、列表、阶、名字、坐标、字符串和时间等,还允许用户自定义类型。
(2)UML表示法 定义UML符号的表示法,为开发者或开发工具使用这些图形符号和文本语法为系统建模提供了标准。这些图形符号和文字所表达的是应用级的模型,在语义上它是UML元模型的实例
1.4 视图
一个系统应从不同的角度进行描述,从一个角度观察到的系统称为视图。
视图由多个图构成,他不是一个图表,而是在某一个抽象层上,对系统的抽象表示。
如果要为系统建立一个完整的模型图,需定义一定数量的视图,每个视图表示系统的一个特殊方面。另外,视图还把建模语言和系统开发时选择的方法或过程连接起来。
1.5 图
UML语言定义了5种类型和9种不同的图,把他们有机的结合起来就可以描述系统的所有视图。
- 用例图(user case diagram)从用户角度描述系统功能,并指出各功能得操作者
- 静态图(static diagram),表示系统的静态结构。包括类图、对象图、包图
- 行为图(behavior diagram),描述系统的动态模型和组成对象间的交互关系。包括状态图、活动图
- 交互图(interactive diagram),描述对象间的交互关系。包括顺序图、合作图
- 实现图(implementation diagram)用于描述系统的物理实现。包括构件图、部署图
1.6 模型元素
代表面向对象中的类,对象,关系和消息等概念,是构成图的最基本的常用的元素。一个模型元素可以用在多个不同的图中,无论怎样使用,他总是具有相同的含义和相同的符号表示。
1.7 通用机制
用于表示其他信息,比如注释,模型元素的语义等。
另外,为了适应用户的需求,他还提供了扩展机制,包括构造型、标记值和约束。使用UML语言能够适应一个特殊的方法(或过程),或扩充至一个组织或用户
1.8 UML的特点
(1)统一标准:UML统一了Booch、OMT和OOSE等方法中的基本概念,已成为OMG的正式标准,提供了标准的面向对象的模型元素的定义和表示。
(2)面向对象:UML还吸取了面向对象技术领域中的其他流派的长处。UML符号表示考虑了各种方法的图形表示,删掉了大量易引起混乱的、多余的和极少使用的符号,也添加了一些新符号。
(3)可视化、表示能力强
系统的逻辑模型或实现模型都能用UML模型清晰的表示,可用于复杂软件系统的建模
(4)独立于过程:UML是系统建模语言,独立于开发过程
2. 通用模型元素
模型元素是UML构造系统的各种元素,是UML构建模型的基本单位。模型元素代表面向对象中的类,对象,关系和消息等概念,是构成图的最基本的常用的概念。分为一下两类:
-
基元素
是已由UML定义的模型元素。如:类、结点、构件、注释、关联依赖和泛化等。
-
构造型元素
在基元素的基础上构造的新的模型元素,是由基元素增加了新的定义而构成的,如扩展基元素的语义(不能扩展语法结构),也允许用户自定义。构造型用括在双尖括号《》中的字符串表示。
目前UML提供了40多个预定义的构造型元素。如使用《Use》、扩展《Extend 》
2.1 模型元素
可以在图中使用的概念统称为模型元素。模型元素在图中用其相应的视图元素(符号)表示,图给出了常用的元素符号:类、对象、结点、包和组件等。
模型元素与模型元素之间的连接关系也是模型元素,常见的关系有关联( association)、泛化(generalization)、依赖(dependency)和聚合(aggregation),其中聚合是关联的一种特殊形式。这些关系的图示符号如图所示。
- 关联:连接模型元素及链接实例
- 依赖:表示一个元素以某一种方式依赖于另一种元素
- 泛化:表示一般与特殊的关系,即“一般”元素是“特殊”关系的泛化。
- 聚合:表示整体与部分的关系
2.2 关联和链接
关联是两个或多个类之间的一个关系。链是关联的具体体现。关联有二元关联、三元关联、多元关联
2.3 约束
UML中提供了一种简便的、统一的和一致的约束,是各种模型元素的一种语义条件或限制。一条约束只能应用于同一类元素。
约束的表示:
如果约束应用于一种具有相应视图元素的模型元素,它可以出现在它所约束元素视图元素的旁边。
通常一个约束由一对花括号括起来({constraint}),花括号中为约束内容。
- 对泛化的约束:应用于泛化的约束,显示在大括号里,若有多个约束,用逗号隔开。如果没有共享,则用一条虚线通过所有继承线,并在虚线的旁边显示约束,如图所示:
- 关联的约束:如xor关联,某时刻只有一个对象关联
2.4 依赖
·依赖关系描述的是两个模型元素(类,组合,用例等)之间的语义上的连接关系,其中一个模型元素是独立的,另一个模型元素是非独立的(或依赖的)。如图表示类A依赖干类B的一个友元依赖关系。
依赖的形式可能是多样的,针对不同的依赖的形式,依赖关系有不同的变体。
3. 用例图
1992年由Jacobson提出了Use case的概念及可视化的表示方法—Use case图,受到了IT界的欢迎,被广泛应用到了面向对象的系统分析中。用例驱动的系统分析与设计方法已成为面向对象的系统分析与设计方法的主流。
用例模型由Jacobson在开发AXE系统中首先使用,并加入由他所倡导的OOSE和Objectory方法中。用例方法引起了面向对象领域的极大关注。自1994年IvarJacobson的著作出版后,面向对象领域已广泛接纳了用例这一概念,并认为它是第二代面向对象技术的标志。
3.1 用例建模概述
用例建模技术,用于描述系统的功能需求。在宏观上给出模型的总体轮廓。通过对典型用例的分析,使开发者能够有效地了解用户的需求。
3.2 用例模型
用例模型描述的是外部执行者(Actor)所理解的系统功能。它描述了待开发系统的功能需求。
它驱动了需求分析之后各阶段的开发工作,不仅在开发过程中保证了系统所有功能的实现,而且被用于验证和检测所开发的系统,从而影响到开发工作的各个阶段和UML的各个模型。
用例模型由若干个用例图构成,用例图中主要描述执行者和用例之间的关系。在UML中,构成用例图的主要元素是用例和执行者及其它们之间的联系。
一 、执行者:执行者是指用户在系统中所扮演的角色。执行者在用例图中是用类似人的图形来表示,但执行者可以是人,也可以是一个外界系统。 注意:用例总是由执行者启动的。
二、 用例:从本质上讲,一个用例是用户与计算机之间的一次典型交互作用。在UML中,用例被定义成系统执行的一系列动作(功能)
用例有以下特点:
- 用例捕获某些用于可见的需求,实现一个具体的用户目标
- 用例由执行者激活,并将结果值返回给执行者
- 用例必须具有功能上的完整描述
3.3 用例图
用例图描述了系统的功能需求,它是从执行者的角度来理解系统,由“执行者”、“用例”和“用例之间的关系”3类模型元素构成。
图中还有另外两种类型的连接,即《使用》和《扩展》关系,是两种不同形式的泛化关系。
- 《Use》表示一个用例使用另一个用例。
- 《Extend》通过向被扩展的用例添加动作来扩展用例。
例如金融管理系统:(逐渐细化)
4. 静态建模
任何建模语言都以静态建模机制为基础,标准建模语言UML也不例外。所谓静态建模是指对象之间通过属性互相联系,而这些关系不随时间而转移。
UML静态建模机制包括:
- 用例图
- 类图
- 对象图
- 包图
- 构件图
- 配置图
4.1 类图与对象图
对象类简称类,是面向对象模型的最基本的模型元素,用类图来描述。类图(Class diagram)由系统中使用的类以及它们之间的关系组成,是描述系统的一种图式,分为长式和短式。类及类型名均用英文大写字母开头,属性及操作名为小写字母开头。常见类型有: Char,Boolean,Double,Float,Integer, Object,Short,String等。类图是构建其它图的基础。
对象是对象类的实例(instance),用对象图来描述。对象图亦分长式和短式。
(1)属性
属性用来描述类的特征,表示需要处理的数据
属性有 “可见性”,“属性名”,“类型”,以及“约束特性”等组成
其中:可见性(visibility)表示该属性对类外的属性是否可见
分为:
public(+)公有,private(-)私有,protected(#)受保护。如果可见性未申明,表示其可见性不确定
(2)操作
对数据的具体处理方法的描述则放在操作部分,操作说明了该类能做些什么工作。操作通常称为函数,他是类的一个组成部分,只能作用于该类的对象上。
操作有 “可见性”,“操作名“,”参数列表“,”返回类型“,以及”约束特性“等组成
4.2 UML中类之间的关系
4.2.1 关联关系
-
常规关联
-
多元关联
-
有序关联
-
受限关联
-
或关联
-
关联类
其他关联:递归关联
4.2.2 聚集
聚集关系描述的是部分与整体关系的关联。简单的说,它将一组元素通过关联组成一个更大,更复杂的单元,这种关联关系就是聚集。聚集关系描述了“has a”的关系。
在UML中,它用带有空菱形的线段来表示,空菱形与聚集类相连,其中头部指向整体。
组成关系则是一种更强形式的关联,在整体中拥有管理部分的特有职责,有时也被称为强聚合关系。
在组合中,成员对象的生命周期取决于聚合的生命周期,聚合不仅控制着成员对象的行为,而且控制者成员对象的创建和结束。
在UML中,组合关系使用带实心菱形头的实线来表示,头部指向整体。
4.2.3 泛化
泛化指出类之间的“一般与特殊关系”,即继承关系。父类与子类之间构成类的分层结构
4.3 包图
一个最古老的软件方法问题是:怎样将大系统拆分成小系统。UML中解决该问题的思路之一是将许多类集合成一个更高层次的单位,形成一个高内聚、低耦合的类的集合。UML中这种分组机制叫包(Package)。引入包是为了降低系统的复杂性。
包是一种组合机制,把各种各样的模型元素通过内在的语义连在一起成为一个整体就叫包,构成包的模型元素称为包的内容,包通常用于对模型的组织管理,因此有时又将包称为子系统(subsystem)。包拥有自己的模型元素,包与包之间不能共用一个相同的模型元素,包的实例没有任何语义(含义)。仅在模型执行期间包才有意义。
包的内容:可以是类的列表,也可以是另一个包图,还可以是一个类图
包之间的关系有依赖和泛化
1 条评论
|´・ω・)ノ