Python设计模式 - UML - 活动图(Activity Diagram)

时间:2022-10-15 12:20:32

简介

活动图描述从一个活动到另一个活动的执行顺序、约束条件、引用对象及状态结果等方面的控制流,适用于对业务用例、工作流程或程序实现建模。

活动图建模步骤

    - 确定活动图的范围和边界,对哪些工作流、哪些活动、哪些对象建模

    - 确定工作流的开始状态和结束状态

    - 确定工作流的各个活动、活动之间的转换、活动涉及的对象

    - 确定工作流中各个活动对应的分支与合并、分叉与汇合关系

    - 找出活动图中的复杂活动集,用相应的子活动图展开描绘

    - 找出活动图中多次重复的活动,抽象为扩展区域

活动图中的主要元素

活动图的核心符号是活动。

  • 活动(Actions):待执行的动作,操作或命令。用圆角矩形标识

Python设计模式 - UML - 活动图(Activity Diagram)

  • 状态(State):一系列操作开始处或结束处的标识,称为开始状态和结束状态。与状态图中相同

    - 开始状态(Start State):起始点。用实心圆点表示

Python设计模式 - UML - 活动图(Activity Diagram)

    - 结束状态(End State):终止点。用空心圆点表示

Python设计模式 - UML - 活动图(Activity Diagram)

  • 转移(Transition):活动之间,或状态与活动之间的转换。用带箭头的直线标识

Python设计模式 - UML - 活动图(Activity Diagram)

Python设计模式 - UML - 活动图(Activity Diagram)

  • 判断(Decision):对活动或状态进行判断,然后选择下一步活动。使用空心菱形标识,与状态图中判定的图标相同

Python设计模式 - UML - 活动图(Activity Diagram)

分支与合并(Decision and Merge):分支表示将单个执行路径分成两个或两个以上的分路径,每个分路径都有相应的前置条件和执行结果

                  合并是指两个或两个以上的路径在该处汇集

Python设计模式 - UML - 活动图(Activity Diagram)

  • 同步条(Synchronization Bar):用于并行执行、成对出现。用加粗线段标识

    

Python设计模式 - UML - 活动图(Activity Diagram)

并发(concurrency):在同一段时间内,有两个或两个以上的活动被执行

分叉与汇合(Fork and Join):分叉表示将一个控制流分成两个或两个以上并发执行的分支;汇合表示并发分支该处汇集同步

Python设计模式 - UML - 活动图(Activity Diagram)

  • 对象(Objects):。用矩形框+带下划线的对象名标识,与类图中对象表示法一致

   

Python设计模式 - UML - 活动图(Activity Diagram)

  • 对象流(Object Flows):将活动涉及到的对象通过依赖关系连接到活动或状态上。这种对象的使用方式就构成了对象流。用带箭头的虚线标识

   如果箭头从活动指向对象,就表示活动对对象有创建、修改或撤销等方面的影响;如果箭头从对象指向活动,则表示活动中引用到该已存在对象。

Python设计模式 - UML - 活动图(Activity Diagram)

  • 泳道(Swimlane):通过将活动图中的活动分成一些纵向区域来给活动进行分组,这些纵向区域就称为泳道。用垂直实线标识

   泳道可以提取各个对象之间的交互,用来展示对象或活动之间的合作关系。

    Python设计模式 - UML - 活动图(Activity Diagram)

  • 时间信号(Time Signal):指定某个时刻或持续某段时间

Python设计模式 - UML - 活动图(Activity Diagram)

  • 信号发送(Send Signal):向外部发送一个信号

Python设计模式 - UML - 活动图(Activity Diagram)

  • 信号接收(Receive Signal):从外部接收一个信号,并执行相应的活动

Python设计模式 - UML - 活动图(Activity Diagram)

  • 引脚(Pin):活动的参数信息,表示每个活动节点所需输入的数据或所产生的数据。用小正方形标识,并在引脚旁边标明该参数

        用于输入参数的引脚称为Input Pin, 用于输出参数的引脚称为Output Pin

    

    Python设计模式 - UML - 活动图(Activity Diagram)

  • 扩展区域(Expansion Region):活动图的一个内嵌套区域,代表一个结构化的活动集,可并发或循环执行。用边框为虚线的带圆角大矩形标识

    Python设计模式 - UML - 活动图(Activity Diagram)

  • 注释(Note):文本描述,帮助理解。

Python设计模式 - UML - 活动图(Activity Diagram)

活动图示例

以下示例可帮助理解活动图中的各个元素及其特性。

  • 带有分支和合并的示例

   以商家订货-发货流程为例

    Python设计模式 - UML - 活动图(Activity Diagram)

  • 带有分叉和汇合的示例

    Python设计模式 - UML - 活动图(Activity Diagram)

  • 带有泳道的示例

   以客户-商家-物流为例

     Python设计模式 - UML - 活动图(Activity Diagram)

  • 带有信号发送和接收的示例

   以电影筹备-开机为例

Python设计模式 - UML - 活动图(Activity Diagram)

  • 带扩展区域的示例

   以医院门诊为例

    Python设计模式 - UML - 活动图(Activity Diagram)

