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

932 篇文章 26 订阅
647 篇文章 0 订阅

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

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

01 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 等方法,那时面向对象方法已经成为软件分析和设计方法的主流。

目前,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 语义域分层的详细分解结构。

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

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

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

14种UML的分类           PRODUCT

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

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

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

(下图来自 wikipedia)

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

动态行为图(7 种)

对象交互图

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

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

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

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

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

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

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

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

静态结构图(7 种)

包和包之间的关系:包图

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

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

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

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

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

现有图的扩展:外廓图

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

  • 描述系统中单个或多个事物动态行为特性

  • 交互图(顺序图、通信图、交互概览图、时间图)侧重描述事物间的交互过程

  • 行为图(活动图、状态机图)侧重描述事物本身的行为特征

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

  • 交互图(顺序图、通信图):适合描述单个用例中多个对象之间的协作行为。

  • 交互概览图:用于描述复杂用例多个顺序图间的控制流程。

  • 时间图:用于描述时间受控的单个或多个对象间状态交互。

  • 状态机图:适合描述跨越多个用例的单个对象的行为如何影响该对象的状态。

  • 活动图:适合描述多个对象跨越多个用例时的总貌。

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

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

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

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

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

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

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

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

静态结构图(7种)                PRODUCT

1、类图

1.1、作用

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

1.2、组成元素

组成元素

符号

例子:

接口

对象

关系

依赖(Dependency)

关联(Association)

聚合(Aggregation)

组合(Composition)

泛化(Generalization)

实现(Realization)

1.3、示例

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

2、包图

2.1、作用

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

核心概念

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

  • 依赖

2.2、组成元素

组成元素

符号

包(Package)

关系

依赖(Dependency)

关联(Association)

聚合(Aggregation)

组合(Composition)

泛化(Generalization)

实现(Realization)

2.3、示例

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

3、对象图

3.1、作用

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

核心概念

对象、链接、多重性

3.2、组成元素

组成元素

符号

对象(Object)

关系

依赖(Dependency)

关联(Association)

聚合(Aggregation)

组合(Composition)

泛化(Generalization)

实现(Realization)

3.3、示例

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

4、组合结构图

4.1、作用

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

核心概念

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

4.2、组成元素

组成元素

符号

部件(Part)

端口(Port)

协作(Collaboration)

连接(Connector)

角色绑定(Role binding)

4.3、示例

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

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

5、构件图

5.1、作用

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

核心概念

  • 构件、工件、接口(所供接口、所需接口)

  • 装配连接、委托连接、依赖。

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

5.2、组成元素

组成元素

符号

构件(Component)

所供接口(Shallow History)

所需接口(Required Interface)

装配连接(Assembly Connector)

委托连接(Delegate Connector)

依赖(Dependency)

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

5.3、示例

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

UML 1.x 中的构件图

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

(2)ACI 调度系统构件图

(3)Policy Admin Components Wiring

6、部署图

6.1、作用

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

核心概念

  • 节点、工件、部署规范

  • 连接、依赖

推荐场景

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

6.2、组成元素

组成元素

符号

节点(Node)

工件(Artifacts)

部署规范(Deployment)

通信路径

(Communication Path)

依赖(Dependency)

部署(Deploy)

承载(Manifestation)

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、组成元素

组成元素

符号

作用

构造型

定义了针对已存在元模型的扩展,可定义属性

元类

定义了该 profile 中的基本元模型

外阔

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

以包括构造型、元类等

扩展

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

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

外廓应用

用户模型到外廓包之间的依赖关系,表明用户模型可以应用外廓包中的扩展

引用

外廓包和外部其他包之间的关系,表明该外廓包引用了外部元素

7.3、示例

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

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

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

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

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

最后: 下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取【保证100%免费】

在这里插入图片描述

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

  • 2
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值