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

11

请问有人能解释一下序列图和通信图之间的区别吗?

5个回答

17
两个图表都提供了相同的信息,但是顺序图在布局中强调时间,通信图在布局中强调进行通信的对象。
时间在顺序图中是隐含的(通过垂直位置推断),而在通信图中是明确给出的(通过数字)。
引用Scott Ambler的话:
“通信图和顺序图的主要区别在于,顺序图擅长显示顺序逻辑,但不擅长给出‘大局观’,而通信图恰好相反。”

3
强调消息的时间顺序(使用时序图);
强调交互对象之间的结构关系(使用通信图)。
参考:UML用户手册。

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
面向对象设计(OOD)的一个基本规则是根据不同的目的使用不同的图表。 在这方面,序列图用于建模顺序逻辑,而通信图(在UML 1.x中以协作图的形式出现)可用于展示多个对象协同工作以实现共同目标的行为。- 在>>这里<<>>这里<<阅读更多内容。

-5

不鼓励仅包含链接的问题,因为如果链接失效,答案就毫无意义了。 - Eva
最好你自己在这里向他解释。 - AymenDaoudi

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