UML序列图详解(1)

序列图主要用于按照交互发生的一系列顺序,显示对象之间的这些交互。很象类图,开发者通常认为序列图只对他们有意义。然而,一个组织的业务人员会发现,序列图显示不一样的业务对象如何交互,对于交流当前业务如何进行颇有用。除记录组织的当前事件外,一个业务级的序列图能被看成一个需求文件使用,为实现一个将来系统传递需求。在项目的需求阶段,分析师能经过提供一个更加正式层次的表达,把用例带入下一层次。那种状况下,用例经常被细化为一个或者更多的序列图。 组织的技术人员能发现,序列图在记录一个将来系统的行为应该如何表现中,很是有用。在设计阶段,架构师和开发者能使用图,挖掘出系统对象间的交互,这样充实整个系统设计。 序列图的主要用途之一,是把用例表达的需求,转化为进一步、更加正式层次的精细表达。用例经常被细化为一个或者更多的序列图。序列图除了在设计新系统方面的用途外,它们还能用来记录一个存在系统(称它为“遗产”)的对象如今如何交互。当把这个系统移交给另外一我的或组织时,这个文档颇有用。 符号 既然这是我基于 UML 2的 UML 图系列文章的第一篇,咱们须要首先讨论对 UML 2 图符号的一个补充,即一个叫作框架的符号元件。在 UML 2中,框架元件用于做为许多其余的图元件的一个基础,可是大多数人第一次接触框架元件的状况,是做为图的图形化边界。当为图提供图形化边界时,一个框架元件为图的标签提供一致的位置。在 UML 图中框架元件是可选择的;就如你能在图 1 和 2 中见到的,图的标签被放在左上角,在我将调用框架的“namebox”中,一种卷角长方形,并且实际的 UML 图在较大的封闭长方形内部定义。 基础 序列图的主要目的是定义事件序列,产生一些但愿的输出。重点不是消息自己,而是消息产生的顺序;不过,大多数序列图会表示一个系统的对象之间传递的什么消息,以及它们发生的顺序。图按照水平和垂直的维度传递信息:垂直维度从上而下表示消息/调用发生的时间序列,并且水平维度从左到右表示消息发送到的对象实例。 生命线 当画一个序列图的时候,放置生命线符号元件,横跨图的顶部。生命线表示序列中,建模的角色或对象实例。 1 生命线画做一个方格,一条虚线从上而下,经过底部边界的中心(图 3)。生命线名字放置在方格里。生命线表示类Student的实体,它的实体名称是freshman。这里注意一点,生命线名称带下划线。当使用下划线时,意味着序列图中的生命线表明一个类的特定实体,不是特定种类的实体(例如,角色)。在未来的一篇文章中,咱们将会了解结构化建模。如今,仅仅评述序列图,可能包含角色(例如买方和卖方),而不须要叙述谁扮演那些角色(例如Bill和Fred)。这准许不一样语境的图重复使用。简单拖放,序列图的实例名称有下划线,而角色名称没有。咱们生命线例子是一个命名的对象,可是不是全部的生命线都表明命名的对象。相反的,一个生命线能用来表现一个匿名的或未命名的实体。当在一个序列图上,为一个未命名的实例建模时,生命线的名字采用和一个命名实例相同的模式;可是生命线名字的位置留下空白,而不是提供一个例图名字。再次参考图 3,若是生命线正在表现Student类的一个匿名例图,生命线会是: “Student”。同时, 由于序列图在项目设计阶段中使用,有一个未指定的对象是彻底合法: 举例来讲,“freshman”。 消息 为了可读性,序列图的第一个消息老是从顶端开始,而且通常位于图的左边。而后继发的消息加入图中,稍微比前面的消息低些。 为了显示一个对象(例如,生命线)传递一个消息给另一个对象,你画一条线指向接收对象,包括一个实心箭头(若是是一个同步调用操做)或一个棍形箭头(若是是一个异步讯号)。消息/方法名字放置在带箭头的线上面。正在被传递给接收对象的消息,表示接收对象的类实现的一个操做/方法。在图 4 的例子中,analyst对象调用ReportingSystem 类的一个实例的系统对象。analyst对象在调用系统对象的 getAvailableReports 方法。系统对象而后调用secSystem 对象上的、包括参数userId的getSecurityClearance 方法,secSystem的类的类型是 SecuritySystem。咱们生命线例子是一个命名的对象,可是不是全部的生命线都表明命名的对象。相反的,一个生命线能用来表现一个匿名的或未命名的实体。当在一个序列图上,为一个未命名的实例建模时,生命线的名字采用和一个命名实例相同的模式;可是生命线名字的位置留下空白,而不是提供一个例图名字。再次参考图 3,若是生命线正在表现Student类的一个匿名例图,生命线会是: “Student”。同时, 由于序列图在项目设计阶段中使用,有一个未指定的对象是彻底合法: 举例来讲,“freshman”。 消息 为了可读性,序列图的第一个消息老是从顶端开始,而且通常位于图的左边。而后继发的消息加入图中,稍微比前面的消息低些。 为了显示一个对象(例如,生命线)传递一个消息给另一个对象,你画一条线指向接收对象,包括一个实心箭头(若是是一个同步调用操做)或一个棍形箭头(若是是一个异步讯号)。消息/方法名字放置在带箭头的线上面。正在被传递给接收对象的消息,表示接收对象的类实现的一个操做/方法。在图 4 的例子中,analyst对象调用ReportingSystem 类的一个实例的系统对象。analyst对象在调用系统对象的 getAvailableReports 方法。系统对象而后调用secSystem 对象上的、包括参数userId的getSecurityClearance 方法,secSystem的类的类型是 SecuritySystem。
相关文章
相关标签/搜索