UML 是统一建模语言的简称,它是一种由一整套图表组成的标准化建模语言。UML用于帮助系统开发人员阐明,展示,构建和记录软件系统的产出。UML代表了一系列在大型而复杂系统建模中被证明是成功的做法,是开发面向对象软件和软件开发过程中非常重要的一部分。UML主要使用图形符号来表示软件项目的设计,使用UML可以帮助项目团队沟通、探索潜在的设计和验证软件的架构设计。以下我们将向您详细介绍什么是UML、UML的历史以及每个UML图类型的描述,辅之以UML示例。
UML 的目标是提供一个标准的符号,可以被所有面向对象的方法使用,并选择和整合前兆符号的最佳元素。UML可用于广泛的应用程序,它为不同的系统和活动(如分布式系统,分析,系统设计和部署)提供了构造。
UML 是由 OMT 统一而来的符号,时序如下:
1994年,OMT 的创始人 Jim Rumbaugh 离开了通用电气公司 (General Electric),转投了 Rational,与 Grady Booch 并肩作战。这使得软件世界惊呆的合作,为的是要把二人的想法结合成一个统一的方法(项目名称也就是 “统一方法”)。
到了 1995 年,OOSE的创建者 Ivar Jacobson 也加入了Rational,他的想法(特别是有关“用例” (Use Case) 的概念)被整合于统一方法中,成为“统一建模语言”。Rumbaugh,Booch 和 Jacobson 的团队则被称为“三友”
UML 也受到其他面向对象符号的影响:
UML 还包含其他主要方法中不存在的新概念,如扩展机制和约束语言。
随着软件产品的价值提高,企业欲寻找技术以改善软件生产流程、提高质量、降低成本并缩短产品上市时间。这些技术包括组件技术,可视化编程,模式和框架的应用。企业也寻求能管理系统因范围和规模扩大而衍生的复杂性的技术。他们也意识到需要解决周期性的体系结构问题,如物理分布、并发性、复制、安全性、负载平衡和容错性。另外,万维网的开发虽然讓不少事物简化,却加剧了这些架构问题。统一建模语言(UML)旨在回應这些需求。Page-Jones 在 Fundamental Object-Oriented Design in UML 一書中总结了 UML 的主要目的,如下:
在我们开始研究 UML 的理论之前,我们将简单介绍一下 UML 的一些主要概念。
首先要注意的是 UML 涉及很多不同的图表(模型),其原因是提供从许多不同的角度来審視系统。软件开发流程往往有许多持分者参与其中,例如:
这些人都对系统的不同方面各持不同兴趣,故此在建模时需要考虑不同的细节层次。例如,程序员需要了解系统的设计,并将设计转换为代码,而技术文件撰稿员则对整个系统的行为感兴趣,借以了解产品的功能。UML 提供了极富表达能力的建模语言,好让各持分者至少可以从一个 UML 图表得到感兴趣的资讯。
以下简要地介绍了这 13 个 UML 图表。UML 图表可大致分为结构性图表和行为性图表两种。
结构性图表显示了系统在不同抽象层次和实现层次上的静态结构以及它们之间的相互关系。结构性图表中的元素表示系统中具意义的概念,可能包括抽象的、现实的和實作的概念。结构性图表有七种类型:
行为性图表显示了系统中对象的动态行为 ,可用以表达系统随时间的变化。行为性图表有七种类型:
类图是一切面向对象方法的核心建模工具。该图描述了系统中对象的类型以及它们之间存在的各种静态关系。
有三种主要的关系:
有关类图的更多详细信息,请阅读文章什么是类图?
在统一建模语言中,组件图描绘了组件如何连接在一起以形成更大的组件或软件系统。它展示了软件组件的体系结构以及它们之间的依赖关系。那些软件组件包括运行时组件,可执行组件和源代码组件。
有关组件图的更多详细信息,请阅读文章什么是组件图?
部署图有助于模拟面向对象软件系统的物理方面。它是一个结构性图表,显示了软件产出于系统架构内如何被分发至指定目标。产出即现实生活中各种通过开发过程产生的产品。部署图对运行时配置进行建模,并可视化应用程序中 产出的分布。在大多数情况下,它表达了硬件配置以及和软件组件之间的关系。
有关部署图的更多详细信息,请阅读文章什么是部署图?
对象图是实例 (Instance) 的表达,包括对象和数据值。静态的对象图是类图的一个实例,它是系统在某个时间点的详细状态的快照,不同之处在于类图表示了一个由类及其关系组成的抽象模型,而对象图则表达了特定时刻的实例。对象图的使用是相当有限的,它常被用作展示数据结构例子。
有些人难以區分 UML 类图和 UML 对象图,因为它们都包含一些“矩形块” 和一些链接線,看起来很相似。有些人甚至认为它们是相同的,因为某些 UML 软件會將类图和对象图的符号放在同一个图表编辑器 - 类图中。
事实上,类图和对象图表達著两个不同的層次。在本文中,我们将向您提供关于这两个 UML 图表的一些想法,讓您了解它们是什么,它们的区别以及何时使用它们。
你会在编程时创建“类”。例如,在网上银行系统中,您可以创建“用户”,“账户”,“交易”等类。又例如,在课堂管理系统中,您会创建“教师”,“学生”,“任务”等。在每个类中都有属性和操作来表示类的特征和行为,而类图则是一让你看到这些类和它们的属性,操作和相互关系的图表。
UML 对象图显示了系统中的对象实例如何在特定状态下彼此交互。它也表示那个状态下那些对象的数据值。换句话说,UML 对象图可以被看作是如何在特定状态下使用类(在 UML 类图中绘制)的表达。
且看看下面的UML图例子。我相信你会在几秒内了解他们的差异。
以下类图示例代表两个类 - 用户和附件。用户可以上传多个附件,因此这两个类都以一个关联连接,在附件方侧以0 .. *作为多重性。
下面的对象图示例显示了當Peter (即用户)上载两个附件时 User 和 Attachment 类的对象实例如何。因上传两个附件,所以有两个附件对象。
有关对象图的更多细节,请阅读文章什么是对象图?
包图是 UML 一種用以显示包和包之间的依赖关系的结构性图表。模型图能显示系统的不同视图,例如,多层应用程序。
有关包图的更多详细信息,请阅读什么是包图?
组合结构图是添加到 UML 2.0 中的新的图表之一。复合结构图与类图相似,是一种用于微观视角的系统建模组件图,而不是整个类的组成部分。它是一种静态结构图,显示了一个类的内部结构和这个结构所实现的协作。
组合结构图可以包括内部零件,零件通过其互相交互或通过端口与外界交互。复合结构是一组相互关联的元素,它们在运行时进行协作以达到某种目的。每个元素在协作中都有一些定义的角色。
有关复合结构图的更多详细信息,请阅读文章什么是复合结构图?
轮廓图 使您能够创建特定于域和平台的原型,并定义它们之间的关系。
有关Profile Diagram的更多详细信息,请阅读文章什么是轮廓图?
用例模型从用例的角度描述系统的功能需求,它是系统预期功能(用例)及其环境(参与者)的模型。用例使您能够将系统需要与系统如何满足这些需求相关联。
将用例模型想象成一个菜单,就像在餐馆中找到的菜单一样,通过查看菜单,你知道什么菜肴以及他们的价格,你也知道餐厅供应什么样的菜肴:意大利,墨西哥,中国等等。通过查看菜单,您可以对该餐厅的用餐体验有个全面的了解。
因为它是一个非常强大的计划工具,所以团队成员通常在开发周期的所有阶段都使用用例模型。
有关用例图的更多详细信息,请阅读文章什么是用例图?
活动图用于展示工作流程,它支持选择 (Choice),迭代 (Iteration)和并发 (Concurrency)。活动图描述了目标系统的控制流程,比如探索复杂的业务规则和操作,描述用例和业务流程。在统一建模语言中,活动图旨在模拟计算和组织过程(即工作流程)。
有关活动图的更多详细信息,请阅读文章什么是活动图?
状态图是 UML 中用来描述基于 David Harel 的状态图概念的系统行为的一种图表。状态图描绘允许的状态和转换以及影响这些转换的事件,它有助于可视化对象的整个生命周期,从而更好地理解以状态主導 (State-based) 的系统。
有关状态机图的更多细节,请阅读什么是状态机图?
序列图根据时间序列展示对象如何进行协作。它展示了在用例的特定场景中,对象如何与其他对象交互。凭借先进的可视化建模功能,您只需点击几下即可创建复杂的顺序图。另外,Visual Paradigm 可以根据用例描述中定义的事件流生成序列图。
有关序列图的更多详细信息,请阅读文章什么是序列图?
与序列图类似,通訊圖也用于模拟用例的动态行为。与序列图相比,通訊圖更侧重于显示对象的协作而不是时间顺序。它们实际上在语义上是等价的,因此一些建模工具(如 Visual Paradigm)允许您从一个模型生成一个到另一个。
有关通信图的更多详细信息,请阅读文章什么是通信图?
交互概述图侧重于交互控制流程的概述,它是活动图的变体,其中节点是交互 (Interactions) 或交互发生 (Interaction Occurrences)。交互概述图描述了隐藏於消息 (Message) 和生命线 (Lifeline) 間的交互。
有关交互概述图的更多详细信息,请阅读什么是交互概览图?
时序图显示了既定时间内对象的行为。时序图是序列图的一种特殊形式,它俩之间的差异是轴反转,时间从左到右增加,生命线显示在垂直排列的独立隔间中。
有关时序图的更多详细信息,请阅读什么是时序图?
下面列出的是一些您可以阅读的最畅销的UML书籍来学习UML。