UML活动图简介
活动图,描述的是从一个活动到另一个活动的控制流,描述活动的顺序,活动表示处理事物的动作和状态。
活动图是UML中描述系统动态行为的图之一,用于展现参与行为的类的活动或动作。
UML活动图组成
1. 开始和结束
在活动图当中,活动图的开始由一个实心球表示,结束由一个半实心球表示。
2. 活动和动作流
活动指执行特定动作,并在该动作完成之后向另一个状态转化,通常圆角方框表示。通常将表达的动作写在方框内。
动作流连接活动,通常用实线箭头表示。
3. 分支判断
分支判断描述了一个触发事件在不同的触发条件下引起多个不同的转移,通常用菱形表示。
以简易登录(仅输入密码)为例:
4. 对象和对象流
简单来说,对象就是活动所输出或者输入的,一般是名词,比如:在顾客在购买东西时会进入商品购买工作流,其中账单便是报价活动输出的对象,同时也是付款活动输入的对象,通常用矩形表示。
对象流连接对象和动作,通常用虚线箭头表示。
5. 分叉和汇合
在UML中,可以使用分叉将路径分成两个或多个并发流,然后使用结合,同步这些并流。分叉和汇合通常都用同步条表示,同步条是一条粗的水平线。
以需求的可行性分析为例:
6. 泳道
有时候负责活动的不只一个业务组织,这个时候为了更清楚地表示各个组织所负责的活动部分,以及整体活动流程,我们需要泳道活动图。在泳道活动图中,每一个活动都只能明确的属于一个泳道。
UML活动图实例
以考试活动为例:
用实例法来说明活动图:
用例一:
活动描述:小张每天醒来后先看表是否到起床时间,如果没到继续睡觉;如果到了,抓紧时间起床,洗漱完毕后吃早餐,饭后出门。
小张早晨起床上班的活动,用活动图绘制如下:
起床活动图
上图绘制的就是小张早晨日常生活的活动图,通过这种图形化模型可以把动作的流程性表达的更加清楚,动作的内容、流程、判断、交互、并发都能很好的表达。
活动图分析:
开始与结束:活动图只能有一个起点,但可以有多个终点的。
分支判断:菱形代表分支判断,这个与流程图的分支判断是一样的。上面的分支判断意思是:睡醒后看时间是否到上班时间,如果没到,继续睡觉;如果到了,起床洗漱。
分叉与汇合:分叉与汇合必须组合使用,表示并发动作。分叉表示一个活动完成后产生后续的多个并行的活动;汇合表示多个活动全部完成后再进行下一个活动。分叉是一个指入多个指出,汇合是多个指入汇集后,一个指出。分叉与汇合间的活动是并行执行的,最后都执行完后统一汇合进入下一活动。
- 活动:活动用圆角矩形表示,活动间的控制流用实体箭头表示。活动表示流程中的动作,活动可大可小,活动可以继续拆分成更细小的活动。活动的粒度由图表要表达的含义决定,是要表达宽泛的流程、还是要表达具体的流程。
用例二:
活动描述:产品经理的工作流程,产品在立项前,先要分析市场,进行产品定位和可行性分析;项目成立后,要进行需求分析,通过需求分析编写出商业需求文档、市场需求文档和产品需求文档,之后,根据需求绘制原型、产品设计、流程分析。这些工作完成后进入开发阶段:架构设计、概要设计、详细设计、代码开发、软件测试。
以上活动整理成活动图如下:
产品生命周期流程
解读“产品生命周期”活动图:
上图是产品生产的整个生命周期(生产不包括产品的维护及运营),做产品前先要为产品进行定位,指明产品方向,之后可行性研究(技术可行性、经济可行性和社会可行性),这三种可行性是并行执行的。
项目立项后,对产品进行需求分析,需求阶段会出三个文档性成果物:商业需求文档(BRD)、市场需求文档(MRD)、产品需求文档(PRD)。在上图中把这三个文档用长方形框表示,长方形框表示对象,意思是经过需求分析后生成了的三个文档对象。对象可以做为下一个活动的输入,也可以是活动的输出,输入与输出的对象可以是一个或多个。之后,再经过原型设计、技术设计、开发、测试,最后产品上线。
对象:对象用长方形框表示,对象的名称是名词。活动可以有多个输入和输出,对象可以是成为活动的输入。
用例三
活动描述:客户在网购网站上购物并下单,支付后生成送货单,供应商送货,送货后本次订单结束。
像这种情况涉及到客户、系统与供应商间的交互,客户的活动有下单、选择支付;系统生成送货单并收款;供应商活动有送货及修改订单动作。如使用之前的活动图形式就很难表达出客户、供应商与系统间的活动,如想要更好的表达角色与活动间的关系,就需要把角色加进来,在这里叫做泳道。
根据上面所示业务示意图如下:
泳道:上图中的客户、系统、供应商所属的大的长方形框就为各个对象的泳道,泳道内的活动表示此对象所属的动作,通过跨泳道的信息交互可以更好的表达出对象间与活动间的信息交互。泳道名应为对象名,既然是对象名,所以泳道名应为名词。
UML活动图总结
活动图的角度就是系统内各对象的不同活动间的交互,通过活动间的交互可以更好的梳理思想。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》