WangShuXian6 / blog

FE-BLOG
https://wangshuxian6.github.io/blog/
MIT License
46 stars 10 forks source link

starUML #85

Open WangShuXian6 opened 5 years ago

WangShuXian6 commented 5 years ago

UML

UML(Unified Modeling Language,统一建模语言),是一种能够描述问题、描述解决方案、起到沟通作用的语言。 通俗地说,它是一种用文本、图形和符号的集合来描述现实生活中各类事物、活动及其之间关系的语言。

UML是一种很好的工具,可以贯穿软件开发周期中的每一个阶段,它最适于数据建模、业务建模、对象建模和组件建模。 作为一种模型语言,UML使开发人员专注于建立产品的模型和结构,而不是选用什么程序语言和算法实现。 当模型建立之后,该模型可以被UML工具转化成指定的程序语言代码。

UML的目标是以面向对象图形的方式来描述任何类型的系统

UML是一个通用的标准建模语言,可以对任何具有静态结构和动态行为的系统进行建模

在UML标准中增加了模板(Stereotypes)、职责(Responsibilities)、扩展机制(Extensibility Mechanisms)、线程(Threads)、过程(Processes)、分布式(Distribution)、并发(Concurrency)、模式(Patterns)、合作(Collaborations)、活动图(Activity Diagram)等新概念,并清晰地区分了类型(Type)、类(Class)和实例(Instance)、细化(Refinement)、接口(Interfaces)和组件(Components)等概念。


UML的结构

UML的组成主要有事物、图和关系。 事物是UML中重要的组成部分, 关系把元素紧密联系在一起, 图是很多有相互关系的事物的组合。


UML中的事物

UML包含4种事物:构件事物、行为事物、分组事物和注释事物


(1)构件事物

构件事物是UML模型的静态部分,描述概念或物理元素,它包括以下几种

①类 类是对一组具有相同属性、相同操作、相同关系和相同语义的对象的抽象。在UML组成中,类是用矩形表示的,它包含三个区域:最上面是类名,中间是类的属性,最下面是类的方法。

②接口 接口是指类或组件提供特定服务的一组操作的集合。因此,一个接口描述了类或组件的对外的可见的动作。一个接口可以实现类或组件的全部动作,也可以只实现一部分动作。在UML中,接口被画成一个圆和它的名字。

③协作 描述一组事物间的相互作用的集合。

③协作 描述一组事物间的相互作用的集合。

⑤构件 也称为组件,是物理上或可替换的系统部分,它实现了一个接口集合。在一个系统中,可以使用不同类型的组件,如COM+或JAVA BEANS。

⑥节点 为了能够有效地对部署的结构进行建模,UML引入了节点这一概念,它可以用来描述实际的PC机、打印机、服务器等软件运行的基础硬件。节点是运行时存在的物理元素,它表示了一种可计算的资源,通常至少有存储空间和处理能力。

此外,参与者、文档库、页表等都是上述基本事物的变体。


(2)行为事物

行为事物是UML模型图的动态部分,它描述跨越空间和时间的行为,主要包括以下两部分。

①交互 实现某功能的一组构件事物之间的消息的集合,涉及消息、动作序列和链接。

②状态机 描述事物或交互在生命周期内响应事件所经历的状态序列。

(3)分组事物

分组事物是UML模型图的组织部分,它描述事物的组织结构,主要由包来实现。包是指把元素编程成组的机制。

(4)注释事物

注释事物是UML模型的解释部分,用来对模型中的元素进行说明和解释。注解是对元素进行约束或解释的简单符号。


mac starUML 安装

https://staruml.io/ 下载

安装 asar

npm install asar -g

解压文件 app.asar

cd /Applications/StarUML.app/Contents/Resources

asar extract app.asar app

修改 js 文件 license-manager.js

vim app/src/engine/license-manager.js

找到代码 checkLicenseValidity ()

checkLicenseValidity () {
    this.validate().then(() => {
      setStatus(this, true)
    }, () => {
      // 原来的代码:
      // setStatus(this, false) 
      // UnregisteredDialog.showDialog()

      //修改后的代码
      setStatus(this, true)
    })
 }

重新打包 app 文件夹

asar pack app app.asar

完成

WangShuXian6 commented 5 years ago

starUML 术语

https://docs.staruml.io/

Classes(basic)

Class image

Interface 接口 image 接口 是描述类的部分行为的一组操作,它也是一个类提供给另一个类的一组操作。 通常接口被描述为抽象操作,也就是只用标识(返回值、操作名称、参数表)说明它的行为,而真正实现部分放在使用该接口的对象中,也就是说,接口只负责定义操作而不负责具体的实现。 接口只是一组操作,没有属性 接口的表示和类图的表示类似,只是在最上面的一层类名前加描述<<interface>>,或是用一个圆圈表示

Association 关联 image 关联指明一个对象与另一个对象之间的关系。在图形中,关联用一条实线表示,它可能有方向,偶尔在其上还有一个标记

Directed Association image

Aggregation 聚合 image 两个类之间的简单关联表示两个同等地位的类之间的结构关系,说明这两个类是同一级别的,一个类并不比另一个类显得重要。 在实际建模中,往往需要对整体/部分的关系进行描述,一个类描述了一个较大的事物(整体),它由较小的事物(部分)组成。 聚合关系正是表示整体和部分关系的关联。 聚合描述了has-a的关系,意思是整体对象拥有部分对象。 实质上,聚合就是一种特殊的关联。

在UML中,聚合被表示为在整体的一端用一个空心菱形修饰的简单关联。 聚合关系用带空心菱形的实线来表示,其中头部指向整体。 一所学校里肯定会设置多个系部

聚合的含义完全是概念性的,空心菱形只是把整体和部分区别开,简单的聚合没有改变整体和部分之间跨越关联的导航含义,与整体和部分的生命周期也不相关

Composition 组合关系/组合式聚合 image 组合关系用带实心菱形的实线来表示,其中头部指向整体

组合关系是聚合关系中的一种特殊情况,是更强形式的聚合,又被称为强聚合。 在组合中,成员对象的生命周期取决于聚合的生命周期,聚合不仅控制着成员对象的行为,而且控制着成员对象的创建和撤销。 这就意味着,在组合式聚合中,一个对象在一个时间内只能是一个组合的一部分 一个菜单只属于一个窗口

在组合式聚合中,整体要对它的各个组成部分进行处理,也就是说,整体必须管理部分的创建和撤销。 例如,在创建一个菜单时,必须将它附加到它所属的一个窗口中,相应地,当撤销一个窗口时,必须要依次撤销它的菜单和按钮。

Dependence 依赖 image 依赖是两个模型元素间的语义关系,其中一个元素(独立事务)的变化会影响另一个元素(依赖事务)的语义。 被依赖指向依赖

Generalization 泛化 image 泛化是一种一般化到特殊化的关系,是一般事物(父类)和该事物较为特殊的种类(子类)之间的关系,子类继承父类的属性和操作,除此之外,子类还添加新的属性和操作。在图形中,泛化关系用带有空心箭头的实线表示,该实线指向父类

Interface Realization image 接口实现


Classes (Adavanced)

Signal image 信号

DataType image 数据类型

PrimitiveType image 原始类型

Enumeration image 枚举

Frame image

Association Class 关联类 image 在两个类之间的关联中,关联本身可以有特征。即关联和类一样,也可以有自己的属性和操作。此时,这个关联实际上是一个关联类

关联类是同时具有类特征和关系特征的模型元素,可以将关联类看成是拥有类特性的关联,也可以把它看成是拥有关联特性的类。关联类的可视化表示方式与一般的类相同,但是要用一条虚线把关联类和对应的关联线连接起来。关联类也可以与其他类关联。


Packages

Package 设计包 image MODULE(也称为PACKAGE) MODULE是一个传统的、较成熟的设计元素。虽然使用模块有一些技术上的原因,但主要原因却是‚认知超载‛ [6]。MODULE为人们提供了两种观察模型的方式,一是可以在MODULE中查看细节,而不会被整个模型淹没,二是观察MODULE之间的关系,而不考虑其内部细节。 MODULE之间应该是低耦合的,而在MODULE的内部则是高内聚的。 MODULE并不仅仅是代码的划分,而且也是概念的划分。一个人一次考虑的事情是有限的(因此才要低耦合)

Model 模型 image

Subsystem 子系统/设计子系统 image

Containment image

Dependency 依赖 image


Composite Structure

Collaboration 合作/协作 image

Port 端口 image 端口将组合结构与外部环境隔离,实现了双向的封装,既涵盖了该组合结构所提供的行为(Provided Interface),同时也指出了该组合结构所需要的服务(Required Interface);如协议(Protocol),基于UML中的协作(Collaboration)的概念,展示那些可复用的交互序列,其实质目的是描述那些可以在不同上下文环境中复用的协作模式。协议中所反映的任务由具体的端口承担。

Part 部件 image

Connector 连接器 image

Collaboration Use image

Role binding 角色绑定 image

Realization 实现 image 实现是类之间的语义关系,其中的一个类指定了由另一个类必须执行的约定。 在两种地方会遇到实现关系,一种是在接口和实现它们的类或构件之间,另一种是在用例和实现它们的协作之间。 在图形中,实现关系用一条带有空心箭头的虚线表示,它是泛化和依赖关系两种图形的结合


Instances 实例

Object 对象 image 对象是面向对象的基本构造单元,它是系统中用来描述客观事物的一个实体。 一个对象由一组属性和对属性执行操作的一组方法组成。 在面向对象的系统中,对象是一个封装数据属性和操作行为的实体。数据描述了对象的状态,操作指的是操作私有数据并改变对象的状态。当其他对象向本对象发出消息,本对象响应时,其操作才得以实现,在对象内部的操作通常叫做方法。

Artifact instance 工件实例/产物实例 image

Component Instance 组件实例 image

Node Instance 节点实例 image

Link 链接 image 链接(Link)用线条来表示,链接表示两个对象共享一个消息,位于对象之间或参与者与对象之间。

链接表示两个或多个对象间的独立连接,是关联的实例。在协作图中,关联角色是与具体语境有关的暂时的类元之间的关系,关系角色的实例也是链。链表示为一个或多个相连的线或弧。

Directed Link image


Annotations

Text image

Note image

Note Link image

Hyperlink image

Rectangle image

Rounded Rectangle image

Ellipse image


Robustness

Boundary 边界 image 我们需要用一个抽象来封装模型中的引用。AGGREGATE就是一组相关对象的集合,我们把它作为数据修改的单元。每个AGGREGATE都有一个根(root)和一个边界(boundary)。边界定义了AGGREGATE的内部都有什么。根则是AGGREGATE所包含的一个特定ENTITY。对AGGREGATE而言,外部对象只可以引用根,而边界内部的对象之间则可以互相引用。除根以外的其他ENTITY都有本地标识,但这些标识只在AGGREGATE内部才需要加以区别,因为外部对象除了根ENTITY之外看不到其他对象。

Entity 实体 image 由标识定义的对象被称作ENTITY ENTITY(实体)有特殊的建模和设计思路。它们具有生命周期,这期间它们的形式和内容可能发生根本改变,但必须保持一种内在的连续性。为了有效地跟踪这些对象,必须定义它们的标识。它们的类定义、职责、属性和关联必须由其标识来决定,而不依赖于其所具有的属性。即使对于那些不发生根本变化或者生命周期不太复杂的ENTITY,也应该在语义上把它们作为ENTITY来对待,这样可以得到更清晰的模型和更健壮的实现。

ENTITY可以是任何事物,只要满足两个条件即可, 一是它在整个生命周期中具有连续性, 二是它的区别并不是由那些对用户非常重要的属性决定的。 ENTITY可以是一个人、一座城市、一辆汽车、一张彩票或一次银行交易。

Control 控制权 image

WangShuXian6 commented 5 years ago

starUML Classes(basic)

Class

image image

image


Visibility image

Add Note image


Add Attribute image

Add Operation image

Add Template parameter image

Reception image


Add Sub-Class image

Add Super-Class image

Add Provided Interface image

Add Required Interface image


Add Associated Class image

Add Aggregated Class image

Add Composited Class image


Add Port image

Add Part image

WangShuXian6 commented 5 years ago

UML的关系

在UML中有4种关系:依赖、关联、泛化和实现。


(1)依赖(Dependency)

依赖是两个模型元素间的语义关系,其中一个元素(独立事务)的变化会影响另一个元素(依赖事务)的语义。在图形中,依赖用一条可能有方向的虚线表示,偶尔在其上还带有一个标记 image


(2)关联(Association)

关联指明一个对象与另一个对象之间的关系。在图形中,关联用一条实线表示,它可能有方向,偶尔在其上还有一个标记。

读者类和图书类之间的关联关系 0-无限个读者与0-无限个图书相关联 image


(3)泛化(Generalization)

泛化是一种一般化到特殊化的关系,是一般事物(父类)和该事物较为特殊的种类(子类)之间的关系,子类继承父类的属性和操作,除此之外,子类还添加新的属性和操作。 在图形中,泛化关系用带有空心箭头的实线表示,该实线指向父类 image


(4)实现(Realization)

实现是类之间的语义关系,其中的一个类指定了由另一个类必须执行的约定。 在两种地方会遇到实现关系,一种是在接口和实现它们的类或构件之间,另一种是在用例和实现它们的协作之间。 在图形中,实现关系用一条带有空心箭头的虚线表示,它是泛化和依赖关系两种图形的结合 image

WangShuXian6 commented 5 years ago

uml 常用图表(9种):

UML图 基本概念
用例图(User Case Diagram) 用户所能观察到的系统功能的模型图
类图(Class Diagram) 显示了类模型的静态结构关系
对象图(Object Diagram) 显示了对象模型的静态结构关系
顺序图(Sequence Diagram) 交互关系的表现图
协作图(Collaboration Diagram) 协作关系的表现图
状态图(Statechart Diagram) 基于事件反应的动态行图
活动图(Activity Diagram) 描述了业务实现用例的工作流程
构件图(Compoment Diagram) 主要用于描述各种软件构件之间的依赖关系
部署图(Deployment Diagram) 用来显示系统中软件和硬件的物理架构
WangShuXian6 commented 5 years ago

Class Diagram 类图

Select Model | Add Diagram | Class Diagram in the Menu Bar or select Add Diagram | Class Diagram in Context Menu. 创建类图

首先选择一个元素,其中包含一个新的类图作为子元素。 选择型号| 添加图| 菜单栏中的类图或选择添加图| 上下文菜单中的类图。 http://www.uml-diagrams.org/class-diagrams-overview.html


Model Element 模型元素

模型元素是所有UML模型元素的抽象元素。

通过双击或按下选定的模型元素,可以将QuickEdit用于Enter模型元素。


Classifier 分类器

分类器是以下的抽象元素:

Class 类 Interface 接口 Signal 信号 DataType 数据类型 PrimitiveType Enumeration 列举 Component 零件 Artifact 神器

可以通过双击或按选定的分类器将QuickEdit用于分类Enter器

Name Expression : Edit name expression. 名称表达式:编辑名称表达式。 名称表达的语法 Syntax of Name Expression expression ::= [ '<<' stereotype >> ] [ visibility ] name stereotype ::= (identifier) visibility ::= '+' | '#' | '-' | '~' name ::= (identifier) Visibility : Change visibility property. 可见性:更改可见性属性。 Add Note : Add a linked note. 添加注意:添加链接的备注。 Add Attribute (Ctrl+Enter) : Add an attribute. 添加属性 Add Operation (Ctrl+Shift+Enter) : Add an operation. 添加操作 Add Reception : Add a reception. 添加接待处


Class 类

要创建一个类:

在工具箱中选择类。 在图上拖动为Class的大小。

要通过Menu创建一个Class(仅限模型元素):

选择要包含新类的元素。 选择型号| 添加| 菜单栏中的类或添加| 上下文菜单中的类。

您可以通过双击或按选定的类来使用QuickEdit for EnterClass。

Name Expression : Edit name expression. 名称表达式:编辑名称表达式。 名称表达的语法 Syntax of Name Expression expression ::= [ '<<' stereotype >> ] [ visibility ] name stereotype ::= (identifier) visibility ::= '+' | '#' | '-' | '~' name ::= (identifier)

Visibility : Change visibility property. 可见性:更改可见性属性 Add Note : Add a linked note. 添加注意:添加链接的备注 Add Attribute (Ctrl+Enter) : Add an attribute. 添加属性 Add Operation (Ctrl+Shift+Enter) : Add an operation. 添加操作 Add Template Parameter : Add a template parameter. 添加模板参数 Add Reception : Add a reception. 添加接待处 Add Sub-Class : Add a sub-class. 添加子类 Add Super-Class : Add a super class. 添加超类 Add Provided Interface : Add a provided interface. 添加提供的接口 Add Required Interface : Add a required interface. 添加必需的接口 Add Associated Class : Add an associated class. 添加关联类 Add Aggregated Class : Add an aggregated class. 添加聚合类 Add Composited Class : Add a composited class. 添加合成类 Add Port : Add a port. 添加端口 Add Part : Add a part. 添加零件


Attribute 属性

要添加属性:

选择一个分类器。 选择型号| 添加| 菜单栏中的属性或添加| 上下文菜单中的属性。 您可以通过双击或按下所选属性来使用QuickEdit for EnterAttribute。

Attribute Expression : Edit Attribute expression. 属性表达式:编辑属性表达式。 Syntax of Attribute Expression 属性表达式的语法

attribute ::= [ '<<' stereotype `>>` ] [ visibility ] name [':' type ] [ '[' multiplicity ']' ] [ '=' defaut-value ]
stereotype ::= (identifier)
visibility ::= '+' | '#' | '-' | '~'
name ::= (identifier)
type ::= (identifier)
multiplicity ::= multiplicity-bound [ '..' multiplicity-bound ]
multiplicity-bound ::= (number) | '*'
default-value ::= (string)

Visibility : Change visibility property. 可见性:更改可见性属性 Add (Ctrl+Enter) : Add one more attribute in the below. 在下面添加一个属性 Delete (Ctrl+Delete) : Delete the attribute 删除属性 Move Up (Ctrl+Up) : Move the attribute up. 向上移动属性 Move Down (Ctrl+Down) : Move the attribute down. 向下移动属性


Operation 操作

operation ::= [ '<<' stereotype `>>` ] [ visibility ] name [ '(' parameter-list ')' ] [ ':' return-type ]
stereotype ::= (identifier)
visibility ::= '+' | '#' | '-' | '~'
name ::= (identifier)
parameter-list ::= parameter [ ',' parameter ]*
parameter ::= (identifier)
return-type ::= (identifier)

