序列图和协作图的区别

19
当我阅读 UML 规范超级结构时,发现有序列图和协作图两种类型。那么,这两种图有什么区别呢?

可能是重复的问题:序列图和通信图有什么区别? - PsiX
序列图描述成功的行为。 - Faisal Naseer
6个回答

21

序列图和协作图都旨在描述对象之间的动态交互。

  • 序列图更突出时间方面,通过显示垂直时间线上的调用和响应以及明确显示对象的激活时间来实现。序列图显示对象如何按照时间顺序通信的,消息按照垂直时间线进行排序,同时还报告了与这些消息关联的对象的生命周期。下图(摘自我们的书籍)展示了一个描述3个对象(Shipment类、Invoice类和PartList类的实例)之间交换的消息的序列图示例。交互图描述系统的执行场景。

UML sequence diagram example

  • 协作图旨在显示对象之间发生的通信,通过定义彼此之间流动的消息来完成。它们基本上是将通信操作叠加在对象图上的。通过为交互分配连续编号,也可以在这里显示时间方面。协作图通过连接可以相互交互的元素的实心无向线条和流经该线条的消息来显示对象或类之间的交互。这一方面同时描述了系统的某些静态结构(链接和节点)和动态行为(消息)。下面是一个示例。

UML collaboration diagram example


感谢您的努力。 据我所知,第二个图是通信图而不是协作图,对吗? 因为我在UML规范超结构2.5仍处于beta版的第225页中阅读了有关协作的内容。http://www.omg.org/spec/UML/2.5/Beta1/PDF - Carlos
1
呃……其实这是 UML 1 中的协作图(在 UML 2 中有一种类似的通信图)。既然你现在问,我就认为你是在询问过去的模型。 - user1031645

5

UML1: 这些图表相同,但从不同的角度呈现数据。

UML2: 协作图已更名为通信图(因为人们认为协作图用于展示协作而产生了误解)。 这些图表几乎相同,但序列图具有更多的可视化可能性(例如,组合片段、状态不变量)。


4

序列图以时间顺序的方式指定交互,可能涉及对象和/或类。这些图表在早期详细阶段创建,在该阶段中,每个用例的流程都以序列形式定义,即在每个步骤之后会发生什么。这种表示方法非常有助于理解和与客户讨论用例,双方可以提出所有可能的功能方面。 另一方面,协作图提供了对象之间的直接交互。这些图表似乎在开发设计实现关系时更常用。


2

序列图和协作图之间有区别。序列图展示对象在时间上的交互(因此不需要对消息进行编号),但协作图不展示对象在时间上的交互(需要对消息进行编号)。

注:

现在协作图也被称为通信图。


1

序列图是动态的,更重要的是它是按时间顺序排列的。协作图与序列图非常相似,因为它们都展示了系统中对象之间的动态交互。协作图的一个区别在于它展示了对象及其与系统中其他对象的关联,而不仅仅是它们彼此之间的交互。序列图中不表示对象之间的关联。

链接:http://www.developer.com/design/article.php/3102981/Collaboration-Diagram-in-UML.htm


1
对象之间没有关联,它们被称为“链接”。 此外,序列图和通信图包含实例规格说明,而不是对象。 - Denis Ivanov

0
  • 使用序列图来展示时间并强调交互的顺序或排序。

  • 使用通信图来强调参与者之间的联系。通信图可以作为对象图的有益补充。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接