UML(Unified Modeling Language) 統(tǒng)一建模語(yǔ)言洋只,它是一個(gè)支持模型化和軟件系統(tǒng)開發(fā)的圖形化語(yǔ)言;UML在軟件開發(fā)的需求分析階段起到了重要的作用,圖形化表示可以更直觀,更清晰的展示業(yè)務(wù)邏輯的方方面面。
UML規(guī)范用來描述建模的概念有奢人,類(對(duì)象的)、對(duì)象淆院、關(guān)聯(lián)何乎、職責(zé)、行為、接口支救、用例抢野、包、順序各墨、協(xié)作指孤,以及狀態(tài)。
UML從不同的系統(tǒng)與功能贬堵,提供了5類10種圖恃轩,分別為:
用例圖
靜態(tài)圖: 類圖, 包圖黎做, 對(duì)象圖
行為圖: 活動(dòng)圖叉跛, 狀態(tài)圖
交互圖: 順序圖, 合作圖
實(shí)現(xiàn)圖: 部署圖
UML建模篇會(huì)講到常用幾種圖蒸殿,如用例圖筷厘, 類圖,時(shí)序圖伟桅, 活動(dòng)圖等敞掘。本篇講的是UML之用例圖叽掘。
概念
用例圖是由參與者(人)楣铁, 用例(功能), 邊界(系統(tǒng))以及它們之間的關(guān)系構(gòu)成的更扁,用例圖是從用戶角度盖腕,描述一個(gè)系統(tǒng)之下的子系統(tǒng),功能與用戶浓镜,功能與功能之間關(guān)系的模型圖溃列。
組成要素
參與者(用戶)
用例(功能)
邊界(子系統(tǒng))
用戶與用例的關(guān)系
用例與用例的關(guān)系
參與者
參與者是系統(tǒng)以外的直接與系統(tǒng)交互的角色,參與者是角色膛薛,而不是具體的人听隐;因?yàn)橥粋€(gè)人,可能扮演著多個(gè)角色哄啄。如網(wǎng)絡(luò)商城系統(tǒng)的買家雅任, 店主, 管理員等都是參與者
參與者不是特指人咨跌,是指系統(tǒng)以外的沪么,在使用系統(tǒng)或與系統(tǒng)交互中所扮演的角色。因此參與者可以是人锌半,可以是事物禽车,也可以是時(shí)間或其他系統(tǒng)等等。還有一點(diǎn)要注意的是,參與者不是指人或事物本身殉摔,而是表示人或事物當(dāng)時(shí)所扮演的角色州胳。比如小明是圖書館的管理員,他參與[圖書館管理系統(tǒng)]的交互逸月,這時(shí)他既可以作為管理員這個(gè)角色參與管理陋葡,也可以作為借書者向圖書館借書,在這里小明扮演了兩個(gè)角色彻采,是兩個(gè)不同的參與者腐缤。參與者在畫圖中用簡(jiǎn)筆人物畫來表示,人物下面附上參與者的名稱肛响。
用例
用例可以理解參與者想要系統(tǒng)做的操作或功能岭粤,可以理解為功能,如加入購(gòu)物車特笋, 支付等
用例是對(duì)包括變量在內(nèi)的一組動(dòng)作序列的描述剃浇,系統(tǒng)執(zhí)行這些動(dòng)作,并產(chǎn)生傳遞特定參與者的價(jià)值的可觀察結(jié)果猎物。這是[UML](https://baike.baidu.com/item/UML/446747)對(duì)用例的正式定義虎囚,對(duì)我們初學(xué)者可能有點(diǎn)難懂。我們可以這樣去理解蔫磨,用例是參與者想要系統(tǒng)做的事情淘讥。對(duì)于對(duì)用例的命名,我們可以給用例取一個(gè)簡(jiǎn)單堤如、描述性的名稱蒲列,一般為帶有動(dòng)作性的詞。用例在畫圖中用橢圓來表示搀罢,橢圓下面附上用例的名稱蝗岖。
系統(tǒng)邊界
正常理解,就是當(dāng)前系統(tǒng)或子系統(tǒng)的邊界榔至;邊界內(nèi)是系統(tǒng)的組成部分抵赢,系統(tǒng)外就是系統(tǒng)外部。一般這里的系統(tǒng)邊界多指復(fù)雜系統(tǒng)劃分的子系統(tǒng)的邊界
系統(tǒng)邊界是用來表示正在建模系統(tǒng)的邊界唧取。邊界內(nèi)表示系統(tǒng)的組成部分铅鲤,邊界外表示系統(tǒng)外部。系統(tǒng)邊界在畫圖中用方框來表示兵怯,同時(shí)附上系統(tǒng)的名稱彩匕,參與者畫在邊界的外面,用例畫在邊界里面媒区。因?yàn)橄到y(tǒng)邊界的作用有時(shí)候不是很明顯驼仪,所以我個(gè)人理解掸犬,在畫圖時(shí)可省略。
關(guān)系
1.關(guān)聯(lián)關(guān)系
關(guān)系類型: 參與者與用例之間的關(guān)系
關(guān)聯(lián)很好理解绪爸,表示參與者與用例之間的交互關(guān)系湾碎,任何一方都可以發(fā)送或接收消息,如上圖奠货。
2.泛化關(guān)系
關(guān)系類型: 參與者與參與者的關(guān)系介褥, 用例與用例的關(guān)系
泛化表示一般與特殊的關(guān)系,類似于OOP中的繼承關(guān)系递惋,泛化也即在一定的約束下的多樣化柔滔,如上圖,微信支付萍虽,支付寶支付睛廊,銀聯(lián)支付等都繼承自支付,箭頭指向泛化來源杉编。類似OOP中的繼承或者接口實(shí)現(xiàn)超全,箭頭指向父類或接口。
3.包含關(guān)系
關(guān)系類型: 用例與用例的關(guān)系
在業(yè)務(wù)中邓馒,總有一些大的關(guān)系或者說復(fù)雜的用例嘶朱,直接描述會(huì)很復(fù)雜,因此可以拆分為很多小的用例光酣,這些用例就包含于大的用例疏遏;如數(shù)據(jù)庫(kù)操作是一個(gè)復(fù)雜的用例,可能會(huì)涉及到眾多的操作挂疆,因此我們可以把它拆分為一些小的用例改览,如數(shù)據(jù)庫(kù)讀操作下翎, 數(shù)據(jù)庫(kù)插入操作缤言, 數(shù)據(jù)庫(kù)刪除操作,數(shù)據(jù)庫(kù)修改操作等等视事。
4.擴(kuò)展
關(guān)系類型: 用例與用例的關(guān)系
擴(kuò)展關(guān)系與泛化關(guān)系有些相像胆萧, 但也有不同。從概念或意義上來看俐东, 泛化是是一般與特殊的關(guān)系跌穗;如水果與蘋果, 汽車與奔馳等虏辫;泛化出的事物類似Class,子類是符合父類特征的約束蚌吸;就像繼承水果Class的子類本身必須是水果。而擴(kuò)展砌庄,字如其意羹唠,是在原來基礎(chǔ)上進(jìn)行了一定的擴(kuò)充奕枢,而擴(kuò)展出的用例和基本用例不必符合同一特征,如汽車和奔馳是泛化佩微, 汽車和保險(xiǎn)呢 缝彬? 保險(xiǎn)就是伴隨著買車而附帶的功能,本身不符合汽車的特征哺眯。
好了谷浅,本篇主要講述了用例圖的概念, 組成元素以及關(guān)系的解讀奶卓。希望可以幫到一些正在學(xué)習(xí)一疯,不知道從哪學(xué)的伙伴, 如果你覺得看完本篇文章不算浪費(fèi)時(shí)間夺姑,還有點(diǎn)小小的收獲违施, 請(qǐng)為我打Call!