热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python设计模式UML活动图(ActivityDiagram)

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

 

 

简介

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

 

活动图建模步骤

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

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

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

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

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

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

 

 

活动图中的主要元素

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

  • 活动(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编程效率的十点建议
    本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 开发笔记:里氏替换原则
    本文由编程笔记#小编为大家整理,主要介绍了里氏替换原则相关的知识,希望对你有一定的参考价值。1.定义:如果对每一个类型为T1的对象o1,都有类型为T2的对象o2, ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
    Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
author-avatar
濮阳小贝
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有