统一建模语言 是非专利的第三代建模和规约语言。UML是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效。
这个语言由葛来迪·布区,伊瓦尔·雅各布森与詹姆士·兰宝于1994年至1995年间,在Rational Software公司中开发,于1996年,又进一步发展。UML集成了Booch,OMT和面向对象软件工程的概念,将这些方法融合为单一的,通用的,并且可以广泛使用的建模语言。UML打算成为可以对并发和分布式系统的标准建模语言。
UML并不是一个工业标准,但在Object Management Group的主持和资助下,UML正在逐渐成为工业标准。OMG之前曾经呼吁业界向其提供有关面向对象的理论及实现的方法,以便制作一个严谨的软件建模语言(Software Modeling Language)。有很多业界的领袖亦真诚地回应OMG,帮助它建立一个业界标准。
UML图分为两大类:UML结构图和UML行为图
-
UML结构图
1.1 类图
类图是软件工程的统一建模语言一种静态结构图,该图描述了系统的类集合,类的属性和类之间的关系。
1.2 组件图
在统一建模语言中,组件图表示组件是如何互相组织以构建更大的组件或是软件系统的。 他们被用来标示任意复杂系统的结构。
1.3 复合结构图
组合结构图是UML的一种结构图。“结构”是指元素之间的相互连接,实例通过通信连接合作以实现某目的。 组合结构图的结点元素有:部件、端口、合作、合作使用;连接元素有:连接件、角色绑定。
1.4 部署图
部署图描述的是系统运行时的结构,展示了硬件的配置及其软件如何部署到网络结构中。一个系统模型只有一个部署图,部署图通常用来帮助理解分布式系统。
1.5 对象图
对象图是用于呈现一组对象和它们之间的关系作为一个实例。类图和对象图的基本概念是相似的。对象图也代表了一个系统的静态视图,但这种静态视图是系统在某一时刻的一个快照。
1.6 包图
包图(Package Diagram)是UML中的组织图形,其能有效的组织好各种UML图和表达思路,其功能是组织包内元素,控制访问。
1.7 剖面图
剖面图又称剖切图,是通过对有关的图形按照一定剖切方向所展示的内部构造图例,剖面图是假想用一个剖切平面将物体剖开,移去介于观察者和剖切平面之间的部分,对于剩余的部分向投影面所做的正投影图。
-
UML行为图
2.1 活动图
活动图(英语:activity diagram)是工作流的图形化表示。活动图的主要由活动和动作构成,也可以支持分支选择、迭代、并行。在 UML 中,活动图主要用于为计算性和组织性过程(即工作流)建模,相关活动之间的数据流也在其覆盖范围之内。
2.2 通信图(协作图)
通信图,以前称之为协作图,是一种交互图,所显示消息与顺序图相似,但是它更侧重于对象间的联系。在通信图中,对象之间显示关联连接器。消息附加到这些关联上,显示短箭头指向消息流的方向。消息的顺序通过编号码显示。
2.3 交互纵览图
交互概要图(Interaction Overview Diagram),是统一塑模语言(UML)的一种图示,系在活动图的基础上,使用“交互框”作为元素,替代活动图中的“活动”。交互框间以“控制流”连接。交互概述图常用来描述用例的正常流与替代流之间的关系,作为内部协作图。
2.4 时序图
序列图(Sequence Diagram),亦称为循序图,是一种UML行为图。有的人翻译为时序图,实际上是不准确的,sequence这个单词并无"时间"的意思,只有序列,顺序等意思。根据UML规范中对Sequence Diagram的描述: A sequence diagram describes an Interaction by focusing on the sequence of Messages that are exchanged, along with their corresponding Occurrence Specifications on the Lifelines. 它描述了消息在生命线上按照约定顺序执行一种交互行为。它可以表示用例的行为顺序,当执行一个用例行为时,序列图中的每条消息对应了一个类操作或状态机中引起转换的触发事件。
2.5 状态图
状态器是有限状态自动机的图形表示。另一种可能的表示是状态转移表。状态图有很多形式,它们有稍微的差异并有不同的语义。
2.6 计时图
计时图侧重于图中沿时间线更改的消息或条件的计时或持续时间。创建计时图以表示系统计时的一部分。可以使用计时图来检查时间约束和持续时间以及对它们进一步进行建模。可以创建多个计时图,每个计时图重点关注交互的不同生命线或视图。您添加到时序图的元素不会添加到相应的计时图。但是,您添加到计时图的元素会添加到相应的时序图。可以通过创建新元素或者选择现有元素来向计时图中添加元素。计时图不规范,时序图是规范的。计时图仅表示交互的一部分视图,因此,并不包含时序图的所有元素。
以下示例说明了一个计时图,该计时图包含两个生命线、状态不变量、消息、持续时间观察和约束以及时间观察和约束。
2.7 用例图
用例图(英语:use case diagram)是用户与系统交互的最简表示形式,展现了用户和与他相关的用例之间的关系。通过用例图,人们可以获知系统不同种类的用户和用例。用例图也经常和其他图表配合使用。
UML应用程序
开源软件和自由软件中
-
ArgoUML,UML设计工具
-
Dia,可绘制流程图以及包含UML在内的多种图形
-
Umbrello,强大而又界面友好的UML工具。是KDE的一部分。
-
UMLet,用Java实现的UML简单绘图工具
-
Unimodeler,Linux下支持9种UML图和向量打印的工具
-
astah*,Java和UML开发者环境
-
Jumli,用Java实现,支持C++/C#/Java以及解析/生成源代码
-
omondo UML,Eclipse的UML插件,提供有限功能的免费版(需注册)和完整的商业版
-
Poseidon for UML,专业UML工具,提供免费的社区版(Community Edition)。从开源项目ArgoUML而来。
-
Violet是为学生、教师以及只需要快速创建简单UML的应用者而设计的工具。GPL授权
-
SiSy, SimpleSystem