序列图中嵌套的 alt 是一个好习惯吗?

Is nested alt in sequence diagram a good practice?

我创建了一个序列图,发现它有多个嵌套的 alt。

这是好事还是坏事?

如果这是一种不好的做法,我应该怎么做?

有点。你可以这样做,它会没事的。但是,一旦开始这样做,您就有陷入图形化编程的危险。曾几何时,人们梦想将图形化编程作为 未来的解决方案。很简单,事实并非如此。代码更加密集且更易于阅读。所以不要以这种方式开始编写程序。

现在开始使用该结构。无论何时您想展示一些复杂的协作,参与者的图形概览将是最有帮助的。但前提是您坚持交流中最重要的部分。与其嵌套片段,不如关注不同的 SD。您可以使用消息端点在详细图之间交叉。同样,这取决于您如何拆分。找到黄金比例需要一些经验。

好的、坏的和丑的

如果没有 objective 标准,很难就好的和坏的做法给出建议,这将取决于 图表的目的:

  • 如果您将 UML 用于某种 可视化编程,其中综合图表应显示特定交互的所有细节,嵌套 alt 如果别无选择,这可能是一种 好的 做法。由于不同的生命线正在驱动独立的替代方案(FusionAuth 外部 altOccupations 内部),嵌套适当地代表了行为逻辑。但是,如果相同的生命线会推动决策,则扁平化 alt 可能是一种更具可读性的方式,将更复杂的嵌套与更多但更简单的分支进行交易。

  • 如果您使用 UML 交流和推理 系统,图表应该很容易理解:嵌套将是 不好练习,因为它增加了一定程度的复杂性。

幸运的是,我们避免了丑陋的:相同的嵌套alt在几个分支中。

嵌套 alt 的替代方法

UML 的秘诀是多图少图,每个图只关注一个方面。您可以在 Booch、Jacobson 和 Rumbaugh 的书 UML 用户指南.

几乎每一章的结尾处找到这条建议。

此处适用两种策略:

  • 每个场景的图表:主要的成功场景将是一张图表,而不同的失败场景将是其他图表。超级易读。
  • Separation of concerns:不同的图表将解决不同的问题,例如,您可以将 Occupations 的客户使用和 Occupations 开展业务的方式分开:分开 [= 18=、ClientOccupationsOccupationsFusionAuthDatabase两个图;您应避免嵌套 alt,第二张图中的内部嵌套不一定与同一受众相关。

备注:我不太喜欢可视化编程。但如果你是,第二种策略与它完全兼容,优点是可以防止 丑陋 在几个地方重复相同的嵌套片段。