活动图注意事项

    -活动图一开始需要明确工作流的前置条件、后置条件及边界

    - 如果系统相对复杂的话,建议使用总活动图和若干个子活动图的方式显示系统所有的控制流

    - 确定出系统中重要性高的工作流、对象流、对象,为其中的重要业务对象创建相应的泳道

    - 对于活动节点的转换,先处理顺序动作,再考虑分支和合并,之后才是分叉和汇合等并发场景

    - 具有并发或循环属性的活动集可以考虑将其加入到扩展区域

Python设计模式 - UML - 活动图(Activity Diagram)的更多相关文章

  1. Python设计模式 - UML - 类图(Class Diagram)

    简介 类图是面向对象分析和设计的核心,用来描述系统各个模块中类与类之间.接口与接口之间.类与接口之间的关系,以及每个类的属性.操作等特性,一般在详细设计过程中实施. 类图本身就是现实世界的抽象,是对系 ...

  2. Python设计模式 - UML - 通信图(Communication Diagram)

    简介 通信图表示对象之间的消息往来,是表述时序图中信息交互的另一种UML图,介绍完时序图就要对照学习一下通信图,二者是一体两面的. 通信图和时序图可以相互转换,二者的侧重点不同,通信图侧重哪些对象发送 ...

  3. Python设计模式 - UML - 定时图(Timing Diagram)

    简介 定时图也是一种交互图,用来描述对象或实体随时间变化的状态或值,及其相应的时间或期限约束.定时图应用较广,并不局限于软件工程领域. 定时图侧重与时间线相关的值或状态的改变,这些改变可能来自于收到消 ...

  4. Python设计模式 - UML - 时序图(Sequence Diagram)

    简介 时序图表示参与者与对象之间.对象与对象之间的动态交互过程及时序关系. 时序图详细而直观地展示了对象随时间变化的状态.调用关系和消息时序,时序图中的主要元素有:参与者(Actor), 对象(Obj ...

  5. Python设计模式 - UML - 组件图(Component Diagram)

    简介 组件图又称构建图,用于显示系统各组件及各组件关系的物理视图. 组件图通常包括组件.接口.关系.端口和连接器,用来显示程序代码中相应的模块.源文件或源文件集合之间的依赖和泛化关系. 组件图中的组件 ...

  6. Python设计模式 - UML - 包图(Package Diagram)

    简介 包图是对各个包及包之间关系的描述,展现系统中模块与模块之间的依赖关系.一个包图可以由任何一种UML图组成,可容纳的元素有类.接口.组件.用例和其他包等.包是UML中非常常用的元素,主要作用是分类 ...

  7. 活动图activity diagram

    活动图activity diagram 系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类 ...

  8. [UML]UML系列——活动图activity diagram

    系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类图Class [UML]UML系列——类 ...

  9. 【UML】活动图Activity diagram(转)

    前言 在UML状态图的总结中说道,活动图和状态图是紧密相关的.它与流程图也有很多相似的地方. 定义 活动图是状态图的一种特殊形式.其中所有或多数状态都是活动状态,而且所有或多数转移都在源状态中的活动完 ...

随机推荐

  1. 六大免费网站数据采集器对比(火车头,海纳,云采集,ET,三人行,狂人采集)

    2013年02月27日 PHP开源系统 暂无评论 阅读 497 views 次 在目前的站长圈内,比较流行的采集工具有很多,但是总结起来,比较出名的免费的就这么几个:火车头,海纳,云采集,ET,三人行 ...

  2. 持续集成 .Net手册--提升开发效率和质量

    参考:http://blog.csdn.net/chelsea/article/details/132525 持续集成 .Net手册 一.概念 Martin Fowler的文章:Continuous ...

  3. ip的划分,超详细

    from:http://blog.liuts.com/post/128/ IP和子网掩码我们都知道,IP是由四段数字组成,在此,我们先来了解一下3类常用的IP A类IP段 0.0.0.0 到127.2 ...

  4. eclipse https git

    open preferences via application menu Window => Preferences (or on OSX Eclipse => Settings). N ...

  5. java中的继承Object

    一个类,要么是直接继承Object,要么就是间接继承Object,如下: class A{ } class B extends A{ } B 是A的子类,A是Object的子类,所以B间接继承了Obj ...

  6. Java对象的复制

      Java中对象的赋值分为浅拷贝和深拷贝 1.对象浅拷贝 public class CloneTest{ static class Emp{ String name; int age; Date h ...

  7. 使用POI getCell 获取空的单元格之后在使用的时候报 NullPointerException

    解决办法,在得到cell之后先判断cell是否为空,然后再进行逻辑处理. 得到的cell建议使用去除策略(如左对齐,居中等)的cell,不然有可能受到策略影响而导致结果异常. org.apache.p ...

  8. Codeforces Round #141 (Div. 2)

    A. Is your horseshoe on the other hoof? 模拟题意. B. Two Tables 暴力枚举\(x,y\). C. Fractal Detector 显然,判断图形 ...

  9. mac 搭建git服务器

      一.简单搭建,不提供复杂的权限管理: 远程建立git用户,并打开ssh服务:见http://www.cnblogs.com/whj198579/archive/2013/04/09/3009350 ...

  10. Jenkins使用

    1. Jenkins工作流程: ①配置代码源,从代码源(如svn.git等)拉取代码,放入工作区 ②构建触发器(引发构建的条件,比如一定周期.代码提交更改等),从而能自动的进行构建 ③构建,选择构建的 ...