Visibility : Change visibility property. 更改可见性属性 Add (Ctrl+Enter) : Add one more operation in the below. 在下面添加一个操作 Delete (Ctrl+Delete) : Delete the operation 删除操作 Move Up (Ctrl+Up) : Move the operation up. 向上移动操作 Move Down (Ctrl+Down) : Move the operation down. 向下移动操作


Parameter 参数


Template Parameter 模板参数

模板参数表达式

template-parameter ::= [ '<<' stereotype `>>` ] [ visibility ] name [':' type ] [ '=' defaut-value ]
stereotype ::= (identifier)
visibility ::= '+' | '#' | '-' | '~'
name ::= (identifier)
type ::= (identifier)
default-value ::= (string)

Visibility : Change visibility property. 更改可见性属性 Add (Ctrl+Enter) : Add one more template parameter in the below. 在下面添加一个模板参数 Delete (Ctrl+Delete) : Delete the template parameter. 删除模板参数 Move Up (Ctrl+Up) : Move the template parameter up. 向上移动模板参数 Move Down (Ctrl+Down) : Move the template parameter down. 向下移动模板参数


Template Parameter Substitution 模板参数替换

要添加模板参数替换:

选择模板绑定元素。 选择型号| 添加| 菜单栏中的模板参数替换或添加| 上下文菜单中的模板参数替换。 每个模板参数替换都应具有formal分配给模板元素的模板参数的actual属性和分配给模板参数的实际值的属性。


Interface 接口

要创建接口:

在工具箱中选择接口。 在图上拖动为Interface的大小。 要通过Menu创建接口(仅限模型元素):

选择要包含新接口的元素。 选择型号| 添加| 菜单栏中的界面或添加| 上下文菜单中的界面。

名称表达的语法

expression ::= [ '<<' stereotype `>>` ] [ visibility ] name
stereotype ::= (identifier)
visibility ::= '+' | '#' | '-' | '~'
name ::= (identifier)

Visibility : Change visibility property. 更改可见性属性 Add Note : Add a linked note. 添加链接的备注 Add Attribute (Ctrl+Enter) : Add an attribute. 添加属性 Add Operation (Ctrl+Shift+Enter) : Add an operation. 添加操作 Add Reception : Add a reception. 添加接待处 Add Sub-Interface : Add a sub-interface. 添加子接口 Add Super-Interface : Add a super interface. 添加超级接口 Add Realizing Class : Add an realizing class. 添加实现类

要将接口显示为套接字表示法,接口应具有依赖项


Signal 信号

创建信号:

在工具箱中选择信号。 在图上拖动为Signal的大小。 要通过Menu创建Signal(仅限模型元素):

选择要包含新信号的元素。 选择型号| 添加| 菜单栏中的信号或添加| 上下文菜单中的信号。


DataType 数据类型

要创建DataType:

在工具箱中选择DataType。 在图上拖动为DataType的大小。 要通过Menu创建DataType(仅限模型元素):

选择要包含新DataType的元素。 选择型号| 添加| 菜单栏中的DataType或添加| 上下文菜单中的DataType。


PrimitiveType


Enumeration 枚举

expression ::= [ '<<' stereotype `>>` ] [ visibility ] name
stereotype ::= (identifier)
visibility ::= '+' | '#' | '-' | '~'
name ::= (identifier)

Visibility : Change visibility property. 更改可见性属性 Add Note : Add a linked note. 添加链接的备注 Add Literal (Ctrl+Enter) : Add an enumeration literal. 添加枚举文字 Add Operation (Ctrl+Shift+Enter) : Add an operation. 添加操作


Enumeration Literal 枚举文字

expression ::= [ '<<' stereotype `>>` ] [ visibility ] name
stereotype ::= (identifier)
visibility ::= '+' | '#' | '-' | '~'
name ::= (identifier)

Visibility : Change visibility property. 更改可见性属性 Add (Ctrl+Enter) : Add one more literal in the below. 在下面添加一个文字 Delete (Ctrl+Delete) : Delete the literal 删除文字 Move Up (Ctrl+Up) : Move the literal up. 向上移动文字 Move Down (Ctrl+Down) : Move the literal down. 向下移动文字


Relationship 关系

关系是表示UML元素之间关系的抽象元素

关系的子类是

Generalization 概括 Association Aggregation 聚合 Composition 组成 Dependency 依赖 Interface Realization 接口实现 Component Realization 组件实现 Include 包括 Exclude 排除

expression ::= [ '<<' stereotype `>>` ] [ visibility ] name
stereotype ::= (identifier)
visibility ::= '+' | '#' | '-' | '~'
name ::= (identifier)

Visibility : Change visibility property. 更改可见性属性 Add Note : Add a linked note. 添加链接的备注


Generalization 泛化

要创建泛化:

在工具箱中选择“ 泛化”。 从元素拖动(特殊)并放在另一个元素上(一般)。


Association 关联

要创建关联(或定向关联):

在工具箱中选择关联(或定向关联)。 从元素拖动并放到另一个元素上。

expression ::= [ '<<' stereotype `>>` ] [ visibility ] name
stereotype ::= (identifier)
visibility ::= '+' | '#' | '-' | '~'
name ::= (identifier)

Visibility : Change visibility property. 更改可见性属性 Navigability : Change navigability property. 更改导航属性 Aggregation Kind : Change aggregationKind property. 聚合种类 Multiplicity : Change multiplicity property. 更改多重性属性 Add Qualifier : Add a qualifier (attribute) to the AssociationEnd. 添加限定符


Aggregation 聚合

要创建聚合:

在工具箱中选择聚合。 从元素拖动(成为一部分)并放在另一个元素上(作为整体)。

您还可以通过在关联的末端双击来使用QuickEdit for AssociationEnd


Composition 组合

要创建组合:

在工具箱中选择组合。 从元素拖动(成为一部分)并放在另一个元素上(作为整体)

