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 日

相关推荐

  • 2025年最新PyCharm激活码及永久破解教程(支持2099年)

    本方法适用于Jetbrains全家桶,包括PyCharm、IDEA、DataGrip、Goland等开发工具! 先给大家看看最新PyCharm版本成功破解的截图,可以看到已经完美激活到2099年,非常稳定可靠! 下面我将用详细的图文教程,手把手教你如何将PyCharm永久激活至2099年。 这个方法不仅适用于最新版本,也兼容之前的旧版PyCharm! 支持W…

    PyCharm激活码 2025 年 8 月 22 日
    16700
  • IDEA学生版/社区版也能激活?破解全流程说明!

    本教程适用于IDEA、PyCharm、DataGrip、Goland等,支持Jetbrains全家桶! 废话不多说,先上最新 IDEA 版本破解成功的截图,如下,可以看到已经成功破解到 2099 年辣,舒服! 接下来,我就将通过图文的方式, 来详细讲解如何激活 IDEA至 2099 年。 当然这个激活方法,同样适用于之前的旧版本! 不管你是什么操作系统,什么…

    2025 年 9 月 30 日
    8900
  • Python多线程编程深度研习全攻略

    文章标题: Python多线程编程全方位研习全方案 文章内容 文章目录 Python多线程编程全方位学习指引 一、多线程基础认知 1.1 线程与进程的差别 1.2 全局解释器锁的情况 二、线程的创建与治理 2.1 两种线程创建途径 方式1:函数式创建 方式2:类继承式创建 2.2 线程的经常使用办法与属性 三、线程的同步机制 3.1 锁(Lock) 3.2 …

    2025 年 7 月 4 日
    14100
  • 2025年最新DataGrip激活码分享 | 永久破解教程(支持2099年)

    Jetbrains全家桶通用破解方案 本教程适用于DataGrip、PyCharm、IDEA、Goland等Jetbrains全系列产品,以下展示的是最新版DataGrip成功破解至2099年的效果图: 下面将详细介绍如何实现DataGrip永久激活,此方法同样兼容旧版本! 全平台支持:Windows/Mac/Linux均可使用 版本通用:新旧版本均适用 高…

    DataGrip激活码 2025 年 8 月 12 日
    22700
  • 2025年最新PyCharm激活码及永久破解教程(支持2099年)

    本方法适用于Jetbrains全家桶,包括PyCharm、IDEA、DataGrip、Goland等开发工具! 先给大家看看最新PyCharm版本成功破解的截图,可以看到已经完美激活到2099年,非常稳定可靠! 下面我将用详细的图文教程,手把手教你如何将PyCharm激活到2099年。 这个方法不仅适用于最新版本,之前的旧版本也同样有效! 支持Windows…

    PyCharm激活码 2025 年 8 月 24 日
    29500

发表回复

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

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信