天天看点

一文读懂14种 UML 图业务建模&系统分析的设计方式(上)

作者:闪念基因
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)

看网上有很多关于 UML 图的介绍,但都不完整,于是参考了一些 UML 书籍、博客、视频、官网,并基于最新的 UML 2.5 版本(涵盖了 UML 14 种图),总结了这篇文章,希望能给系统分析设计的同学一点参考。

本文分为上下两篇,主要讲解 UML 核心图的结构和一些案例,偏向于操作介绍,如果发现本篇文章有任何问题,或在使用 UML 画图过程中遇到问题,欢迎留言评论。

01

UML的定义

一文读懂14种 UML 图业务建模&系统分析的设计方式(上)

UML 全称 Unified Modeling Language,即统一建模语言,是软件工程领域中一种通用的、开发性的建模语言,它不是一种程序设计语言,旨在提供一种标准的方法来可视化系统的设计。它比 C++、Java 这样的程序设计语言抽象层次更高,可以适用于任何面向对象的程序设计语言。这种建模语言已经得到了工业界的广泛支持和应用,并已被 ISO 确立为国际标准。

统一建模语言是由对象管理组织(Object Management Group, OMG)制定的一个通用的、可视化的建模语言标准,可以用来可视化、描述、构造和文档化软件密集型系统的各种工件。它是由信息系统和面向对象领域的 3 位著名的方法学家 Grady Booch、James Rumbaugh 和 Ivar Jacobson(threeAmigos,三友)提出的。

在面向对象的软件开发中,选择 UML 已经成了必然的趋势。面向对象专家 Martin Flower 曾经这样说过:“如果正在使用其他的旧技术建模,我强烈建议您马上转用 UML,因为它明显地将成为符号系统的统一标准。如果正在考虑开始使用设计符号来工作,UML 是一个好的选择,因为它已经统治业界了。”在很多情况下,开发人员都应该选择 UML 作为建模语言。

作为一种统一建模语言,UML 的统一并不仅仅是三大面向对象方法的统一,还合并了许多面向对象方法中被普遍接受的概念,对每一种概念,UML 都给出了清晰的定义、表示法和有关术语。

02

UML的历史

UML 的诞生经历了一个漫长的历程。从 20 世纪 80 年代初期开始,众多的方法学家都在尝试用不同的方法进行面向对象的分析与设计。当时,许多方法开始在一些项目中发挥作用,如 Booch、OMT、Shlaer/Mellor、Odell/Martin、RDD、Objectory 等方法。到了 20 世纪 90 年代中期出现了比较完善的面向对象方法,知名的有 Booch 94、OMT 2、OOSE、Fusion 等方法,那时面向对象方法已经成为软件分析和设计方法的主流。

一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)

目前,UML 主要存在 UML 1.x 和 UML 2 两个大的版本系列。UML 1.x 主要是指 UML 1.0~UML 1.5 的这几个版本,版本之间有一些差别,但总体差别不大。而 UML 2 则是指从 2005 年正式发布的 UML 2 之后的各个版本。

相比 UML 1.x,UML 2 的变化很大,首先是结构的调整,从 UML 2 开始,UML 标准被划分为两个相对独立的部分:基础结构和上层结构;其次内容上也有很大的变化,包括底层概念的统一、各种图形的改进和增加等。目前,UML 2 已经成为发展趋势。

早期的 UML 1.x 只提供了 9 种图形。包图、组合结构图、外廓图、交互概览图、时间图这 5 种是在 UML 2 中新增的(外廓图是在 UML 2.3 之后才有的);而通信图则是由 UML 1.x 的协作图改名而来,其他的一些图形也做了适当的调整和扩充。

本篇文章的核心图介绍采用最新的 UML 2.5 作为建模语言。

03

UML核心图介绍

UML的分类

PRODUCT

UML 语义结构