您还可以通过在关联的末端双击来使用QuickEdit for AssociationEnd(


Dependency 依赖

要创建依赖关系:

在“ 工具箱”中选择“ 依赖关系”。 从元素(客户端)拖动并放在另一个元素(供应商)上。


Interface Realization 接口实现

要创建接口实现:

在Toolbox中选择Interface Realization。 从元素中拖出(实现)并放在界面上(待实现)。


Association Class 关联类

通过链接两个分类器来创建关联类:

在工具箱中选择关联类。 从元素拖动并放下另一个元素。 将创建与该关联相关联的关联和类。 通过链接关联和类来创建关联类:

在工具箱中选择关联类。 从关联(或类)拖动并放在类(或关联)上。 该课程将与协会相关联。


Template Binding 模板绑定

要创建模板绑定:

在工具箱中选择模板绑定。 从绑定元素拖动并放置模板元素。 如果需要,请创建模板参数替换

Visibility : Change visibility property. 更改可见性属性 Add Note : Add a linked note. 添加链接的备注 Add Template Parameter : Add a template parameter substitution 添加模板参数替换


Frame 框架

要创建特定模型元素的框架视图:

在工具箱中选择框架。 在图上拖动为Frame的大小。 在Element Picker对话框中选择 Frame表示的模型元素


UML类和对象图概述

https://www.uml-diagrams.org/class-diagrams-overview.html

类图是UML 结构图 ,它显示了类和 接口级别的设计系统的结构 ,显示了它们的特性, 约束 和关系 - 关联, 概括, 依赖等。

一些常见的类图类型是:

域模型图, 实现类图。

对象图 可以被视为实例级类图,它显示 了类和接口(对象)的实例规范, 具有值规范的插槽和 链接 (关联实例)。


领域模型图

域图概述 - 类,接口,关联,用法,实现,多样性。 image

实现类图

实现类图的元素 - 类,接口,关联,用法,实现。 image

对象图

对象图在现在过时的UML 1.4.2规范中定义 为 “实例图,包括对象和数据值。静态对象图是类图的实例;它显示了系统详细状态的快照。时间点。” 它还声明对象图是 “带有对象且没有类的类图”。

UML 2.4规范不提供对象图的定义, 除了 “以下节点和边缘通常在对象图中绘制:实例规范和链接(即关联)”。

注意,UML 2.5标准层次结构图(参见 UML 2.5图表概述),显示类图和对象图完全无关。其他一些权威的UML源声明, 仅包含 实例规范的组件图 和部署图 也是特殊类型的对象图。

对象图下面概述显示对象图的一些主要元件-命名和匿名 实例规格 为对象, 槽 具有值的规格,和 链接 (实例关联)。

对象图概述 - 实例规范,值规范,插槽和链接 image

WangShuXian6 commented 5 years ago

Package Diagram 包图

要创建包图:

首先选择一个元素,其中包含一个新的Package Diagram作为子元素。 选择型号| 添加图| 菜单栏中的包装图或选择添加图| 上下文菜单中的包图。 也可以看看

UML包图 https://www.uml-diagrams.org/package-diagrams-overview.html


Package 包

要在图表上创建包:

在工具箱中选择包。 在图上拖动为Package的大小。 要通过Menu创建一个Package(仅限模型元素):

选择要包含新包的元素。 选择型号| 添加| 菜单栏中的包或添加| 上下文菜单中的包。

expression ::= [ '<<' stereotype `>>` ] [ visibility ] name
stereotype ::= (identifier)
visibility ::= '+' | '#' | '-' | '~'
name ::= (identifier)

Visibility : Change visibility property. 更改可见性属性 Add Note : Add a linked note. 添加链接的备注 Add Sub-Package : Add a sub-package. 添加子包 Add Dependant Package : Add a dependant package. 添加依赖包 Add Depending Package : Add a depending package. 添加依赖包


Model 模型

要在图表上创建模型:

在工具箱中选择模型。 在图上拖动为Model的大小。 要通过Menu创建模型(仅限模型元素):

选择要包含新模型的元素。 选择型号| 添加| 菜单栏中的模型或添加| 上下文菜单中的模型。


Subsystem 子系统

要在图表上创建子系统:

在工具箱中选择子系统。 在图表上拖动作为子系统的大小。 要通过Menu创建子系统(仅限模型元素):

选择要包含新子系统的元素。 选择型号| 添加| 菜单栏中的子系统或添加| 上下文菜单中的子系统。

expression ::= [ '<<' stereotype `>>` ] [ visibility ] name
stereotype ::= (identifier)
visibility ::= '+' | '#' | '-' | '~'
name ::= (identifier)

Visibility : Change visibility property. 更改可见性属性 Add Note : Add a linked note. 添加链接的备注 Add Provided Interface : Add a provided interface. 添加提供的接口 Add Required Interface : Add a required interface. 添加所需的接口


Containment

要建立遏制关系:

选择遏制在工具箱。 从元素(要包含)拖动并放在容器元素上。

注意

没有Containment模型元素。Containment视图元素仅显示两个元素之间的包含关系。(包含的元素在模型资源管理器中显示为子元素)


包图是UML 结构图 ,显示了包级别设计系统的结构 。以下元素通常在包图中绘制: 包,可 包装元素, 依赖项, 元素导入, 包导入, 包合并。

模型图 是UML辅助 结构图 ,它显示了系统的一些抽象或特定视图,用于描述系统的体系结构,逻辑或行为方面。例如,它可以显示多层(也称为多层)应用程序的架构 - 多层应用程序模型。

包装图

包装图的一些主要元素如下图所示。网上购物,移动购物,手机购物和邮件购物 包 合并 购物车包。相同的4个包 使用 Payment包。付款和购物车包都 导入 其他包。

UML包图元素 - 包,导入,访问,使用,合并。 image

模型图

模型图是UML辅助 结构图 ,它显示了系统的一些抽象或特定视图,用于描述系统的一些架构,逻辑或行为方面。

下图显示了模型图的一些主要元素。分层应用程序是一个 “容器”模型 ,它包含三个其他 模型 - 表示层,业务层和数据层。有 依赖 这些包含模型之间定义。 UML模型图元素 - 模型,包,依赖 image

模型通常包含 包。包可以具有 依赖关系或其他关系,例如 导入,在它们之间定义。 您可以在此处找到一些 包图示例:

WangShuXian6 commented 5 years ago

Composite Structure Diagram 复合结构图

要创建复合结构图:

首先选择一个元素,其中包含一个新的复合结构图作为子元素。 选择型号| 添加图| 菜单栏中的复合结构图或选择添加图| 上下文菜单中的复合结构图。 http://www.uml-diagrams.org/composite-structure-diagrams.html


Collaboration 合作

要创建协作:

在工具箱中选择协作。 在图表上拖动为Collaboration的大小。 要通过Menu创建Collaboration(仅限模型元素):

选择要包含新协作的元素。 选择型号| 添加| 菜单栏中的协作或添加| 上下文菜单中的协作。 您可以将QuickEdit用于模型元素(请参阅模型元素)。


Port 端口

要创建端口:

在工具箱中选择端口。 单击要包含端口的元素(例如Class)。 要通过Menu创建端口(仅限模型元素):

选择要包含新端口的元素。 选择型号| 添加| 菜单栏中的端口或添加| 上下文菜单中的端口。 您可以通过双击或按下所选端口来使用QuickEditEnter端口。

名称表达的语法

expression ::= [ '<<' stereotype `>>` ] [ visibility ] name
stereotype ::= (identifier)
visibility ::= '+' | '#' | '-' | '~'
name ::= (identifier)

Visibility : Change visibility property. 可见性:更改可见性属性 Add Note : Add a linked note. 添加注意:添加链接的备注 Select Type : Select a Classifier and assign it to type property. 选择类型:选择分类器并将其分配给类型属性 Create Type : Create a Class and assign it to type property. 创建类型:创建一个类并将其分配给类型属性 Add Provided Interface : Add a provided interface. 添加提供的接口:添加提供的接口 Add Required Interface : Add a required interface. 添加必需的接口:添加所需的接口 Add Connected Part : Add a connected part. 添加连接部件


Part 零件

要创建零件:

在工具箱中选择零件。 单击要包含Part的元素(例如Class)。 您可以将QuickEdit用于端口(请参阅端口)。

注意 实际上,Part相当于Attribute,但在图表上表示不同。


Connector 连接器

要创建连接器:

在工具箱中选择连接器。 从元素(例如Port)拖动并放在另一个元素(例如Part)上。 您可以使用QuickEdit进行关系(请参阅关系)


Collaboration Use

要创建协作使用:

选择协作使用的工具箱。 在图表上拖动协作使用的大小。 您可以将QuickEdit用于模型元素(请参阅模型元素)。


Role Binding 角色绑定

要创建角色绑定:

在工具箱中选择角色绑定。 从协作中拖动使用并放置元素(例如,部分)。 您可以使用QuickEdit进行关系(请参阅关系)。


UML复合结构图

复合结构图可用于显示:

分类器的内部结构 - 内部结构图, 分类器通过端口与环境的交互 , 协作行为 - 协作使用图。 此类图表的术语“结构”在UML中定义为互连元素的组合,表示通过通信链接协作的运行时实例,以实现一些共同目标。


内部结构图

内部结构图显示 了分类器的内部结构 - 将该分类器分解为其属性,部件和关系。

以下图形元素通常在复合结构图中绘制,该 结构图显示分类器的内部结构: 类, 部件, 端口, 连接器, 用法。

复合结构图概述显示结构化分类器的内部结构元素 - 角色,部件,连接器。 image

内部结构图的一些 示例:

内部结构 - 银行ATM复合结构 https://www.uml-diagrams.org/bank-atm-uml-composite-diagram-example.html?context=cst-examples 内部结构 - Tomcat 7服务器组合结构 https://www.uml-diagrams.org/tomcat-server-uml-composite-structure-diagram-example.html?context=cst-examples


协作使用图表

系统 的行为是设计中的系统将实现的功能或已由某些现有系统实现的功能。系统中的对象通常彼此协作以产生系统的行为。

协作 的行为最终将由一组协作实例(由分类器指定)展示,这些实例通过发送信号或调用操作彼此通信。但是,为了理解设计中使用的机制,仅描述这些分类器的那些方面以及它们与完成从这些分类器投射的任务或相关任务集所涉及的交互可能是重要的。

协作允许我们通过识别实例将扮演的特定角色来仅描述一组实例的合作的相关方面。

接口允许指定实例的外部可观察属性,而无需确定最终将用于指定此实例的分类器。因此,协作中的角色通常会通过接口键入,然后规定参与实例必须展示的属性,但不会确定哪个类将指定参与的实例。

以下节点和边缘通常在复合结构图中绘制,该 结构图显示协作的行为: 协作, 连接器, 部件, 协作专业化, 依赖性。

协作元素 - 角色,部件,连接器。 协作访问显示医生和患者角色的合作。 image

协作使用表示一个特定用途(发生由所描述的图案的)或应用程序的协作 涉及特定类或实例播放一个具体情况角色协作的。协作使用通过将来自该上下文的特定实体绑定到协作的角色,显示协作所描述的模式如何应用于给定的 上下文。

协作使用元素 - 角色,部分,角色绑定。 协作使用childVisit代表 访问协作的一个特定用途。 image

分类器(在内部结构和协作中)扩展,具有自己的 协作用途。这些协作使用链接 与分类器的协作来给出分类器行为的描述。

可以选择分类器拥有的协作用途之一作为整体表示分类器的行为。通过该协作使用与分类器相关的协作示出了与该分类器的结构特征相对应的实例(例如,其属性和部分)如何交互以生成分类器的整体行为。

的代表协作可以用于在不同的抽象级别比由所提供的提供的分类器的行为的描述 内部结构 的分类器。分类的属性映射到角色的协作 由角色绑定 中的协作使用。

您可以 在此处查看协作图的 示例: https://www.uml-diagrams.org/observer-pattern-uml-composite-diagram-example.html

协作用作设计模式 - 观察者模式 Observer Pattern https://www.uml-diagrams.org/observer-pattern-uml-composite-diagram-example.html


银行ATM UML复合结构图示例

这是UML 内部结构图的一个例子, 它显示了银行自动柜员机(ATM)的复合结构。 该图的目的是显示>银行ATM的内部结构以及ATM的不同部分之间的关系 。

银行ATM通常由几个设备组成,如中央处理器单元(CPU),加密处理器,内存,客户显示器,功能键按钮(通常位于显示器附近),磁性和/或智能芯片读卡器,加密密码键盘,客户收据打印机,保险库,调制解调器。

银行ATM内部结构UML图示例 image

保险柜存储需要限制访问的设备和部件,包括现金分配机制,存款机制,多个安全传感器(例如磁,热,地震,气体),电子日志系统以维护系统日志等。自动提款机包括多个可移动的现金盒和存款机制 - 可拆卸的存储盒。

ATM通常通过公共交换电话线或租用线路上的某些调制解调器(例如拨号或ADSL)连接到银行或银行间网络。网络接口卡(NIC)可用作VPN连接中的高速备用。

下面的概述图解释了复合结构图,其中包含结构化分类器的内部结构元素 - 角色,部件,连接器。 合结构图概述显示结构化分类器的内部结构元素 - 角色,部件,连接器。 image


Apache Tomcat 7 Server UML Composite Structure Diagram Example

Apache Tomcat 7服务器 UML复合结构图示例

这是UML 内部结构图的一个示例, 它显示了非集群Apache Tomcat 7 Server的简化复合结构。

甲服务器元素表示一个卡塔利娜servlet容器 是Apache Tomcat 7 Web服务器。它是conf / server.xml配置文件中的单个最外层元素。Server元素可以包含可选的全局命名资源组件和一个或多个Services。

每个Service元素都是Executors 和Connectors的组合,它们共享一个Engine组件。引擎接收并处理来自一个或多个连接器的所有请求,并将完成的响应返回到连接器,以便将其传输回Web客户端。一个或多个Host元素嵌套在Engine中。

内部结构示例 - Apache Tomcat 7 Server image 所述主机元素表示一个虚拟主机,这是一个网络名称的用于服务器的关联(如“ WWW 。myCompany的。的COM ”)与在其上Tomcat正在运行的特定服务器。可以将多个网络名称与同一虚拟主机关联。

的背景信息元素表示一个Web应用程序,该特定的虚拟主机中运行。每个Web应用程序都基于Web应用程序归档(WAR)文件或包含相应解压缩内容的目录,如Servlet规范中所述。每个上下文必须具有唯一的上下文名称。


Observer Design Pattern UML Composite Structure Diagram Example

观察者设计模式 UML复合结构图示例

观察者模式是一种行为软件设计模式 ,其中主体维护一个称为观察者的订户列表,并通常通过调用其中一种方法通知它们任何状态变化。一旦收到状态改变通知,观察者可以请求该主题的当前状态。

Observer设计模式 的协作示例 如下所示。协作的两个角色 - 提供者和观察者 - 将由Subject和Observer接口键入的分类器实例播放。可以将这些界面视为 对扮演角色的分类器的外部可观察特征的投影 。 协作示例 - 观察者设计模式 image

可以使用属性的替代表示法显示相同的协作。协作图标连接到每个矩形,表示作为协作属性类型的接口。每行都标有属性(角色)的名称。 复合结构示例 - 观察者设计模式 image

WangShuXian6 commented 5 years ago

Object Diagram 对象图

要创建对象图:

首先选择一个元素,其中包含一个新的Object Diagram作为子元素。 选择型号| 添加图| 菜单栏中的对象图或选择添加图| 上下文菜单中的对象图。

UML对象图 http://www.uml-diagrams.org/class-diagrams-overview.html#object-diagram


Object 对象

要创建对象:

在工具箱中选择对象。 在图上拖动为Object的大小。 您可以通过双击或按下所选对象来使用QuickEdit for EnterObject。

名称表达的语法

expression ::= [ '<<' stereotype `>>` ] [ visibility ] name
stereotype ::= (identifier)
visibility ::= '+' | '#' | '-' | '~'
name ::= (identifier)

Visibility : Change visibility property. 可见性:更改可见性属性。 Add Note : Add a linked note. 添加注意:添加链接的备注。 Add Slot (Ctrl+Enter) : Add a slot. 添加插槽(Ctrl+Enter):添加插槽。 Add Linked Object : Add a linked object. 添加链接对象


Slot 插槽

添加插槽:

选择一个实例。 选择型号| 添加| 菜单栏中的插槽或添加| 上下文菜单中的插槽。 您可以通过双击或按下选定的插槽来使用QuickEdit for EnterSlot。

Slot表达式的语法

slot ::= [ '<<' stereotype `>>` ] [ visibility ] name [':' type ] [ '=' value ]
stereotype ::= (identifier)
visibility ::= '+' | '#' | '-' | '~'
name ::= (identifier)
type ::= (identifier)
value ::= (string)

Visibility : Change visibility property. 可见性:更改可见性属性。 Add (Ctrl+Enter) : Add one more slot in the below. 添加(Ctrl+Enter):在下面添加一个插槽。 Delete (Ctrl+Delete) : Delete the slot 删除(Ctrl+Delete):删除插槽 Move Up (Ctrl+Up) : Move the slot up. 上移(Ctrl+Up):向上移动插槽。 Move Down (Ctrl+Down) : Move the slot down. 下移(Ctrl+Down):向下移动插槽。


Artifact Instance 工件实例

要创建工件实例:

在“ 工具箱”中选择“ 工件实例”。 在图表上拖动为工件实例的大小。 您可以将QuickEdit用于模型元素(请参阅模型元素)。


Component Instance 组件实例

要创建组件实例:

在工具箱中选择组件实例。 在图表上拖动为组件实例的大小。 您可以将QuickEdit用于模型元素(请参阅模型元素)。


Node Instance 节点实例

要创建节点实例:

在“ 工具箱”中选择“ 节点实例”。 在图上拖动作为Node Instance的大小。 您可以将QuickEdit用于模型元素(请参阅模型元素)。


Link 链接

要创建链接(或定向链接):

在工具箱中选择链接(或定向链接)。 从实例拖动并放在另一个实例上。 您可以使用QuickEdit进行关系(请参阅关系)。

您还可以通过双击链接的末尾侧面来使用QuickEdit for LinkEnd。 名称表达的语法

expression ::= [ '<<' stereotype `>>` ] [ visibility ] name
stereotype ::= (identifier)
visibility ::= '+' | '#' | '-' | '~'
name ::= (identifier)

Visibility : Change visibility property. 可见性:更改可见性属性。 Navigability : Change navigability property. 导航:更改导航属性。 Aggregation Kind : Change aggregationKind property. 聚合种类:更改aggregationKind属性。 Multiplicity : Change multiplicity property. 多重性:更改多重性属性。


对象图

对象图在现在过时的UML 1.4.2规范中定义 为 “实例图,包括对象和数据值。静态对象图是类图的实例;它显示了系统详细状态的快照。时间点。” 它还声明对象图是 “带有对象且没有类的类图”。

UML 2.4规范不提供对象图的定义, 除了 “以下节点和边缘通常在对象图中绘制:实例规范和链接(即关联)”。

注意,UML 2.5标准层次结构图(参见 UML 2.5图表概述),显示类图和对象图完全无关。其他一些权威的UML源声明, 仅包含 实例规范的组件图 和部署图 也是特殊类型的对象图。

对象图下面概述显示对象图的一些主要元件-命名和匿名 实例规格 为对象, 槽 具有值的规格,和 链接 (实例关联)。

对象图概述 - 实例规范,值规范,插槽和链接 image

WangShuXian6 commented 5 years ago

Component Diagram 组件图

要创建组件图:

首先选择一个元素,其中包含一个新的组件图作为子元素。 选择型号| 添加图| 菜单栏中的组件图或选择添加图| 上下文菜单中的组件图。

UML组件图 http://www.uml-diagrams.org/component-diagrams.html


Component 组件

要创建组件:

在工具箱中选择组件。 在图表上拖动为Component的大小。 要通过Menu创建Component(仅限模型元素):

选择要包含新Component的Element。 选择型号| 添加| 菜单栏中的组件或添加| 上下文菜单中的组件。 您可以通过双击或按下所选组件来使用QuickEdit for EnterComponent。

名称表达的语法

expression ::= [ '<<' stereotype `>>` ] [ visibility ] name
stereotype ::= (identifier)
visibility ::= '+' | '#' | '-' | '~'
name ::= (identifier)

Visibility : Change visibility property. 可见性:更改可见性属性。 Add Note : Add a linked note. 添加注意:添加链接的备注。 Add Attribute (Ctrl+Enter) : Add an attribute. 添加属性(Ctrl+Enter):添加属性。 Add Operation (Ctrl+Shift+Enter) : Add an operation. 添加操作(Ctrl+Shift+Enter):添加操作。 Add Reception : Add a reception. 添加接待处 Add Provided Interface : Add a provided interface. 添加提供的接口 Add Required Interface : Add a required interface. 添加必需的接口 Add Port : Add a port. 添加端口 Add Part : Add a part. 添加零件

要抑制属性,请参阅抑制属性。https://github.com/staruml/staruml-gitbook/blob/master/formatting-diagram.md#suppress-attributes

要禁止操作,请参阅抑制操作。 https://github.com/staruml/staruml-gitbook/blob/master/formatting-diagram.md#suppress-operations

要显示或隐藏操作签名,请参阅显示操作签名。 https://github.com/staruml/staruml-gitbook/blob/master/formatting-diagram.md#show-operation-signature


Artifact 工件

要创建一个工件:

在工具箱中选择工件。 在图表上拖动为Artifact的大小。 要通过Menu创建工件(仅限模型元素):

选择要包含新工件的元素。 选择型号| 添加| 菜单栏中的工件或添加| 上下文菜单中的工件。 您可以将QuickEdit用于分类器(请参阅分类器)。

要抑制属性,请参阅抑制属性。

要禁止操作,请参阅抑制操作。

要显示或隐藏操作签名,请参阅显示操作签名。


Component Realization 组件实现

要创建组件实现:

在工具箱中选择组件实现。 从一个元素拖动(实现)并放下一个Component(即可实现)。 您可以使用QuickEdit进行关系(请参阅关系)。


UML Component Diagrams UML组件图

组件图显示了组件,提供的和所需的接口,端口以及它们之间的关系。此类图表用于基于组件的开发(CBD),以描述具有面向服务的体系结构(SOA)的系统。

基于组件的开发基于以下假设:如果需要,可以重复使用先前构建的组件,并且可以用其他“等效”或“符合”组件替换组件。

实现组件的工件旨在能够独立部署和重新部署,例如更新现有系统。

UML中的组件可以表示

逻辑组件(例如,业务组件,流程组件)和 物理组件(例如,CORBA组件,EJB组件,COM +和.NET组件,WSDL组件等), 以及实现它们的工件以及部署和执行它们的节点。预计将针对特定组件技术以及相关的硬件和软件环境开发基于组件的配置文件。

以下节点和边通常在组件图中绘制: 组件, 接口, 提供的接口, 所需的接口, 类, 端口, 连接器, 工件, 组件实现, 依赖性, 用法。这些主要元素如下图所示。

UML组件图的主要元素 - 组件,提供的接口,所需的接口,端口,连接器。 image

零件 https://www.uml-diagrams.org/component.html image

WangShuXian6 commented 5 years ago

Deployment Diagram 部署图

要创建部署图:

首先选择一个元素,其中包含一个新的部署图作为子元素。 选择型号| 添加图| 菜单栏中的部署图或选择添加图| 上下文菜单中的部署图。

UML部署图 http://www.uml-diagrams.org/deployment-diagrams-overview.html


Node 节点

要创建节点:

在工具箱中选择节点。 在图上拖动为Node的大小。 要通过Menu创建节点(仅限模型元素):

选择要包含新节点的元素。 选择型号| 添加| 菜单栏中的节点或添加| 上下文菜单中的节点。 您可以通过双击或按下所选节点来使用QuickEdit for EnterNode。

名称表达的语法

expression ::= [ '<<' stereotype `>>` ] [ visibility ] name
stereotype ::= (identifier)
visibility ::= '+' | '#' | '-' | '~'
name ::= (identifier)

Visibility : Change visibility property. 可见性:更改可见性属性。 Add Note : Add a linked note. 添加注意:添加链接的备注。 Add Attribute (Ctrl+Enter) : Add an attribute. 添加属性(Ctrl+Enter):添加属性。 Add Operation (Ctrl+Shift+Enter) : Add an operation. 添加操作(Ctrl+Shift+Enter):添加操作。 Add Reception : Add a reception. 添加接待处 Add Communicating Node : Add a communicating node. 添加通信节点 Add Deployed Component : Add a deployed component. 添加已部署的组件 Add Deployed Artifact : Add a deployed artifact. 添加已部署的工件

要抑制属性,请参阅抑制属性。

要禁止操作,请参阅抑制操作。

要显示或隐藏操作签名,请参阅显示操作签名。


Deployment 部署

要创建部署:

在工具箱中选择部署。 从元素(要部署)拖动并放在节点上。 您可以使用QuickEdit进行关系(请参阅关系)。


Communication Path 通信路径

要创建通信路径:

在工具箱中选择通信路径。 从节点拖动并放在另一个节点上。 您可以使用QuickEdit进行关联(请参阅关联)。


Deployment Diagrams Overview 部署图概述

部署图是一种结构图 ,显示了系统的体系结构,作为部署目标的软件工件的部署(分发)。

工件代表物理世界中作为开发过程结果的具体元素。工件的示例是可执行文件,库,存档,数据库模式,配置文件等。

部署目标 通常由节点表示,该节点 是硬件设备或某些软件执行环境。节点可以通过通信路径连接, 以创建任意复杂性的网络系统。

请注意,组件 直接部署到UML 1.x部署图中的节点。在UML 2.x中,工件 被部署到节点,工件可以 显示 (实现)组件。组件通过工件间接部署到节点。

部署图可以描述规范级别(也称为类型级别)或实例级别的架构(类似于类图和对象图)。

规范级别部署图显示了一些概述 部署 的伪影 来部署目标,而不引用假象或节点的特定实例。

实例级部署图显示 部署 的情况下的文物 ,以具体实例部署目标。例如,它可用于显示具有特定构建或部署服务器或设备的名称/ ID的开发,登台或生产环境的部署差异。

一些常见的部署图类型是:

通过工件实现组件(表现), 规范级别部署图, 实例级部署图, 系统的网络架构。


Manifestation of Components by Artifacts 通过工件表现组件

而组件图 显示组件和分类器之间,以及部件和关系部署图 - 部署 工件来部署目标的,缺少一些中间图是表现图被用于显示 表现 的(执行)的组件 由工件 和工件的内部结构。

由于表现图未由UML 2.4规范定义,因此可以使用组件图或部署图来显示工件对组件的表现。

通过工件表现组件。 image


Specification Level Deployment Diagram 规范级别部署图

规范级别(也称为类型级别)部署图显示了 对部署目标 的工件部署的一些概述 ,而没有引用工件或节点的特定实例。 规范级别部署图 - 部署到Tomcat JSP服务器和数据库模式的Web应用程序 - 到数据库系统 image


Instance Level Deployment Diagram 实例级部署图

实例级部署图显示 部署 的情况下的文物 ,以具体实例部署目标。例如,它可用于显示使用特定部署服务器或设备的名称/ ID进行开发,登台或生产环境的部署差异。

在下面的示例中,Web应用程序部署到应用程序服务器wsrv-01 和几个数据库模式 - 数据库服务器dbsrv-14。 实例级部署图 - 部署到Tomcat JSP服务器和数据库模式的Web应用程序 - 到数据库系统。 image


Specification Level Network Architecture 规范级网络架构

部署图可用于显示系统的逻辑或物理 网络架构 。网络体系结构图可以根本不显示任何工件或部署,也可以仅显示主要部件。

网络架构图 https://www.uml-diagrams.org/network-architecture-diagrams.html


Network Architecture Diagrams 网络架构图

UML标准没有单独的图表来描述 网络体系结构,也没有提供与网络相关的特定元素。 部署图 可以用于此目的,通常具有一些额外的网络 构造型。网络架构图通常会显示网络 节点和 它们之间的通信路径。

下面的网络图的示例显示了具有称为“两个防火墙非军事区”的配置的网络架构。非军事区(DMZ)是位于因特网和组织的内联网(专用网络)之间的“中立区”的主机或网络段。它可以防止外部用户直接访问组织的内部网络,同时不将Web,电子邮件或DNS服务器直接暴露给Internet。 网络架构图概述 - 网络设备和通信。 image

请注意,此图表使用的网络图标不属于UML标准。UML的节点或设备标准 是立方体的三维视图。


Network Devices 网络设备

Windows Server System参考体系结构(WSSRA)(请参阅Microsoft网络体系结构蓝图 [MSNAB 05])使用以下网络设备来显示整体网络体系结构:

切换设备 路由器设备 负载均衡设备 防火墙设备 虚拟专用网络(VPN)设备 这些设备 都没有 在UML标准中定义,因此下面的大部分描述和示例都使用Microsoft提供的网络图标和描述作为蓝图的一部分。

Hub

Hub是一种网络设备,用于链接OSI第1层(L1)的工作站和服务器等网络组件。集线器包含每个网络设备的端口,并将在一个端口上接收的数据复制到每个其他端口,无论是否需要。由于这个数据,很可能会发生传输冲突。

如果连接到集线器的两个设备同时开始发送,则发生冲突。因此,错误帧将复制到连接到集线器的所有设备。随着网络活动的增加,冲突变得更加频繁。

集线器不再被视为Microsoft WSSRA中的网络组件(请参阅Microsoft网络设备蓝图 [MSNAB 05]),因为它们已基本上被交换机取代。

在某些情况下仍可以使用集线器,例如支持集群节点的心跳机制的服务器集群成员之间的网络。

Switch

Switch是一种网络设备,可以在OSI第2层将网络数据包从一个设备移动到另一个设备。交换设备可以通过监控网络流量来确定数据包目标设备的MAC地址。确定目标地址后,交换机可以将特定数据包发送到连接到具有特定MAC地址的网络适配器的端口。(集线器将每个数据包发送到所有端口。)

企业级交换机可以在网段之间路由OSI第3层的数据包,因此可以用作路由器。

网络交换机。 image

Router

路由器是一种网络设备,它 根据OSI第3层地址将数据包从一个网段移动 到另一个网段。路由设备能够与网络上的其他路由器交换信息,以确定从一个设备到另一个设备的最有效路径。 网络路由器。 image

Load Balancer

负载均衡器是一种便于水平集群的网络设备,其中多个服务器配置为在网络上执行相同的功能。负载平衡功能可以由软件或硬件设备以两种方式之一提供:

分布式 - 群集中的每个节点都会接收发往群集的每个数据包。 路由 - 负载均衡器接收发往群集的每个入站数据包,并确定群集中要将数据包发送到哪个主机。

网络负载均衡器。 image

Firewall

防火墙是一种网络设备,它 使用OSI第3层地址控制网段之间的流量,以满足安全要求。防火墙服务可以由专用硬件设备实现(特别是为了保护内部网络和Internet之间的边界),也可以由运行软件防火墙的网络主机实现。

网络防火墙。 image 防火墙具有一组规则,允许执行防火墙服务角色的设备确定允许哪些流量通过,或者相反,允许哪些流量不允许。大多数防火墙都有“隐式拒绝”规则,因此如果不存在允许请求的规则,则拒绝该请求。


Network Segments 网络细分

甲网段被定义为在使用L2 LAN连接设备与L3它们之间不存在路由OSI层2(L2)互相通信的两个或多个设备。(Microsoft网络架构蓝图 [MSNAB 05])

网段可以是物理的或逻辑的(虚拟的)。逻辑段称为虚拟局域网(VLAN)。

L2 LAN连接设备正在OSI第2层上移动同一网段上的主机或设备之间的数据包。此功能通常由交换机提供。

L3 LAN连接设备正在OSI第3层移动多个网段之间的数据包。此功能通常由 路由器 或负载平衡器提供。

局域网(LAN)的由通过L2 LAN连接的设备或使用L3 LAN连接装置的多个网络段连接或者多个网络主机上创建的。L2和L3 LAN连接设备的电线通常由组织拥有。网络段上的主机和设备之间或LAN上的网段之间的连接速度通常为每秒10兆比特(Mbps),100Mbps或1Gbps。

广域网是由连接通过广域网的设备和技术的一个或多个LAN构成。端点WAN连接设备通常由组织拥有,但其间的设备通常由电话运营商拥有。

Backbone 骨干

Backbone是将多个交换机连接在一起的链路 。

网络骨干的例子。 image

通常缩放骨干网以允许联网计算机和服务器之间的多个同时对话以匹配其上的设备的速度和数量。例如,骨干网的大小可以为每秒1吉比特(Gbps),以允许在客户端计算机和以100Mbps连接到交换机的服务器之间的骨干上发生多个100Mbps的对话。

Multihoming 多宿主

多宿主服务器是在同一服务器上使用多个网络适配器,或在同一服务器上使用多个IP地址(可以与一个或多个网络适配器一起使用)。使用多个网络适配器意味着使用多个IP地址。

同一设备上的多个网络适配器允许分离流量以获得更好的性能或/和更强的安全性。多宿主的示例是 具有用于应用安全规则和路由的单独网络接口的公共 防火墙,以及具有用于分离周边和内部流量的多个网络接口的外围web服务器,并且允许用于负载平衡的前端接口。

WangShuXian6 commented 5 years ago

Use Case Diagram 用例图

要创建用例图:

首先选择一个元素,其中包含一个新的用例图作为子元素。 选择型号| 添加图| 菜单栏中的用例图或选择添加图| 上下文菜单中的用例图。

UML用例图 http://www.uml-diagrams.org/use-case-diagrams.html


Use Case Subject 用例主题

要创建用例主题:

在工具箱中选择用例主题。Use Case Subject

在图表上拖动作为用例主题的大小。

您可以将QuickEdit用于模型元素

角色 Actor

要创建一个Actor:

在工具箱中选择Actor。

在图上拖动为Actor的大小。

要通过Menu创建Actor(仅限模型元素):

选择要包含新Actor的元素。

选择型号| 添加| 菜单栏中的演员或添加| 上下文菜单中的演员。

您可以通过双击或按下选定的Actor 来使用QuickEdit for Actor。Enter

名称表达式:编辑名称表达式。

名称表达的语法

expression :: = ['<<'stereotype` >>`] [visibility] name
stereotype :: =(identifier)
visibility :: ='+'| '#'| ' - '| '〜'
name :: =(identifier)

可见性:更改可见性属性。

添加注意:添加链接的备注。

添加属性():添加属性。Ctrl+Enter

添加操作():添加操作。Ctrl+Shift+Enter

添加子Actor:添加子actor。

添加超级演员:添加超级演员。

添加关联用例:添加关联用例。

用例

要创建用例:

在工具箱中选择用例。

在图表上拖动用例的大小。

要通过Menu创建用例(仅限模型元素):

选择要包含新用例的元素。

选择型号| 添加| 菜单栏中的用例或添加| 上下文菜单中的用例。

您可以通过双击或按下选定的用例来使用QuickEdit for Use Case。Enter

名称表达式:编辑名称表达式。

名称表达的语法

expression :: = ['<<'stereotype` >>`] [visibility] name
stereotype :: =(identifier)
visibility :: ='+'| '#'| ' - '| '〜'
name :: =(identifier)

可见性:更改可见性属性。

添加注意:添加链接的备注。

添加扩展点():添加扩展点。Ctrl+Enter

添加关联的Actor:添加关联的actor。

添加包含的用例:添加包含的用例。

添加扩展用例:添加扩展用例。

延伸点

要添加扩展点:

选择一个用例。

选择型号| 添加| 菜单栏中的扩展点或添加| 上下文菜单中的扩展点。

您可以通过双击或按下选定的扩展点来使用QuickEdit for Extension Point。Enter

名称表达式:编辑名称表达式。

名称表达的语法

expression :: = ['<<'stereotype` >>`] [visibility] name
stereotype :: =(identifier)
visibility :: ='+'| '#'| ' - '| '〜'
name :: =(identifier)

可见性:更改可见性属性。

添加():在下面添加一个扩展点。Ctrl+Enter

删除():删除扩展点Ctrl+Delete

上移():向上移动扩展点。Ctrl+Up

下移():向下移动扩展点。Ctrl+Down

包括

要创建包含:

选择“ 包含在工具箱中”。

从用例中拖出并放在另一个用例(包括在内)上。

您可以使用QuickEdit进行关系

延伸

要创建扩展:

选择扩展的工具箱。

从用例(要扩展)中拖动并放在另一个用例上。

您可以使用QuickEdit进行关系


UML用例图

用例图通常被称为 行为图, 用于描述一些系统或系统(主题)应该或可以与系统的一个或多个外部用户(参与者)协作执行的一组操作(用例)。每个用例都应该为系统的参与者或其他利益相关者提供一些可观察和有价值的结果。

注意,UML 2.0到2.4规范也描述了用例图 作为类图的特化,而类图是一个结构图。

用例图实际上是双重的 - 它们都是 行为图,因为它们描述了系统的行为,它们也是 结构图 - 作为类图的一个特例,其中分类器被限制为 演员或 与每个相关的用例其他与协会。

[UML 2.5 FTF - Beta 1] 将用例从行为建模转移到UML 补充概念。因此,使用案例图是什么样的UML图是一个令人遗憾的困境。

业务用例图

虽然对业务建模的支持被声明为UML的目标之一,但UML规范没有提供特定于业务需求的符号。

Rational Unified Process(RUP) 中引入了业务用例,以表示在建模业务中执行的业务功能,流程或活动。一个业务主角 代表了一些人或系统外部的建模的业务发挥了作用,并与企业互动。业务用例应该为业务角色产生可观察的价值。

业务用例图的主要元素如下图所示。再次注意,业务用例和业务角色都没有在UML标准中定义,因此您需要使用一些支持这些的UML工具或创建自己的业务建模构造型。

业务用例图的主要元素 - 业务主角, 业务用例,业务边界, 包含 和扩展关系。

image

系统用例图

(系统)用例图用于指定:

(外部)要求,设计或分析系统(主题)所需的用法- 捕获系统应该做的事情;

主题提供的功能 - 系统可以做什么;

指定主题对其环境构成的要求- 通过定义环境应如何与主题交互以便能够执行其服务。

UML用例图的主要元素如下图所示。

image


UML用例图示例

https://www.uml-diagrams.org/use-case-diagrams-examples.html#use-cases-credit-cards-processing

业务用例图的示例

机场登机和安全检查业务模式

目的:用于机场登记和安全检查的业务用例图示例。

摘要:业务用例包括个人登记,团体登记(针对游客群体),安全检查等 - 表示在机场中发生的业务功能或过程以及服务于乘客的需求。

机场登机和安全检查UML图示例。 https://www.uml-diagrams.org/airport-checkin-uml-use-case-diagram-example.html

餐厅的商业模式

目的:餐厅业务用例图的两个替代示例 - 餐厅的外部和内部业务视图。

摘要:一些业务参与者具有与餐馆和业务用例相关的一些需求和目标,表达了业务参与者的期望。

餐厅业务用例UML图示例。

https://www.uml-diagrams.org/restaurant-uml-use-case-diagram-example.html

系统用例图的示例

售票机

目的:显示售票机允许上班族购票。

总结:与我们的自动售票机相关的通勤者的最终目标是购买机票。我们有一个购票单用例,因为这台自动售货机没有提供任何其他服务。售票机是 示例用例图的主题。Commuter和Bank是我们的参与者,都参与了购买票务 用例。

售票机UML用例图示例。

https://www.uml-diagrams.org/ticket-vending-machine-use-case-diagram-example.html?context=uc-examples

银行ATM UML用例图示例

目的:描述自动柜员机(ATM)或自动银行机(ABM)为银行客户提供的用例。

摘要:客户使用银行ATM检查他/她的银行账户余额,存入资金,提取现金和/或转移资金(用例)。ATM技术员为ATM提供维护和维修服务。

银行ATM UML用例图示例。

https://www.uml-diagrams.org/bank-atm-uml-use-case-diagram-example.html?context=uc-examples

销售点(POS)终端

目的:超市中销售点(POS)终端或结账的用例示例。

摘要:Checkout用例涉及客户,文员和信用支付服务参与者,包括扫描项目,计算总额和税金以及付款用例。这是一个大型复杂用例的示例,分为几个较小的用例。

销售点(POS)终端UML用例图示例。

https://www.uml-diagrams.org/examples/point-of-sales-uml-use-case-diagram-example.html

电子图书馆在线公共访问目录(OPAC)

目的:列出电子图书馆在线公共访问目录的顶级用例。

摘要:图书馆的顾客可以在线搜索图书馆目录,以查找各种资源 - 书籍,期刊,音频和视觉材料,或图书馆控制下的其他项目。顾客可以保留或更新项目,提供反馈并管理他们的帐户。

电子图书馆在线公共访问目录(OPAC)UML用例图示例。

https://www.uml-diagrams.org/online-library-uml-use-case-diagram-example.html

在线购物用例图

目的:为在线购物的网络客户提供顶级用例。

简介:Web客户演员 使用一些网站在线购物。顶级用例 是查看项目,进行购买和客户注册。

在线购物UML用例图示例。

https://www.uml-diagrams.org/examples/online-shopping-use-case-diagram-example.html?context=uc-examples

信用卡处理系统

目的:定义信用卡处理系统 (信用卡支付网关)的主要用例。

摘要:商家代表客户向信用卡支付网关提交信用卡交易请求。发行客户信用卡的银行是可以批准或拒绝交易的行为人。如果交易获得批准,资金将转入商家的银行账户。

信用卡处理系统UML用例图示例。

https://www.uml-diagrams.org/examples/online-shopping-credit-cards-use-cases-example.html?context=uc-examples

网站管理

目的:网站管理或管理UML用例图示例。

摘要:网站管理员演员可以管理用户组,用户,用户会话和日志。帮助台员工使用网站管理员可用的一部分功能。

网站管理UML用例图示例。

https://www.uml-diagrams.org/examples/website-admin-use-case-diagrams-example.html?context=uc-examples

医院管理

目的:描述医院接待处提供的主要服务(功能)。

简介:此UML用例图示例显示了医院接收的参与者和用例。 医院接待子系统或模块支持医院接待员的许多工作职责。接待员安排患者的预约和入院,通过电话和/或患者到达医院时从患者收集信息。

对于将留在医院的患者(“住院病人”),她或他应该在病房中分配床。接待员也可能会收到患者的付款,将其记录在数据库中,并提供收据,文件保险索赔和医疗报告。

接待处的医院管理用例示例。

https://www.uml-diagrams.org/examples/hospital-management-use-case-diagram-example.html

放射学诊断报告UML用例图示例

目的: 放射学诊断报告简单图像和数字报告(SINR)IHE放射学综合概况的UML用例图示例。

摘要:在诊断报告的初始阶段,阅读医师通过生成DICOM结构化报告(SR)对象草案来记录诊断。Report Creator actor将DICOM SR对象传输到Report Manager。外部报告存储库访问参与者是从成像部门获取其他企业部门报告(如实验室和病理学)的网关。

放射学诊断报告UML用例图示例。

https://www.uml-diagrams.org/radiology-diagnostic-report-uml-use-case-diagram-example.html?context=uc-examples

软件保护和许可

目的: 用例图示例显示了Sentinel EMS Application支持的软件许可用例的简化视图。

简介:Sentinel许可证开发工具包(Sentinel LDK)是SafeNet Inc.的软件数字版权管理(DRM)解决方案,可提供强大的复制保护,知识产权(IP)保护以及安全灵活的许可。Sentinel EMS应用程序处理三个主要工作流程 - 许可证计划,订单处理和生产以及试用软件的激活。

软件保护和许可UML用例图示例。

https://www.uml-diagrams.org/examples/software-license-use-case-diagram-example.html?context=uc-examples


机场登记和安全检查 UML用例图示例 Airport Check-In and Security Screening

这是业务用例图的示例,该图通常在业务建模期间创建, 并在此处以Rational Unified Process(RUP)表示法呈现。

商业行为者 是乘客,导游,未成年人(儿童),有特殊需要的乘客(例如残疾人),所有人都扮演与机场业务相关的外部角色。

业务用例 包括个人登记,团体登记(针对游客群体),安全检查等 - 代表在机场中发生的业务功能或过程并满足乘客的需求。

商务用例行李托运和行李处理延长了登记用例,因为乘客可能没有行李,因此行李托运和搬运是可选的。

用于机场登记和安全检查的用例图示例。

image

餐厅 UML用例图示例 Restaurant

在这里,我们提供了两个餐厅业务用例图的替代示例,以Rational Unified Process(RUP)使用的表示法呈现。

第一个例子显示了餐馆的外部商业视图。我们可以看到几个 业务参与者 有一些需求和目标与餐厅和业务用例相关, 表达了业务参与者的期望。

餐厅的业务用例图 - 外部视图

image

例如,客户希望有膳食, 候选人 - 申请工作和承包商 - 来修理一些设备。请注意,我们没有Chef或Waiter这样的演员。它们不是外部角色,而是我们建模的业务的一部分 - 餐厅,因此 - 它们不是演员。就RUP而言,Chef和Waiter都是商业工作者。

第二个示例显示了餐馆的内部业务视图。在这种情况下,我们可以看到餐厅有几个业务用例代表的业务流程 ,为外部业务角色提供一些服务 。与前面的例子一样,演员有一些与餐厅相关的需求和目标。

这种方法对于为业务提供给不同类型客户的服务建模更有用,但阅读这种业务用例图可能会令人困惑。

例如,客户现在已连接到Serve Meal用例, 供应商 - 购买耗材。我们现在有新的演员潜在客户通过阅读广告和获取有关餐厅的一些信息参与广告用例。与此同时,承包商演员已经离开,因为维修设备 不是通常由餐馆提供的服务。

餐厅的业务用例图 - 内部视图

image 尽管如此,在这个例子 中,由于与以前相同的原因,我们没有演员作为Chef或Waiter - 他们都不是外部角色,而是我们建模的业务的一部分。

售票机 UML用例图示例 Ticket Vending Machine

售票机,即出售和生产通勤者票的自动售货机,是 示例用例图的主题。这种机器是硬件和软件的组合,它只是向客户销售门票的整个系统的一部分。所以我们将使用«Subsystem»原型。

售票机允许上班族买票。所以Commuter 是我们的主要演员。

售票机为通勤者和银行行为者提供购买票务用例。

image

与我们的售票机相关的通勤者的最终目标是购买机票。所以我们有Purchase Ticket 用例。如果使用借记卡或信用卡付款,购买机票可能涉及银行。所以我们还要添加另一个演员 - 银行。参与用例的两个参与者都通过关联连接到用例。

用例行为 可以用自然语言文本(不透明行为)来描述,这是当前的常见做法,或者使用UML 行为图。UML工具应该允许绑定行为到描述的用例。下面使用UML 2.5表示法显示了Purchase Ticket用例与activity表示的行为的此类绑定示例。

Purchase Ticket用例拥有Purchase Ticket活动所代表的行为。

image

售票机 UML活动图示例

这是 描述Purchase Ticket用例行为 的UML 活动图的示例。

活动由 需要购买机票的Commuter 演员开始。售票机将从Commuter请求旅行信息。此信息将包括门票的数量和类型,例如是月票,单程票还是圆票,路线号,目的地或区号等。

根据提供的旅行信息票自动售货机将计算到期付款和请求付款选项。这些选项包括现金支付,信用卡或借记卡支付。如果通过卡片支付由另一个参与者Commuter选择,银行将通过授权支付参与活动。

使用UML活动图描述的Purchase Ticket用例行为示例。

image 付款完成后,门票将分发给通勤者。现金支付可能会导致一些变更,因此在这种情况下,更改将分配给Commuter。售票机将在活动结束时显示一些“谢谢”屏幕。

WangShuXian6 commented 5 years ago

Sequence Diagram 序列图

创建序列图

要创建序列图:

首先选择一个元素,其中包含一个新的序列图作为子元素。

选择型号| 添加图| 菜单栏中的序列图或选择添加图| 上下文菜单中的序列图。

UML序列图 https://www.uml-diagrams.org/sequence-diagrams.html

您可以显示或隐藏消息的序列号。显示或隐藏消息的序列号:

选中或取消选中Sequence Diagram或Communication Diagram的属性。showSequenceNumber

生命线 Lifeline

要创建生命线:

在工具箱中选择生命线。

在图表上拖动作为生命线的大小。

通过拖放从分类器(类,接口等)创建生命线:

从资源管理器中拖动分类器。

放在图上。

您可以通过双击或按下选定的生命线来使用QuickEdit for Lifeline。Enter

生命线表达:编辑生命线表达。

生命线表达的语法

lifeline :: = ['<<'stereotype` >>`] [visibility] name ['['selector']'] [':'type]
stereotype :: =(identifier)
visibility :: ='+'| '#'| ' - '| '〜'
name :: =(identifier)
selector :: =(string)
type :: =(identifier)

可见性:更改可见性属性。

添加注意:添加链接的备注。

选择类型:选择生命线的类型。

创建类型:创建一个类作为生命线的一种类型。

使用生命线添加消息:添加带有生命线的消息。

使用生命线添加创建消息:添加带有生命线的创建消息。

添加自我消息:添加自我消息。

添加找到的消息:添加找到的消息。

添加丢失的消息:添加丢失的消息。

从门添加消息:从门添加消息。

向门添加消息:向门添加消息。

信息 Message

要创建消息(或自我消息):

在工具箱中选择消息(或自我消息)。

从生命线中拖出并放在另一条生命线上。(如果你想创建一个自我消息,只需点击生命线。)

您可以通过在Property Editor中设置属性来更改消息的类型:messageSort

synchCall :同步通话

asynchCall :异步调用

asynchSignal :异步信号

createMessage :创建消息

deleteMessage :删除邮件

reply : 回复消息

您可以使用自定义序列号而不是自动生成的整数序列号。

输入每个Message的属性的序列号。sequenceNumber

将序列图或通信图的属性更改为。sequenceNumberingcustom

您可以通过双击或按选定的消息来使用QuickEdit for Message。Enter

消息表达式:编辑消息表达式。

消息表达式的语法

message :: = ['<<'stereotype` >>`] [visibility] [target'='] name ['('arguments')']
stereotype :: =(identifier)
visibility :: ='+'| '#'| ' - '| '〜'
target :: =(identifier)
name :: =(identifier)
arguments :: =(string)

可见性:更改可见性属性。

添加注意:添加链接的备注。

选择操作:选择操作作为消息的签名。

创建操作:创建操作作为消息的签名。

选择信号:选择信号作为信息的签名。

创建信号:创建信号作为消息的签名。

添加回复消息:添加回复消息。

端点 Endpoint

要创建端点:

在工具箱中选择端点。

单击图表上的位置。

门 Gate

要创建一个门:

在工具箱中选择Gate。

单击图表上的位置。

不可变状态 State Invariant

要创建状态不变量:

在工具箱中选择状态不变量。

单击要附加状态不变量的生命线。

您可以通过双击或按下选定的状态不变量来使用QuickEdit for State Invariant。Enter

不变量:编辑不变属性。

延续 Continuation

创建延续:

在工具箱中选择继续。

在图表上拖动为Continuation的大小。

您可以将QuickEdit用于模型元素

组合片段 Combined Fragment

要创建组合片段:

在工具箱中选择Combined Fragment。

在图表上拖动为Combined Fragment的大小。

您可以通过在属性编辑器中设置属性来更改运算符:interactionOperator

alt : 备择方案

opt : 选项

par : 平行

loop :迭代

critical :关键区域

neg :消极的

assert :断言

strict :严格的测序

seq :弱测序

ignore : 忽视

consider :考虑一下

break :休息

您可以通过双击或按下选定的Combined Fragment 来使用QuickEdit进行组合碎片。Enter

名称表达式:编辑名称表达式。

名称表达的语法

expression :: = ['<<'stereotype` >>`] [visibility] name
stereotype :: =(identifier)
visibility :: ='+'| '#'| ' - '| '〜'
name :: =(identifier)

添加操作数:添加交互操作数。

中间操作数 Interation Operand

您可以通过双击或按下选定的交互操作数来使用QuickEdit for Interaction Operand。Enter

警卫:编辑警卫财产。

交互使用 Interaction Use

要创建交互使用:

在工具箱中选择交互使用。

在图表上拖动为“交互使用”的大小。


UML序列图

序列图是最常见的一种 交互图,它侧重于 许多生命线之间的 消息交换 。

序列图通过关注交换的消息序列以及它们在生命线上的相应出现规范来描述交互。

以下节点和边通常在UML 序列图中绘制: 生命线, 执行规范, 消息, 组合片段, 交互使用, 状态不变, 延续, 破坏发生。

序列图的主要元素如下图所示。

image

可以 在此处找到一些 序列图示例:

在线书店 https://www.uml-diagrams.org/online-shopping-uml-sequence-diagram-example.html?context=seq-examples

使用DWR,AJAX,JSON向Pluck提交评论 https://www.uml-diagrams.org/pluck-comments-uml-sequence-diagram-example.html

Web应用程序中的Facebook用户身份验证 https://www.uml-diagrams.org/facebook-authentication-uml-sequence-diagram-example.html

Spring和Hibernate事务管理 https://www.uml-diagrams.org/examples/spring-hibernate-transaction-sequence-diagram-example.html?context=seq-examples

生命线

生命线是一个 命名元素 ,代表交互中的个体参与者。虽然零件 和结构特征可能具有大于1的多重性,但生命线仅代表一个 交互实体。

如果引用的可连接元素是多值的(即,具有多重性> 1),则生命线可以具有表达式(选择器),该表达式指定该生命线表示哪个特定部分。如果省略选择器,则这意味着选择多值可连接元素的任意代表。

使用符号来显示生命线,该符号由形成其“头部”的矩形和随后的垂直线(可以是虚线)组成,该垂直线表示参与者的生命周期。

标识生命线的信息以下列格式显示在矩形内(稍微修改一下UML 2.4标准中的内容):

lifeline-ident :: = [ connectable-element-name ['[' selector ']']] [':' class-name ] [ 分解 ] | ' 自我 '
选择 :: = 表达式
分解 :: = ' REF ' 相互作用-IDENT [ ' 严格 ']

其中class-name是表示的可连接元素引用的类型。请注意,虽然语法允许,但lifeline-ident不能为空。

生命线头部的形状基于 该生命线所代表的部分的 分类器。通常头部是一个包含类名称的白色矩形。

image

如果名称是关键字self,则生命线代表包含拥有生命线的交互的分类器的对象。 即使包括self,封闭器的端口也可以单独显示。

阿门是一个消息结束对与A,连接点消息 的外部相互作用片段 与交互片段内的消息。

门之间的门和消息的目的是为每条消息指定具体的发送者和接收者。盖茨扮演不同的角色:

  • 正式的大门 - 关于互动

  • 实际的大门 - 关于互动的用途

  • 表达门 - 关于组合片段

  • 门是隐式或明确命名的。隐式门名称是通过连接消息的方向(“in”或“out”)和消息名称(例如in_search,out_read)来构造的。

门被标记为帧上的消息连接点。

交互片段

交互片段是 表示最通用交互单元的命名元素。每个交互片段在概念上就像是自身的交互。

交互片段没有通用的表示法。它的子类定义了自己的表示法。

交互片段的 示例如下:

  • 发生

  • 执行

  • 状态不变

  • 组合片段

  • 互动使用

发生

发生(完整的UML名称- 发生规范,即“事件描述”)是相互作用片段 ,其表示在的开始或结束时刻(事件)的力矩 消息 或在的开头或结尾 执行。

出现规范是交互的基本语义单位之一。交互的含义由出现规范描述的出现顺序指定。

每个出现规范都出现在一条生命线上。沿着救生索订购救生索的发生规格。

发生规范没有表示法,只是在消息的开头或结尾或执行规范的开头或结尾处的一个点。

出现的 例子是:

  • 消息发生

  • 执行发生

消息发生

消息发生(完整的UML名称- 消息发生规范)是一种发生 其表示这样的事件作为发送和接收的信号或调用或接收的操作调用。

毁灭的发生

销毁发生是一种消息发生 ,表示生命线描述的实例的破坏。它可能导致随后通过合成破坏此对象拥有的其他对象 。在给定生命线上的销毁事件下方不会出现其他事件。

事件的完整UML名称是销毁发生规范。直到UML 2.4它被称为破坏事件,而更早 - 停止。

实例的破坏由生命线底部的X形式的十字形描绘。

image

执行发生

执行发生(完整UML名称 - 执行发生规范)是 表示动作或行为开始或结束的时刻的事件。

执行发生恰好引用一个执行规范 ,该规范描述在此执行发生时启动或完成的执行。

image

执行

执行(全名 - 执行规范,非正式地称为激活)是 交互片段 ,它代表参与者生命周期中的一段时间。

  • 在生命线内执行一个行为或行动单位 ,

  • 向另一位参与者发送信号,

  • 等待来自其他参与者的回复消息。

请注意,执行规范包括行为未激活但只是等待回复的情况。执行的持续时间由两次执行事件表示 - 开始发生和结束发生。

执行在生命线上表示为细灰色或白色矩形。 image

执行规范可以用更宽的标记矩形表示,其中标签通常标识已执行的操作。

image

对于涉及原子动作(例如读取信号的属性 (由消息传达))的执行规范,动作符号可以与接收事件规范相关联,以强调整个动作仅与一个事件相关联。规范(以及开始和结束关联指的是相同的事件规范)。

同一生命线上的 重叠执行规范由重叠矩形表示。

image

不可变状态

甲状态不变是一个相互作用片段 表示的运行时约束 所述交互的参与者。它可用于指定不同类型的约束,例如属性或变量的值,内部或外部状态等。

在执行下一个出现规范之前立即评估约束,以便已经执行了未明确建模的所有动作。如果约束为true,则跟踪是有效跟踪,否则跟踪是无效跟踪。

状态不变通常在生命线上显示为花括号中的约束。

image

它也可以显示为状态符号,表示检查生命线所代表的对象状态的约束的等价物。这可以是相应分类器的分类器行为的内部状态,也可以是基于生命线的“黑盒”视图的某种外部状态。

image

状态不变量可以可选地显示为 与出现规范相关联的注释。

交互使用

交互使用是一种 允许使用(或调用)另一种交互的交互片段。通过交互使用可以简化大而复杂的序列图。在几个其他交互之间重用某些交互也很常见。

参考互动有正式的门。交互使用提供了一组必须与交互的正式门匹配的实际门。

交互使用的作用如下:

  • 将引用的交互的内容复制到需要使用此交互的位置,

  • 用参数替换形式参数,

  • 将正式大门与实际大门连接起来。

交互使用显示为 带有运算符ref的组合片段。

image

使用ref运算符的语法是:

interaction-use ::= [ attribute-name '=' ] [ collaboration-use   '.' ]   interaction-name [ io-arguments ]   [ ':' return-value ]
io-arguments ::= '(' io-argument   [ ',' io-argument ]*   ')'
io-argument ::= in-argument   |   'out'   out-argument

该属性名指的是在将接收交互结果的相互作用生命线之一的属性。请注意,这会将交互结果限制为仅分配给属性。在现实生活中,方法调用的结果可以从调用方法分配给变量。

的协作使用的是协作使用的标识结合协作的生命线。在该协作中,交互名称就是这种情况。

在IO-参数是列表中和/或进行 交互的参数。

image

UML规范强加的一个有时难以遵循的约束是交互使用必须涵盖在封闭交互上表示的所有相关生命线。这意味着所有这些生命线应该以某种方式彼此靠近。如果我们在同一个图表上使用另一个交互,那么根据UML的要求重新排列所有涉及的生命线可能会非常棘手。


网上购物 UML序列图示例

网上书店。在线客户可以搜索图书目录,查看所选图书的描述,将图书添加到购物车,结帐。

在线书店的UML序列图的一个例子。

image


提交评论给Pluck UML序列图示例

显示了如何使用各种AJAX技术将用户对某些文章的评论提交给Pluck。(请参阅使用DWR,AJAX,JSON向Pluck提交注释时具有类似语义 的交互概述图示例。)

用户提交的评论首先由托管文章的网站验证。 DWR技术(AJAX for Java)用于将用户注释HTML表单数据转换为Java对象和可能的验证错误 - 返回到JavaScript回调中的错误。

看起来好的评论被提交给Pluck服务器,托管所有文章的所有评论。 在这种情况下,AJAX技术也用于提交新评论以及返回所有最近评论(包括新评论)的列表。 JSON用于获取评论。

使用DWR,AJAX,JSON - UML序列图示例向Pluck提交注释。

image

该图还显示了一些持续时间约束。(免责声明:显示的约束是虚构的,不描述任何真实的通信。)例如,根据图表,发布注释的回调等待时间从1到4秒不等。同时,请求所有发布的评论最多只需100毫秒。


Facebook网络用户身份验证 UML序列图示例

显示了如何在Web应用程序中对Facebook(FB)用户进行身份验证以允许访问他/她的FB资源。Facebook使用OAuth 2.0协议框架,它支持Web应用程序(称为“客户端”),它通常不是FB资源所有者,而是代表FB用户,请求访问由FB用户控制并由FB服务器托管的资源。Web应用程序不是使用FB用户凭据来访问受保护资源,而是获取访问令牌。

Web应用程序应由Facebook注册,以具有应用程序ID(client_id)和机密(client_secret)。当收到对某些受保护的Facebook资源的请求时,Web浏览器(“用户代理”)被重定向到具有应用程序ID的Facebook授权服务器,并且在授权过程之后应将用户重定向到的URL重定向到该URL。

用户收到许可申请表。如果用户授权应用程序获取他/她的数据,则Facebook授权服务器将重定向回到之前指定的URI以及授权代码(“验证字符串”)。Web应用程序可以为OAuth访问令牌交换授权代码。

Facebook用户认证UML序列图示例

image

如果Web应用程序获得FB用户的访问令牌,则可以通过在Facebook Graph API请求中包含访问令牌来代表该FB用户执行授权请求。如果用户未授权Web应用程序,则Facebook会将重定向请求发送到之前指定的URI,并添加error_reason参数以通知Web应用程序授权请求被拒绝。


Spring和Hibernate事务 UML序列图示例

企业Java™的Spring应用程序开发框架集成了Hibernate事务管理。这里我们提供一个UML 序列图的例子, 它说明了与异常处理有关的事务管理。

当调用某个业务方法时,它可以被Spring Transaction Interceptor截获。这背后的场景拦截器创建了Hibernate会话并启动了Hibernate JDBC事务,因此业务方法将在新事务的上下文中运行。

业务方法执行可以完成(成功与否)而不抛出任何异常,或者抛出一些Java运行时(未经检查)异常或某些业务(已检查)异常。

Spring和Hibernate事务的异常处理显示为UML序列图

image

如果业务方法没有抛出任何异常或抛出一些业务(已检查)异常,则事务拦截器将尝试提交事务。当刷新 Hibernate JDBC事务(永久存储数据)时,此操作可能会失败,例如由于某些数据库约束违规。在这种情况下,事务将被回滚(即使业务方法执行成功)。

如果业务方法抛出一些Java运行时(未经检查)异常,则表明业务方法失败,并且事务拦截器将回滚事务。

最后,Hibernate会话将由Spring Transaction Interceptor关闭。

WangShuXian6 commented 5 years ago

通信图 Communication Diagram

创建通信图

要创建通信图:

首先选择一个元素,其中包含一个新的通信图表作为子元素。

选择型号| 添加图| 菜单栏中的通信图或选择添加图| 上下文菜单中的通信图。

UML通信图 - http://www.uml-diagrams.org/communication-diagrams.html

您可以显示或隐藏消息的序列号。显示或隐藏消息的序列号:

选中或取消选中Sequence Diagram或Communication Diagram的属性。showSequenceNumber

生命线

要创建生命线:

在工具箱中选择生命线。

在图表上拖动作为生命线的大小。

通过拖放从分类器(类,接口等)创建生命线:

从资源管理器中拖动分类器。

放在图上。

您可以通过双击或按下选定的生命线来使用QuickEdit for Lifeline。Enter

生命线表达:编辑生命线表达。

生命线表达的语法

lifeline :: = ['<<'stereotype` >>`] [visibility] name ['['selector']'] [':'type]
stereotype :: =(identifier)
visibility :: ='+'| '#'| ' - '| '〜'
name :: =(identifier)
selector :: =(string)
type :: =(identifier)

可见性:更改可见性属性。

添加注意:添加链接的备注。

选择类型:选择生命线的类型。

创建类型:创建一个类作为生命线的一种类型。

添加连接的生命线:添加带连接器的生命线。

使用生命线添加创建消息:添加带有生命线的创建消息。

添加自连接器:添加自连接器。

添加转发消息:添加带有连接生命线的转发消息。

添加反向消息:添加带有连接生命线的反向消息。

连接器

要创建连接器(或自连接器):

在工具箱中选择连接器(或自连接器)。

从生命线中拖出并放在另一条生命线上。(如果要创建自连接器,只需单击生命线。)

您可以通过双击或按下选定的连接器来使用QuickEdit for Connector。Enter

名称表达式:编辑名称表达式。

名称表达的语法

expression :: = ['<<'stereotype` >>`] [visibility] name
stereotype :: =(identifier)
visibility :: ='+'| '#'| ' - '| '〜'
name :: =(identifier)

可见性:更改可见性属性。

导航:更改导航属性。

添加转发消息:在连接器上添加转发消息。

添加反向消息:在连接器上添加反向消息。

信息

要创建转发消息:

选择转发邮件的工具箱。

单击连接器。

要创建反向消息:

在工具箱中选择反向消息。

单击连接器。

您可以使用自定义序列号而不是自动生成的整数序列号。

输入每个Message的属性的序列号。sequenceNumber

将序列图或通信图的属性更改为。sequenceNumberingcustom

您可以使用QuickEdit for Message


UML通信图概述

通信图(在UML 1.x中称为协作图)是一种UML 交互图 ,它以自由形式排列使用顺序消息显示对象和/或部分 (表示为生命线)之间的交互 。

通信图对应(即可以转换为/从其中转换或替换)到简单的 序列图, 而没有诸如交互使用和组合片段之类的结构化机制。还假设消息超越 (即,接收的顺序与发送给定消息集的顺序不同)将不会发生或不相关。

在UML通信图中绘制了以下节点和边: 框架, 生命线, 消息。通信图的这些主要元素如下图所示。

UML通信图的主要元素

image

通信图可以显示在矩形框内 ,名称位于左上角的隔间中。

通信图标题类型没有特定的长格式名称。可以使用长格式名称交互(通常用于交互图)。

互动框架为通信图 BuyItem

image

通信图表 也没有特定的简短表格名称。可以使用短格式名称sd(通常用于交互图)。这SD是因为它看起来像的缩写比较混乱小号层序d iagram。

SD 帧的通信图 BuyItem

image

生命线

生命线是命名元素的特化 ,代表交互中的个体参与者。虽然零件和结构特征可能具有大于1的多重性,但生命线仅代表 一个交互实体。

如果引用的可连接元素是多值的(即,具有多重性> 1),则生命线可以具有表达式(选择器),该表达式指定该生命线表示哪个特定部分。如果省略选择器,则这意味着选择多值可连接元素的任意代表。

甲生命线被示出为矩形(对应于序列图“头”)。序列图中的生命线确实具有代表生命线的“尾部” , 而通信图中的 “生命线” 没有线,只有“头部”。

识别生命线的信息以下列格式显示在矩形内:

lifeline-ident ::= ([ connectable-element-name [ '[' selector ']' ] ] [: class-name ] [decomposition] )  | 'self'
selector ::= expression
decomposition ::= ‘ref’ interaction-ident [ 'strict' ]

其中class-name是由所表示的可连接元素引用的类型。请注意,尽管语法允许,但 lifeline-ident不能为空。

生命线头部的形状基于 该生命线所代表的部分的分类器。通常头部是一个白色矩形,包含冒号后的类名。

image

如果名称是关键字self,则生命线代表包含拥有生命线的交互的分类器的对象。 即使包括self,封闭器的端口也可以单独显示。

信息

消息在通信图被示出为用线路 序列表达 和箭头的线之上。箭头表示通信方向。

如果s1等于s2,则类A的实例将remove()消息发送到B的实例

image

序列表达

所述序列的表达是一个点分开的列表序列而言 ,后跟一个冒号(“:”)之后和消息名:

sequence-expression ::= sequence-term '.' . . . ':' message-name

例如, 3b.2.2:m5 包含序列表达式3b.2.2和消息名称m5。

每个序列术语表示 整体交互中的程序嵌套级别。每个序列术语都具有以下语法:

sequence-term :: = [ integer [ name ]] [ recurrence ]

该整数表示顺序程序调用(激活)的下一个较高级别内的消息的。在一个整数项中不同的消息在该嵌套级别是顺序的。

例如,

  • 带有序列2的消息跟随序列1的消息,

  • 2.1遵循2

  • 5.3在激活5中遵循5.2

  • 1.2.4在激活1.2内遵循消息1.2.3。

A的实例将draw()消息发送给B的实例,之后B将paint()发送给C

image

该名称表示并发控制线程。最终名称不同的消息在该嵌套级别是并发的。

例如,

  • 消息2.3a和2.3b在激活2.3中并发,

  • 1.1遵循1a和1b,

  • 3a.2.1和3b.2.1遵循3.2。

A的实例同时向B的实例和C的实例发送draw()消息

image

复发限定条件或迭代被根据指定的条件执行的零个或更多个消息的执行。

recurrence  :: =  branch  | loop
branch  :: ='['  guard  ']'
loop  :: ='*'['||' ] ['[' iteration-clause  ']']

甲卫指定条件在给定嵌套深度要发送的消息(执行)。UML没有指定保护语法,因此它可以用伪代码,某种编程语言或其他东西表示。

例如,

2.3b [x> y]:draw() - 如果x大于y,将执行消息draw(), 1.1.1 [s1.equals(s2)]:remove() - 如果s1等于s2,将执行message remove()。

如果x> y,则 类A的实例将消息draw()发送到C的实例

image

一个迭代指定在给定的嵌套深度消息的序列。UML没有指定iteration-clause语法,因此它可以用伪代码,某种编程语言或其他东西表示。可以省略迭代子句,在这种情况下,迭代条件是未指定的。

迭代符号指定在迭代中的消息将被执行 顺序。在 || (星号后跟双垂直线)迭代表示法指定消息的并发(并行)执行。

例如,

  • 4.2c * [i = 1..12]:搜索(t [i]) - 搜索()将执行12次,一个接一个

  • 4.2c * || [i = 1..12]:search(t [i]) - 将同时发送12条search()消息,

  • 2.2 *:notify() - 消息notify()将重复一些未指定的次数。

A类实例将逐个发送search()消息到B实例n次 image

A类实例将n个并发search()消息发送到B的实例 image

嵌套控制结构中的内部级别不会重复重复。每个级别的结构都在封闭的上下文中指定自己的迭代。

WangShuXian6 commented 5 years ago

状态图 Statechart Diagram

创建状态图

要创建状态图:

首先选择一个元素,其中包含一个新的状态图作为子元素。

选择型号| 添加图| 菜单栏中的Statechart Diagram或选择Add Diagram | 上下文菜单中的状态图。

UML状态图 http://www.uml-diagrams.org/state-machine-diagrams.html

状态 State

要创建简单状态:

在工具箱中选择简单状态。

在图表上拖动为简单状态的大小。

要创建复合状态:

在工具箱中选择复合状态。

在图上拖动为复合状态的大小。

要创建Submachine状态:

在工具箱中选择Submachine State。

在图上拖动为Submachine State的大小。

在元素选择器对话框中选择StateMachine 。

要创建正交状态:

在工具箱中选择正交状态。

在图上拖动为正交状态的大小。

您可以通过双击或按下所选状态来使用QuickEdit for State。Enter

名称表达式:编辑名称表达式。

名称表达的语法

expression :: = ['<<'stereotype` >>`] [visibility] name
stereotype :: =(identifier)
visibility :: ='+'| '#'| ' - '| '〜'
name :: =(identifier)

添加ConnectionPointReference:添加连接点引用。

添加区域:添加区域。

添加注意:添加链接的备注。

添加条目活动:添加条目活动。

添加执行活动:添加执行活动。

添加退出活动:添加退出活动。

添加内部过渡:添加内部过渡。

内部活动

要添加条目活动:

选择一个状态 。

选择型号| 添加| 菜单栏中的输入活动或添加| 上下文菜单中的条目活动。

选择要创建的一种活动(OpaqueBehavior,Activity,StateMachine或Interaction之一)。

要添加“执行活动”:

选择一个状态。

选择型号| 添加| 在菜单栏中执行活动或添加| 在上下文菜单中执行活动。

选择要创建的一种活动(OpaqueBehavior,Activity,StateMachine或Interaction之一)。

要添加退出活动:

选择一个状态。

选择型号| 添加| 退出菜单栏中的活动或添加| 在上下文菜单中退出活动。

选择要创建的一种活动(OpaqueBehavior,Activity,StateMachine或Interaction之一)。

您可以将QuickEdit用于模型元素

内部过渡

要添加内部转换:

选择一个状态。

Popup Quic通过双击或按下选定状态编辑状态。Enter

在快速编辑中选择添加内部过渡按钮。

您可以通过双击或按下选定的内部过渡来使用QuickEdit进行内部过渡。Enter

名称表达式:编辑名称表达式。

名称表达的语法

expression :: = ['<<'stereotype` >>`] [visibility] name
stereotype :: =(identifier)
visibility :: ='+'| '#'| ' - '| '〜'
name :: =(identifier)

添加触发事件:添加触发事件。

添加效果行为:添加效果行为。

区域

要添加区域:

选择一个州。

选择型号| 添加| 区在菜单栏或添加| 区域上下文菜单。

初始状态

要创建初始状态:

在工具箱中选择初始状态。

单击图表上的位置。

您可以将QuickEdit用于模型元素

选择

创建选择:

选择选择在工具箱。

单击图表上的位置。

您可以将QuickEdit用于模型元素

加入

要创建加入:

选择加入的工具箱。

在图上拖动为Join的大小。

您可以将QuickEdit用于模型元素

叉子

要创建一个Fork:

在工具箱中选择Fork。

在图上拖动为Fork的大小。

您可以将QuickEdit用于模型元素

连接点

要创建一个连接点:

在工具箱中选择Junction。

单击图表上的位置。

您可以将QuickEdit用于模型元素

浅浅的历史

要创建浅历史记录:

在工具箱中选择浅历史记录。

单击图表上的位置。

您可以将QuickEdit用于模型元素

深刻的历史

要创建深度历史记录:

在工具箱中选择深度历史记录。

单击图表上的位置。

您可以将QuickEdit用于模型元素

入口点

要创建入口点:

在工具箱中选择入口点。

单击图表上的位置。

您可以将QuickEdit用于模型元素

出口点

要创建退出点:

在工具箱中选择退出点。

单击图表上的位置。

您可以将QuickEdit用于模型元素

终止

要创建终止:

选择终止在工具箱。

单击图表上的位置。

您可以将QuickEdit用于模型元素

最终国家

要创建最终状态:

在工具箱中选择最终状态。

单击图表上的位置。

您可以将QuickEdit用于模型元素

连接点参考

要创建连接点参考:

在工具箱中选择连接点参考。

单击要包含连接点引用的状态。

您可以将QuickEdit用于模型元素

过渡

要创建过渡(或自我过渡):

在工具箱中选择转换(或自转换)。

从状态拖动并放下另一个状态。(如果要创建自我转换,只需单击状态。)

您可以通过双击或按下选定的过渡来使用QuickEdit进行过渡。Enter

转换表达式:编辑转换表达式。

过渡表达的语法

transition :: = [trigger-list] ['['guard']'] ['/'效果]
trigger-list :: = trigger [','trigger]
trigger :: =(标识符)
guard :: =(string)
effect :: =(标识符)

添加注意:添加链接的备注。

添加触发事件:添加触发事件。

添加效果行为:添加效果行为。


状态机图

状态机图是一种行为图 ,它通过有限状态转换显示设计系统的一部分的离散行为。状态机图也可用于表示系统的一部分的使用协议。UML 2.4中定义的两种状态机是

行为状态机,和 协议状态机。 通常在状态机图中绘制以下节点和边: 行为状态, 行为转换, 协议状态, 协议转换,不同的伪状态。

您可以 在此处找到一些 状态机图示例:

水相图作为状态机 https://www.uml-diagrams.org/examples/water-phase-uml-state-machine-diagram-example.html

银行ATM状态机 https://www.uml-diagrams.org/bank-atm-uml-state-machine-diagram-example.html?context=stm-examples

Java线程状态和生命周期 https://www.uml-diagrams.org/java-thread-uml-state-machine-diagram-example.html?context=stm-examples

Java EJB - 会话对象的生命周期 https://www.uml-diagrams.org/java-ejb-state-machine-diagram-example.html?context=stm-examples

用户帐户状态机图示例 https://www.uml-diagrams.org/examples/online-shopping-user-account-state-diagram-example.html?context=stm-examples

行为状态机

行为状态机是 行为的特化 ,用于通过有限状态转换来指定所设计系统的一部分的离散行为。在这种情况下使用的状态机形式是Harel状态图的基于对象的变体。

行为 被建模为遍历与转换相关联的状态节点 的图形 。过渡是由一系列事件的调度触发的。在遍历期间,状态机还可以执行一些活动。

行为状态机可以由行为分类器拥有, 称为其上下文。上下文定义为此状态机定义的信号和调用触发器,以及状态机活动中可用的属性和操作。根据此分类器的接收和操作来定义状态机的信号触发器和呼叫触发器。

状态机可以具有相关的 行为特征 (规范)并且是该行为特征的方法。在这种情况下,状态机指定此行为功能的行为。状态机的参数与行为特征的参数匹配,并提供用于访问状态机内的行为特征参数的手段。

该事件为状态机池是根据behaviored上下文分类,或者分类器拥有该行为特征的量,状态机是一种方法的实例的事件池。

行为特征的方法状态机 的上下文分类器必须是拥有行为特征的分类器。没有上下文分类器的状态机可以使用独立于分类器的接收或操作的触发器,即,仅基于(参数化)状态机的操作模板参数的信号触发器或调用触发器。

状态机与其上下文分类器或行为特征之间的关联没有特殊符号。

状态机可以在标记为状态机的帧中呈现,或者 以缩写形式呈现为stm。(注意,无论出于何种原因,UML 2.4规范第15章中的状态机帧的所有示例都没有指定此帧类型。)帧的内容区域通常是状态机本身,但通常它可以包含其他类型的UML图。

银行ATM的高级行为状态机

image

行为状态机由 协议状态机子类化。

顶点

Vertex是命名元素,它是状态机图中节点的抽象。通常,它可以是任意数量转换的源或目标。

顶点的子类是:

  • 状态

  • 伪状态

状态是一个顶点 ,它模拟一些情况,在这种情况下,某些(通常是隐含的)不变条件成立。

行为状态机

行为状态机 中的 状态 模拟了某种(通常是隐含的)不变条件成立的情况。不变量可以表示静态情况,例如等待某些外部事件发生的对象。但是,它也可以模拟动态条件,例如执行某些行为的过程(即,所考虑的模型元素在行为开始时进入状态,并在行为完成后立即离开)。

继承状态用虚线或灰色线条绘制。

UML定义了以下几种状态:

  • 简单的状态,
  • 复合状态,
  • 子状态。
简单的状态

一个简单的状态是没有子状态的状态-它没有地区 ,它有没有冲锋枪状态。

简单状态显示为带圆角的矩形和矩形内的状态名称。

简单状态等待客户输入。 image

(可选)状态可以在附加名称选项卡中放置状态名称。名称选项卡是一个矩形,通常位于状态顶部的外侧。

简单的状态可能有隔间。该州的隔间是:

  • 名称隔间

  • 内部活动隔间

  • 内部过渡隔间

名称隔离区保存状态的(可选)名称,作为字符串。没有名字的国家被称为匿名国家,并且都被认为是不同的(不同的)国家。如果使用名称选项卡,则不应使用名称隔离专区,反之亦然。建议不要在同一个图表中多次使用同名的状态。

内部活动隔离区包含在元素处于状态时执行的内部操作或状态(do)活动(行为)的列表。活动标签标识将调用活动表达式指定的行为的环境。行为表达式可以使用拥有实体范围内的任何属性和关联结束。对于表达式为空的列表项,斜杠分隔符是可选的。

有几个标签是为特殊目的而保留的,不能用作事件名称。以下是保留的活动标签:

  • 进入(进入该州后的行为)

  • do(持续行为,只要元素处于状态就执行)

  • 退出(从州退出时执行的行为)

简单状态等待客户输入,包括名称和内部活动隔离区。 image

内部转换隔离专区包含一个内部转换列表,其中每个项目都具有触发器描述的形式。如果保护条件不同,每个事件名称可能会在每个状态下出现多次。事件参数和保护条件是可选的。如果事件具有参数,则可以通过当前事件变量在表达式中使用它们。

复合状态

通常,复合状态被定义为具有子状态(嵌套状态)的状态。子状态可以是顺序的(不相交的)或并发的(正交的)。UML 2.4将复合状态定义为包含一个或多个区域的状态 。(注意,该区域被定义为复合状态或状态机的正交部分。)不允许状态具有区域和子机。

简单的复合状态只包含一个区域。

简单的复合状态服务客户有两个子状态。 image

正交复合状态具有多个区域。每个区域都有一组互斥的不相交的子句和一组过渡。给定状态只能以这两种方式之一进行分解。

封闭在复合状态区域内的任何状态称为该复合状态的子状态。当它不被任何其他国家所包含时,它被称为直接子状态; 否则,它被称为间接子状态。

复合状态的每个区域可以具有初始伪状态和最终状态。到封闭状态的转换表示到每个区域中的初始伪状态的转变。新创建的对象采用其最顶层的默认转换,源自每个区域的最顶层初始伪状态。

复合状态可以在附加名称选项卡中放置状态名称。名称选项卡是一个矩形,通常位于状态顶部的外侧。

复合状态可能有隔间。该州的隔间是:

  • 名称隔间

  • 内部活动隔间

  • 内部过渡隔间

  • 分解室

前三个隔间与简单状态相同 。

分解隔间显示状态的组成结构,作为具有区域,状态和转换的嵌套图。为了方便和外观,文本隔室可以在图形区域内水平收缩。

在某些情况下,隐藏复合状态的分解是方便的。例如,可能存在嵌套在复合状态内的大量状态,并且它们可能根本不适合图表可用的图形空间。在这种情况下,复合状态可以由具有特殊“复合”图标的简单状态图形表示,通常在右下角。此图标由两个水平放置和连接状态组成,是一个可选的视觉提示,状态具有未在此特定图中显示的分解。相反,复合状态的内容显示在单独的图表中。“隐藏”是图形方便的问题,并且在访问限制方面没有语义意义。

复合状态为隐藏分解的客户提供服务。 image

复合状态可以 在其外边界上或在该边界附近(内部或外部)具有一个或多个入口和出口点。

子机器状态

子机器状态指定插入子机状态机的规范。包含子机器状态的状态机称为包含状态机。在单个包含状态机的上下文中,相同的状态机可以是不止一次的子机。

子机器状态在语义上等同于复合状态。子机状态机的区域是复合状态的区域。进入,退出和行为操作以及内部转换被定义为状态的一部分。Submachine state是一种分解机制,允许分解常见行为及其重用。

名称隔离区保存状态的(可选)名称,作为字符串。引用状态机的名称显示为状态名称后面的“:”后面的字符串。

区域

区域在UML 2.4定义为一个的正交部分的复合状态 或状态机。区域包含状态和转换。

通过使用虚线平铺状态/状态机的图形区域以将其划分成区域来示出具有区域的复合状态或状态机。每个区域可以具有可选名称,并包含嵌套的不相交状态以及它们之间的过渡。整个状态的文本隔室通过实线与正交区域分开。

通过在图形区域内显示嵌套状态图来显示仅具有一个区域的复合状态或状态机。

为了表明扩展了继承的区域,关键字«extended»与区域的名称相关联。

伪状态

伪状态是一个抽象顶点 ,它包含状态机图中不同类型的瞬态顶点。

伪状态通常用于将多个转换连接到更复杂的状态转换路径。例如,通过组合进入fork伪状态的转换和退出fork伪状态的一组转换,我们得到一个导致一组正交目标状态的复合转换。

假状态包括:

  • 初始伪状态

  • 终止伪状态

  • 入口点

  • 出口点

  • 选择

  • 加入

  • 叉子

  • 连接点

  • 浅历史伪状态

  • 深刻的历史假状态

初始假状态

一个初始伪状态表示默认顶点 即是针对单个过渡到源默认状态 a的复合状态。区域中最多只能有一个初始顶点。从初始顶点的传出转换可能具有行为,但不具有触发器或保护。

初始伪状态显示为小的实心填充圆。

初始伪状态转换为等待用户输入状态 image

在分类器行为状态机的区域中,可以用创建对象的触发事件来标记从初始伪状态的转换; 否则,它必须是未标记的。如果它没有标记,则表示从封闭状态的任何转换。

终止伪状态

终止伪状态意味着终止通过其上下文对象执行此状态机。状态机不会退出任何状态,也不会执行除导致终止伪状态的转换之外的任何退出操作。输入终止伪状态等同于调用DestroyObjectAction。

终止伪状态显示为十字形。

过渡以终止伪状态

image

入口点

入口点伪状态是状态机或复合状态的入口点。在状态机或复合状态的每个区域中,它至多具有到同一区域内的顶点的单个过渡。

入口点在状态机图或复合状态的边界上显示为小圆,其名称与其关联。

入口点用户输入 image

可选地,它可以放置在状态机图中并且位于状态机图或复合状态的边界之外。

出口点

退出点伪状态是状态机或复合状态的退出点。在由子机器状态引用的复合状态或状态机的任何区域内输入出口点意味着退出该复合状态或子机器状态并且触发具有该出口点的转换作为封闭子机器的状态机中的源或复合状态。

出口点显示为一个小圆圈,在状态机图或复合状态的边界上有一个十字,其名称与之关联。

退出点用户出口

image

可选地,它可以放置在状态机图或复合状态内以及状态机图或复合状态的边界之外。

或者,“括号”表示法也可用于面向过渡的表示法。

选择

选择伪状态实现动态条件分支。它评估其传出转换的触发器的保护,以仅选择一个传出转换。关于采用哪条路径的决定可以是在相同的运行到完成步骤中执行的先前动作的结果的函数。动态选择应与静态连接分支点区分开来。

选择伪状态显示为菱形符号。

根据条件选择传出转换。 image

如果多个防护装置评估为真,则选择任意一个。如果没有一个警卫评估为真,那么该模型被认为是不正确的。为避免这种情况,在适当时使用预定义的“else”保护定义一个传出转换。

如果与转换触发器相关联的所有保护都离开选择伪状态是共享公共左操作数的二进制表达式,则可以使用简化的表示法。左操作数放在菱形符号内,其余的保护表达式放在外出转换上。

选择基于应用于钻石内部值的防护 image

叉子

叉伪状态顶点用于将进入的转换分成终止于正交目标顶点(即,复合状态的不同区域中的顶点)的两个或更多个转变。从fork顶点传出的段不得有保护或触发器。

叉子的符号是一个短的重型栏。条形可以具有从条形到状态的一个或多个箭头。可以在条形附近显示过渡字符串。

Fork将过渡分为两个过渡

image

加入

连接伪状态合并源自不同正交区域中的源顶点的若干转变。进入连接顶点的过渡不能有保护或触发器。

连接的表示法是一个短重棒。条形可以具有从源状态到条形的一个或多个箭头。可以在条形附近显示过渡字符串。

image

连接点

结点伪状态顶点是用于将多个转换链接在一起的顶点。它们用于构建状态之间的复合转换路径。例如,可以使用联结将多个传入转换会聚到表示共享转换路径的单个传出转换(这称为合并)。

相反,它们可用于将进入的转换分成具有不同保护条件的多个输出转换段。这实现了静态条件分支。(在后一种情况下,禁用其保护条件评估为假的传出转换。

表示为“else”的预定义保护可以被定义用于至多一个输出转换。如果标记其他转换的所有防护都为假,则启用此转换。)静态条件分支不同于由选择顶点实现的动态条件分支。

结点由小黑圈表示。

源自一组状态并且针对具有单个输出转换的结点顶点的多个无触发和无效转换可以被呈现为状态符号,其具有状态名称列表和与从外部转换相对应的输出转换符号。交界处。

从具有历史作为目标的交叉点的转换的特殊情况可以可选地呈现为作为状态列表状态符号的目标。

浅历史假状态

浅历史伪状态表示其包含状态的最新活动子状态(但不是该子状态的子状态)。复合状态最多可以有一个浅历史顶点。进入浅历史顶点的转换等同于进入状态的最近活动子状态的转换。最多一个转换可以源自历史连接器到默认的浅历史状态。如果复合状态之前从未处于活动状态,则采用此转换。执行由浅历史表示的状态的进入动作。

浅历史由包含“H”的小圆圈表示。它适用于直接包围它的州区域。

深度历史假状态

深度历史伪状态表示直接包含此伪状态的复合状态的最新活动配置(例如,上次退出复合状态时处于活动状态的状态配置)。复合状态最多可以有一个深度历史顶点。最多一个转换可以源自历史连接器到默认深度历史状态。如果复合状态之前从未处于活动状态,则采用此转换。进入在从深历史到由深历史表示的最内部状态的隐含直接路径上进入的状态的进入动作。对于要恢复的活动状态配置中的每个状态,仅执行一次条目操作。

深刻的历史由包含“H *”的小圆圈表示。它适用于直接包围它的州区域。

最终状态

最终状态是一种特殊的 状态, 表示封闭区域已完成。如果封闭区域直接包含在状态机中并且状态机中的所有其他区域也完成,则意味着整个状态机完成。注意,由于某种原因,UML 2.4将最终状态定义为状态的子类,而不是伪状态 。(初始状态 是伪状态。)

最终状态显示为围绕小实心圆圈的圆。

image

行为转变

转换是源顶点 和目标顶点之间的有向关系 。它可能是复合转换的一部分,它将状态机从一个状态配置带到另一个状态配置,表示状态机对特定类型事件发生的完整响应。

以下BNF描述了行为转换的默认表示法(来自UML 2.4规范的BNF略有修改和固定版本):

transition :: = [ triggers ] [  guard  ] ['/'  behavior-expression  ]
触发 :: = trigger  [','  trigger  ] *
guard  :: ='['  constraint  ']'

可选的触发器列表 指定 可能导致状态转换的事件。如果事件匹配与触发器关联的事件,则事件满足触发器。由于同一事件可以启用多个转换,因此转换触发是必要但不充分的条件。

所述防护件约束是写入的参数方面具有布尔表达式触发事件和属性和链接上下文对象。保护约束还可以包括测试当前状态机的正交状态,或者明确指定某些可达对象的状态(例如,“ 处于活动状态”)。

在使用防护装置的简单过渡中,在触发过渡之前评估防护装置。在涉及多个防护的复合转换中,除非沿一个或多个路径有选择点,否则在触发转换之前会评估所有防护。未定义评估防护的顺序。警卫不应包括导致副作用的表情。

的行为的表达被执行,如果和当过渡火灾。它可以根据上下文对象的操作,属性和链接 以及触发事件的参数或其范围中可见的任何其他特征来编写。行为表达可以是动作序列。

具有保护约束和转换字符串的转换示例:

左鼠标按下(坐标)[坐标在 active_window] /链接:=选择链路(坐标); link.follow() 当发生鼠标左键事件(触发器)并且单击坐标位于active_window(guard)时,将选择并跟踪链接(行为表达式),并启用转换。

转换的触发器和后续效果可以根据上面的语法以文本方式或在转换上使用图形符号来标记。

源自复合状态的转换称为 高级转换或组转换。如果被触发,则它们导致从复活状态配置中的最内层状态开始执行其退出活动的复合状态的所有子状态退出。

化合物转变表示由一个或多个转换的“语义完整”的路径,从一组状态始发(而不是伪状态)且靶向一组状态。

一个内部转换的执行没有退出或重新进入在其中定义它的状态。即使状态机在此状态下处于嵌套状态,也是如此。

甲完成转换是从一个状态或出口点,但不具有显式触发,尽管它可以具有所定义的保护始发的过渡。完成事件隐式触发完成转换。


UML协议状态机图

UML协议状态机图用于表示使用协议或 某些分类器的生命周期。它示出了在分类器的每个状态下可以调用分类器的哪些操作,在哪些特定条件下,以及在分类器转换到目标状态之后满足一些可选的后置条件。

因为这些图表显示了生命周期,所以它们可用于显示可能存在一段时间的一类对象的不同稳定状态,并解释对象如何随时间改变其状态。例如,我们可以显示如何创建,激活,暂停和取消用户帐户。

协议状态机图的主要元素是 协议状态, 协议转换和不同的伪状态,如下面的概述图所示。

协议状态机图概述。

image

协议状态机图几乎是协议状态机的同义词, 因为一个图通常显示一个协议机。

协议状态机

协议状态机是的特殊化 行为状态机 ,并用于表达使用协议或生命周期 一个的分类。它指定可以在哪个状态和哪个条件下调用分类器的哪些操作,从而在分类器的操作上指定允许的调用序列。协议状态机表示分类器可以触发的合法转换。

协议状态机始终在分类器的上下文中定义。分类器可以具有多个协议状态机。

协议状态机的所有转换必须是 协议转换。

协议状态机的表示法类似于行为状态机。关键字{protocol}靠近状态机的名称放置,以区分协议状态机图。

URLConnection类的协议状态机

image

协议状态机

协议状态机(协议状态)的状态呈现暴露给其客户端的类的外部视图。根据上下文,协议状态可以对应于由行为状态机表示的实例的内部状态,或者它们可以是不同的。

协议状态机的状态暴露给其上下文分类器的用户。协议状态表示其上下文分类器的暴露稳定情况:当分类器的实例未处理任何操作时,此实例的用户始终可以知道其状态配置。

image

协议状态机的状态不能具有进入,退出或执行活动动作。协议状态机也不能具有深或浅历史伪状态。

协议状态机可以具有子机器 状态, 复合状态和并发区域。

简单的复合协议状态Runnable。

image

例如,并发区域可以表示协议,其中实例可以同时具有多个活动状态。在行为状态机中使用子状态机和复合转换来分解复杂的协议状态机。

协议转换

协议转换是专业化 (行为)过渡 用于协议状态机指定用于一个合法转换操作。协议转换具有以下特征:前置条件(保护), 触发器和后置条件。

协议转换通常与属于协议状态机的上下文分类器的某些操作相关联。协议转换指定可以在初始条件(保护)下为原始状态中的实例调用关联(被引用)操作,并且在转换结束时,将在满足后置条件的情况下到达目标状态。

复合转换也可用于协议状态机。

协议转换呈现为从源顶点 到目标顶点的过渡箭头,可选文本描述转换。

协议从具有前置条件(保护),触发器和后置条件的“新”状态转换为“活动”状态。

image

协议转换的文本符号由以下语法规则描述(注意,UML 2.5规范中没有协议转换的语法规则,所以我做了这些:)

protocol-transition :: = [  pre-condition  ]  trigger  '/'[  post-condition  ] 
pre-condition  :: ='['  constraint  ']'
post-condition  :: ='['  constraint  ']'

请注意,虽然UML 2.5规范说 “通常的StateMachine符号适用”,但它更像是jocose语句,因为协议转换语法(如上所示)与行为转换语法完全不同 。

协议转换 的 行为转换 的保护被命名为前置条件,并且被置于触发器之前。 后置条件被添加到协议转换中并出现在触发器之后。协议转换没有行为表达。目前尚不清楚触发是否 是协议转换的可选项,因为它是行为转换。协议转换语法和示例在触发后显示'/',这与行为转换不同,其中'/'是在行为表达之前放置的标记。其他一切都是“通常的StateMachine表示法”。:O)


