提问人:Star 提问时间:10/9/2023 最后编辑:ChristopheStar 更新时间:10/11/2023 访问量:62
如何处理序列图中 actor 抛出的异常,即 cancelOperation()?
How to handle an exception thrown by an actor i.e. cancelOperation() in sequence diagram?
问:
我正在为在线书店的交互模型的一些用例制作一个序列图。在用例序列图中,用户总是有可能通过注销、在操作上按取消或简单地关闭浏览器或应用程序来取消正在发生的进程,就像在正常站点上一样。如何在序列图中对此进行建模?这是我目前拥有的:
我试过放入一个 alt 片段,但它必须包含生命线,我认为这是不对的,因为它取决于用户执行取消的位置。我考虑过使用休息时间,但这假设了这个人要取消的地方。由于这适用于所有用例,因此我不确定如何在执行流程或用例期间对取消进行建模。
答:
SD 详细关注特定场景。这意味着它对一般情况没有太大意义。因此,您的选择是在“常规”SD中添加注释,或者创建单独的SD来显示行为(例如,超时,取消,错误输入等)。
优点:非特殊结果
如果有一个“取消”按钮,按下它是合法的,这是预期的结果之一,而不是例外。如果执行检查操作,则会出现两个预期结果:成功和不成功。乍一看与例外无关。
在这种情况下,您当前的方法非常明确:接收消息,执行一些操作,然后有两种可能的结果,每种结果都有自己的交互序列。
另一种方法是,当需要执行很多事情并且您在途中执行许多检查时,每个检查都可能会阻碍序列的其余部分。在这种情况下,最终将是嵌套的和重复的,并且非常难以阅读。在这种情况下,正如您所发现的,您可以使用 .在封闭块中中断块后停止中断后发生的事情。如果大多数时间流程仍在继续,但在某些情况下,由于用户的礼貌拒绝或检查中的负面结果,旅程就此结束,请使用此技术。这样可以避免嵌套大量框。alt
break
alt
坏处:非凡的结果
例外适用于中断控制流程的真正特殊情况。尽管听起来很奇怪,但在 UML 中可以将异常建模为 .但在序列图中,信号完全表示为操作调用。因此,尽管有例外,SD 会密切关注您所拥有的。包括需要使用或片段。*signal*
alt
opt
丑陋的:可视化编程
现在,除了上述技术替代方案之外,您应该质疑这是否是要走的路。事实上,序列图属于基于场景的建模:这些图经过深思熟虑,对于特定情况来说,阅读起来很直观。如果你开始滥用序列图作为可视化编程工具,不是对单个场景进行建模,而是对尽可能接近实现的算法进行建模,你很快就会得到一个没人会使用的不可读的图表。编程最好用编程语言完成。
评论