一、概述
UML:Unified Modeling Language,统一建模语言,支持从需求分析开始的软件开发的全过程。是一个支持模型化和软件系统开发的图形化语言、为软件开发的所有阶段提供模型化和可视化支持
,包括由需求分析到规格,到构造和配置。
组成UML的3个要素
基本构造块(事物、关系和图)
- 规则(支配这些构造块如何放置在一起)
- 机制(运用于整个语言的机制)
二、事物
事物:也成建模元素
2.1 结构事物
是静态部分,类、接口、协作、用例、活动类、构件和节点
-
类(Class)
是具有相同属性、相同方法、相同语义和相同关系的一组对象的集合。一个类可以实现一个或多个接口。在UML图中,类用包括类名、属性和方法的矩形来表示
-
接口(Interface)
接口是指类或组件提供的、可以完成特定功能的一组操作的集合。换句话说,接口描述了类或组件对外的、可见的动作。通常,一个类实现一个或多个接口。在UML图中,接口通常用一个圆形来表示。
-
用例(Use Case)
用例定义了系统执行的一组操作,对特定的用户产生可以观察的结果。在UML图中,用例通常用一个实线椭圆来表示。
-
协作(Collaboration)
协作定义了交互的操作,表示一些角色和其他元素一起工作,提供一些合作的动作。一个给定的类可能是几个协作的组成部分,这些协作代表构成系统的模式的实现。在UML图中,协作通常用一个虚线椭圆表示。
-
活动类(Active Class)
活动类是指对象有一个或多个线程或进程的类。活动类和类相似,只是它的对象代表的元素的行为和其他的元素同时存在。在UML图中,活动类的表示方法和普通类的表示方法相似,也是使用一个矩形,只是最外面的边框使用粗线。 -
组件(Component)
组件是物理上可替换的,实现了一个或多个接口的系统元素。在UML图中,组件的表示图形比较复杂。
-
节点(Node)
节点是一个物理元素,它在运行时存在,代表一个可计算的资源,比如一台数据库服务器。在UML图中,节点使用一个立方体来表示。节点通常包括处理器和设备。
2.2 行为事物
行为事物也称动作事物,是UML模型中的动态部分,代表时间和空间上的动作。行为事物主要有两种:交互和状态机。它们是UML模型中最基本的两个动态事物元素,通常和其他的结构元素、主要的类、对象连接在一起。
(1) 交互(Interaction)
交互是在特定上下文中的一组对象,为共同完成一定的任务而进行的一系列消息交换所组成的动作。交互包括消息、动作序列(消息产生的动作)、对象之间的连接。在 UML图中,交互的消息通常画成带箭头的直线。
(2) 状态机(State Machine)
状态机是对象的一个或多个状态的集合。在UML图中,状态机通常用一个圆角矩形来表示。
2.3 分组事物
组织事物也成为分组事物,是UML模型中组织的部分,可以把它看做一个个的盒子,每个盒子里面的对象关系相对复杂,而盒子与盒子之间的关系相对简单。组织事物只有一种,称为包
包:
封装是唯一一个分组事物可收集结构和行为的东西。
2.4 注释事物
UML解释部分, 注释事物可以被定义为一种机制来捕捉UML模型元素的言论,说明和注释。注释是唯一一个注释事物。
三、关系
关系:UML用关系把事物结合在一起
3.1 依赖
两个事物之间的语义关系,其中一个事物发生变化会影响另一个事物的语义
3.2 关联
是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
3.3 泛化
是一种继承关系,一般化和特殊化的关系,描述特殊元素的对象可替换一般元素的对象。
指定了子类如何继承父类的所有特征和行为。例如:老虎是动物的一种,即有老虎的特性也有动物的共性。
3.4 实现
类之间的语义关系,其中的一个类指定了有另一个类保证执行的契约。也可以理解为是一种类与接口的关系,表示类是接口所有特征和行为的实现。
3.5 总结
各种类图关系
四、图
UML 视图:就是对上面图的分类
- 用例视图:最基本的需求分析模型,如用例视图
- 逻辑视图:也称为设计视图,如类图、对象图以及包图
- 进程视图:可执行线程和进程作为活动类的建模,他是逻辑视图的一次执行实例,描述了并发与同步结构,如状态图、活动图、时序图等
- 实现视图:对组成基于系统的物理代码的文件和构件进行建模,如构件图
- 部署视图:把构件部署到一组物理节点上,表示软件到硬件的映射和分布结构,如部署图
4.1 用例图(UseCase Diagrams):
用例图主要回答了两个问题:1、是谁用软件。2、软件的功能。从用户的角度描述了系统的功能,并指出各个功能的执行者,强调用户的使用者,系统为执行者完成哪些功能。用于业务建模、需求获取、定义。静态
4.2 类图(Class Diagrams):
用户根据用例图抽象成类,描述类的内部结构和类与类之间的关系,是一种静态结构图。是软件的蓝图
4.3 对象图(Object Diagrams)
描述的是参与交互的各个对象在交互过程中某一时刻的状态。对象图可以被看作是类图在某一时刻的实例。
4.4 状态图(Statechart Diagrams):
是一种由状态、变迁、事件和活动组成的状态机,用来描述类的对象所有可能的状态以及时间发生时状态的转移条件。
4.5 活动图(Activity Diagrams):
通过动态来组织,主要用于描述某一方法、机制或用例的内部行为。是状态图的一种特殊情况,这些状态大都处于活动状态。本质是一种流程图,它描述了活动到活动的控制流。
4.6 序列图-时序图(Sequence Diagrams):
交互图的一种,描述了对象之间消息发送的先后顺序,强调时间顺序。序列图的主要用途是把用例表达的需求,转化为进一步、更加正式层次的精细表达。用例常常被细化为一个或者更多的序列图。同时序列图更有效地描述如何分配各个类的职责以及各类具有相应职责的原因。
消息用从一个对象的生命线到另一个对象生命线的箭头表示。箭头以时间顺序在图中从上到下排列。
4.7 构件图(Component Diagrams):
构件图是用来表示系统中构件与构件之间,类或接口与构件之间的关系图。其中,构建图之间的关系表现为依赖关系,定义的类或接口与类之间的关系表现为依赖关系或实现关系。
描述类的实现环境
4.8 部署图(Deployment Diagrams):
描述了系统运行时进行处理的结点以及在结点上活动的构件的配置。强调了物理设备以及之间的连接关系。
部署模型的目的:
描述一个具体应用的主要部署结构,通过对各种硬件,在硬件中的软件以及各种连接协议的显示,可以很好的描述系统是如何部署的;平衡系统运行时的计算资源分布;可以通过连接描述组织的硬件网络结构或者是嵌入式系统等具有多种硬件和软件相关的系统运行模型。
深入学习:https://www.w3cschool.cn/uml_tutorial/uml_tutorial-c1gf28pd.html