水相 UML状态机图示例

Water Phases UML State Machine Diagram Example

这是表示为UML 状态机图的水相图的示例

水可以以几种状态存在 - 液体,蒸汽,固体和等离子体。从一个州到另一个州可能有几种转变。例如,冷冻是从液态到冰的相变。冷凝是从蒸气态到液态的相变。水蒸气可以通过沉积直接变成霜冻。

UML状态机示例 - 水相图

image


银行ATM UML状态机图示例

Bank ATM UML State Machine Diagram Example

这是显示银行自动柜员机(ATM)顶级状态机的UML 行为状态机图的示例 。

ATM最初被关闭。电源打开后,ATM执行启动操作并进入 自检状态。如果测试失败,则ATM进入Out of Service状态,否则无触发转换到Idle状态。在这种状态下,ATM等待客户交互。

当客户在银行卡读卡器中插入银行卡或信用卡时, ATM状态从空闲变为服务客户。在进入服务客户状态时,执行输入操作 readCard。请注意,由于客户可以随时取消交易,因此可以通过取消事件触发从服务客户状态到空闲状态的转换。

行为状态机UML图示例 - 银行ATM

image

服务客户状态是一个复合状态, 具有顺序子状态客户身份验证,选择事务 和事务。 客户身份验证和事务本身是复合状态,显示隐藏的分解指示符图标。 事务完成后,服务客户状态将无触发转换回 空闲状态。州也有退出行动ejectCard,在离开州时释放客户的卡,无论是什么原因导致州退出。


