什么是UML?
统一建模语言(UML)是由对象管理组(OMG)提出的一种开放标准图形表示法,用于系统开发。该表示法基于博奇(Booch)、伦巴ugh(Rumbaugh)和雅各布森(Jacobson)的工作。UML是一种建模语言,用于表达和设计文档,尤其适用于面向对象的设计。该语言可用于整个软件开发生命周期中的从初步设计到非常具体的详细设计。UML的定义如下:
- 统一建模语言(UML)是一种用于软件系统建模和开发的图形化语言。UML图成为开发人员讨论软件开发各个阶段(包括需求分析、设计和实现)的通用工作成果。这里的目标是在构建系统之前对其进行建模。
- 引言:“统一建模语言(UML)是一组由单一元模型支持的图形化表示法,有助于描述和设计软件系统,尤其是采用面向对象(OO)风格构建的软件系统。”[马丁·福勒 – 《UML精粹》] 第1页。
为什么使用UML?
随着软件架构的规模和复杂性不断增加,对软件模型的需求也随之增长。UML是软件行业中占主导地位的建模语言。目前,它已被世界最大的软件联盟——对象管理组(OMG)采纳为事实上的标准。很难找到一个超过10名开发者的软件项目,其在某种程度上不使用UML来描述其架构。
以下是UML在我们软件开发过程中应用的一些其他事实:
- 软件正变得越来越复杂:一个相当古老的Windows XP版本就超过4000万行代码。
- 单个程序员无法完全掌控如此大量的代码。
- 对于没有编写该代码的开发人员来说,代码并不容易理解。
- 我们需要对复杂系统进行更简单的表示:建模是应对复杂性的手段。
什么是模型?
- 模型是对真实事物的抽象,省略了细节。
- “所有描述你系统的元素,包括它们之间的相互连接,共同构成了你的模型。”(Russ 和 Hamilton,第12页)。
当我们使用UML在编写软件之前为正在开发的系统创建模型时,它们以简化的方式呈现问题。它们为解决问题提供了结构。它们有助于理解如何应对当前的问题。它们还允许我们尝试多种解决方案。由于模型是在系统实际开发之前创建的,我们可以了解不同的可能性、问题、选项等。这也有助于降低开发成本。由于不会浪费时间在试错上,产品将更快完成。模型还有助于管理问题的复杂性,从而可以轻松地进行开发规划以及机器、程序员、测试人员等资源的分配。
UML不是什么?
- UML不是一种记号法,而是一种语言。
- UML不属于任何人。任何人都可以自由使用它。它不是专有技术。
- UML不是流程或方法。
- UML鼓励使用面向对象技术以及迭代式软件开发生命周期。
- UML并不难。它内容庞大,但你不必完全掌握它。也无需使用或理解其中每一个细节。
- UML并不耗时。如果正确使用,UML可以降低开发成本。同时,它还具有易于理解与沟通、提高生产效率和提升质量的优势。
- UML没有限制。它足够灵活,可以支持特定领域所需的新型词汇(概念、词语和术语)、属性(关于词语的附加信息)和语义(语言规则)。
UML的目标
- 一种可视化建模语言,而非可视化编程语言。尽管某些建模工具具备代码生成功能,或可以从代码反向工程生成模型。
- 它的目的是创建能够支持软件开发过程的图表,然而,UML并不是软件开发过程或开发方法。因此,UML是与流程无关的。
- 用于创建软件蓝图的标准语言。
- 一种沟通工具。
- 一种用于记录需求、架构、测试、项目规划等的語言。
- 它旨在用于软件系统,但也可以用于建模其他系统。
- 它旨在支持面向对象的开发过程。
- 它可以捕捉系统的静态结构和动态行为。
- UML 图有助于利益相关者理解、讨论并就需求达成一致。
- UML 图有助于将复杂的过程抽象到更容易理解的层次。
- UML 图有助于促进问题解决。
建模语言提供什么?
- 模型元素:概念和语义
- 符号:模型元素的视觉呈现
- 指南:使用符号中元素的提示和建议
简要历史
早在80年代末,当我们开始建模时,存在许多不同的方法论。每种方法论都有自己的符号系统。问题在于,如果不同的人使用不同的符号,那么在某个环节总有人需要进行转换。很多时候,同一个符号在一个符号系统中表示一种含义,而在另一个符号系统中则表示完全不同的含义。1991年,人们纷纷出版书籍。格雷迪·布奇推出了他的第一版,伊瓦尔·雅各布森也推出了他的著作,吉姆·鲁姆鲍格则推出了他的OMT方法论。每本书都有其优点和缺点。OMT在分析方面非常强大,但在设计方面较弱。布奇方法论在设计方面较强,但在分析方面较弱。而伊瓦尔·雅各布森的Objectory在用户体验方面表现优异,而布奇和OMT在当时都没有充分考虑这一点。1994年,布奇和雅各布森合并了两种方法,随后鲁姆鲍格于1995年加入。1997年,OMG发布了UML 1.1,其中包含了其他人的贡献,例如尤尔登。UML v2.x 是目前最新的版本。
发布日期
- 1995 – UML 0.8
- 1996 – UML 0.9 – 三剑客
- 1997 – OMG接手。
- 1997 – OMG UML 1.1
- 1998 – OMG UML 1.2
- 1999 – OMG UML 1.3
- 2001 – OMG UML 1.4
- 2003 – OMG UML 1.5
- 2003 – OMG UML 2.0 – 采纳
- 2005 – OMG UML 2.0 – 最终版
- 2006 – OMG UML 2.1
- UML2.1.2(11/04/07)——截至2008年5月27日的当前版本
“三大阿梅戈”方法统一的动机
- 各方法独立演进趋向彼此的事实
- 语义与符号的统一,以促进面向对象设计市场的稳定
- 预期统一将改进早期的各个独立方法
UML合作伙伴
- Rational软件公司
- IBM
- 惠普
- I-Logix
- ICON计算
- 智科公司
- MCI系统屋
- 微软
- ObjecTime
- 甲骨文
- 铂金科技
- Taskon
- 德州仪器/斯廷格软件
- 优利系统
统一前不同方法的UML符号输入
UML代表了Booch、OMT和Objectory符号的统一,以及多位其他方法学家的最佳理念,如下面图示所示。通过统一这些面向对象方法所使用的符号,统一建模语言为面向对象分析与设计领域提供了一个事实上的标准,该标准建立在广泛的用户经验基础之上。
符号的作用
符号在任何模型中都起着重要作用,它是将整个过程连接在一起的粘合剂。符号具有三个作用:
- 它作为传达那些不明显或无法从代码本身推断出的决策的语言。
- 它提供足够丰富的语义,以捕捉所有重要的战略和战术决策。
- 它提供足够具体的形式,使人类能够推理,工具能够操作。
统一建模语言(UML)提供了一种非常强大的符号体系,它从分析阶段逐步发展到设计阶段。符号体系中的某些元素(例如类、关联、聚合、继承)在分析阶段引入。其他元素(例如包含关系的实现指示符和属性)在设计阶段引入。
UML的优势
UML可应用于多种应用领域(例如:银行、金融、互联网、航空航天、医疗等)可以与所有主要的对象和组件一起使用软件开发方法以及各种实现平台。
- 您确切地知道您得到的是什么
- 您将拥有更低的开发成本
- 您的软件将按您预期的方式运行。减少意外情况
- 在您收到编写糟糕的代码之前,就已经做出了正确的决策。总体成本更低
- 我们可以开发出更节省内存和处理器资源的系统
- 系统维护成本将更低。更少的重新学习发生
- 与新开发人员合作将更容易。
- 与程序员和外部承包商的沟通将更加高效。
UML 四加一视图
UML 包含以下四种系统开发过程中的视图(见图3)[Eriksson & Penker, 1998; Kruchten, 2000]:
- 用例视图:展示外部参与者所感知的系统功能;它通过用例图描述,偶尔也通过活动图描述。
- 逻辑视图:展示该功能在系统内部是如何设计的,从系统的静态结构和动态行为角度;它通过类图和对象图(静态模型)以及状态转换图、顺序图、协作图和活动图(动态模型)来描述
- 组件视图:展示软件组件的组织结构;它通过组件图来描述。
- 部署视图:展示计算机和设备中运行时处理节点的物理配置(部署)以及其上运行的组件、进程和对象;它通过部署图来描述。
- 过程视图:展示系统运行时的并发特性,如任务、线程、进程和交互,并解决这些线程之间的通信和同步问题;它通过动态图(状态转换图、顺序图、协作图和活动图)以及实现图(组件图和部署图)来描述。

