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 日

相关推荐

  • Java 大视界 — Java 开发 Spark 应用:RDD 操作与数据转换(四)

    💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客 !能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的博客 ,正是这样一个温暖美好的所在。在这里,你们不仅能够收获既富有趣味又极为实用的内容知识,还可以毫无拘束地畅所欲言,尽情分享自己独特的见解。我真诚地期待着你们的到来,愿我们能在这片…

    2025 年 1 月 1 日
    50300
  • PyCharm破解安全吗?详细讲解+用户真实体验!

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

    PyCharm激活码 2025 年 9 月 25 日
    10800
  • 华为OD机试E卷 –跳马–24年OD统一考试(Java & JS & Python & C & C++)

    文章目录 题目描述 输入描述 输出描述 用例 题目解析 JS算法源码 Java算法源码 python算法源码 c算法源码 c++算法源码 题目描述 马是象棋(包括中国象棋和国际象棋)中的棋子,走法是每步直一格再斜一格,即先横着或者直者走一格,然后再斜着走一个对角线,可进可退,可越过河界,俗称”马走日”字。给定 m 行 n 列的棋盘(网格图),棋盘上只有棋子象…

    未分类 2025 年 1 月 6 日
    67100
  • 🚀 2025年最新IDEA激活码分享:永久破解IDEA全系列教程(附破解补丁下载)

    💻 教程适用性说明 本教程完美适用于Jetbrains全家桶所有产品,包括但不限于:- IntelliJ IDEA 🔧- PyCharm 🐍- DataGrip 🗃️- GoLand 🦾- 其他Jetbrains系列IDE 先给大家看看最新IDEA 2024.3版本破解成功的实锤截图!有效期直接拉到2099年,简直不要太爽!🎉 下面我就手把手教大家如何实现永…

    2025 年 6 月 9 日
    1.3K00
  • 2024 WebStorm最新激活码,WebStorm永久免费激活码2025-01-12 更新

    WebStorm 2024最新激活码 以下是最新的WebStorm激活码,更新时间:2025-01-12 🔑 激活码使用说明 1️⃣ 复制下方激活码 2️⃣ 打开 WebStorm 软件 3️⃣ 在菜单栏中选择 Help -> Register 4️⃣ 选择 Activation Code 5️⃣ 粘贴激活码,点击 Activate ⚠️ 必看!必看! 🔥 …

    2025 年 1 月 12 日
    79100

发表回复

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

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信