Java线程状态和生命周期 UML协议状态机图示例

Java Thread States and Life Cycle UML Protocol State Machine Diagram Example

这是UML 协议状态机图的示例, 显示了Java™中 Thread类的Thread状态和Thread生命周期。线程是一个轻量级进程,是计划执行的最小单元。线程状态是JVM向Java程序报告的Java虚拟机(JVM)状态,它不反映任何操作系统(OS)线程状态。在任何给定的时间点,Java 5到Java 9中的Thread类的实例 可以处于以下Thread状态之一:

  • 新的,
  • Runnable,
  • 定时等待,
  • 等待,
  • 被封锁了,
  • 终止。

现在过时的Java 2有不同的状态集: Ready,Running,Suspended,Sleeping,Blocked,Monitor状态。下面的UML图显示了其中两个遗留状态 - Ready和Running - 作为Runnable状态的一部分。

协议状态机示例 - Java中的线程状态和生命周期。 image

New是已创建但尚未启动的线程的线程状态。

处于Runnable状态的线程正在从JVM的角度执行,但实际上它可能正在等待来自OS的某些资源,例如处理器。该状态可以被认为是具有两个子状态的复合状态。当线程转换到Runnable状态时,线程首先进入Ready子状态。线程调度决定线程何时可以实际开始运行。Thread.yield()明确建议线程调度程序暂停当前正在执行的线程以允许某些其他线程执行。如果线程已经启动并且尚未死亡,则线程处于活动状态。

