统一建模语言

UML的标志
统一建模语言（Unified Modeling Language，缩写UML）是非专利的第三代建模和规约语言。UML是一种开放的方法，用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。UML展现了一系列最佳工程实践，这些最佳实践在对大规模，复杂系统进行建模方面，特别是在软件架构层次已经被验证有效。
这个语言由葛来迪·布区，伊瓦尔·雅各布森与詹姆士·兰宝于1994年至1995年间，在Rational Software公司中开发，于1996年又进一步发展。UML集成了Booch method，Object-modeling technique和面向对象程序设计的概念，将这些方法融合为单一的，通用的，并且可以广泛使用的建模语言。UML打算成为可以对并发和分布式系统的标准建模语言。
1997年，UML被对象管理组织接纳为标准，并在此之后受该组织管理。2005年，UML被国际标准化组织接纳为一种标准，自此，该标准被定期修订以涵盖UML的最新版本。然而，在软件工程中，大多数从业者不使用UML，而是产生非正式的手绘图；不过，这些图例中仍往往包括UML的元素536。

**模型**
面向对象分析的历史
200px
200px
类别图显示一般化关系一对多（多维）的实现
在UML系统开发中有三个主要的模型：- 功能模型：从用户的角度展示系统的功能，包括用例图。- 对象模型：采用对象，属性，操作，关联等概念展示系统的结构和基础，包括类别图、对象图。- 动态模型：展现系统的内部行为。包括序列图，活动图，状态图。
区分UML模型和UML图是非常重要的，UML图，包括用例图、协作图、活动图、序列图、部署图、构件图、类图、状态图，是模型中信息的图形表达方式，但是UML模型独立于UML图存在。UML的当前版本只提供了模型信息的交换，而没有提供图信息的交换。
UML使用一套与Java语言或其他面向对象语言等价物，同时也是本体论等价物的图形标记。
UML并不是一个方法学，也不要求使用一个方法学，但是UML对于Rational 统一过程来说是必不可少的。

**图形**
UML 2.0
使用个案图实例
状态图实例
UML 2.2中一共定义了14种图示。为方便了解，可分类成右侧的结构。
结构性图形（Structure diagrams）强调的是系统式的建模：
*静态图（static diagram）
** 类图
** Object diagram
** Package diagram
*实现图（implementation diagram）
** 组件图
** Deployment diagram- 剖面图- 复合结构图
行为式图形（Behavior diagrams）强调系统模型中触发的事件：- 活动图- 状态图- 用例图
交互性图形（Interaction diagrams），属于行为图形的子集合，强调系统模型中的资料流程：- Communication diagram- 交互概述图（UML 2.0）- 时序图（UML 2.0）- 时间图（UML 2.0）
UML并不限定UML要素型别非得是某图形上的型别。一般来说，每个UML要素大约会出现在图的所有型别。这种弹性在UML 2.0部分被限定。
为了要保持工程图的传统，在您的UML图上加注用途、约束、或意图永远无伤大雅。
UML 2为了符合模型驱动架构（Model Driven Architecture）的需求做了大幅度的修改除在图形基础上扩充及变化了部份的展现方式外，也增加了一些图形标准元件，比前一版多出了由循序图与互动图所混合而成的互动概图（Interaction Overview Diagram）、强调时间点的时序图（Timing Diagram）与合成结构图（Composite Structure Diagram），此外，在UML2中，UML1合作图转变为通讯图（Communication Diagram），且在循序图中也添加了互动框（Interaction Frame）的概念，还有增加一些运算子（如sd、loop、alt等）。同时，UML2支援模型驱动架构（MDA）倡议，提供稳定的基础架构，容许软件开发程序增添自动化作业。此外，MDA把大型的系统分解成几个元件模型，并与其他模型保持连结，使得UML更加精确。

**概念**
UML从来源中使用相当多的概念。下面仅列代表性的概念。
对于结构而言
执行者，属性，类，元件，接口，对象，包。
对于行为而言
活动，事件，消息，方法，状态，用例。
对于关系而言
聚合，关联，组合，相依，广义化（或继承）。
其他概念- 构造型—这规范符号应用到的模型- 多重性—多重性标记法与资料库塑模基数对应，例如：1, 0..1, 1..:* 角色
各式UML

**UML应用程序**

**开源/自由软件**
 ArgoUML，UML设计工具（ 主页）- Dia，可绘制流程图以及包含UML在内的多种图形（ 主页 date=20041103095335 ）- Draw.io，在线流程图绘制工具，提供各种图形模板 ( 主页 date=20200229071037 )- GitMind，可线上绘制心智图及流程图包括UML，泳道图等各种图 （ 主页 date=20200226070759 ）- Umbrello，强大而又界面友好的UML工具。是KDE的一部分。（ 主页 date=20080820192815 ）- UMLet，用Java实现的UML简单绘图工具（ 主页 date=20200617023003 ）- Unimodeler，Linux下支持9种UML图和向量打印的工具（ homepage date=20041206025323 ）- astah*，Java和UML开发者环境（ 主页 date=20110317072207 ）- Jumli，用Java实现，支持C++/C#/Java以及解析/生成源代码（ 主页 date=20050124031653 ）- omondo UML，Eclipse的UML插件，提供有限功能的免费版（需注册）和完整的商业版（ 主页 date=20041103090617 ）- Poseidon for UML，专业UML工具，提供免费的社区版（Community Edition）。从开源项目ArgoUML而来。请参见（ 主页）。- Violet是为学生、教师以及只需要快速创建简单UML的应用者而设计的工具。GPL授权（ 主页 date=20041105093327 ）- SiSy, SimpleSystem

**参见**
 集成开发环境- Object Constraint Language（OCL）- Object-modeling technique- 物件导向的程序设计- 物件导向的系统分析- XML Metadata Interchange，为了交换UML模型的基于XML的格式- C4模型

**参考文献**

**外部链接**
  Unified Modeling Language at FOLDOC-  Message board for UML-  A free UML tutorial date=20041026074045 -  UML Jokes- Article  Precise Use Cases date=20170705202632  from  Methods & Tools date=20100629033112 - Article  Database modeling in UML date=20100629033112  from  Methods & Tools date=20100629033112