UML 即然是一种语言,那么它必然有语义结构,下图来自 UML 2.5 规范,列出了 UML 语义域分层的详细分解结构。

一文读懂14种 UML 图业务建模&系统分析的设计方式(上)

按照 UML 的语义结构,可以将 UML 划分为三大类,结构建模(Structural Modeling)、行为建模(Behavioral Modeling)、补充建模(Supplemental Modeling)

一文读懂14种 UML 图业务建模&系统分析的设计方式(上)

动作(Actions)是 UML 中的基本行为单元,用于定义细粒度的行为;在此基础上形成高层次的行为机制,包括状态机(StateMachines)、活动(Activities)和交互(Interactions)等。

既有结构化又有行为的辅助建模结构,包括用例(Use Cases)、部署(Deployments)和信息流(Information Flows)。

14种UML的分类

PRODUCT

目前最新的UML 2 中有 14 种图,相比 UML 1.x 新增了 5 种图(包图、组合结构图、外廓图、交互概览图、时间图),按照静态结构和动态行为划分如下:

一文读懂14种 UML 图业务建模&系统分析的设计方式(上)

静态结构图的主元素是静态元素,如类图的类、接口;

动态行为图的主元素是动态元素,如活动图的主元素是用例的动作

(下图来自 wikipedia)

一文读懂14种 UML 图业务建模&系统分析的设计方式(上)

从对象、事物、包、系统、构件维度来看 这 14 种图的差异点

动态行为图(7 种)

对象交互图

对象之间的信息交互的图(交互图)

强调消息执行顺序:顺序图(时序图)

强调对象之间的协作:通信图(协作图)

强调真实时间信息:时间图

交互图之间的执行顺序:交互概览图

对象和对象目标之间的关系:用例图

事物执行的控制流和数据流:活动图

对象自身经历的状态转移:状态图

静态结构图(7 种)

包和包之间的关系:包图

系统的类/接口的协作和关系:类图

对象和对象之间的关系的图:对象图

系统某一部分的内部结构:组合架构图

构件展示及构件相互依赖关系:构件图

构件在各节点部署的展示:部署图

现有图的扩展:外廓图

它们的共同点有以下几个:

  • 描述系统中单个或多个事物动态行为特性
  • 交互图(顺序图、通信图、交互概览图、时间图)侧重描述事物间的交互过程
  • 行为图(活动图、状态机图)侧重描述事物本身的行为特征

它们的区别主要体现在每种图形的侧重点不同:

  • 交互图(顺序图、通信图):适合描述单个用例中多个对象之间的协作行为。
  • 交互概览图:用于描述复杂用例多个顺序图间的控制流程。
  • 时间图:用于描述时间受控的单个或多个对象间状态交互。
  • 状态机图:适合描述跨越多个用例的单个对象的行为如何影响该对象的状态。
  • 活动图:适合描述多个对象跨越多个用例时的总貌。

04

从业务分析设计过程看使用阶段

一文读懂14种 UML 图业务建模&系统分析的设计方式(上)

(1)业务建模:采用软件建模方法分析和理解待开发的业务,描述业务流程;其目标是认识业务本质,该业务本质是后续用例建模的基础。

(2)用例建模:采用 UML 用例建模技术描述软件需求,该需求模型将为后续用例分析提供输入。

(3)用例分析:采用 UML 用例分析技术分析软件需求,建立软件系统的分析模型。

(4)架构设计:在系统的全局范围内,以分析模型为基础,设计系统的架构。

(5)构件设计:根据架构设计的成果,将分析模型细化,设计系统构件的实现细节。

(6)代码实现:将系统构件映射到目标语言上。

下面将从“作用”、“组成元素”、“示例”三个维度介绍每个 UML 图用法

一文读懂14种 UML 图业务建模&系统分析的设计方式(上)

静态结构图(7种)

PRODUCT

1、类图

1.1、作用

