草庐IT

UML 活动图

wake up(); 2023-03-28 原文

本学期在学 uml 建模,这星期要完成对项目用例图中几个主要用例的活动图分析,索性写下自己对活动图的学习笔记和实操。
有些类似的用例,网上或者书上的活动图表示都不尽相同,我是按照自己的理解,感觉没有很严格的标准,重要的是把活动描述清晰明了。

活动图

活动图是一种表达系统动态行为的图,提供了流程的可视化描述。
对于用例图中的用例,我们很难看到潜在的问题,因为其流程及具体操作我们是不知道的。比起用文字描述的用例规格说明,使用活动图将用例的复杂流程可视化会更加清晰明了,便于理解。

一. 基本概念

1. 动作(Actions)

活动包含许多动作,动作是活动的基本单位,具有原子性。动作一般用圆角矩形来表示,动宾结构描述。
活动图中还有活动状态(可分解),也用圆角矩形表示,但其中能包含一个完整活动。动作实际上是活动状态的一个特例。如果一个活动只由一个动作,那么它就是一个动作状态。
动作和活动状态也可以叫作动作节点和活动节点
如果圆角矩形右下角有一个叉子的符号,则该动作为 callBehavior类型,我的理解是该动作会直接调用另一个活动。调用动作所属的活动与被调用活动是两个独立的活动,为不相关集。

2. 开始和终止

活动图展示的是一个流程,那么必然由开始和结束。一个流程有且仅有一个开始节点,但至少有一个结束节点。开始节点为实心黑点,终止节点为一个圆圈,有点像小黄人的眼睛?: )

3. 判断节点和合并节点

判断节点 用菱形表示,具有一个进入流程和多个离开流程,类似于 switch 分支语句。离开流程应该包括进入流程产生的所有可能结果要走的路径。
合并节点 同样用菱形表示,但合并节点具有多个进入流程并导向一个离开流程。
需要注意的是,判断节点和合并节点都只表示逻辑意义,并不意味着动作的并发执行或者其他时间或数据同步的操作,这对区分他们与分叉节点,结合节点很关键

4. 分叉节点和结合节点

分叉节点在图中表示为有一个进入箭头多个离开箭头的粗横线,其与判断节点的区别在于并发,判断节点只执行其中一个离开流程,而分叉节点的进入流程会导致多个离开流程的并发,其常常与结合节点合用来表达并发的过程。
结合节点在图中则表示为有多个进入箭头一个离开箭头的粗横线,对于结合节点来说,必须完成所有的进入流程后,才能进行离开流程,
分叉节点和结合节点的组合使用可以概括为表现多个流程的同进同出

5. 分区(泳道)

分区的目的是为了说明具体活动的执行对象,一般是用户,系统之类。除此之外,对处于不同泳道的并发活动进行分区并列,可以更加清晰地表达并发的进行。

6. 对象流

对象用矩形表示,有时动作的发生可能涉及到对象的变化,通过添加对象流可以直观地表达出对象的变化,比如给油箱加油,我们可能需要这么一个油箱对象,表达油箱当前的状态,如果油量很低则执行动作【加油】,让油量达到满的状态。不建议在活动图添加过多对象,会使得图变得复杂而笨拙,应该均衡其利弊而使用。

二. 实际案例

下面将以一个【预订运动场地】活动为例,画出活动图

  1. 我们要确定有多少个参与者,即泳道条数,我这里有普通用户,订单处理系统以及预约管理系统

  2. 我们要预约场馆,是不是得先告诉系统用户要做什么运动,在什么时候运动。然后预约管理系统就会筛选出满足条件的场馆,如果一个没有,那么预订失败;如果有符合条件的场馆,ok用户再去看这些场馆的信息,用判断节点来表达。

  3. 找到心仪的场馆然后填写预约信息,又订单管理系统参与生成订单,要注意只有用户选择完支付方式后,我们才会执行动作支付预约费用(联系我们使用淘宝的时候!!),所以这是并发的动作。我们上面提到了,用分叉节点和结合节点表示并发。最后在判断节点控制下导向结果预约成功和预约失败,最后的活动图如下

