UML
UML是一种定义良好、易于表达、功能强大且普遍适用的建模语言(图形化语言)。
统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。UML是面向对象设计的建模工具,独立于任何具体程序设计语言。
作为一种建模语言,UML有严格的语义和语义规范。UML建立在元模型理论基础上,包括四层元模型结构。
分别是:
基元模型
元模型
模型
用户对象
四层结构层层抽象,下一层是上一层的实例。
UML的结构
- 构造块:UML有三种基本的构造块,分别是事物、关系、和图。事物是UML的重要组成部分,关系把事物紧密联系在一起,图是多个相互关联的事物的集合。
- 规则:规则是构造块如何放在一起的规定,包括为构造块命名;
a) 给一个名字以特定含义的语境,即范围;
b) 怎样使用或看见名字,即可见性;
c) 事物如何正确、一致的互相联系,及完整性;
d) 运行或模拟动态模型的含义是什么,即执行。 - 公共机制:公共机制是指达到特定目标的公共UML方法,主要包括规格说明(详细说明)、修饰、公共分类(通用划分)和扩展机制四种。
UML的事物
UML中的事物也被称为建模元素,包括结构事物、行为事物、分组事物、注释事物。这些事物是UML模型中最基本的OO(面向对象)构造块。
1) 结构事物:结构事物在模型中属于最静态的部分,代表概念或物理上的元素。UML有七种结构事物,分别是类、接口、协作、用例、活动类、构件、节点。
2) 行为事物:行为事物是UML模型中的动态部分,代表时间和空间上的动作。UML中主要有两种行为事物。
a) 第一种是交互(内部活动),交互是由一组对象之间在特定上下文中,为达到特定目的而进行的一系列信息交换而组成的动作。交互中组成动作的对象的每个操作都要详细列出,包括消息、动作次序(消息产生的动作)、连接(对象之间的连接);
b) 第二种是状态机,状态机由一系列对象的状态组成。
3) 分组事物:分组事物是UML模型中组织的部分,可以把它们看成是个盒子,模型可以在其中进行分解。UML中只有一种分组事物。称为包。包是一种将有组织的元素分组的机制。与构件不同的是,包纯粹是一种概念上的事物,只存在与开发阶段,而构建可以存在于系统运行阶段。
4) 注释事物:注释事物是UML模型的解释部分。
UML的关系
UML用关系把事物结合在一起,主要有以下四种关系。
1) 依赖:依赖是两个事物之间的语义关系,其中一个事物发生变化会影响另一个事物的语义。
2) 关联:关联描述一组对象之间连接的结构关系
3) 泛化:泛化是一般化和特殊化的关系,描述特殊元素的对象可以替换一般元素的对象。
4) 实现:实现是类之间的语义关系,其中的一个类指定了由另一个类保证执行的契约。
UML的图
UML2.0中包含14种图,一般归类为结构图和行为图
1) 结构图
a) 类图:
类图描述一组类、接口、协作和它们之间的关系。在OO系统的建模中,最常见的图就是类图,类图给出了系统的静态设计视图,活动类的类图给出了系统的静态进程视图。
b) 对象图:
对象图描述一组对象及它们之间的关系。
c) 构件图:
构件图描述一个封装的类和它的接口、端口、以及由内嵌的构件和连接件构成的内部结构。构件图是类图的变体。
d) 组合结构图:
组合结构图描述结构化类(例如构件或类)的内部结构,包括结构化类和系统其他部分的交互点。
e) 部署图:
部署图描述对运行时的处理节点及在其中生存的构件的配置。
f) 包图:
包图描述由模型本身分解而成的组织单元,以及它们之间的依赖关系。
g) 制品图:
制品图描述计算机中一个系统的物理结构。
2) 行为图
a) 用例图:
用例图描述一组用例、参与者及它们之间的关系,用例图给出系统的静态用例结构。
b) 活动图:
活动图将进程或其他计算结构展示为计算内部一步步的控制流和数据流。活动图专注于系统的动态视图,并强调于对象间的控制流程。
c) 状态图:
状态图描述一个状态机,它由状态、转移、事件和活动组成。状态图给出了对象的动态视图,强调事件导致的对象行为,非常有助于对反应式系统建模。
d) 顺序图:
顺序图是一种交互图,交互图展示了一种交互,它由一组对象或参与者以及它们之间可能发送的消息构成。交互图专注与系统的动态视图,强调消息的时间次序的交互图。
e) 通信图:
通信图也是一种交互图,他强调收发消息的对象或参与者的结构组织。顺序图和通信图表达了类似的概念,但所抢到的 概念不同,顺序图强调的是时序,而通信图强调的是对象之间的组织结构(关系)。在1.x版本中,也被称作协作图。
f) 定时图:
定时图也是一种交互图,它强调消息跨越不同对象或参与者的实际时间,而不仅仅只是关心消息的相对顺序。
g) 交互概览图:
交互概览图是顺序图和活动图的混合物。
UML的作用
-
为软件系统建立可视化模型:
a) UML符号具有良好的语义,不会引起歧义;
b) 基于UML的可视化模型,使系统结构直观、易于理解;
c) 使用UML进行软件系统的模型不但有利于系统开发人员和系统用户的交流,还有利于系统维护。模型是系统的蓝图,它可以对开发人员的规划进行补充,模型可以帮助开发人员规划要建的系统。 有了正确的模型就可以实现正确的系统设计,保证用户的要求得到满足,系统能在需求改变时站得住脚。 对于一个软件系统,模型就是开发人员为系统设计的一组视图。 这组视图不仅描述了用户需要的功能,还描述了怎样去实现这些功能。
-
为软件系统建立构件:
UML不是面向对象的编程语言,但它的模型可以直接对应到各种各样的编程语言。例如,它可以使用代码生成器工具将UML模型转换为多种程序设计语言代码,如可生成C++、XML、DTD、Java等语言的代码,或使用反向生成器工具将程序源代码转换为UML;甚至还可以生成关系数据库中的表。
-
为软件系统建立文档
UML可以为系统的体系结构及其所有细节建立文档。不同的UML模型图可以作为项目不同阶段的软件开发文档。
UML的视图
UML对系统架构的定义是系统的组织架构,包括系统分解的组成部分,以及它们的关联性、交互机制和指导原则等提供系统设计的信息。
具体来说,分为以下五个系统视图:
1) 逻辑视图:逻辑视图也被称为设计视图,它表示了设计模型在架构方面具有重要意义的部分。
2) 进程视图:进程视图是可执行线程和进程作为活动类的建模,它是逻辑视图的一次执行实例,描述了并发和同步结构。
3) 实现视图:实现视图对组成基于系统的物理代码的文件和构件进行建模。
4) 部署视图:部署视图把构建部署到一组物理节点上,表示软件到硬件的映射和分布结构。
5) 用例视图:用例视图是最基本的需求分析模型。