类图(Class Diagram)是软件的蓝图,用于详细描述系统内各个对象的相关类,以及这些类之间的静态关系;

一文读懂14种 UML 图业务建模&系统分析的设计方式(上)

1.2、组成元素

组成元素 符号
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
例子:
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
接口
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
对象
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
关系 依赖(Dependency)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
关联(Association)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
聚合(Aggregation)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
组合(Composition)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
泛化(Generalization)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
实现(Realization)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)

1.3、示例

(1)图书馆管理系统类图

一文读懂14种 UML 图业务建模&系统分析的设计方式(上)

2、包图

2.1、作用

包图(Package Diagram)用于展现由模型本身分解而成的组织单元(包)及它们的依赖关系

核心概念

  • 包(框架、层、子系统)
  • 依赖

2.2、组成元素

组成元素 符号
包(Package)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
关系 依赖(Dependency)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
关联(Association)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
聚合(Aggregation)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
组合(Composition)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
泛化(Generalization)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
实现(Realization)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)

2.3、示例

在图书馆管理系统中,如上图所示,系统高层分为 3 层,其中界面层负责用户交互;数据访问层负责访问底层信息;业务逻辑层负责协调界面层和数据访问层间的访问逻辑。此外,对于数据访问层内部,又可以采用分包的方式进行逻辑划分,如图右半部分所示,分为借阅包、读者包、图书包。

3、对象图

3.1、作用

对象图(Object Diagram)用于表示在某一时刻,类的对象的静态结构和行为;

核心概念

对象、链接、多重性

3.2、组成元素

组成元素 符号
对象(Object)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
关系 依赖(Dependency)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
关联(Association)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
聚合(Aggregation)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
组合(Composition)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
泛化(Generalization)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
实现(Realization)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)

3.3、示例

(1)某教职工借阅信息对象图

4、组合结构图

4.1、作用

组合结构图(Composite Structure Diagram)用于描述系统中某一部分(组合结构)的内部结构,包括该部分与系统其他部分的交互点。

核心概念

组合结构、部件、端口、角色绑定。

4.2、组成元素

组成元素 符号
部件(Part)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
端口(Port)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
协作(Collaboration)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
连接(Connector)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
角色绑定(Role binding)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)

4.3、示例

(1)借书过程的组合结构图

为了完成系统所需的某些功能(如借书),需要几个类之间进行相互协作,而这几个类就构成了一个组合结构。为了完成借书的功能,这些类之间存在着一定的接口(组合结构图中称为端口)和连接,这些信息即可通过组合结构图来反映。上图展示了借书过程的组合结构图,为了完成借书的过程,在该图中需要设置借阅用户界面类(BorrowUI)、借阅控制类(BorrowCtrl)、借阅信息类(BorrowInfo)、读者类(Reader)和图书类(Book)。

5、构件图

5.1、作用

构件图(Component Diagram)将封装类作为构件,描述在系统实现环境中的软件构件和它们之间的关系。

核心概念

  • 构件、工件、接口(所供接口、所需接口)
  • 装配连接、委托连接、依赖。

推荐场景:系统设计(系统依赖、边界)、实现、部署等

5.2、组成元素

组成元素 符号
构件(Component)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
所供接口(Shallow History)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
所需接口(Required Interface)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
装配连接(Assembly Connector)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
委托连接(Delegate Connector)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
依赖(Dependency)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)

PS:所供接口和所需接口是 UML 2 中提出的概念,UML 1.x 只有接口的概念,特指所供接口

5.3、示例

(1)图书馆管理系统构件图

UML 1.x 中的构件图

一文读懂14种 UML 图业务建模&系统分析的设计方式(上)

UML 2 中的构件图(新增了所供接口和所需接口图标)

一文读懂14种 UML 图业务建模&系统分析的设计方式(上)

(2)ACI 调度系统构件图

(3)Policy Admin Components Wiring

6、部署图

6.1、作用

