可以將用例圖組織到用例包中,並歸用例包所有,讓特定包中僅顯示互為關聯關係的內容。
用例圖由參與者(Actor)、用例(Use Case)、系統邊界、箭頭組成,用畫圖的方法來完成。
參與者不是特指人,是指系統以外的,在使用系統或與系統互動中所扮演的角色。因此參與者可以是人,可以是事物,也可以是時間或其他系統等等。還有一點要注意的是,參與者不是指人或事物本身,而是表示人或事物當時所扮演的角色。比如小明是圖書館的管理員,他參與圖書館管理系統的互動,這時他既可以作為管理員這個角色參與管理,也可以作為借書者向圖書館借書,在這裡小明扮演了兩個角色,是兩個不同的參與者。參與者在畫圖中用簡筆人物畫來表示,人物下面附上參與者的名稱。
用例是對包括變數在內的一組動作序列的描述,系統執行這些動作,並產生傳遞特定參與者的價值的可觀察結果。這是UML對用例的正式定義,對我們初學者可能有點難懂。我們可以這樣去理解,用例是參與者想要系統做的事情。對於對用例的命名,我們可
給用例取一個簡單、描述性的名稱,一般為帶有動作性的詞。用例在畫圖中用橢圓來表示,橢圓下面附上用例的名稱。
系統邊界是用來表示正在建模系統的邊界。邊界內表示系統的組成部分,邊界外表示系統外部。系統邊界在畫圖中方框來表示,同時附上系統的名稱,參與者畫在邊界的外面,用例畫在邊界裡面。因為系統邊界的作用有時候不是很明顯,所以我個人理解,在畫圖時可省略。
箭頭用來表示參與者和系統通過相互傳送信號或訊息進行互動的關聯關係。箭頭尾部用來表示啟動互動的一方,箭頭頭部用來表示被啟動的一方,其中用例總是要由參與者來啟動。
用例圖主要的作用有三個:(1)獲取需求;(2)指導測試;(3)還可在整個過程中的其它工作流起到指導作用。
□ 元素之間的關係
用例圖中包含的元素除了系統邊界、角色和用例,另外就是關係。關係包括用例之間的關係,角色之間的關係,用例和角色之間的關係。
1、角色之間的關係:
角色之間的關係。由於角色實質上也是類,所以它擁有與類相同的關係描述,即角色之間存在泛化關係,泛化關係的含義是把某些角色的共同行為提取出來表示為通用的行為。
2、用例之間的關係:
包含關係:基本用例的行為包含了另一個用例的行為。基本用例描述在多個用例中都有的公共行為。包含關係本質上是比較特殊的依賴關係。它比一般的依賴關係多了一些語義。在包含關係中箭頭的方向是從基本用例到包含用例。在UML1.1中用例之間是使用和擴展這兩種關係,這兩種關係都是泛化關係的版型。在UML1.3以後的版本中用例之間是包含和擴展這兩種關係。
泛化關係:代表一般於特殊的關係。它的意思和面向對象程式設計中的繼承的概念是類似的。不同的是繼承使用在實施階段,泛化使用在分析、設計階段。在泛化關係中子用例繼承了父用例的行為和含義,子用例也可以增加新的行為和含義或者覆蓋父用例中的行為和含義。
擴展關係的基本含義和泛化關係類似,但在擴展關係中,對於擴展用例有更多的規則限制,基本用例必須聲明擴展點,而擴展用例只能在擴展點上增加新的行為和含義。與包含關係一樣,擴展關係也是依賴關係的版型。在擴展關係中,箭頭的方向是從擴展用例到基本用例,這與包含關係是不同的。
用例的泛化、包含、擴展關係的比較。一般來說可以使用“is a”和“has a”來判斷使用那種關係。范化和擴展關係表示用例之間是“is a”關係,包含關係表示用例之間是“has a”關係。擴展與范化相比多了擴展點,擴展用例只能在基本用例的擴展點上進行擴展。在擴展關係中基本用例是獨立存在。在包含關係中在執行基本用例的時候一定會執行包含用例。如果需要重複處理兩個或多個用例時可以考慮使用包含關係,實現一個基本用例對另一個的引用。當處理正常行為的變形是偶爾描述時可以考慮只用泛化關係。當描述正常行為的變形希望採用更多的控制方式時,可以在基本用例中設定擴展點,使用擴展關係。擴展關係比較難理解,如果把擴展關係看作是帶有更多規則限制的泛化關係,可以幫助理解。通常先獲得基本用例,針對這個用例中的每一個行為提問:該步驟會出什麼差錯?該步驟有不同的情況嗎?該步驟的工作怎樣以不同的方式進行等,把所有的變化情況都標識為擴展。通常基本用例很容易構造,而擴展用例需要反覆分析、驗證。當我們發現已經存在的兩個用例間具有某種相似性時,可以把相似的部分從兩個用例中抽象出來單獨作為一個用例,該用例被這兩個用例同時使用,這個抽象出的用例和另外兩個用例形成包含關係。
USE CASE圖
USE CASE圖
USE CASE圖
USE CASE圖