UML活动图-软件需求分析与设计

本文深入探讨了UML活动图的基本概念与组成元素,包括动作、活动、控制流、判断与合并节点、泳道等,阐述了其在业务流程与用例交互建模中的应用,通过实例展示了活动图的绘制技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

UML之活动图

基本概念:是UML中一种重要的用于表达系统动态特性的图

  活动图的作用是描述一系列具体动态过程的执行逻辑,展现活动和活动之间转移的控制流,并且它采用一种着重逻辑过程的方式来叙述。

  在对软件密集系统建模的时候,有时需要详细地模拟系统在运作时的业务流程。面对这种需要,我们可以分析对象间发生的活动和触发条件,选用活动图对这些动态方面进行建模。

  活动图的主要组成元素包括动作、活动、动作流、分支与合并、分叉与汇合、泳道和对象流等。

 

活动图组成元素:动作和活动节点、开始和终止、控制流、判断节点、合并节点、泳道。

在这里插入图片描述

 

 

动作和活动节点

  动作代表一个原子操作,操作可能是任何合法的行为。

  动作可以是并且不限于:创建或删除对象、发送消息、调用接口,甚至数学运算以及返回表达式的求值结果。

  活动节点是一系列动作,主要用于实现动作序列的简化和动作图的嵌套。活动节点在图例上的表达方式和动作相同。、

 

在这里插入图片描述

 

开始和终止

  活动图中的开始和终止是两个标记符号,分别标记了业务流程的起始位置和结束位置。

  活动图中必须有且仅有一个开始标记,一般至少有一个结束标记。(存在一些特殊的无穷过程不存在终止标记。)

 

在这里插入图片描述

 

控制流

  控制流是活动图中用于标示控制路径的一种符号。它负责当一个动作或活动节点执行完毕后,将执行主体从当前已完毕的节点转移到过程的下一个动作或动作节点。

  控制流从活动图的开始标记开始运行,经过顺序、分支等结构引导着各个动作的连续执行。

 

在这里插入图片描述

 

 

判断节点

  判断节点是活动图中进行逻辑判断、并创造分支的一种方法。

  判断节点具有一个进入控制流和至少两个导出控制流。

  判断节点具有多个导出流,对于每条导出流而言,应当在表示该控制流的箭头上附加控制条件。

 

在这里插入图片描述                       

在这里插入图片描述

 

合并节点

  合并节点将多个控制流进行合并,并统一导出到同一个离开控制流。

  合并节点仅有逻辑意义而没有时间和数据上的意义:几个动作都指向同一个合并节点也并不意味着这些动作要在进入之后互相等待或进行同步数据之类的操作。

在这里插入图片描述

 

泳道

  泳道是将活动中的具体活动按照负责进行该活动的对象进行分区,一条泳道中的所有活动由同一个对象来执行。

  除了以上的对线性流程进行分区以外,使用泳道表示法可以更清晰地表示并发。

 

在这里插入图片描述

 

 

工时审批流程

      员工填写工时,项目工时报项目经理审批后再报部门经理审批、非项目工时直接报部门经理审批。

在这里插入图片描述

 

 

 

活动图的高级概念:分叉节点、结合节点、对象流、扩展区域

 

分叉节点与结合节点

  分叉节点是从线性流程进入并发过程的过渡节点,它拥有一个进入控制流和多个离开控制流。分叉节点的所有离开流程是并发关系,即分叉节点使执行过程进入多个动作并发的状态。

  结合节点是将多个并发控制流收束回同一流程的节点标记,功能上与合并节点类似。结合节点的各个进入控制流间具有并发关系,它们在系统中同时运行。

在这里插入图片描述

 

 

例子:学生选课的活动图

学生选上课后需要上课、复习、考试、查询成绩,查询成绩后可以申请复核、查询复核结果、成绩如果及格庆祝、未通过补考或重修。

      

在这里插入图片描述

 

 

在这里插入图片描述

 

对象流

  对象流是UML为填补活动图与面向对象思想之间的疏离而出现的。如果需要在活动图中表现对象流,则首先需要绘制出泳道,且对象应该作为泳道的负责对象出现。

 

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

 

 

扩展区域

  扩展区域是表示过程中的某个活动片段的模型。扩展区域可以将一个需要体现在活动图中的循环过程进行提取(不需要体现在活动图中的,可以直接使用活动节点来略写)。

 

在这里插入图片描述

 

 

 

 

活动图建模技术