三. 总结

画活动图就是描述一个活动的可视化流程,在画活动图之前,脑海中应该有大致的流程,先做什么后做什么,注意哪些动作是并发,然后梳理清楚,才不至于出来的图有交叉很乱的情况。
我画的也挺粗糙,仅仅用了活动图的基本概念,之后代入角色反复思考,多实践了。

有关UML 活动图的更多相关文章

  1. 最新版人脸识别小程序 图片识别 生成二维码签到 地图上选点进行位置签到 计算签到距离 课程会议活动打卡日常考勤 上课签到打卡考勤口令签到 - 2

    技术选型1,前端小程序原生MINA框架cssJavaScriptWxml2,管理后台云开发Cms内容管理系统web网页3,数据后台小程序云开发云函数云开发数据库(基于MongoDB)云存储4,人脸识别算法基于百度智能云实现人脸识别一,用户端效果图预览老规矩我们先来看效果图,如果效果图符合你的需求,就继续往下看,如果不符合你的需求,可以跳过。1-1,登录注册页可以看到登录页有注册入口,注册页如下我们的注册,需要管理员审核,审核通过后才可以正常登录使用小程序1-2,个人中心页登录成功以后,我们会进入个人中心页我们在个人中心页可以注册人脸,因为我们做人脸识别签到,需要先注册人脸才可以进行人脸比对,进

  2. 【哈士奇赠书活动 - 20期】-〖从程序员到架构师〗 - 2

    文章目录⭐️赠书活动-《从程序员到架构师》⭐️编辑推荐⭐️作者简介⭐️赠书活动→获奖名单⭐️赠书活动-《从程序员到架构师》内容简介:《从程序员到架构师:大数据量、缓存、高并发、微服务、多团队协同等核心场景实战》分为数据持久化层场景实战、缓存层场景实战、基于常见组件的微服务场景实战、微服务进阶场景实战和开发运维场景实战5个部分。基于对十余个架构搭建与改造项目的经验总结,介绍了大数据量、缓存、高并发、微服务、多团队协同等核心场景下的架构设计常见问题及其通用技术方案,包含冷热分离、查询分离、分表分库、秒杀架构、注册发现、熔断、限流、微服务等具体需求下的技术选型、技术原理、技术应用、技术要点等内容,将

  3. Eolink 征文活动- -使用Eolink开展自动化测试分享 - 2

    一、Eolink介绍Eolink是国内起步较早的API全生命周期管理平台。产品能力覆盖API开发-运维-开放交易,实现API研发管理、API快速测试、API自动化测试、API监控、API微服务网关、API对外开放等企业深度场景。使用它能满足我们各种API管理和测试、监控等需求,特别是在自动化测试方面,它提供的建设自动化的功能极大的提高了我们开展自动化接口测试的效率:下面会通过使用Eolink编写一个流程的自动化测试用例来分享讲解一下在Eolink中如何开展自动化及使用教程。目录一、Eolink介绍二、自动化实战1)创建测试项目2)编写用例2.1用户登录2.2创建项目2.3修改项目2.4删除项目

  4. ruby-on-rails - 为什么 Ruby 开发人员似乎不使用 UML? - 2

    我总是听说UML在Java项目中使用,但从未在Ruby项目中使用。这仅仅是文化差异,还是Ruby开发中对建模的需求较少,因为它是更“敏捷”文化的一部分? 最佳答案 显然你不能将这一点推广到每个人,但是使用Ruby和Python等语言的程序员往往不太喜欢大型设计文档和UML,因为他们认为他们选择的语言足够简洁和富有表现力,所以它不是总是必要的。有一种感觉,“我可以花时间在UML中绘制出所有这些......或者我可以编写一些Python来实际实现设计并用我喜欢阅读的语言表达它并且很多人可以阅读。”Java程序往往比Ruby或Python

  5. ruby-on-rails - 如何从现有的Ruby代码生成UML图? - 2

    有人能为ruby和rubyonrails推荐一些好的uml/建模工具吗?从UML图生成代码和从现有代码生成图都是很好的。 最佳答案 检查“UMLtoolsforRuby”(即,从uml图生成一些ruby代码的工具,或者反过来,从ruby代码生成一些uml图的工具)。 关于ruby-on-rails-如何从现有的Ruby代码生成UML图?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/question

  6. 『赠书活动 | 第一期』《分布式中间件核心原理与RocketMQ最佳实践》 - 2

    💗wei_shuo的个人主页💫wei_shuo的学习社区🌐HelloWorld!『赠书活动|第一期』本期书籍:《分布式中间件核心原理与RocketMQ最佳实践》赠书规则:评论区:点赞|收藏|留言评论区留言:"人生苦短,我用Java"活动截止时间:4月23日赠书数量:1Tip:中奖后博主私信通知|三天内不回复将视为|自动放弃书籍介绍分布式中间件核心原理与RocketMQ实战技术一本通:实战案例+操作步骤+执行效果图,手把手教你吃透分布式中间件技术,轻松实现从小白到大牛的职业跃迁!分布式中间件核心原理与RocketMQ实战技术必修宝典!内容简介本书从分布式系统的基础概念讲起,逐步深入分布式系统中间

  7. javascript - 表示 react-redux 连接组件的 UML 图 - 2

    请UML专家帮助布置javascript特定图表。注意:react、FluxArchitecture、reactwithredux需要经验。我需要有关如何表示React应用程序(容器和子组件)的结构和行为的设计决策方面的帮助。使用Sparx企业架构师的目标是拥有标准的UML设计,以便整个团队(其中许多人对技术不是很熟悉)可以理解发生了什么,而且UI开发人员可以使用它进行开发。在我们决定了我们需要的UML类(ReactComponents)、Containers、表示Views以及我们仍在努力的行为之后与:貌似每个主要容器都需要用两张图来完整表示,一张结构图,一张行为图?如果设计遵循约定

  8. javascript - 如果不活动,Firefox 会随机关闭 XMLHttpRequest 连接。为什么? - 2

    在JavaScript类中,XMLHttpRequest连接到服务器。服务器正在缓慢地发送数据。这在Chromium中工作正常,但Firefox会在随机时间后(~4秒到~70秒之间)关闭连接。为什么Firefox关闭连接?以及如何避免这种情况?简化的JS代码:varoptions={};options['header']={'Cache-Control':'no-cache,max-age=0','Content-type':'application/octet-stream','Content-Disposition':'inline'};//Getrequestinformatio

  9. javascript - 如何使用 Angular 2 检测用户不活动? - 2

    我正在尝试创建一个Angular应用程序,其中包含用户在几分钟不活动后需要注销的视频。如果用户正在正常或全屏观看视频,则无需注销。如果选项卡处于非事件状态并且正在播放视频,我需要他在处于非事件状态后注销。 最佳答案 最简单的方法是使用idlejs.它与Angular配合得很好,它包括Typescript的.d.ts绑定(bind)。import{Idle}from'idlejs/dist';//withpredefinedeventson`document`constidle=newIdle().whenNotInteractive

  10. javascript - 如何使用 js/uml 对我的 JavaScript 文件进行逆向工程? - 2

    目标我的目标是从我的JavaScript项目(由几个.js文件组成)中获取UML模型并将其存储为XMI。我走了多远我在网上搜索了一下,发现js/uml是第一个去的地方。我已经设法让js/uml插件与Eclipse3.7.1(Win32)一起运行,并在本地安装我预先下载的附加插件:mdt-uml2tools-Update-incubation-I201103290512.zip(安装所需的org.eclipse.uml2.diagram.clazz0.10.0)jsuml-eclipse-0.8.4.zip(仅适用于Eclipse3.7.1(Indigo))我将提供的示例项目jsuml-

随机推荐