序列圖主要用於按照交互發生的一系列順序,顯示對象之間的這些交互。很象類圖,開發者通常認爲序列圖只對他們有意義。然而,一個組織的業務人員會發現,序列圖顯示不一樣的業務對象如何交互,對於交流當前業務如何進行頗有用。除記錄組織的當前事件外,一個業務級的序列圖能被看成一個需求文件使用,爲實現一個將來系統傳遞需求。在項目的需求階段,分析師能經過提供一個更加正式層次的表達,把用例帶入下一層次。那種狀況下,用例經常被細化爲一個或者更多的序列圖。 組織的技術人員能發現,序列圖在記錄一個將來系統的行爲應該如何表現中,很是有用。在設計階段,架構師和開發者能使用圖,挖掘出系統對象間的交互,這樣充實整個系統設計。 序列圖的主要用途之一,是把用例表達的需求,轉化爲進一步、更加正式層次的精細表達。用例經常被細化爲一個或者更多的序列圖。序列圖除了在設計新系統方面的用途外,它們還能用來記錄一個存在系統(稱它爲「遺產」)的對象如今如何交互。當把這個系統移交給另外一我的或組織時,這個文檔頗有用。 符號 既然這是我基於 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。