对业务流程建模

  选择一个将要描述的重要过程,过程中尽量涉及数量少但是关键的对象或参与者,将无关或关联很小的对象排除在外,为每一个对象或参与者绘制泳道。

  在总体业务流程中提取关键的动作或活动节点,并且将他们与对象或参与者相对应;若发现有些动作无法对应,则考虑动作是否在这个流程中起关键作用,或者是否遗漏了某些对象或参与者。

  规定初始状态;确定过程可能的结束位置,为活动图添加开始和结束节点。

  从业务流程的开始节点开始,把过程中发生的动作按事件顺序排列,依次把这些动作添加到活动图中。

  把局部的过于复杂的动作序列加以总结,绘制成一个活动节点;如果需要,把这个动作序列使用另外的活动图进行建模。

  找出连接这些动作和活动节点的控制流,并且准确找到过程中的分支、分叉、合并与结合节点。

  如果业务流程中有一些关键对象的值或状态需要加以描述,使用对象流添加这些对象在某些动作或活动节点前后的状态描述。

对用例交互建模

  选择概念用例——即从系统对客户提供的各种服务中确定出一个关键业务,这个关键业务可能是在多个相同或不同的情况下反复出现,或者是系统需要提供的一个关键服务或进行的关键操作。

  对于当前选择的用例,通过事件流进行顺序叙述,并找出所有的参与者主动动作,把这些动作整理成动作或活动节点。

  把参与者和系统划分为两个泳道,如果有除了主参与者以外的其它参与者,也为它们分别划分泳道。

  把活动节点纵向按照事件发生顺序、横向按照参与者角色和系统角色对应填入活动图中。

 

绘制活动图

  “活动图” 比较直观易懂;与传统的流程图十分的相近,只要能够读懂活动图,就不难画出活动图

  绘制时首先决定是否采用泳道:主要根据活动图中是否要体现出活动的不同实施者

  然后尽量使用分支、分岔和汇合等基本的建模元素来描述活动控制流程

  如果需要,加入对象流以及对象的状态变化,利用一些高级的建模元素(如辅助活动图、汇合描述、发送信号与接收信号、引脚、扩展区)来表示更多的信息

  活动图的建模关键是表示出控制流,其它的建模元素都是围绕这一宗旨所进行的补充

 

 

 

例子(1)上班活动图

  早上起来,心里斗争是否去上班。如果决定睡懒觉,就打电话请假,继续睡觉。如果决定上班,洗漱后出门上班。上班时要决定吃不吃早餐,吃就买早餐在途中食用,不吃就回公司再做打算。

在这里插入图片描述

 

 

例子(2)汽车租赁

在这里插入图片描述

 

 

例子(3)客户下单

  用户下单后,生成送货清单时让客户选择支付方式。若支付成功后,将收款清单和送货地址交到供货商,供货商修改订单状态,如果送货完成则订单完成否则返回供货商。若支付超时、或支付失败,则结束。

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

### 活动图的概述 活动图是一种动态行为图,主要用于描述某一方法或用例的内部行为,展示活动对象之间的行为顺序关系[^2]。这些图表不仅能够描绘工作流程从起点至终点的变化过程,还特别适用于表达复杂的决策路径以及并发处理情况下的操作序列。 ### 活动图的应用场景结构特点 在实际应用中,活动图广泛应用于业务流程建模领域,帮助清晰地呈现各个阶段的任务流转及其逻辑分支。通过引入特定符号如初始节点、动作节点、控制流箭头等元素来构建完整的图形化表述形式[^3]。 ### 实际案例解析 #### 例子:在线购物系统的订单处理流程 假设有一个简单的电子商务平台,当顾客提交订单后会触发一系列后台操作直至完成整个交易过程: 1. **初始化** - 用户点击“确认购买”,系统接收到请求并启动订单创建流程。 2. **验证库存** - 查询商品数据库检查所需物品是否有足够数量可供出售;如果有则继续下一步骤,否则返回错误提示给前端界面告知客户无法下单。 3. **计算总价** - 计算所选产品的总金额加上运费(如有),并将此信息反馈给用户等待其最终付款决定。 4. **支付网关集成** - 提供多种支付方式选项让用户选择适合自己的方式进行转账汇款; - 支付成功后更新订单状态为已支付,并向仓库部门发出备货通知准备发货事宜。 5. **物流配送安排** - 安排快递公司将货物送达到买家指定地址处结束此次销售环节。 以下是上述过程中涉及到的部分关键步骤简化版UML活动图表示法: ```mermaid graph TD; A(接收订单) --> B{检查库存}; B ----> C[计算价格]; C --> D(提供支付链接); D --> E{支付结果}; E -- 成功 --> F([更新订单状态]); F --> G(通知仓库打包); G --> H(发送运输指令); H --> I(完成订单); B ----> J((返回错误)); ``` ### 子活动图嵌套演示 对于更复杂的功能模块,比如支付环节本身也可能存在多个子步骤构成的小型循环或者条件判断机制。此时可以通过绘制独立的子活动图来进行更加细致入微的表现。例如,在支付网关部分可能会有如下细化的操作链条: - 显示可用支付手段列表 - 接收用户的输入偏好 - 调用第三方API接口发起授权申请 - 根据响应码判定是否批准交易 - 若失败允许重新尝试直到超时为止 这种层次化的展现手法有助于提高可读性和维护便利度的同时也使得整体架构更为严谨有序[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值