如何绘制多阶段用例的序列图?

How to draw sequence diagram for multiple-stages use case?

在当前系统中,某些功能/用例可能需要多个阶段才能完成其整个过程。例如用户注册可能包含两个阶段:在数据库中插入用户记录和电子邮件激活。或者对于网上银行转账,在实际交易发生之前需要填写转账信息和短信验证阶段。我想知道如何为此类功能/用例绘制序列图。

更具体地说,我画了一个使用MVC模式的用户注册示例的序列图,显示在底部。在这张图中,两个阶段被红线分开。此外,我还跳过了处理失败或异常的逻辑,例如数据库中已存在的无效输入或用户名,以使其更简单。这张图好像涉及的对象太多了,是不是应该这样画时序图呢?或者每个阶段使用 2 个序列图更好?

一般来说图越小越好。如果您这样做是为了记录/通知目的,那么清晰度应该是您的首要任务。

a) 分解

在您的特定示例中,将其分成(至少)两个序列图将是一个不错的选择,因为这两个活动通常在不同时间执行。

您可以这样看:

  • 第一个图表将未注册用户作为输入并生成未验证用户
  • 第二个图表将未验证用户作为输入并生成已验证用户

这样您就不必担心连接两个图,因为它们实际上并没有那么依赖。

b) 使用交互概述

话虽这么说,UML 有 交互概览图 (http://www.uml-diagrams.org/interaction-overview-diagrams.html),它允许您将各种图表放在一起,因此您可以将其分成两部分,然后只是以不同的方式连接它们。或者您可以使用 状态机图 来跟踪用户的变化 — UML 词汇量很大,因此无需将自己局限于一种类型。