pfan123 / Articles

经验文章

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

九种常用的UML图总结

pfan123 opened this issue · comments

什么是UML?

统一建模语言(UML)是一种通用的可视化建模语言,可以用来描述、可视化、构造和文档化软件密集型系统的各种工件。

UML是独立于过程的,它适用于各种软件开发方法、软件生命周期的各个阶段、各种应用领域以及各种开发工具。

注:UML不是一种程序设计语言,其描述的模型可以和各种编程语言相联系。

UML的目标

1.为建模者提供可用的、富有表达力的、可视化的建模语言,以开发和交换有意义的模型。

2.提供可扩展性和特殊化机制以延伸核心概念。

3.支持独立于编程语言和开发过程的规范。

4.为理解建模语言提供正式的基础。

5.推动面向对象建模工具市场的成长。

6.支持更高级的开发概念。

UML的应用范围

1130413-20190208202421694-1547768907

UML的主要包括三种构造块:

(1)事物:构成模型图的一些基本图示符号,它们表示一些面向对象的基本概念;

img

(2)关系:是模型元素之间具体化的语义连接,负责联系UML的各类事物,构造出结构良好的UML模型;

  • 关联关系:描述不同类元的实例之间的连接。

  • 依赖关系:描述一对模型元素之间的内在联系。

  • 泛化关系:描述特殊到一般的一种归纳和分类关系。

  • 实现关系:描述规格说明和其实现的元素之间的连接的一种关系。

(3)图:特定的视角对系统所作的抽象描述。

  • 结构图:捕获事物与事物之间的静态关系,用来描述系统的静态结构模型。

  • 行为图:捕获事物的交互过程如何产生系统的行为,用来描述系统的动态行为模型。

    img

    总结为:事物是对模型中最具有代表性的成分的抽象;关系把事物结合到了一起;图聚集了相关的事物。

九种常用的UML图

img

1.用例图(UseCase Diagrams)

用例图是从用户(角色)的角度出发,描述角色和用例之间的关系。即:谁要使用系统,一级他们使用系统可以做什么。简单来说就是:谁,可以用此系统做什么。

img

2.类图(Class Diagram)

类图是描述系统中的类,以及各个类之间的关系的静态视图。是面向对象系统建模中最常用和最重要的图,是定义其他图的基础。

在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)。

各种关系的强弱顺序: 泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖

2.1.泛化(Generalization)

泛化是一种继承关系,表示一般与特殊的关系,它指定了子类如何继承父类的所有特征和行为。

img

2.2.实现(Realization)

实现是一种类与接口的关系,表示类是接口所有特征和行为的实现。

img

2.3.关联(Association)

关联是一种拥有的关系,它使一个类知道另一个类的属性和方法;关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。

img

2.4.聚合(Aggregation)

聚合是整体与部分的关系,且部分可以离开整体而单独存在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。

​ 聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。

img

2.5.组合(Composition)

组合是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。

​ 组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。

img

2.6.依赖(Dependency)

依赖是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖.

img

3.对象图(Object Diagrams)

对象图和类图一样反映系统的静态过程,但它是从实际的或原型化的情景来表达的。对象图显示某时刻对象和对象之间的关系。一个UML对象图可看成一个类图的特殊用例,实例和类可在其中显示。

img

4.状态图(Statechart Diagrams)

状态图描述类的对象所有可能的状态,以及事件发生时状态的转移条件。他们可以告知一个对象可以拥有的状态,并且事件会怎么随着时间的推移来影响这些状态。

状态图是对类图的补充。

img

5.活动图(Activity Diagrams)

活动图描述用例要求所要进行的活动,以及活动间的约束关系,有利于识别并行活动。能够演示出系统中哪些地方存在功能,以及这些功能和系统中其他组件的功能如何共同满足前面使用用例图的业务需求。

活动图是状态图的一种特殊情况,这些状态大都处于活动状态。本质是一种流程图,它描述了活动到活动的控制流。

img

6.序列图-时序图(Sequence Diagrams)

序列图是用来显示你的参与者如何以一系列顺序的步骤与系统的对象交互的模型。顺序图可以用来展示对象之间是如何进行交互的。序列图将显示的重点放在消息序列上,即强调消息是如何在对象之间被发送和接收的。

序列图展示的是多个系统或者对象之间的交互的顺序,强调时间顺序。

img

7.协作图(Collaboration Diagrams)

协作图和序列图相似,显示对象间的动态合作关系。可以看成是类图和顺序图的交集,协作图建模对象或者角色,以及它们彼此之间是如何通信的。

img

8.构件图(Component Diagrams)

构件图是用来表示系统中构件与构件之间,类或接口与构件之间的关系图。其中,构建图之间的关系表现为依赖关系,定义的类或接口与类之间的关系表现为依赖关系或实现关系。

构件图也叫组件图,由组件、接口和组件之间联系构成,描述的是在软件系统中遵从并实现一组接口的物理的、可替换的软件模块。

组件图 = 构件(Component)+接口(Interface)+关系(Relationship)+端口(Port)+连接器(Connector)

img

9.部署图(Deployment Diagrams)

部署图又叫配置图,是用来建模系统的物理部署。

部署图由节点以及节点之间的关系组成。

部署图描述的是系统运行时的结构,展示了硬件的配置及其软件如何部署到网络结构中。

部署图通常用来帮助理解分布式系统,一个系统模型只有一个部署图。

部署图用于可视化的软件组件部署的系统中的物理组件的拓扑结构。

img

Other Resources

为什么说我们需要软件架构图?

UML九种图

UML与设计模式

ProcessOn - 支持流程图、思维导图、原型图、UML、网络拓扑图、组织结构图等