定时等待是等待指定等待时间的线程的线程状态。由于在指定(正)等待时间内调用以下方法之一,线程将进入定时等待状态:

  • Thread.sleep(睡眠时间)
  • Object.wait(超时)
  • Thread.join(超时)
  • LockSupport.parkNanos(超时)
  • LockSupport.parkUntil(超时)

在没有超时的情况下调用以下方法之一后, 线程进入等待状态:

  • Object.wait()
  • Thread.join()
  • LockSupport.park()

注意,处于等待状态的线程无限期地等待另一个线程提供等待线程所需的东西。完成后,其他线程可以在线程共享的对象上调用Object.notify()或Object.notifyAll()。调用Thread.join()的线程正在等待指定的线程终止。这意味着可以使等待状态成为具有与这些特定条件对应的状态的复合状态。

在等待监视器锁定进入同步块或方法或在调用Object.wait()之后重新进入同步块或方法时, 线程处于阻塞状态。

synchronized语句或方法代表执行线程获取互斥锁,执行块或方法,然后释放锁。当执行线程拥有锁时,没有其他线程可以获取锁并且被阻塞等待锁。

线程完成run()方法的执行后,它将进入Terminated状态。


Java EJB - 会话对象的生命周期 UML协议状态机图示例

Java EJB - Life Cycle of a Session Object UML Protocol State Machine Diagram Example

