目录
- 1.基本概念
- 2. UML中的构建模块
- 3. UML建模
- 4. UML的基本操作
- 4.1 结构事物
- 4.2 行为事物
- 4.3 分组事物
- 4.4 UML关系
- 5. UML标准图
- 5.1 类图
- 5.2 对象图
- 5.3 UML组件图
- 5.4 UML部署图
- 5.5 UML用例图
- 5.6 UML交互图
- 5.7 UML状态图
- 5.8 UML活动图
1.基本概念
UML即统一建模语言(Unified Modeling Language),具备如下特点:
- 面向对象;
- 可视化,表达能力强;
- 独立于过程;
- 独立于程序设计;
- 容易掌握使用;
从UML整个架构来看,是由视图(View)、图(Diagrams)、模型元素(Model elements)和通用机制等几个部分构成:
- 视图:用来表示被建模系统的各个方面。由多个图构成,它不是一个图片,而是在某一个抽象层上,对系统的抽象表示。如果要为系统建立一个完整的模型图,只需定义一定数量的视图,每个视图表示系统的一个特殊方面就可以了。视图还把建模语言和系统开发时选择的方法或过程连接起来。
- 图:由各种图片构成,用来描述一个视图的内容。UML语言定了9中不同的图的类型,把它们有机地结合起来就可以描述系统的所有视图。
- 模型元素:代表面向对象中的类、对象、消息和关系等概念,是构成图的最基本的常用概念。
- 通用机制:用于表示其他信息,比如注释、模型元素的语义等。它还提供扩展机制,使UML语言能够适应一个特殊的方法(或过程)、或扩充至一个组织或用户。
UML系统可以由不同的用户使用,可以是开发人员、测试人员、商务人士、分析师等等,所以要设计一个系统的体系结构,最重要的是做到从不同的角度来看,实现可视化系统,这样也可以让我们自己更好的了解系统,让它达到一个更好的效果。从不同的角度使用 UML 定义一个系统的起着重要的作用,这些角度是:
该中心是连接所有这四个用例视图,一个用例代表了系统的功能。因此,其他的角度连接使用的情况下:
- 系统设计包括类,接口和协作。UML类图,对象图支持;
- 实现定义的组件组装在一起,使一个完整的物理系统。UML组件图是用来支持实施的角度;
- 流程定义了系统的流动。因此,在设计中所用的相同的元件也可用来支持当前角度看;
- 部署代表物理节点的硬件系统构成。UML部署图是用来支持这个角度来看;
2. UML中的构建模块
UML主要由如下的三部分组成:
- 事物(Things):UML模型中最基本的构成元素,是具有代表性成分的抽象;
- 关系(Relationships):关系把事物紧密联系在一起;
- 图(Diagrams ):图是事物和关系的可视化表示;
2.1 事物
事物在实体抽象化的结果,是UML构件模块中最重要的组成部分,事物主要分为:结构事物、行为事物、分组事物、注释事物。
- 结构事物:结构事物是模型中的静态部分,用以呈现概念或实体的表现元素,是软件建模中最常见的元素;
- 行为事物:行为事物时UML模型中的动态部分,代表语句中的“动词”,表示模型中随着时空不断变化的部分;
- 分组事物:可以将分组事物看作一个盒子,模型在其中可以被分解,目前只有一种分组事物,即包(package),结构事物、动作事物甚至分组事物都有可能放在一个包中。包纯粹是概念上的,只存在于开发阶段,而组件在运行时存在;
- 注释事物:注释事物可以被定义为一种机制来捕捉 UML 模型元素的言论,说明和注释,注释是唯一一个注释事物;
关于事物在UML中的表示,具体如下所示:
2.2 关系
关系是UML中又一重要构建块,它表示元素之间的关联关系,UML中定义了四种关系:
- 依赖关系:依赖是两件事物之间的语义联系,其中一个事物的变化也影响到另一个事物;
- 协作:一种描述一组对象之间连接的结构关系,如聚合关系(描述了整体和部分间的结构关系);
- 泛化:泛化可以被定义为一个专门的元件连接关系与一个广义的元素,它基本上描述了在对象世界中的继承关系,是一种一般化-特殊化的关系;
- 实现:类之间的语义关系,其中的一个类指定了由另一个类保证执行的契约;
关于关系的四种表示如下所示:
2.3 图
UML的核心是图表,主要分为结构图和行为图:结构图是静态图(如类图、对象图),行为图是动态图(如序列图、协作图)。关于不同图的简单描述如下:
- 类图:描述系统所包含的类、类的内部结构以及类之间的关系;
- 对象图:对象图是类图一个具体的实例,所以和类图的基本要素是类似的。对象图是由对象和链接组成,在一个特定的时刻,它捕获该系统的实例。对象图用于原型设计,逆向工程和实际场景建模;
- 组件图:描述代码部件的物理结构以及各部件之间的依赖关系,是一种特殊的 UML 图,用于描述系统的静态实现视图。组件图包括物理组件,如库、档案、文件夹等。组件图是从实施的角度。使用一个以上的元件图来表示整个系统,正向和逆向工程技术的使用,使可执行文件组件图;
- 部署图:定义系统中软硬件的物理体系结构,部署图是由节点和它们之间的关系构成,一个高效的部署图是应用软件开发的一个组成部分;
- 用例图:从用户角度描述系统功能、需求,并指出各功能的操作者,展示系统外部各类角色与系统内部的各种用例之间的关系,用来捕捉系统的动态性质。一个高层次的设计用例图是用来捕捉系统的要求,因此它代表系统的功能和流向。虽然用例图的正向和反向工程是不是一个很好的选择,但他们仍然在一个稍微不同的方法来模拟它;
- 交互图:交互图用于捕获系统的动态性质。交互图包括序列图和协作图,其中:序列图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互;协作图描述对象间的协作关系,协作图跟时序图相似,显示对象间的动态合作关系;
- 状态图:描述一类对象的所有可能的状态以及事件发生时状态的转移条件,用于模拟一个对象的整个生命周期。一个对象的状态被定义为对象所在的条件下,特定的时间和对象移动对其他状态,在某些事件发生时。状态图还用于正向和反向工程,它着重描述从一个状态到另一个状态的流程,主要有外部事件的参与;
- 活动图:描述系统中各种活动的执行顺序,是 UML 的动态模型的一种图形,一般用来描述相关用例图,活动图是一种特殊的状态图。准确的活动图定义如下:活动图描述满足用例要求所要进行的活动以及活动间的约束关系,有利于识别并行活动。活动图是一种特殊的状态图,它对于系统的功能建模特别重要,强调对象间的控制流程;
- 顺序图:表示对象之间的动态合作关系;
- 协作图:描述对象之间的协作关系;
3. UML建模
UML建模可以把在复杂世界的许多重要的细节给抽象出。为了区分UML模型,UML建模用不同类型的不同的图,其中UML建模中三个重要类型的建模为:
结构建模
结构建模具有捕捉静态的功能,包括下列各项:
结构模型代表的系统架构,这个框架的所有其他组件存在的地方。因此,类图,组件图和部署图的部分结构建模。它们都代表的元素和机制将它们组装。但是,从来没有的结构模型描述系统的动态行为。类图中是最广泛使用的结构图。
行为建模
行为建模描述了在系统中的相互作用,代表之间的交互的结构图,行为建模显示系统的动态性质,包括下列各项:
所有上述的显示在一个系统中流动的动态序列。
架构建模
架构建模表示的是一个系统的总体框架,它包含了系统的结构和行为的元素。架构建模可以被定义为整个系统的蓝图。包图是根据架构模型进行的。
4. UML的基本操作
4.1 结构事物
用图形表示法中使用的“结构事物”是UML中使用最广泛的,这些被认为是为UML模型的名词,UML中主要的结构名词有:
- 类 Class:在UML中,类(类用来表示对象,对象可以是任何性质和职责)的图在上面学习事物的章节已经涉及到了,主要是Class Name、Attributes和Operation组成,可能还有一些附加组件,注意的权限修饰符的表示法,
Public
使用+
表示,Protected
使用#
表示(friendly
是归到这个表示方式中),Private
使用-
表示,属性和方法权限修饰符都是通用的(对象是类的一个具体实例,表示方法一样,只是类名使用下划线标识);
- 接口 Interface:接口只是描述功能,而不执行(无方法体),使用圆表示接口,接口名写在下面;
- 协作 Association:协作表示和接口表示类似,圆变成椭圆,外框变为虚线;
- 用例 Use Case:用例可能包含更多职责,它用于捕捉系统的高层次功能;
- 活动类:活动类用于描述系统的并发行为;
- 组件 Component:必要时,可以添加额外元素;
- 节点 Node:节点表示一个物理的系统组件,如服务器、网络;
它们各自的表示法如下图所示:
4.2 行为事物
相互作用的类型包括顺序(顺序图)和协作(协作图)两种。
交互表示法
交互是两个UML组件之间的信息交换,下面是交互的小栗子:
状态机表示法
状态机描述的是组件在声明周期中的不同状态(状态可以是活动的、空闲的或其他情况),下面是小栗子:
4.3 分组事物
UML中只有“包”可以用于分组,其他不能用于分组。
4.4 UML关系
UML中提供了不同类型的关系:依赖、协作、泛化,下面是三种关系的表示法:
上述协作关系两端的* 1
表示的是一对多的关系,这种关联关系还有一些,如下:
表示方式 |
说明 |
1...1 |
表示一对一关联关系(表示两端代表的对象之间的比例) |
0...* |
表示零对多关联关系 |
1...* |
表示一对多关联关系 |
0...1 |
表示零对多关联关系 |
m...n |
表示m对n关联关系 |
5. UML标准图
UML中的图分为两大类:
关于各个图的说明在2.3章节已经学习过了。
5.1 类图
类图是面向对象系统建模中最常用和最重要的图,是定义其它图的基础,主要用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型,不仅用于可视化描述和记录系统的不同方面,也为构建可执行代码的软件应用程序,类图描述一类的属性和操作,也是对系统的约束,被广泛应用于类图的建模的面向对象的系统中,因为它们是唯一的,可以直接映射到面向对象的语言的UML图,类图显示集合的类,接口,关联,协作和约束,也被称为作为结构图。使用类图的目的可以概括为:
- 分析和设计应用程序的静态视图;
- 描述一个系统的责任;
- 基地组件图和部署图;
- 正向和逆向工程;
在绘制类图时,应该注意下面的一些点:
- 类图中的名称应该是有意义的描述,并且是面向系统的;
- 画类图前应先确定每个元素之间的关系;
- 类图中的每个类职责(属性和方法)应该清晰标明;
- 对于每个类的属性的最小数量应符合规定,不必要的属性将使图表复杂;
- 使用注释来描述图中的某些方面,它应该是可以理解的开发者/编码器;
下面是一个订单的类图表示法:
5.2 对象图
UML对象图和类图一样反映系统的静态过程,但它是从实际的或原型化的情景来表达的,显示某时刻对象和对象之间的关系,对象图是类图的实例,所以使用的标识基本相同,对象存在生命周期,因此UML对象图只能在系统某一时间段存在(其实就类似于系统某时刻的快照),使用上述订单的栗子,某时刻可以消费者在特定时间购买,存在的对象和上面类图类似,下面是对象图的小栗子:
5.3 UML组件图
UML组件图(Component Diagram)又称为构件图,描述的是在软件系统中遵从并实现的一组接口的物理、可替换的软件模块,组件图 = 构件(Component)+接口(Interface)+关系(Relationship)+端口(Port)+连接器(Connector),组件图的目的如下:
- 可视化系统的组成部分;
- 构建的可执行文件,使用正向和反向工程;
- 描述的组织和组件的关系;
如果还以上述订单为例,组件图内部的构件就是文件,所以组件图是显示了应用程序的文件以及它们之间的关系,实际组件图还包含dll文件、库、文件夹等。
5.4 UML部署图
部署图由节点以及节点之间的关系组成,描述的是系统运行时的结构,展示了硬件的配置及其软件如何部署到网络结构中,用于可视化软件组件部署的系统中的物理组件的拓扑结构,部署图的元素主要如下:
- 节点(Node):存在于运行时的代表计算机资源的物理元素,可以是硬件也可以是运行其上的软件系统,比如64主机、Windows server 2008操作系统、防火墙等;
- 节点实例(Node Instance):与节点的区别在于名称有下划线和结点类型前面有冒号,冒号前面可以有实例名称也可以没有实例名称;
- 节点类型(Node Stereotypes):节点类型有:cdrom、cd-rom、computer、disk array、pc、pc client、pc server、secure、server、storage、unix server、user pc,并在节点的右上角有不同的图标;
- 物件(Artifact):是软件开发过程中的产物,包括过程模型(比如用例图、设计图等等)、源代码、可执行程序、设计文档、测试报告、需求原型、用户手册等等;
- 连接(Association):结点之间的连线表示系统之间进行交互的通信路径,这个通信路径称为连接(Association),连接中有网络协议;
- 节点容器(Node as Container):一个结点可以包括其他的结点,比如组件或者物件,就形成了节点容器;
部署元素的表示法如下:
高效的部署图将控制系统:性能、可扩展性、可维护性、可移植性,绘制部署图前应确定节点和节点之间的关系两个构件。以订单系统为例绘制下面的部署图:
5.5 UML用例图
用例图捕捉了模拟系统中的动态行为,并且描述了用户、需求以及系统功能单元之间的关系,展示了一个外部用户能够观察到的系统功能模型图,由主角,用例和它们之间的关系组成。用例图的目的是捕捉到一个系统的动态方面,用来收集系统的要求,包括内部和外部的影响,上述的订单系统的用例图如下:
5.6 UML交互图
UML交互图描述的是对象之间的动态合作关系以及合作过程中的行为次序,常常用来描述一个用例的行为,显示该用例中所涉及的对象以及这些对象之间的消息传递情况(即一个用例的实现过程),主要包括对象和消息两类元素,创建交互图的过程实际上就是向对象分配任务的过程,是可视化系统的交互行为。UML交互图包括两种:
- 序列图 :显示对象之间的关系,强调对象之间消息的时间顺序,显示对象之间的交互;
- 协作图 :描述对象之间的交互关系;
序列图
下面是订单系统的序列图:
协作图
协作图显示对象的组织,下面是订单系统的协作图:
5.7 UML状态图
UML状态图是图表本身的名称,主要用于描述对象具有的各种状态、状态之间的转换过程以及触发状态转换的各种事件和条件。UML状态图描述了一个状态机,可以被定义为一台机器,它定义了一个对象,这些状态控制外部或内部事件的不同状态,它可以捕获对象、子系统和系统的生命周期,可以告知一个对象可以拥有的状态,并且事件(如消息的接收,时间的流逝、错误、条件为真等)会怎样随着时间的推移来影响这些状态。状态图绘制之前,需要明确几点:
- 识识别对象,以进行分析;
- 识别状态;
- 识别的事件;
以订单系统为例,下面是状态图:
5.8 UML活动图
UML活动图是UML的动态模型的一种图形,一般用来描述满足用例要求所要进行的活动以及活动间的约束关系,活动图能够捕捉到该系统的动态行为,UML中其它的四个图是用来显示从一个对象到另一个消息流,但活动图是用来显示消息流从一个活动到另一个活动图,下面是订单系统的活动图: