UML 片段阻止进一步执行?

标签 uml assert diagram sequence-diagram

UML 片段在表示检查操作的情况下使用什么,该检查操作要么停止对失败检查的进一步执行,要么让它继续,类似于编程语句 if role != 'admin': break:

我发现 assert 片段似乎适合这种情况。

图表上的想法:
enter image description here

该片段是否正确用于表示仅当用户具有 admin 角色时才执行 change_sensive_settings() 操作?

最佳答案

我不太喜欢断言,它似乎适用于可视化过程编程,而不是有效行为的干净设计。标准中关于 assert 片段的信息并不多:

The interactionOperator assert designates that the CombinedFragment represents an assertion. The sequences of the operand of the assertion are the only valid continuations. All other continuations result in an invalid trace.

但是这里使用 assert 的方式在这方面似乎令人困惑:您只需在服务器生命线上显示一个约束 { user.role == 'admin } ,而继续将导致在客户端发起一条消息。

为了消除此图的歧义,我建议在 assert 片段中包含由 register_user() 消息组成的序列,后跟返回消息和您的约束。这将清楚地将有关用户角色约束的结果与注册联系起来。

但这只是故事的一部分。因为,“所有其他延续都会导致无效跟踪”在实践中意味着什么? Assert,只是说出一个假设。在这种互动之前有什么东西可以使这个假设变得现实吗?如果不是,如果用户没有足够的授权会发生什么?

出于所有这些原因,我宁愿建议使用此处和alt来显示正常流程,但也建议如果用户没有正确的授权,则应该发生一些事情(并且在哪一边:客户端或服务器)。

关于UML 片段阻止进一步执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71109490/

相关文章:

svn - 渲染Subversion树?

dynamic - Enterprise Architect 序列图中的平行生命线

java - 在 UML 中用实线打开箭头?

mysql - 有什么方法可以自动生成UML图?

java - 有没有办法中断 java 中的 jni C++ 断言并至少为我的 java 代码打印堆栈跟踪?

c - C程序abort()使.exe访问在终止后被拒绝

uml - Enterprise Architect - 取消连接器桥

database - 归一化图绘制软件推荐

uml - Action 执行规范和行为执行规范

r - R 是否有像 python 中那样的断言语句?