这是UML 协议状态机图的示例, 它使用Java EJB 2.1和早期客户机视图API从本地或远程客户机的角度显示Java™EJB会话对象的生命周期。

Java EJB生命周期的会话对象--UML协议状态机图示例。

image

从使用EJB 2.1和早期客户端视图API的本地或远程客户端的角度来看,会话对象的生命周期如下所示。会话对象在创建之前不存在。当客户端创建会话对象时,客户端会引用新创建的会话对象的组件接口。


Online Shopping - User Account UML State Machine Diagram Example

每个拥有客户的公司都会维护客户帐户,并支持帐户从创建到关闭之前的整个生命周期。帐户生命周期中的阶段(状态)有何不同,以及导致帐户改变其状态的条件或事件是什么。

这里我们提供了在线购物环境中用户帐户生命周期的示例,显示为UML 协议状态机图。

对于要创建的用户帐户,它必须满足一些初始要求。例如,用户ID(用作登录名)必须是唯一的,至少对于现有帐户而言。创建帐户后,可能需要对其进行验证。验证取决于公司,可能包括电子邮件,电话和/或地址验证。如果在某个预定义的时间段内未验证帐户,则可以将该帐户移至已暂停的帐户。

在线购物用户帐户协议状态机图。

image

客户的请求可随时取消新的,有效的或暂停的帐户。请注意,此前提条件通常包括支付任何未结余额,并可能需要一些单独的帐户状态或子状态来处理此案例。

出于安全原因,可能会手动或自动暂停用户帐户。例如,如果使用不正确的帐户密码进行了多次不成功的登录尝试,则网站入侵检测系统会锁定用户帐户预定义的时间段。帐户锁定超时后,帐户会自动恢复。

某些用户帐户可能在很长一段时间内处于非活动状态。公司政策或业务规则可能要求将一年或两个帐户的休眠状态移至暂停状态。

一旦我们列出了用户帐户状态并指定了从一个州到另一个州的所有可能转换,我们就可以与其他主题专家一起查看该图表,看看是否有任何遗漏或需要进一步澄清。


WangShuXian6 commented 5 years ago

活动图 Activity Diagram

创建活动图

要创建活动图:

首先选择一个元素,其中包含一个新的活动图作为子元素。

选择型号| 添加图| 菜单栏中的活动图或选择添加图| 上下文菜单中的活动图。

UML活动图 http://www.uml-diagrams.org/activity-diagrams.html


活动

行动 要创建动作:

在工具箱中选择操作。

在图上拖动为Action的大小。

您可以双击或将QuickAction for QuickEdit用于Action。Enter

名称表达式:编辑名称表达式。

名称表达的语法

