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 日

相关推荐

  • datagrip激活码永久使用与datagrip破解教程

    本指南兼容IDEA、PyCharm、DataGrip、Goland等Jetbrains全系列产品。话不多说,先展示最新版破解成功的界面截图,可以看到有效期已激活至2099年,非常给力! 下面,我将通过图文详解的方式,手把手教你如何将DataGrip激活到2099年。此激活方案同样兼容历史旧版本!无论你使用何种操作系统或软件版本,相关资源都已为你准备齐全。 获…

    DataGrip激活码 2026 年 1 月 14 日
    14800
  • pycharm破解安装包更新含激活码模板

    声明:以下 PyCharm 破解补丁与激活码均源自互联网,仅供个人学习参考,禁止商业用途。若条件允许,请支持正版! 先放一张 PyCharm 2025.2.1 成功激活到 2099 年的截图,爽到飞起! 下面用图文方式手把手演示如何给最新版 PyCharm 打上“永久”补丁。 嫌折腾?官方正版全家桶低至 32 元/年,直接登录即用:https://pangh…

    PyCharm激活码 2025 年 11 月 13 日
    20900
  • 🚀 2025年最新PyCharm激活码分享 | 永久破解PyCharm终极教程(支持2099年)

    本教程适用于Jetbrains全家桶,包括IDEA、PyCharm、DataGrip、Golang等所有产品!💯 先给大家看看最新PyCharm版本破解成功的截图,已经完美激活到2099年啦!🎉 下面我就用详细的图文教程,手把手教你如何激活PyCharm到2099年。这个方法同样适用于旧版本哦!✨ 无论你是Windows、Mac还是Linux用户 无论你使用…

    PyCharm激活码 2025 年 6 月 18 日
    57000
  • DataGrip 2024破解教程:免费激活至2099年

    DataGrip 2024破解教程:免费激活至2099年 这篇教程适用于所有JetBrains系列软件,包括DataGrip。接下来,我将向大家展示如何通过简单的图文步骤,成功激活DataGrip至2099年。通过这个方法,你不仅能轻松激活最新版本,也能适用于旧版本的激活。 首先,先看一下成功激活的截图,我们可以看到DataGrip已经成功激活,且有效期延续…

    2025 年 4 月 22 日
    62600
  • Microi 吾码与 JavaScript:前端低代码平台的强大组合

    目录 一、引言 二、Microi 吾码概述 三、JavaScript 在 Microi 吾码前端开发中的应用 (一)前端 V8 引擎与 JavaScript (二)接口引擎与 JavaScript 四、JavaScript 在 Microi 吾码后端开发中的协同 (一)与 C# 后端框架的交互 (二)利用 gRPC 实现跨语言通信 五、Microi 吾码中 …

    2024 年 12 月 31 日
    49200

发表回复

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

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信