UML 之 用例图
????? 用例圖是指由參與者(Actor)、用例(Use Case)以及它們之間的關(guān)系構(gòu)成的用于描述系統(tǒng)功能的靜態(tài)視圖。用例圖(User Case)是被稱為參與者的外部用戶所能觀察到的系統(tǒng)功能的模型圖,呈現(xiàn)了一些參與者和一些用例,以及它們之間的關(guān)系,主要用于對系統(tǒng)、子系統(tǒng)或類的功能行為進行建模。
1、構(gòu)成部分
??? 用例圖由參與者(Actor)、用例(Use Case)、系統(tǒng)邊界、箭頭組成,用畫圖的方法來完成。
(1)?參與者:是指系統(tǒng)以外的,在使用系統(tǒng)或與系統(tǒng)交互中所扮演的角色
????? 參與者不是特指人。因此參與者可以是人,可以是事物,也可以是時間或其他系統(tǒng)等等。要注意的是,參與者不是指人或事物本身,而是表示人或事物當時所扮演的角色。比如小明是圖書館的管理員,他參與圖書館管理系統(tǒng)的交互,這時他既可以作為管理員這個角色參與管理,也可以作為借書者向圖書館借書,在這里小明扮演了兩個角色,是兩個不同的參與者。參與者在畫圖中用簡筆人物畫來表示,人物下面附上參與者的名稱。
(2)用例:是對包括變量在內(nèi)的一組動作序列的描述
?
????? 系統(tǒng)執(zhí)行這些動作,并產(chǎn)生傳遞特定參與者的價值的可觀察結(jié)果。這是UML對用例的正式定義。可以理解,用例是參與者想要系統(tǒng)做的事情。對于對用例的命名,我們可以給用例取一個簡單、描述性的名稱,一般為帶有動作性的詞。用例在畫圖中用橢圓表示,橢圓下面附上用例的名稱。
(3)系統(tǒng)邊界:是用來表示正在建模系統(tǒng)的邊界。
????? 邊界內(nèi)表示系統(tǒng)的組成部分,邊界外表示系統(tǒng)外部。系統(tǒng)邊界在畫圖中方框來表示,同時附上系統(tǒng)的名稱,參與者畫在邊界的外面,用例畫在邊界里面。因為系統(tǒng)邊界的作用有時候不是很明顯,所以我個人理解,在畫圖時可省略。
(4)箭頭:用來表示參與者和系統(tǒng)通過相互發(fā)送信號或消息進行交互的關(guān)聯(lián)關(guān)系。
????? 箭頭尾部用來表示啟動交互的一方,箭頭頭部用來表示被啟動的一方,其中用例總是要由參與者來啟動。
2、用例圖作用
????? 主要的作用有三個:(1)獲取需求;(2)指導測試;(3)還可在整個過程中的其它工作流起到指導作用。
(1)元素之間的關(guān)系:
????? 用例圖中包含的元素除了系統(tǒng)邊界、角色和用例,另外就是關(guān)系。關(guān)系包括用例之間的關(guān)系,角色之間的關(guān)系,用例和角色之間的關(guān)系。
[1] 角色之間的關(guān)系。由于角色實質(zhì)上也是類,所以它擁有與類相同的關(guān)系描述,即角色之間存在泛化關(guān)系,泛化關(guān)系的含義是把某些角色的共同行為提取出來表示為通用的行為。
[2]用例之間的關(guān)系:關(guān)聯(lián)、泛化、包含、擴展。
如下表所示:
?
a. 關(guān)聯(lián)(Association):表示參與者與用例之間的通信,任何一方都可發(fā)送或接受消息。
【箭頭指向】:指向消息接收方
?
b. 泛化(Inheritance) 等同于有的地方說的 概括(generalize)
就是通常理解的繼承關(guān)系,子用例和父用例相似,但表現(xiàn)出更特別的行為;子用例將繼承父用例的所有結(jié)構(gòu)、行為和關(guān)系。子用例可以使用父用例的一段行為,也可以重載它。父用例通常是抽象的。
【箭頭指向】:指向父用例
?
c. 包含(Include)
包含關(guān)系用來把一個較復雜用例所表示的功能分解成較小的步驟。
【箭頭指向】:指向分解出來的功能用例
?
d. 擴展(Extend)
擴展關(guān)系是指用例功能的延伸,相當于為基礎(chǔ)用例提供一個附加功能。
【箭頭指向】:指向基礎(chǔ)用例?
e. 依賴(Dependency)
以上4種關(guān)系,是UML定義的標準關(guān)系。但VS2010的用例模型圖中,添加了依賴關(guān)系,用帶箭頭的虛線表示,表示源用例依賴于目標用例。
【箭頭指向】:指向被依賴項
?
5. 項目(Artifact)
VS2010中引入了“項目”這樣一個元素,以便讓開發(fā)人員能夠在用例圖中鏈接一個普通文檔。
用依賴關(guān)系把某個用例依賴到項目上:
然后把項目-》屬性 的Hyperlink設(shè)置到你的文檔上;
這樣當你在用例圖上雙擊項目時,就會打開相關(guān)聯(lián)的文檔。
6. 注釋(Comment)
?
注意:包含(include)、擴展(extend)、泛化(Inheritance) 的區(qū)別:
條件性:泛化中的子用例和include中的被包含的用例會無條件發(fā)生,而extend中的延伸用例的發(fā)生是有條件的;
直接性:泛化中的子用例和extend中的延伸用例為參與者提供直接服務(wù),而include中被包含的用例為參與者提供間接服務(wù)。
對extend而言,延伸用例并不包含基礎(chǔ)用例的內(nèi)容,基礎(chǔ)用例也不包含延伸用例的內(nèi)容。
????? 對Inheritance而言,子用例包含基礎(chǔ)用例的所有內(nèi)容及其和其他用例或參與者之間的關(guān)系;
????? 用例圖示例:
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/xinaixia/p/4398371.html
總結(jié)
- 上一篇: Easyui 异步树直接所有展开
- 下一篇: 长知识啊。。