表达式:: = ['<<'原型'>>`] [可见性]名称
原型:: =(标识符)
可见性:: ='+'| '#'| '-'| '〜'
名称:: =(标识符)

添加输入引脚:添加输入引脚。

添加输出引脚:添加输出引脚。

添加注释:添加链接注释。

添加触发事件:添加触发事件。

添加外发控制流:添加带操作的外发控制流。

添加传入控制流:添加带有操作的传入控制流。

添加外发对象流:添加带有对象节点的外发对象流。

添加传入对象流:添加带有对象节点的传入对象流。

添加决策:添加两个附加操作的决策。

添加合并:通过两个附加操作添加合并。

添加叉:添加两个附加操作的叉。

添加联接:通过两个附加操作添加联接。

添加初始节点:添加具有连接的控制流的初始节点。

添加最终节点:添加具有连接的控制流的最终节点。

触发

添加触发器:

选择一个动作。

选择型号| 添加| 在菜单栏中触发或添加| 在上下文菜单中触发。

初始节点

要创建初始节点:

在“ 工具箱”中选择“ 初始”。

单击图上的位置。

活动最终节点

要创建活动最终节点:

在工具箱中选择活动最终。

单击图上的位置。

交叉节点

要创建一个叉子节点:

在工具箱中选择叉子。

在图上拖动为Fork的大小。

加入节点

要创建加入节点:

选择“ 在工具箱中加入”。

在图上拖动Join的大小。

3# 合并节点

要创建合并节点:

选择在工具箱中合并。

单击图上的位置。

决策节点

要创建决策节点:

在工具箱中选择决策。

单击图上的位置。

泳道(分区)

要创建Swimlane(垂直或水平):

在工具箱中选择Swimlane(垂直)或Swimlane(水平)。

在图中拖动Swimlane的大小。

您可以将QuickEdit用于Model Element(请参阅Model Element)https://docs.staruml.io/working-with-diagrams/class-diagram#model-element

中断活动区域

要创建可中断活动区域:

在工具箱中选择“可中断活动区域”。

在图上拖动作为可中断活动区域的大小。

结构化活动节点

要创建结构化活动节点:

在工具箱中选择结构化活动。

在图上拖动结构化活动节点的大小。

您可以将QuickEdit用于Model Element(请参阅Model Element)https://docs.staruml.io/working-with-diagrams/class-diagram#model-element

输入引脚

要创建输入引脚:

在工具箱中选择输入引脚。

单击要附加输入图钉的动作。

输出引脚

要创建输出引脚:

在工具箱中选择输出引脚。

单击要附加输出引脚的动作。

发送信号

要创建发送信号:

在工具箱中选择发送信号。

在图上拖动作为发送信号的大小。

发送信号实际上是一个动作,其种类为。sendSignal

接受信号

要创建一个接受信号:

在工具箱中选择接受信号。

在图上拖动“接受信号”的大小。

接受信号实际上是一个动作,其种类为。acceptSignal

接受时间事件

要创建一个接受时间事件:

在工具箱中选择接受时间事件。

在图上拖动“接受时间事件”的大小。

接受时间事件实际上是类型为timeEvent的动作。

流最终节点

要创建流最终节点:

在工具箱中选择Flow Final。

单击图上的位置。

对象节点

要创建对象节点:

在工具箱中选择对象节点。

在图上拖动对象节点的大小。

您可以通过双击或按下选定的对象节点来将QuickEdit用于对象节点。Enter

名称表达式:编辑名称表达式。

名称表达的语法

表达式:: = ['<<'原型'>>`] [可见性]名称
原型:: =(标识符)
可见性:: ='+'| '#'| '-'| '〜'
名称:: =(标识符)
可见性:更改可见性属性。

添加注释:添加链接注释。

添加外发对象流:添加带有对象节点的外发对象流。

添加传入对象流:添加带有对象节点的传入对象流。

添加外发控制流:添加带操作的外发控制流。

添加传入控制流:添加带有操作的传入控制流。

中央缓冲区

要创建中央缓冲区:

在“ 工具箱”中选择“ 中央缓冲区”。

在图表上拖动“中央缓冲区”的大小。

您可以将QuickEdit用于对象节点(请参见对象节点)https://docs.staruml.io/working-with-diagrams/activity-diagram#object-node

数据存储

要创建数据存储区,请执行以下操作:

在工具箱中选择数据存储。

在图上拖动数据存储区的大小。

您可以将QuickEdit用于对象节点(请参见对象节点)https://docs.staruml.io/working-with-diagrams/activity-diagram#object-node

扩展区域

要创建扩展区域:

在工具箱中选择扩展区域。

在图上拖动为“扩展区域”的大小。

您可以将QuickEdit用于Model Element(请参阅Model Element)https://docs.staruml.io/working-with-diagrams/class-diagram#model-element

输入扩展节点

要创建输入扩展节点:

在“ 工具箱”中选择“ 输入扩展节点”。

单击要附加输入扩展节点的扩展节点。

输出扩展节点

要创建输出扩展节点:

在“ 工具箱”中选择“ 输出扩展节点”。

单击要附加输出扩展节点的扩展节点。

控制流

要创建控制流:

在工具箱中选择控制流。

从一个节点上拖放到另一个节点上。

您可以将QuickEdit用于Relationship(请参阅Relationship)https://docs.staruml.io/working-with-diagrams/class-diagram#relationship

对象流

要创建对象流:

在工具箱中选择对象流。

从一个节点上拖放到另一个节点上。

异常处理程序

要创建扩展处理程序:

在工具箱中选择扩展处理程序。

从一个节点上拖放到另一个节点上。

活动中断

要创建活动中断:

在“ 工具箱”中选择“ 活动中断”。

从一个节点上拖放到另一个节点上。

您可以将QuickEdit用于Relationship(请参阅Relationship)https://docs.staruml.io/working-with-diagrams/class-diagram#relationship


活动图

https://www.uml-diagrams.org/activity-diagrams.html 活动图是UML 行为图 ,它显示控制流或对象流,并着重于流的顺序和条件。可以启动由活动模型协调的动作,这是因为其他动作完成了执行,因为对象和数据变得可用或由于流程外部的某些事件发生了。

通常在UML 活动图上绘制以下节点和边: 活动, 分区, 动作, 对象, 控件, 活动边。

您可以 在此处找到一些 活动图示例:

网上购物 https://www.uml-diagrams.org/online-shopping-uml-activity-diagram-example.html?context=activity-examples 业务流程- 流程订单 https://www.uml-diagrams.org/shopping-process-order-uml-activity-diagram-example.html?context=activity-examples 业务流程- 文档管理流程 https://www.uml-diagrams.org/document-management-uml-activity-diagram-example.html 软件设计- 解决问题 https://www.uml-diagrams.org/software-resolve-issue-uml-activity-diagram-example.html Sentinel HASP SL-试用产品的手动激活 https://www.uml-diagrams.org/software-licensing-activity-diagram-example.html?context=activity-examples Google Apps 的单点登录 https://www.uml-diagrams.org/google-sign-on-uml-activity-diagram-example.html


活动 Activity

活动是一种参数化的 行为, 表现为协调的行动流程 。

执行流程被建模为通过活动边连接活动节点。节点可以是从属行为的执行,例如算术计算,对操作的调用或对对象内容的操纵。活动节点还包括控制结构流,例如同步,决策和并发控制。活动可以形成调用其他活动的调用层次结构,最终解决单个操作。在面向对象的模型中,活动通常作为与直接调用的操作绑定的方法间接调用。

活动包含活动节点,它们可能是:

行动 目的 控制

活动可能包含各种动作:

原始函数(例如算术函数)的出现。 行为的调用,例如活动。 通信动作,例如信号发送。 操作对象,例如读取或写入属性或关联。

有一些操作可以调用活动-直接使用调用行为操作 或间接使用调用操作操作。

活动可以渲染为圆角矩形,活动名称在左上角,活动的节点和边缘在边框内。UML 2.4规范示例以粗体显示活动名称。 image

活动参数显示在边框上,并在活动名称下方列出为: parameter-name:parameter-type。 使用两个参数-登录ID和密码来验证用户活动。 image

作为一种行为 活动,可能具有前提条件和前提条件约束。如果存在,则分别用关键字“前提条件”和“后置条件”显示。

关键字“ singleExecution”用于作为单个共享执行(singleton)执行的活动,否则,每个调用都在其自己的空间中执行。

圆角活动边框可用图的框架符号代替。那种在这种情况下,框架的是活动或行为在短形式。活动参数(如果有)显示在框架上。

使用两个参数-登录ID和密码来验证用户活动框架。 image

具有关键字activity的类的符号可用于显示反射活动的特征,以表明它是活动类。关联和状态机符号也可以根据需要使用。

UML允许行为产生作为活动的令牌,这些令牌又可以在运行时执行。


活动分区

活动分区是 具有某些共同特征的活动的活动组。

分区通常对应 于业务模型中的组织单位或业务参与者。

分区提供了对活动中调用的行为的约束视图。可以根据分区代表的元素的类型选择约束。以下约束是UML 2.4中的规范性(标准):

分类器 实例 部分 属性和价值

例如,分区可以代表特定的 分类器。在这种情况下,每个分区中的操作应是针对作为相应分类器实例的对象的操作或信号。

分区可以表示某些属性 及其子分区-该属性的特定值。例如,分区可以代表执行行为的位置,而子分区可以代表该属性的特定值,例如纽约。

活动分区可以使用泳道符号来显示-两条通常平行的线(水平或垂直)以及在一端的框中标记该分区的名称。任何活动节点(例如,放置在这些行之间的动作和边缘)都被视为包含在分区内。

活动将客户和订单部划分为水平泳道 image

活动分区客户和订单部门为垂直泳道 image

分层分区使用泳道来表示子分区,如下所示。 带有子分区的分层分区 image

可以将分区标记为维度,以便其子分区包含(按组)维度上的那些子分区。例如,活动可能具有一个分区维度,用于执行所包含的行为的位置,而另一个维度则是执行这些行为的成本。 维度分区不能由任何其他分区包含。

图也可以进行多维分区,其中每个游泳单元是多个分区的交集。可以将每个维度内的分区分组为带有isDimension = true的封闭活动分区,其名称为维度名称。但是,不是将其显示为分区本身,而是通过将其名称放在维度中分区集的旁边来指示该维度。

分区可以表示一个不适用分区结构的外部实体。 外部分区是分区结构规则的故意例外。例如,一个维度可能具有显示结构化分类器各部分的分区 。它可以具有一个外部分区,该分区不代表其中一部分,而是一个完全独立的分类器。在业务建模中,外部分区可用于为业务外部的实体建模。

当活动被认为发生在特定模型的域之外时,可以用关键字«external»标记该分区。每当泳道中的活动标记为“外部”时,这将覆盖泳道和尺寸名称。

购买操作发生在外部分区客户中 image

在无法使用泳道显示分区的情况下,可以使用具有限定操作名称的备用文本符号代替。在这种情况下,分区名称放在操作名称上方的括号中。以逗号分隔的分区名称列表意味着该节点包含在多个分区中。分区名称中的双冒号表示该分区是嵌套的,较大的分区位于名称的前面。 购买操作发生在外部分区客户中 image


活动边缘 Activity Edge

“活动边缘”是定向连接的抽象类,令牌或数据对象沿着这些定向连接在活动节点之间流动 。它包括 控制边 和 对象流边。边缘的源和目标必须与边缘处于同一活动中。

活动边缘由连接两个活动节点的空心箭头线表示。 活动边缘连接填充订单和审阅订单。 image

可以为边命名,但是,在活动中不要求边具有唯一的名称。如果边缘有名称,则在箭头附近标记。 活动边缘 “已更新”连​​接两个节点。 image

活动边缘可以具有防护措施 -在运行时评估规格以确定是否可以遍历该边缘。对于提供沿边缘传递的每个令牌,防护罩必须评估为true。

活动边缘 的防护罩在包含防护罩的方括号中显示。 优先级为1时执行订单

image

可以使用连接器标记活动边缘,该连接器是一个内部带有名称的小圆圈。尽管UML 2.4规范称其为边的名称,但提供的连接器符号和示例表明连接器具有其自己的名称(也称为label)。

通常使用连接器以避免拉长边。这纯粹是符号上的。它不会影响基础模型。涉及的圆和线映射到模型中的单个活动边缘。具有给定标签的每个连接器必须在同一活动图上与具有相同标签的另一个完全配对。一个连接器必须恰好具有一个进入边缘,而另一个恰好具有一个离开边缘,每个边缘具有相同的流,对象或控件类型。 连接器A连接“填充顺序”和“查看顺序”之间的两个边。 image


对象流边缘 Object Flow Edge

对象流边缘是 活动边缘, 用于显示 操作节点之间的 对象数据流和数据令牌。

对象流用箭头线表示。 填充订单和复查订单操作之间 的订单对象流 image

任意数量的令牌可以一次,成组地或在不同的时间分别沿边缘通过。的重量属性决定了最小数目必须在同一时间穿过边缘标记。当提供最少数量的令牌时,将源处的所有令牌一次全部提供给目标。

边缘 的重量可能显示在包含该重量的花括号中。权重是一个值规范,可以是一个常数,其评估结果为非零的无限自然值。一个无限的重量记载为“*”。 当警告数量达到6时发送通知。 image

中断边缘 Interrupting Edge

中断边缘是表示具有中断的区域的中断的活动边缘。它被渲染为闪电。 取消请求信号导致中断,导致取消订单。 image

标记中断边缘的选项是直线上的锯齿形装饰。 取消请求信号导致中断,导致取消订单。 image



Online Shopping UML Activity Diagram Example / 网上购物 UML 活动图示例

在线客户可以浏览或搜索商品,查看特定商品,将其添加到购物车,查看和更新​​购物车,结帐。用户可以随时查看购物车。假定签出包括用户注册和登录。

此示例不使用分区,假定大多数操作是由在线客户执行的。 在线购物的UML活动图示例。 image


Process Shopping Order UML Activity Diagram Example / 处理购物订单UML活动图示例

基于[UML 2.4.1 Specification]中的示例12.35的订单处理业务流程活动的示例 。请求的订单是活动的输入参数。接受订单并填写所有必填信息后,接受付款并发货。请注意,此业务流程允许在发送发票或确认付款之前装运订单。

处理采购订单的业务流程活动的示例。 image

此示例不使用分区,因此不清楚谁负责执行每个特定操作。


Document Management Process UML Activity Diagram Example / 文件管理程序UML活动图示例

描述文档管理过程的UML活动图示例。任何大型公司通常都需要某种形式的,经过适当沟通的文档管理过程,尤其是在符合法规的情况下。

一个文件经过不同的状态或阶段-它被创建,审查,更新,批准,并在某些时候存档。参与此过程的不同角色是 作者,审阅者,批准者和所有者。这些角色在图上通过 呈现为水平“ 泳道 ”的分区来表示 。 文档管理流程活动的示例。 image

此活动图显示了不同角色的职责以及文档更改的流程或顺序。图的另一种类型- 状态机图 -在这种情况下也可以用来显示文档如何随着时间改变其状态。

注意,Document对象不是此活动图上显示的唯一对象节点。还有另一个对象- 更改请求,该对象用于将更改传递给Reviewer请求的文档。文档的状态图将仅显示文档的状态和转换,因此,当涉及不同的角色和多个对象节点时,活动图非常有用。


Resolve Software Issue UML Activity Diagram Example / 解决软件问题UML活动图示例

UML活动图 示例 显示了如何解决软件设计中的问题。如果某个问题已解决,则由某些机构创建故障单并复制该问题后,可以确定问题,确定解决方案,修复并验证问题并关闭故障单。

该示例不使用分区,因此不清楚是谁负责执行每个特定操作。 解决软件设计问题的UML活动图示例。 image


Sentinel HASP SL - Activation of Trial Product UML Activity Diagram Example / Sentinel HASP SL-试用产品的激活 UML活动图示例

活动图 示例, 描述了手动激活试用(临时)产品的过程,该产品受Sentinel HASP的 Sentinel HASP SL软件锁保护-软件保护和许可安全解决方案。

Sentinel HASP可以防止软件盗版和知识产权盗窃造成的损失。例如,它为虚拟环境中的许可提供行业领先的支持,并且是市场上第一个支持J2EE应用程序的软件许可和逆向工程保护工具解决方案。

Sentinel HASP软件包括Business Studio-一个功能强大的,基于角色的软件许可和管理工具。产品,市场营销和开发人员可使用Business Studio来准备面向市场的软件产品,并包括将应用程序许可和锁定到Sentinel HASP HL硬件或HASP SL软件产品密钥,管理和跟踪许可,创建以后用于产品激活过程等的产品密钥。

三个活动分区 显示在图中为垂直于泳道,代表 演员 参与活动- 订单管理,客户服务和客户。

客户安装了一些试用产品,例如某些游戏或工具,该产品具有特定的试用期,并且可能具有某些有限的功能或选项。在使用产品一段时间后,客户决定通过申请永久的完整产品许可证来激活产品。 手动激活受HASP SL保护的试用产品的活动示例。 image 当客户可以创建和交付C2V文件(“计算机指纹”)时,订单管理器将必须为产品创建一个新的激活密钥。一旦新产品密钥和C2V文件都可用于客户服务,它就可以激活产品,生成V2C文件并将其交付给客户。

客户应用收到的许可证,从而将已安装的试用产品激活为完整产品。可以使用HASP SL许可证和保护密钥保护产品,以防止将其复制到其他计算机或虚拟机。


Single Sign-On for Google Apps UML Activity Diagram Example / Google Apps的单点登录UML活动图示例

示例, 描述了Google Apps的单点登录(SSO)。

为了与合作伙伴公司进行互动,Google使用了基于OASIS SAML 2.0协议的单点登录。Google充当Gmail或“起始页”之类的服务的服务提供商。合作伙伴公司充当身份提供者,并控制用户名,密码和其他信息,这些信息用于识别,验证和授权Google托管的Web应用程序的用户。每个合作伙伴都向Google提供其SSO服务的URL以及Google用来验证SAML响应的公共密钥。

用于Google Apps单一登录的UML活动图示例。 image 当用户尝试使用某些托管的Google应用程序(例如Gmail)时,Google会生成SAML身份验证请求,并将重定向请求发送回用户的浏览器。将点重定向到特定的身份提供者。SAML身份验证请求包含用户尝试访问的Google应用程序的编码URL。

伙伴身份提供者通过请求有效的登录凭据或通过检查其自己的有效身份验证cookie来对用户进行身份验证。合作伙伴会生成SAML响应并进行数字签名。响应将转发给Google的断言消费者服务(ACS)。

Google的ACS使用合作伙伴的公钥验证SAML响应。如果响应有效,并且身份提供者确认了用户身份,则ACS会将用户重定向到目标URL。否则,用户将看到错误消息。

WangShuXian6 commented 5 years ago

剖面图 Profile Diagram

创建配置文件图 要创建配置文件图表:

首先选择一个元素,其中包含一个新的Profile Diagram作为子元素。

选择型号| 添加图| 菜单栏中的配置文件图或选择添加图| 上下文菜单中的配置文件图

UML简介图 http://www.uml-diagrams.org/profile-diagrams.html

WangShuXian6 commented 5 years ago

实体 - 关系图 Entity-Relationship Diagram

WangShuXian6 commented 5 years ago

流程图 Flowchart Diagram

WangShuXian6 commented 5 years ago

数据流图 Data Flow Diagram

WangShuXian6 commented 5 years ago

知识点

staruml 中设置属性的数组类型

将这项Attributemultiplicity设为*即可

文本换行

文本之间添加空格 将在空格处换行 image

属性中-格式-自动换行 启用 image