登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
签到
每天签到奖励2-10圆
导读
排行榜
TG频道
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
VIP申请
VIP网盘
网盘
联系我们
发帖说明
每日签到
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
安全
›
UML之序列图的执行规范
UML之序列图的执行规范
[ 复制链接 ]
咚獭
2025-5-31 23:51:55
执行规范(Execution Specification)是一个覆盖在生命线上的垂直的、不透明的矩形,这个矩形表示其覆盖的生命线正忙于执行某些行为。
在序列图中执行规范不是必需的,但在复杂的序列图中可能需要查看执行栈或者对某些行为的结束点感兴趣,此时使用执行规范是有帮助的。如果在序列图中的任意一条生命线上使用了执行规范,那么就应当在该图中的所有生命线上都使用执行规范。使用了执行规范的序列图样例如图 1所示,而未使用执行规范的序列图样例如图 2所示。
图 1 在生命线上的执行规范
图 2 生命线上未使用执行规范
执行规范还可以有名称,但一般只在执行的行为名称与对应消息名称不一致时才需要使用执行规范名称。在实际建模工作中,大多数建模者从不为执行规范指定名称。
在图 1中,右侧生命线
ifeline2在开始处存在执行规范,故它处于忙碌状态;然后它向左侧生命线
ifeline1发送同步消息,左侧生命线
ifeline1在接收到消息后开始忙碌执行(故在生命线上描画一个执行规范)。与此同时,右侧生命线
ifeline2暂停执行,直到左侧生命线
ifeline1执行完毕并返回结果给右侧生命线
ifeline2之后,右侧生命线
ifeline2恢复其之前的执行。
在图 1中,右侧生命线
ifeline2暂停执行时,执行规范不再覆盖生命线。但由于当前消息是同步消息,右侧生命线
ifeline2或其包含的部分或线程会等待同步消息的返回,所以依然可以将其视作“执行/忙碌”状态,因而通常情况下,建模者或者工具会使用一个持续到消息返回的执行规范(如图 3所示),而不是一个中间被切断的执行规范。
图 3 连续的执行规范
基于图 1的风格,一个序列图的两条生命线之间的交互时,生命线上的执行规范根据交互过程交替出现,而基于图 3的风格,则两条生命线上可并行出现执行规范。两条生命线由于同步消息而同时处于忙碌状态时,如果存在回调,则执行规范将产生重叠。在图 4中,左侧生命线
ifeline3向右侧生命线:Lifeline4发送同步消息operate(),并且在消息中指定了一个回调操作。右侧生命线:Lifeline4在收到同步消息operate()后开启一个执行规范,但在该执行规范中,需要对左侧生命线:Lifeline3执行一个回调callback(),因而需要在序列图中描画一个由右侧生命线:Lifeline4发送至左侧生命线:Lifeline3消息callback(),这个消息在左侧生命线:Lifeline3上已经存在的执行规范上叠加一个新的执行规范。叠加的执行规范通常以相较于被叠加执行规范较小的矩形表示,并与被叠加执行规范稍微错开,正如在图 4中所描画的那样。
图 4 重叠的运行规范
一些建模者将执行规范理解为当前生命线的激活状态,一些UML工具也按照激活提供执行规范的建模支持,因而很容易引起概念混淆。事实上,激活状态只是执行规范的表现形式之一,并不等同于执行规范本身。执行规范作为UML模型中的一个元素,用于表示生命线在某段时间内正在执行的具体操作或行为,而激活只是帮助我们可视化这一执行过程的手段。如果将两者混为一谈,可能会导致对模型行为的误解。
在实际建模时,为更准确地表达行为语义,我们可以注意以下几点。
首先,要正确使用执行规范元素来体现对象的执行过程,而不应仅依赖工具自动绘制的激活条。确保每个执行规范的开始和结束都与相应消息的发送和返回相对应,这样可以清晰地标明对象何时开始执行操作以及何时结束。
其次,充分利用UML工具提供的功能来增强模型的语义表达,例如为执行规范注明所执行的操作名称或添加注释,使图中的激活更直观地反映实际行为。
最后,虽然不同UML工具对执行规范的呈现方式可能有所不同,但无论工具如何表现激活,都应牢记其背后代表的是执行规范这一概念。
通过这些实践,我们就能有效避免上述误解,在使用UML工具绘制序列图时更精准地传达系统的动态行为语义。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
UML
序列
执行
规范
相关帖子
读书笔记:OpenPBR 规范(1)
DataEase 远程代码执行漏洞分析
为什么PostgreSQL不自动缓存执行计划?这可能是最硬核的优化解读
aspx页面执行cmd命令的程序木马
Go语言编码规范:官方标准与最佳实践
前端分支规范
git提交规范
序列解包
后台性能测试规范
项目可以怎么规范Git commit ?
vip免费申请,1年只需15美金$
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
安全
读书笔记:OpenPBR 规范(1)
0
139
斜素欣
2025-09-24
业界
DataEase 远程代码执行漏洞分析
0
162
讣丢
2025-09-25
安全
为什么PostgreSQL不自动缓存执行计划?这可能是最硬核的优化解读
0
784
锷稠
2025-09-25
程序
aspx页面执行cmd命令的程序木马
0
21
新程序
2025-09-26
业界
Go语言编码规范:官方标准与最佳实践
0
207
洪势
2025-09-28
安全
前端分支规范
0
198
荆邦
2025-09-29
安全
git提交规范
0
176
呶募妙
2025-09-29
安全
序列解包
1
882
颜清华
2025-09-29
安全
后台性能测试规范
0
512
咫噎
2025-09-30
安全
项目可以怎么规范Git commit ?
0
407
彼瞄
2025-10-07
回复
(1)
僻嘶
昨天 05:30
回复
使用道具
举报
照妖镜
懂技术并乐意极积无私分享的人越来越少。珍惜
vip免费申请,1年只需15美金$
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
代码
签约作者
程序园优秀签约作者
发帖
咚獭
昨天 05:30
关注
0
粉丝关注
20
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
anyue1937
9999501
dage888
999994
富账慕
10007
4
匝抽
9986
5
孙淼淼
9992
6
柴古香
9993
7
筒濂
9982
8
凌彦慧
9988
9
崔瑜然
9984
10
慢秤
9979
查看更多