【问题标题】:How to draw sequence diagram for multiple-stages use case?如何绘制多阶段用例的序列图?
【发布时间】:2016-08-29 11:05:59
【问题描述】:

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

更具体地说,我为使用 MVC 模式的用户注册示例绘制了一个序列图,如下所示。在此图中,两个阶段由红线划分。此外,我跳过了处理失败或异常的逻辑,例如数据库中已经存在的无效输入或用户名,以使其更简单。看来这个图涉及的对象这么多,是不是应该这样画顺序图呢?或者每个阶段使用2个序列图更好?

【问题讨论】:

  • 目的是什么,你的受众是谁?您是在草拟一个示例来说明一种情况如何运作,还是在尝试传达防弹设计?
  • @JimL。我的目的是学习一种绘制 UML 图的好方法,观众可能是看我的图以了解我的系统如何工作的人。这个图其实是一个简单的例子,只讨论一个成功的情况。

标签: model-view-controller uml use-case sequence-diagram


【解决方案1】:

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

a) 分解

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

你可以这样看:

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

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

b) 使用交互概览

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

【讨论】:

  • 图表门的使用也有助于分解图表。也可以在这里查看:uml-diagrams.org/sequence-diagrams.html
  • 或丢失/找到消息并从图表中删除用户......任何人都可以执行它,用户,测试框架,自动化系统,......
  • remove the User from the diagram,我认为您的意思是将“用户”一词更改为更通用的词,例如“客户”,而不是删除该演员。如果没有触发它的演员,这种互动怎么可能存在?
  • 如果您使用门或丢失/找到消息,那么您不再关心是谁触发了它。想象一下,你正在编写一个函数……你只关心传入的值,而不关心谁给你打电话。
猜你喜欢
  • 2018-09-10
  • 1970-01-01
  • 2015-04-23
  • 2011-08-02
  • 2020-10-13
  • 2017-05-16
  • 1970-01-01
  • 2022-01-10
  • 1970-01-01
相关资源
最近更新 更多