什么是统一建模语言(UML)?

什么是统一建模语言(UML)?

UML 是统一建模语言的简称,它是一种由一整套图表组成的标准化建模语言。UML用于帮助系统开发人员阐明,展示,构建和记录软件系统的产出。UML代表了一系列在大型而复杂系统建模中被证明是成功的做法,是开发面向对象软件和软件开发过程中非常重要的一部分。UML主要使用图形符号来表示软件项目的设计,使用UML可以帮助项目团队沟通、探索潜在的设计和验证软件的架构设计。以下我们将向您详细介绍什么是UML、UML的历史以及每个UML图类型的描述,辅之以UML示例。

UML 的起源

UML 的目标是提供一个标准的符号,可以被所有面向对象的方法使用,并选择和整合前兆符号的最佳元素。UML可用于广泛的应用程序,它为不同的系统和活动(如分布式系统,分析,系统设计和部署)提供​​了构造。

UML 是由 OMT 统一而来的符号,时序如下:

对象建模技术OMT [James Rumbaugh 1991] - 最适合分析和数据密集型信息系统。

Booch [Grady Booch 1994] - 强项为设计和實作。Grady Booch 曾经为 Ada 语言方面做过广泛的工作,并且一直是该语言面向对象技术发展的主要参与者。尽管 Booch 方法很强大,但是但并未广为接受 (因为他的模型包含着很多云状,序人不整齐的感觉)

OOSE(面向对象的软件工程[Ivar Jacobson 1992]) - 有一个称为用例的模型。用例是理解整个系统行为的强大技术(OO传统上很弱的领域)。

1994年,OMT 的创始人 Jim Rumbaugh 离开了通用电气公司 (General Electric),转投了 Rational,与 Grady Booch 并肩作战。这使得软件世界惊呆的合作,为的是要把二人的想法结合成一个统一的方法(项目名称也就是 “统一方法”)。

到了 1995 年,OOSE的创建者 Ivar Jacobson 也加入了Rational,他的想法(特别是有关“用例” (Use Case) 的概念)被整合于统一方法中,成为“统一建模语言”。Rumbaugh,Booch 和 Jacobson 的团队则被称为“三友”

UML 也受到其他面向对象符号的影响:

Mellor 和 Shlaer [1998]

Coad 和 Yourdon [1995]

Wirfs-Brock [1990]

Martin 和 Odell [1992]

UML 还包含其他主要方法中不存在的新概念,如扩展机制和约束语言。

UML 的历史

在 1996 年间,由 Object Management Group (OMG) 发布的第一个征求建议书 (RFP),成为让这些组织联合起来的催化剂。

Rational 与几个愿意为加强 UML 1.0 投入资源的组织建立了 UML 伙伴联盟。那些对 UML 1.0 最有贡献的人包括:

Digital Equipment Corp

HP

I-Logix

IntelliCorp

IBM

ICON Computing

MCI Systemhouse

微软

甲骨文

Rational 软件

TI

Unisys公司

这次合作产生了UML 1.0,一个有明确定义,表达力强大且通用的建模语言。UML 1.0 在 1997 年 1 月提交给 OMG,作为最初的 RFP 回应。

1997 年 1 月,IBM,ObjecTime,Platinum Technology,Ptech,Taskon,Reich Technologies 和 Softeam 也相继向 OMG 提交了 RFP 回应。这些公司加入了伙伴联盟,贡献了他们的想法,并一起制定了经修订的 UML 1.1。UML 1.1 的重点是提高 UML 1.0 语义的清晰度,并纳入来自新合作伙伴的意见。UML 1.1 被提交给 OMG 供考虑,并在 1997 年秋季被采用,及后被改良,版本从 1.1 渐渐提高到 1.5,并于 2001 到 2006 年内提高到 2.1 (现在的 UML 版本为 2.5)

为何用 UML? UML 有什么好?

随着软件产品的价值提高,企业欲寻找技术以改善软件生产流程、提高质量、降低成本并缩短产品上市时间。这些技术包括组件技术,可视化编程,模式和框架的应用。企业也寻求能管理系统因范围和规模扩大而衍生的复杂性的技术。他们也意识到需要解决周期性的体系结构问题,如物理分布、并发性、复制、安全性、负载平衡和容错性。另外,万维网的开发虽然讓不少事物简化,却加剧了这些架构问题。统一建模语言(UML)旨在回應这些需求。Page-Jones 在 Fundamental Object-Oriented Design in UML 一書中总结了 UML 的主要目的,如下:

为用户提供现成的、有表现力的可视化建模语言,以便他们开发和交换有意义的模型。

为核心概念提供可扩展性 (Extensibility) 和特殊化 (Specialization) 机制。

独立于特定的编程语言和开发过程。

为了解建模语言提供一个正式的基础。

鼓励面向对象工具市场的发展。

支持更高层次的开发概念,如协作,框架,模式和组件。

整合最佳的工作方法 (Best Practices)。

UML - 概述

在我们开始研究 UML 的理论之前,我们将简单介绍一下 UML 的一些主要概念。

首先要注意的是 UML 涉及很多不同的图表(模型),其原因是提供从许多不同的角度来審視系统。软件开发流程往往有许多持分者参与其中,例如:

分析师

设计师

程序员

测试员

质量保证员

客户

技术文件撰稿员

这些人都对系统的不同方面各持不同兴趣,故此在建模时需要考虑不同的细节层次。例如,程序员需要了解系统的设计,并将设计转换为代码,而技术文件撰稿员则对整个系统的行为感兴趣,借以了解产品的功能。UML 提供了极富表达能力的建模语言,好让各持分者至少可以从一个 UML 图表得到感兴趣的资讯。

以下简要地介绍了这 13 个 UML 图表。UML 图表可大致分为结构性图表和行为性图表两种。

结构性图表显示了系统在不同抽象层次和实现层次上的静态结构以及它们之间的相互关系。结构性图表中的元素表示系统中具意义的概念,可能包括抽象的、现实的和實作的概念。结构性图表有七种类型:

类图 (Class Diagram)

组件图 (Component Diagram)

部署图 (Deployment Diagram)

对象图 (Object Diagram)

包图 (Package Diagram)

复合结构图 (Composite Structure Diagram)

轮廓图 (Profile Diagram)

行为性图表显示了系统中对象的动态行为 ,可用以表达系统随时间的变化。行为性图表有七种类型:

用例图 (Use Case Diagram)

活动图 (Activity Diagram)

状态机图 (State Machine Diagram)

序列图 (Sequence Diagram)

通訊圖 (Communication Diagram)

交互概述图 (Interaction Overview Diagram)

时序图 (Timing Diagram)

什么是类图?

类图是一切面向对象方法的核心建模工具。该图描述了系统中对象的类型以及它们之间存在的各种静态关系。

关系

有三种主要的关系:

关联 - 代表类型之间的关系(一个人为公司工作,一间公司有多个办事处)。

继承 - 专为将实例关系图 (ERD) 应用于面向对象设计而设的一种关系。它在面向对象设计中的继承概念互相呼应。

聚合 - 面向对象设计中的一种对象组合 的形式。

类图示例

有关类图的更多详细信息,请阅读文章什么是类图?

什么是组件图?

在统一建模语言中,组件图描绘了组件如何连接在一起以形成更大的组件或软件系统。它展示了软件组件的体系结构以及它们之间的依赖关系。那些软件组件包括运行时组件,可执行组件和源代码组件。

组件图示例

有关组件图的更多详细信息,请阅读文章什么是组件图?

什么是部署图?

部署图有助于模拟面向对象软件系统的物理方面。它是一个结构性图表,显示了软件产出于系统架构内如何被分发至指定目标。产出即现实生活中各种通过开发过程产生的产品。部署图对运行时配置进行建模,并可视化应用程序中 产出的分布。在大多数情况下,它表达了硬件配置以及和软件组件之间的关系。

部署图示例

有关部署图的更多详细信息,请阅读文章什么是部署图?

什么是对象图?

对象图是实例 (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) 間的交互。

交互概述图示例

有关交互概述图的更多详细信息,请阅读什么是交互概览图?

什么是时序图?

时序图显示了既定时间内对象的行为。时序图是序列图的一种特殊形式,它俩之间的差异是轴反转,时间从左到右增加,生命线显示在垂直排列的独立隔间中。

时序图示例

相关阅读

堞楼的意思
365bet日博

堞楼的意思

⌚ 07-15 👁️ 670
笔记本电脑键盘的禁用与恢复【亲测有效】
365bet足球赌博

笔记本电脑键盘的禁用与恢复【亲测有效】

⌚ 09-20 👁️ 4566
喜帖多久前發?掌握完美發送時機,讓您的婚禮圓滿順利