UML目录
- 前言
- 1、UML概述
- 1.1、基本概念
- 1.2、UML图类型说明
- 1.3、UML的4+1视图
- 2、UML图详细图示
- 2.1、类图
- 2.2、对象图
- 2.3、组件图
- 2.4、部署图
- 2.5、包图
- 2.6、用例图
- 2.7、状态图
- 2.8、活动图
- 2.9、时序图
- 2.10、通信图(协作图)
- 2.11、定时图(计时图)
前言
今天给大家带来
1、UML概述
1.1、基本概念
统一建模语言(UML,Unified Model Language)
1.2、UML图类型说明
静态图/动态图 | UML图类型 | 说明 |
---|---|---|
静态图(结构图) | 类图 | 一组类、接口、协作和它们之间的关系。 |
– | 对象图 | 一组对象和它们之间的关系。 |
– | 构件图 | 一个封装的类和它的接口。 |
– | 部署图 | 软硬件之间的映射。 |
– | 制品图 | 系统的物理结构。 |
– | 包图 | 由模型本身分解而成的组织单元,以及它们之间的依赖关系。 |
– | 组织结构图 | 描述了一个"组合结构"的内部结构,以及他们之间的关系。 |
动态图(行为图) | 用例图 | 系统与外部参与者的交互。 |
– | 状态图 | 状态转换变迁。 |
– | 活动图 | 类似程序流程图,并行行为。 |
– | 时序图 | 强调按时间顺序。 |
– | 通信(协作)图 | 描述了收发消息的对象的组织关系。 |
– | 定时图 | 强调实际时间。 |
– | 交互概览图 | 与活动图类似,但是它的节点是交互图。 |
– | 其中时序图、通信图、定时图、交互概览图属于交互图 |
1.3、UML的4+1视图
详细描述:
视图类型 | 作用 | 组成 | 使用者 |
---|---|---|---|
逻辑视图 | 用于描述用例视图中提出的系统功能的实现。主要关注系统内部,即描述系统的静态结构(类、对象以及它们之间的关系),也描述系统内部的动态协作关系。 | 1、静态图:类图、对象图。 2、动态图:状态机图、时序图、活动图等。 | 系统分析、设计人员 |
实现视图 | 主要侧重于软件模块的组织和管理。要考虑软件内部的需求,如软件开发的容易性、软件的重用和软件的通用性,要充分考虑由于具体开发工具的不同而带来的局限性。 | 1、物理代码文件; 2、组件图。 | 程序员 |
进程视图 | 侧重于系统的运行特性,主要关注一些非功能性的需求。进程视图强调并发性、分布性、系统集成性和容错能力,以及从逻辑视图中的主要抽象如何适合进程结构。 | 1、状态图、活动图、通信图; | 系统集成人员 |
部署视图 | 用于显示系统的物理配置,描述的位于节点上的运行实例的部署情况。 | 1、部署图; | 系统和网络工程师 |
用例视图 | 描述系统应具备的功能,关注系统外部,从系统的外部看到的系统的功能。 | 1、用例图; | 最终用户 |
2、UML图详细图示
2.1、类图
【概念】 类图(Class Diagram)是一切面向对象方法的核心建模工具。类图描述了系统中对象的类型以及它们之间存在的各种静态关系。
【目的】用来表示类、接口以及它们之间的静态结构和关系。
【类和接口】
- 类(Class):在面向对象编程中,类是对现实世界中一组具有相同特征的物体的抽象。
- 接口(Interface):接口是一种特殊的类,具有类的结构但不可被实例化,只可以被实现(继承)。
【类图中的关系】
关系 | 说明 | 图形表示 |
---|---|---|
泛化(Generalization) | 是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。 | (箭头指向父类) |
实现(Realization) | 是一种类与接口的关系,表示类是接口所有特征和行为的实现。 | (箭头指向接口) |
关联(Association) | 是一种拥有的关系,它使一个类知道另一个类的属性和方法 | (指向被拥有者,可以没有箭头) |
聚合(Aggregation) | 是整体与部分的关系,且部分可以离开整体而单独存在。 | (菱形指向整体) |
组合(Composition) | 是整体与部分的关系,但部分不能离开整体而单独存在。 | (菱形指向整体) |
依赖(Dependency) | 是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖。 | (指向被使用者) |
2.2、对象图
【概念】对象图(Object Diagram)是类图的一个实例,是系统在某个时间点的详细状态的快照。
【目的】用来表示两个或者多个对象之间在某一时刻之间的关系。
2.3、组件图
【概念】描绘了系统中组件提供的、需要的接口、端口等,以及它们之间的关系。
【目的】用来展示各个组件之间的依赖关系。
2.4、部署图
【概念】部署图(Deployment Diagram)描述了系统内部的软件如何分布在不同的节点上。
【目的】用来表示软件和硬件的映射关系。
2.5、包图
【概念】描绘了系统在包层面上的结构设计(多个类或组件组成了一个子系统,就可以将它们放到一个包中)。
【目的】用来表示包和包之间的依赖关系。
2.6、用例图
【概念】用例图是指由参与者、用例,边界以及它们之间的关系,构成的用于描述系统功能的视图。
【目的】用来描述整个系统的功能。
【特点】
- 用户角度描述系统功能;
- 参与者是外部触发因素(包括用户、组织、外部系统,时间);
- 用例是功能单元。
【关系】
1.包含关系:如图,其中这个提取出来的公共用例B称为抽象用例,原始用例A称为基本(基础)用例。当可以从两个或两个以上的用例提出公共行为时,应该使用包含关系来表示它们。
这里表示B这个用例其实属于A,但是为了提出公共行为,才拉出来
-
扩展关系:如图,如果一个用例明显混合了两种或以上的不同场景,即根据情况可能发生多种分支,则可以将这个用例分为一个基本用例和一个或多个扩展用例;
这里简单说就是A和B原本是在一个用例下,但是这一个用例描述两个功能不明确,拆分称A和B,一般A是常用的功能,作为基础用例 -
泛化关系:表示子用例继承父用例所有结构、行为和关系。
【建模流程】
- 识别参与者(必须);
- 合并需求获得用例(必须);
- 细化用例描述(必须);
- 调整用例模型(可选);
【用例规约】用例名称、用例ID、角色、用例说明、前置条件、基本事件流、其他事件流、异常事件流、后置条件
2.7、状态图
【概念】状态图(State Diagram)对一个单独对象的行为建模,指明对象在它的整个生命周期里,响应不同事件时,执行相关事件的顺序。
【目的】对类描述的补充,用于展现此类对象所具有的可能状态,以及某些事件发生时状态转移情况。
2.8、活动图
【概念】描述了具体业务用例的实现流程。
【目的】用来表示用例实现的工作流程。
2.9、时序图
【概念】序列图(Sequence Diagram)根据时间序列展示对象如何进行协作。它强调对象之间发消息发送接收的顺序,同时显示对象之间的交往。
【目的】通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。
组合片段用来解决交互执行的条件和方式,它允许在序列图中直接表示逻辑组件,用于通过指定条件或子进程的应用区域,为任何生命线的任何部分定义特殊条件和子进程。
组合片段共有13种,名称及含义如下:
片段类型 | 名称 | 说明 |
---|---|---|
Opt | 选项 | 包含一个可能发生或可能不发生的序列。可以在临界中指定序列发生的条件。 |
Alt | 抉择 | 包含一个片段列表,这些片段包含备选消息序列。在任何场合下只发生一个序列。可以在每个片段中设置—个临界来指示该片段可以运行的条件。else 的临界指示其他任何临界都不为 True 时应运行的片段。 如果所有临界都为 False 并且没有 else,则不执行任何片段。 |
Loop | 循环 | 片段重复一定次数。可以在临界中指示片段重复的条件。Loop 组合片段具有Min 和Max 属性,它们指示片段可以重复的最小和最大次数。默认值是无限制。 |
Break | 中断 | 如果执行此片段,则放弃序列的其余部分。 可以使用临界来指示发生中断的条件。 |
Par | 并行 | 并行处理。片段中的事件可以交错。 |
Critical | 关键 | 用在 Par 或 seq 片段中。指示此片段中的消息不得与其他消息交错。 |
Seq | 弱顺序 | 有两个或更多操作数片段。涉及同一生命线的消息必须以片段的顺序发生。如果消息涉及的生命线不同,来自不同片段的消息可能会井行交错。 |
Strict | 强顺序 | 有两个或更多操作数片段。这些片段必须技给定顺序发生。 |
Consider | 考虑 | 指定此片段描述的消息列表。其他消息可发生在运行的系統中,但对此描述来说意义不大。在Messages属性中键入该列表。 |
Ignore | 忽略 | 此片段未描述的消息列表。这些消息可发生在运行的系统中,但对此描述来说意义不大。在Messages属性中键入该列表。 |
Assert | 断言 | 操作数片段指定唯一有效的序列。通常用在 Consider 或 Ignore 片段中。 |
Neg | 否定 | 此片段中显示的序列不得发生。通常用在 Consider 或 Ignore 片段中。 |
2.10、通信图(协作图)
【概念】通信图(Communication Diagram)描述了收发消息的对象的组织关系,强调对象之间的合作关系而不是时间顺序。
【目的】用来显示不同对象的关系。
2.11、定时图(计时图)
【概念】时序图被用来显示随时间变化,一个或多个元素的值或状态的更改。也显示时控事件之间的交互和管理它们的时间和期限约束。
【目的】用于展示交互过程中的真实事件信息,具体描述对象状态变化的时间以及维持特定状态的时间段。