每个系统都由静态和动态模型。静态模型通过类图和对象图来表示。然而,它对系统行为的揭示很少。系统行为通过场景(即用例图)、顺序图、状态转换图和活动图以图形方式捕捉。这些构成了系统的动态模型。系统行为是属于该系统的所有对象的总行为。
如果我们想将上述五个视图映射到图3所示的迭代生命周期阶段,我们可以这样说:
- 面向对象分析(OOA)从用户的角度开发用户需求的模型,对应用例视图。
- 面向对象设计(OOD)在分析的基础上添加细节和设计决策(从开发者的角度),并映射到逻辑视图。
- 最后,实现或面向对象编程(OOP)映射到过程、部署和组件视图。
UML 2 图表
UML 有多种不同类型的图表,可用于从不同视角描述模型。图表大致分为两类,每类又进一步划分为子类别:
- 结构图 – 结构图表示系统的静态方面。这些静态方面代表图表中构成主要结构因而稳定的部分。这些静态部分由类、接口、对象、组件和节点表示。
- 行为图 – 任何系统都有静态和动态两个方面。因此,当这两个方面都得到充分涵盖时,模型才被认为是完整的。
行为图基本上捕捉系统的动态方面。动态方面可以进一步描述为系统的变动/运动部分。

结构图
- 类图 – 系统类和接口及其关系或关联(包括继承、聚合和关联)的静态结构图,包括类的操作和属性。表示方式有:关联、继承、依赖。这是UML中非常常见的图表。
- 对象图 – 是系统在特定时间或情境(快照)下的静态结构图,用于展示系统中的关系。
- 组件图 – 是描述系统内组件的组织结构和依赖关系的图表。
- 组合结构图 – 是探索通过通信链路协作的相互连接实例的运行时实例的图表。
- 包图 – 是展示系统如何划分为逻辑分组以及这些分组之间可能存在的依赖关系的图表。
- 部署图 – 是描述可分发的物理单元(可部署的软件组件、应用程序、服务器、硬件等)如何构成分布式系统架构的图表。
行为图
- 用例图 – 用例(软件功能/服务)和参与者(用户——包括人类或系统)角色的图示。该图从用户的角度出发。
- 活动图 – 通过建模活动之间的控制流来展示系统的动态特性。用于描绘系统(例如:对象/类)对内部事件的响应。 (注:外部事件由状态图描述)。在业务流程建模中,可使用此图来描述用例或业务规则的逻辑。
- 状态图 (又称状态图、状态机图) – 描述系统(例如:对象/类)对外部事件的响应方式。(注:内部事件由活动图描述)。
交互类型图 – 模型中组织部分之间的交互。
- 顺序图 – 描述对象之间的交互和消息传递,以及消息的相对时间顺序。
- 通信图(又称 UML1的协作图) – 描述系统如何协同完成任务,以及系统之间必须存在的关联关系。协作图是将顺序图与类图的交互关系进行描述后的结果。简而言之,该图展示了对象之间的消息传递以及类之间的基本关联(关系)。
- 时序图 – 是一种用于探索一个或多个对象在特定时间段内行为的图。
- 交互概览图 – 是交互图(顺序图、通信图、时序图、交互概览图)之间交互和流程控制的图示。
UML配置文件
UML配置文件并非严格意义上的图,而是一种用于描述UML扩展和子集的配置文件。子集通过对象约束语言(OCL)进行描述。扩展通过定义构造型(stereotypes)来创建,构造型是可附加在任何模型元素上的标签。例如,我们可以将一个类标记为“持久化”,并使用该标签来标识那些实例在系统运行期结束后仍被保存的类。非正式地——尽管这在理念上不严谨——配置文件可以是任何UML的扩展和子集,无论是否通过这些机制记录下来。正式地,配置文件是描述规则的OCL和构造型定义,这些规则在UML 2中以包的形式进行封装。
与软件开发相关的图
在面向对象分析与设计方法论的差异以及UML标准的演进过程中,图的名称及其功能可能会随时间而变化。以下是一些可能属于也可能不属于UML1或UML2,但可在面向对象分析与设计方法论中使用的图和/或工作产物示例:
- 系统上下文图
- 实体关系图(与类图类似),包含概念、逻辑和物理ERD
- 鲁棒性分析
结论
我们回顾了UML的起源与定义,以提供对其本质及其所能提供的功能的简化理解。我们还探讨了如何在下一个开发项目中受益于其使用,并简要介绍了UML 2中可用的架构视图、模型和图的类型。UML并非一种流程,而是一种用于开发软件密集型系统的开放标准可视化建模语言。成功项目所需的三个要素是:一种符号体系、一种流程和一种工具:
仅符号体系 – 你可以学习一种符号体系(例如UML),但如果你不知道如何使用它(流程),你很可能失败。
仅流程——你可能有一个很棒的流程,但如果你无法沟通这个流程(符号),你很可能失败。最后
无工具支持——如果你无法有效记录你的工作成果(工具),你很可能浪费大量时间,最终失败。
自动化UML工具
Visual Paradigm是一款自动化工具,可确保你在软件项目中取得成功,具体包括:
- 简易的语法编辑,最大限度减少对符号记忆的需求
- 支持流行且最便捷的敏捷Scrum软件开发流程和工具集
- 自动化以简化任何规模项目和产品报告及成果的即时生成
UML资源
- 14种UML图类型的全面指南——Cybermedian
- 本指南概述了Visual Paradigm社区版支持的14种UML图类型。它解释了UML图如何帮助可视化软件密集型系统,并描述了每种图类型提供的功能。该指南还突出了Visual Paradigm在满足不同建模需求方面支持多种UML图的灵活性11.
- 使用最佳的UML免费工具(包括在线和桌面版免费软件)学习UML建模——Cybermedian
- 本文讨论了使用Visual Paradigm进行UML建模的好处,强调其对最新UML 2.x标准的支持以及丰富的图类型。它还提到了该工具与主流开发平台的集成能力,以及其在学术界和工业界的广泛应用12.
- 通过实例学习:UML状态机图——Cybermedian
- 本资源聚焦于UML状态机图,并推荐Visual Paradigm作为创建此类图的理想工具。它深入探讨了状态机图如何模拟动态系统行为,并强调了Visual Paradigm与开发工具和平台的集成能力13.
- UML 图表:全面指南 – Cybermedian
- 本全面指南解释了 UML 图表在软件开发中的重要性,以及 Visual Paradigm 如何支持各种类型的 UML 图表。它涵盖了结构图、行为图和交互图,提供了关于如何使用 Visual Paradigm 创建高效 UML 模型的深入见解14.
- 免费在线 UML 工具 – Cybermedian
- 本文介绍了 Visual Paradigm Online(VP Online)Express 版,这是一款免费的在线绘图工具,用于创建 UML 图表。文章强调了该工具易于使用、无限制以及与各种网络浏览器兼容的特点,使其成为个人和非商业用途创建 UML 图表的便捷选择15.
- 理解 UML 时序图:全面指南 – Cybermedian
- 本指南解释了 UML 时序图及其在实时系统中的重要性。它讨论了如何使用 Visual Paradigm 创建这些图表,重点在于系统内时间与持续时间约束的可视化表示16.
- UML 2.5 图表全面指南 – Cybermedian
- 本指南概述了 UML 2.5 图表,并突出 Visual Paradigm 作为全面建模的首选工具。它讨论了该工具的多功能性、用户友好的界面以及强大的代码生成能力,使其适用于各个行业的专业人士17.
- UML 类图全面指南 – Cybermedian
- 本指南聚焦于 UML 类图及其在 Visual Paradigm 中的创建支持。它讨论了该工具在学术界的广泛应用,以及在系统和数据库设计与分析中的使用。指南还提到了可供快速上手 UML 建模的示例和模板18.
- 使用 Visual Paradigm 创建 UML 包图教程 – Cybermedian
- 本教程逐步讲解如何使用 Visual Paradigm 创建 UML 包图。它解释了包图在组织大型系统中的重要性,并提供了使用 Visual Paradigm 创建包图的详细步骤指南19.
- 面向敏捷软件开发的可视化建模全面指南 – Cybermedian
- 本指南讨论了 UML 工具在敏捷软件开发中的作用,并突出 Visual Paradigm 作为热门选择。它解释了 Visual Paradigm 如何提供用户友好的界面以及验证、代码生成和逆向工程等功能,以提升建模过程20.


