UML之序列图的执行规范

UML之序列图的执行规范规范

执行规范属于覆盖在生命线上的垂直且不透明的矩形,此矩形用以表明其所覆盖的生命线正处于忙于执行某些行为的状态。

在序列图中,执行规范并非是必须存在的,但在复杂的序列图场景里,当需要查看执行栈或者对某些行为的结束点感兴趣时,运用执行规范会起到作用。要是序列图中任意一条生命线上使用了执行规范,那么该图中的所有生命线上都应当使用执行规范。就像图1所展示的使用了执行规范的序列图示例,以及图2所展示的未使用执行规范的序列图示例。

图 1 在生命线上的执行规范
图 1 生命线上的执行规范
图 2 生命线上未使用执行规范
图 2 生命线上未用执行规范

执行规范还能够有名称,不过一般只有在执行的行为名称和对应消息名称不一致时,才需要用到执行规范名称。在实际建模工作中,大多数建模者不会给执行规范指定名称。

在图1中,右侧生命线:Lifeline2起始处有执行规范,所以它处于忙碌状态;接着它向左侧生命线:Lifeline1发送同步消息,左侧生命线:Lifeline1接收到消息后开始忙碌执行(于是在生命线上绘制一个执行规范)。与此同时,右侧生命线:Lifeline2暂停执行,直到左侧生命线:Lifeline1执行完毕并将结果返回给右侧生命线:Lifeline2之后,右侧生命线:Lifeline2才恢复之前的执行。

在图1中,右侧生命线:Lifeline2暂停执行时,执行规范不再覆盖生命线。但由于当前消息是同步消息,右侧生命线:Lifeline2或者其包含的部分或线程会等待同步消息的返回,所以依然可将其视为“执行/忙碌”状态,因而通常建模者或者工具会使用一个持续到消息返回的执行规范(如图3所示),而非中间被切断的执行规范。

图 3 连续的执行规范
图 3 连续的执行规范

依照图1的风格,序列图中两条生命线交互时,生命线上的执行规范会根据交互过程交替出现;而依照图3的风格,两条生命线上可并行出现执行规范。当两条生命线因同步消息同时处于忙碌状态且存在回调时,执行规范会产生重叠。在图4中,左侧生命线:Lifeline3向右侧生命线:Lifeline4发送同步消息operate(),并且在消息中指定了一个回调操作。右侧生命线:Lifeline4收到同步消息operate()后开启一个执行规范,不过在该执行规范中,需要对左侧生命线:Lifeline3执行一个回调callback(),所以需要在序列图中描画一条由右侧生命线:Lifeline4发送至左侧生命线:Lifeline3的消息callback(),这个消息会在左侧生命线:Lifeline3上已有的执行规范上叠加一个新的执行规范。叠加的执行规范通常以相较于被叠加执行规范较小的矩形呈现,并且与被叠加执行规范稍有错开,就像图4中所描画的那样。

图 4 重叠的运行规范
图 4 重叠的执行规范

部分建模者把执行规范理解为当前生命线的激活状态,一些UML工具也依据激活来提供执行规范的建模支持,这就很容易引发概念混淆。实际上,激活状态只是执行规范的表现形式之一,并不等同于执行规范自身。执行规范作为UML模型中的一个元素,用来表示生命线在某段时间内正在执行的具体操作或行为,而激活只是帮助我们可视化这一执行过程的手段。要是将两者混为一谈,可能会导致对模型行为的误解。

在实际建模时,为更精准地表达行为语义,可留意以下几点。

首先,要正确运用执行规范元素来体现对象的执行过程,而不应只依赖工具自动绘制的激活条。要保证每个执行规范的开始和结束与相应消息的发送和返回相对应,如此便能清晰标明对象何时开始执行操作以及何时结束。

其次,充分利用UML工具提供的功能来强化模型的语义表达,比如给执行规范注明所执行的操作名称或者添加注释,让图中的激活更直观地反映实际行为。

最后,尽管不同UML工具对执行规范的呈现方式可能不一样,但无论工具怎样展现激活,都要牢记其背后代表的是执行规范这一概念。

通过这些实践,就能有效避免上述误解,在使用UML工具绘制序列图时更精准地传达系统的动态行为语义。

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/12584.html

(0)
LomuLomu
上一篇 2025 年 6 月 19 日
下一篇 2025 年 6 月 19 日

相关推荐

  • 全网最全clion激活码领取方式,权威clion破解教程同步

    声明:本教程所涉及的 CLion 破解补丁与激活码均来源于互联网公开分享,仅供个人学习与研究,严禁商业用途。若条件允许,请支持正版,前往 JetBrains 官网购买正式授权。 CLion 是 JetBrains 出品的跨平台 C/C++ 集成开发环境,支持 Windows、macOS 与 Linux。以下内容将手把手演示如何借助破解补丁完成永久激活,解锁全…

    2025 年 10 月 23 日
    39700
  • 无需邀请码注册最新版goland激活码,一键破解教程

    免责声明:下文所涉破解补丁、激活码均源于网络公开资源,仅供个人学习研究,禁止商业用途。若条件允许,请支持正版,购买官方授权! GoLand 是 JetBrains 家族专为 Go 语言打造的 IDE,跨 Windows、macOS、Linux 三大平台,功能一应俱全。下面手把手教你利用破解补丁实现“永久解锁”,畅享全部高级特性。 无论你现在用的是什么版本、什…

    2025 年 10 月 16 日
    35600
  • PyCharm破解工具合集|支持2025全年版本激活!

    免责声明:以下破解补丁与激活码均源自互联网公开渠道,仅供学习交流,禁止商业用途。若条件允许,请支持正版:https://panghu.hicxy.com/shop/?id=18 PyCharm 是 JetBrains 出品的一款跨平台 IDE,支持 Windows、macOS 与 Linux。本文将手把手教你用破解补丁永久解锁全部高级功能,无论你安装的是哪个…

    PyCharm激活码 2025 年 9 月 12 日
    31500
  • idea2025.3激活亲测流程

    IDEA 2025.2.1破解教程:IntelliJ IDEA永久激活码+破解补丁下载(亲测可用至2099年) 首先声明一下,本教程中涉及的IDEA破解补丁和激活码都是从网络上搜集而来的,请大家不要用于商业用途,仅作为个人学习交流使用。如果涉及侵权问题,请及时联系作者删除。当然,如果经济条件允许,还是强烈建议大家支持正版软件!话不多说,先来看看IDEA 20…

    IDEA破解教程 2026 年 2 月 27 日
    28900
  • Java智能家居革命:大数据技术赋能用户行为分析与场景自动化(214)

    🌟亲爱的技术探索者们,诚挚欢迎来到【云端科技驿站】!在这个数字化浪潮奔涌的时代,我们共同搭建了一个融合创新技术与实践智慧的交流平台。这里不仅有前沿的技术解析,更期待您分享独到见解,让我们携手在智能科技领域开疆拓土!🌟全网平台(微信公众号/CSDN/抖音/华为/支付宝/微博):云端科技一、加入【技术精英联盟】快速通道1:【云端技术精英社群(2024)】快速通道…

    2025 年 5 月 13 日
    45700

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信