部署图(Deployment Diagram)描述系统所需的硬件环境的物理结构,以及软件资源在硬件环境中的部署方案。部署图中的主要概念包括以下几个。

核心概念

  • 节点、工件、部署规范
  • 连接、依赖

推荐场景

系统设计、实施、部署等场合。

6.2、组成元素

组成元素 符号
节点(Node)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
工件(Artifacts)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
部署规范(Deployment)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)

通信路径

(Communication Path)

一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
依赖(Dependency)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
部署(Deploy)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
承载(Manifestation)
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)

6.3、示例

(1)图书馆管理系统部署图

从图中可以看到,该系统共有 4 类不同的节点。其中“读者客户端”面向普通读者提供查询、预约等功能;“工作人员前置机”面向工作人员用于实现具体的借书、还书业务;“后台数据库”用于运行系统数据库环境;“管理员后台”用于帮助管理员实现各种系统维护功能。

(2)deployment 物理部署图

7、外廓图

7.1、作用

外廓(Profile)是基于 UML 元素的子集为特定领域定义 UML 的一个特定版本,即定义了一组对 UML 已有模型的扩展和限定机制,以用于某个特定领域,自 UML 2.3 起,UML标准新增了外廓图。即如果目前所有的 UML 图如果满足不了业务建模诉求的时候,就可以用外廓图在已有的模型上扩展或减少一些 UML 元模型元素,“创造”出一种新的建模图。

这些扩展和限定机制包括:预定义的构造型、标记值、约束、基类等。

针对一些常用的应用领域,OMG推出了一些标准的扩展,如用于实时嵌入式建模的MARTE(UML Profile for Modeling and Analysis of Real-time and EmbeddedSystems)、用于测试的UML Testing Profile、用于硬件设计的UML Profile for System on a Chip等。

7.2、组成元素

组成元素 符号 作用
构造型
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
定义了针对已存在元模型的扩展,可定义属性
元类
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
定义了该 profile 中的基本元模型
外阔
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)

定义了一个 profile 包结构,其内部可

以包括构造型、元类等

扩展
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)

构造型到元类之间的关系,表名该构造

型可以针对哪些元类进行扩展

外廓应用
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
用户模型到外廓包之间的依赖关系,表明用户模型可以应用外廓包中的扩展
引用
一文读懂14种 UML 图业务建模&系统分析的设计方式(上)
外廓包和外部其他包之间的关系,表明该外廓包引用了外部元素

7.3、示例

(1)用于数据库建模的外廓图

一文读懂14种 UML 图业务建模&系统分析的设计方式(上)

数据库建模的核心概念是表、字段和关系等,这些概念在 UML 标准规范中并没有定义,无法直接利用 UML 建模。为此,我们需要通过扩展 UML 类图中的相关概念,如可以利用 UML 类建模表,利用类的属性建模表的字段,利用类之间的关联关系来建模实体间的关系。

这里,我们利用外廓图定义了 3 个构造型 MyTable、MyColumn 和 MyRelationship,分别表示数据库表、字段和关系,它们各自从 UML 元类中的类(Class)、属性(Attribute)和关联关系(Association)上扩展而来;此外,对于 MyColumn 构造型,我们还添加了两个布尔类型的标记值PK和IsNULL,分别表示该字段是否为主键(默认值为false)、是否可以为空(默认值为 true)。

需要说明的是,该图采用 Enterprise Architect 绘制,图中 3 个扩展的构造型没有采用组成元素好表的标准表示形式(即名称前面加“<<stereotype>>”的方式),而是采用右上角添加“《》”的方式表示,这是该建模工具所提供的特定图形符号。

篇幅有限,下篇会讲到另外7种动态行为图及其设计示例。

作者:刘仁权 (弈阁)

来源-微信公众号:蚂蚁研发效能

出处:https://mp.weixin.qq.com/s/N0ExeWcTufnzQTLllSlSaQ

继续阅读