Web 服务调用序列图的好例子?
Good example of a sequence diagram for web service calls?
我被要求制作一个序列图来记录我的应用程序进行的 Web 服务调用。
我不是很懂时序图。它们很难阅读 - 很多行,而不是很多文本。例如,如果我想显示我的应用程序调用了特定服务,传递了一组数据并返回了一组不同的数据,那么线路输出和线路返回上几乎没有足够的空间来显示所有这些数据并指出它是一个 GET 或一个 POST,如果没有这些信息,该图就非常简单到不是很有用的地步。我发现在文本文件或 wiki 上记录这样的东西要容易得多。但是我看到序列图有多流行,所以我想我不是 'getting' 它们。
所以我现在有三个问题:
(1) 谁能给我一些特别的 good/useful Web 服务调用序列图的例子,这样我就能知道这是如何正确完成的?
(2) 当流程具有不同的逻辑路径导致不同的 Web 服务调用时,我应该在单个序列图中用 if/then/else 表示这些路径,还是为每种可能性创建不同的序列图?
(3) 我知道时序图是基于UML的,但是UML在什么方面是"language"?没有它的文本表示,对吗?这似乎更像是一种绘制图表的方式,比如流程图。
在您的案例中,序列图的目的是将某些信息传达给您的同事(或未来的自己)。确实没有 "best" 的方法来解决这个问题,就像没有最好的方法来写这个答案一样——我已经改写了这个答案,如果我要重新阅读我的答案一年,我可能会再次改写它更清楚。
这里的图表也是如此;如果你自己不理解这个图(假设你理解序列图的目的),那么其他人也不会理解它。
也许在你的情况下这样的事情就足够了
首先关注沟通,担心稍后 "compliant" UML 规范。
(3)你会认为手语是一种语言吗,即使它使用手势而不是文字?
同样,UML 有一个 "vocabulary" 视觉元素,代表各种概念 --- 带有生命线和消息的序列图表示参与者之间的一系列通信 (类)。此外,您可以在图表中添加注释以阐明您的意图。
(2) 你可以两者都做。同样,决定性因素是沟通的清晰度——如果单个图表太混乱,则将其分解并制作另一个或更多(就像您拆分方法和 类 一样)。一条经验法则是在整个图中保持相同的抽象级别——突然深入实施细节可能会很快使它变得混乱。
(1) 最好的开始方法是先学习图表的 "vocabulary",例如uml-diagrams.org,然后画点东西,看看自己看懂了还是别人看懂了;如果您觉得可以 "reword" 更好,请不要害怕扔掉图表。
there's hardly enough room on the line out and the line back to show all this data
听起来像是工具问题;只需将线条分开,或使用 PlantUML 之类的东西即可。 (或使用实际的 UML 工具。)
the diagram is minimalistic to the point of not being very useful
然后丰富它,添加文本注释,拆分它。将其用作文档的 部分 以仅说明某些要点;您不必将图表用作唯一的文档工件。
我被要求制作一个序列图来记录我的应用程序进行的 Web 服务调用。
我不是很懂时序图。它们很难阅读 - 很多行,而不是很多文本。例如,如果我想显示我的应用程序调用了特定服务,传递了一组数据并返回了一组不同的数据,那么线路输出和线路返回上几乎没有足够的空间来显示所有这些数据并指出它是一个 GET 或一个 POST,如果没有这些信息,该图就非常简单到不是很有用的地步。我发现在文本文件或 wiki 上记录这样的东西要容易得多。但是我看到序列图有多流行,所以我想我不是 'getting' 它们。
所以我现在有三个问题:
(1) 谁能给我一些特别的 good/useful Web 服务调用序列图的例子,这样我就能知道这是如何正确完成的?
(2) 当流程具有不同的逻辑路径导致不同的 Web 服务调用时,我应该在单个序列图中用 if/then/else 表示这些路径,还是为每种可能性创建不同的序列图?
(3) 我知道时序图是基于UML的,但是UML在什么方面是"language"?没有它的文本表示,对吗?这似乎更像是一种绘制图表的方式,比如流程图。
在您的案例中,序列图的目的是将某些信息传达给您的同事(或未来的自己)。确实没有 "best" 的方法来解决这个问题,就像没有最好的方法来写这个答案一样——我已经改写了这个答案,如果我要重新阅读我的答案一年,我可能会再次改写它更清楚。
这里的图表也是如此;如果你自己不理解这个图(假设你理解序列图的目的),那么其他人也不会理解它。
也许在你的情况下这样的事情就足够了
首先关注沟通,担心稍后 "compliant" UML 规范。
(3)你会认为手语是一种语言吗,即使它使用手势而不是文字?
同样,UML 有一个 "vocabulary" 视觉元素,代表各种概念 --- 带有生命线和消息的序列图表示参与者之间的一系列通信 (类)。此外,您可以在图表中添加注释以阐明您的意图。
(2) 你可以两者都做。同样,决定性因素是沟通的清晰度——如果单个图表太混乱,则将其分解并制作另一个或更多(就像您拆分方法和 类 一样)。一条经验法则是在整个图中保持相同的抽象级别——突然深入实施细节可能会很快使它变得混乱。
(1) 最好的开始方法是先学习图表的 "vocabulary",例如uml-diagrams.org,然后画点东西,看看自己看懂了还是别人看懂了;如果您觉得可以 "reword" 更好,请不要害怕扔掉图表。
there's hardly enough room on the line out and the line back to show all this data
听起来像是工具问题;只需将线条分开,或使用 PlantUML 之类的东西即可。 (或使用实际的 UML 工具。)
the diagram is minimalistic to the point of not being very useful
然后丰富它,添加文本注释,拆分它。将其用作文档的 部分 以仅说明某些要点;您不必将图表用作唯一的文档工件。