序列图和通信图有什么区别?

时间:2012-04-10 07:27:10

标签: uml sequence-diagram communication-diagram

有人能解释一下序列图和通信图之间有什么区别吗?

5 个答案:

答案 0 :(得分:15)

两个图表都提供相同的信息,但序列图强调其布局中的时间,通信图强调在其布局中进行通信的对象。

时间隐含在序列图中(由垂直位置推断),而在通信图中明确给出(通过数字)。

引用Scott Ambler

  

通信图和序列图之间的主要区别在于序列图擅长于显示顺序逻辑,但不能很好地为您提供“大图片视图”,而通信图则完全相反。

答案 1 :(得分:3)

强调消息的时间顺序(使用序列图)

强调交互对象之间的结构关系(使用通信图)。

参考:UML用户手册

答案 2 :(得分:2)

序列图以一种围栏格式说明交互,其中每个新对象都添加到右侧。

这在代码中可能代表什么?也许,类A有一个名为doOne的方法和一个类型为B的属性。另外,类B的方法名为doTwo和doThree。也许A类的部分定义是:

public class A
   {
   private B myB = new B();

   public void doOne()
   {
   myB.doTwo();
   myB.doThree();
   }
   // . . 
   }

通信图以图形或网络格式说明对象交互,其中对象可以放置在图上的任何位置(墙壁草图优势的本质)。

序列与通信图的优点和缺点是什么?

每种图表类型都有优势,而建模者具有特殊的偏好 - 没有绝对“正确”的选择。但是,UML工具通常强调序列图,因为它们具有更强的符号能力。

序列图与通信图相比具有一些优势。也许首先,UML规范更多的是以序列图为中心 - 更多的思想和努力已被纳入符号和语义。因此,工具支持更好,并且可以使用更多符号选项。此外,通过序列图更容易看到呼叫流程序列 - 只需从上到下阅读。通过通信图,我们必须读取序列号,例如“1:”和“2:”。因此,序列图非常适合文档记录或轻松读取使用UML工具从源代码生成的反向工程调用流序列。

但另一方面,通信图在将“UML作为草图”应用于墙上时具有优势(敏捷建模实践),因为它们更节省空间。这是因为盒子可以在任何地方 - 水平或垂直方便地放置或擦除。因此,使用通信图表修改墙面草图更容易 - 在一个位置擦除一个框,在其他地方绘制一个新的框,并为其绘制一条线,这很简单(在创造性的高变化OO设计工作期间)。相比之下,序列图中的新对象必须始终添加到右边缘,这是有限的,因为它会快速消耗并耗尽页面(或墙壁)上的右边缘空间;垂直维度中的自由空间未被有效使用。与通信图形成对比时,在墙壁上进行序列图的开发人员会迅速感受到绘图的痛苦。

答案 3 :(得分:-3)

面向对象设计的一个基本规则是根据不同的目的使用不同的图表。在这方面,序列图用于对顺序逻辑进行建模,同时为了显示协作在一起以实现共同目的的若干对象的行为,可以使用通信图(以前称为UML 1.x中的协作图)。 - 阅读更多>> here <<>> here <<

答案 4 :(得分:-5)

以下链接是序列图和通信之间差异的简短答案。 请参考。

difference between sequence diagram and communication