一文讀懂 UML 用例圖

當(dāng)你腦子里有一個(gè)商業(yè)案例時(shí)骂远,你該怎么向老板介紹呢刻恭?一大段文字,或是動(dòng)手寫個(gè) Demo硼一?老板很忙累澡,老板也不見得懂你所說的“高大上”技術(shù),有沒有那種實(shí)現(xiàn)成本較低但又包含較多信息的表現(xiàn)方式呢般贼?有愧哟,畫張圖唄奥吩!

今天起再開個(gè)專題,談?wù)勎覀冮_發(fā)中常用到的一些圖形建模手段蕊梧。前言結(jié)束霞赫,我們從 UML 視圖啟航。

UML Use Case 圖

UML——Unified Modeling Language——統(tǒng)一建模語言望几,是業(yè)務(wù)建模階段最常用和最重要的一種視圖绩脆。由于它簡單易懂萤厅,常常用于跨組織的文檔或演示的說明中橄抹;這里所謂的跨組織指的不僅僅是開發(fā)部門間,而是指跨產(chǎn)品惕味、設(shè)計(jì)楼誓、測試、運(yùn)維等等部門的業(yè)務(wù)交流中名挥。UML 設(shè)計(jì)中疟羹,第一張圖一般都是用例圖:是的,就是那個(gè)有“小人”的圖禀倔。

用例圖主要有三個(gè)部分組成:用例(Use Case)榄融、參與者(Actor),以及它們互相間的關(guān)系(Relationship)救湖;形式上就是用橢圓愧杯、小人,以及箭頭的連線組合鞋既。

Use Case

例子

我們先不細(xì)說橢圓或是箭頭的具體含義力九。我覺得講用例圖最好還是從具體的 Use case 入手為好。我們試著設(shè)計(jì)一款簡單的銀行 APP邑闺,它包含注冊跌前、登陸、交易等等操作陡舅。我們一步步拆解揮著用例圖的過程抵乓。

Systems

畫用例圖的第一步通常是拖出一個(gè)巨大的矩形塊,并將其命名為我們的目標(biāo)系統(tǒng)——Banking App靶衍。一個(gè)用例圖一般只會(huì)有一個(gè) System灾炭,之后我們會(huì)把所有該系統(tǒng)相關(guān)的是功能(“用例”)放置在系統(tǒng)內(nèi)部,系統(tǒng)的相關(guān)方(“參與者”)放置在系統(tǒng)的左右兩側(cè)摊灭。

Banking App

Actors

第二個(gè)繪制元素就是參與者咆贬,即系統(tǒng)相關(guān)方,可以是人帚呼、組織掏缎、外部設(shè)備皱蹦,或是其他系統(tǒng)。在我們這個(gè)銀行案例里眷蜈,該 App 的相關(guān)方有兩個(gè):就是客戶(Customer)和銀行(Bank)沪哺。

Actors

通常來說,一個(gè)用例圖中會(huì)有兩三個(gè)參與者酌儒,我們會(huì)把主要參與者放在系統(tǒng)左側(cè)辜妓,次要參與者(主要參與者的回應(yīng)方)放在右側(cè);顯然我們的 App 主要是面向客戶的忌怎,所以把客戶放在了左邊籍滴。

Use Case

第三步就是在系統(tǒng)內(nèi)添加具體的用例,也就是該系統(tǒng)所提供的功能或是業(yè)務(wù)塊榴啸。我們的銀行 APP 比較簡單孽惰,只提供如下業(yè)務(wù):

  1. 用戶登錄(login)
  2. 查看余額(check balance)
  3. 轉(zhuǎn)賬(transfer funds)
  4. 消費(fèi)(make payment)
Use Case

Relationships

第四步,我們再把參與者與用例串聯(lián)起來鸥印,就是我們所說的關(guān)系(Relationships)勋功。用例圖中,關(guān)系還可以繼續(xù)細(xì)分:

  • association

    “關(guān)聯(lián)”是最樸素库说、最通用的一種關(guān)系形式——UML 圖中用實(shí)線表示狂鞋。如下所示,客戶在操作 App 時(shí)潜的,能使用到登陸骚揍、查看余額、轉(zhuǎn)賬和交易等等操作夏块,我們就可以簡單的將客戶和這幾個(gè)用例通過“關(guān)聯(lián)”綁定起來疏咐。再看銀行方面,當(dāng)客戶查看余額脐供、轉(zhuǎn)賬浑塞、交易時(shí),它自然要有所回應(yīng)政己,所以也需要將它和這三個(gè)用例“關(guān)聯(lián)”起來酌壕;而登陸操作是系統(tǒng)自動(dòng)鑒權(quán)的,因此不與銀行方連接歇由。

    Relationships
  • include & extend

    還有一些關(guān)系表示“包含”和“擴(kuò)展”卵牍,比如客戶在輸入用戶名密碼后,系統(tǒng)需要驗(yàn)證登陸有效性沦泌,這個(gè)操作是每一次登陸后必然發(fā)生的用例糊昙,我們會(huì)用 <<include>> 來連接這兩個(gè)先后發(fā)生的事件;但是登陸“有可能”會(huì)失敗谢谦,這時(shí)候系統(tǒng)會(huì)顯示一個(gè)錯(cuò)誤信息释牺,我們把這種后續(xù)可能發(fā)生的用例萝衩,用 <<extend>> 來表示它與之前用例的關(guān)系。UML 中没咙,“包含”和“擴(kuò)展”在表現(xiàn)上就是虛線+箭頭的形式猩谊,然后在虛線上方注釋具體的關(guān)系形式。

    include & extend
  • Generalization

    另外一種常見的關(guān)系叫做“泛化”祭刚,也可以稱作“繼承”牌捷。繼承在 UML 中的表現(xiàn)方式是實(shí)線+空心箭頭。還是以我們銀行 App 為例涡驮,現(xiàn)在的銀行通常提供多種賬戶支付手段暗甥,你既可以從儲(chǔ)蓄賬戶里支取現(xiàn)金,也可以從一些 T+0 的貨幣型基金賬戶扣錢遮怜;而這兩種細(xì)分的支付手段淋袖,如下所示鸿市,在用例圖中可以表示為通用支付用例的泛化用例:

    Generalization

    當(dāng)然锯梁,“泛化”(或是“繼承”)并不局限于用例之間,也可以是參與者繼承參與者的形式焰情,如 VIP 客戶和普通客戶都可以是通用客戶的泛化參與者陌凳。

Extension points & Note

最后,所有 UML 視圖事實(shí)上都可以加注釋内舟,專業(yè)術(shù)語叫延伸(Extension points)和批注(Note)合敦;這兩種注釋性質(zhì)形同,都是起說明作用:

  • 延伸:通常是用例橢圓下半?yún)^(qū)加注的說明验游,相對來說內(nèi)容較少
  • 批注:是一個(gè)類似文本的圖案充岛,用虛線連接特定元素,可以附帶較多文字信息
extension Points & note

小結(jié)

好了耕蝉,UML 用例圖大體就講完了崔梗。我們再回顧一下用例圖的使用場景,在產(chǎn)品設(shè)計(jì)階段垒在,我們可以使用用例圖為用戶蒜魄、系統(tǒng)和功能服務(wù)建立起抽象關(guān)系,以便描述產(chǎn)品所呈現(xiàn)的外部動(dòng)態(tài)特征场躯。在一些大廠中谈为,通常由產(chǎn)品經(jīng)理或是設(shè)計(jì)師來首先繪制 UML 用例圖,再交于開發(fā)團(tuán)隊(duì)實(shí)現(xiàn)踢关。

我們舉了一個(gè)銀行 App 的例子伞鲫,事實(shí)上有點(diǎn)大了;現(xiàn)實(shí)開發(fā)中签舞,一個(gè) Use Case 圖通常只對應(yīng)的一個(gè)簡單的業(yè)務(wù)流而已秕脓。我們自己在寫用例圖時(shí)驹闰,也要注意在宏觀層面將聯(lián)系緊密的功能模塊抽象為一個(gè)簡單的 Case,然后逐步地為這些較大的功能模塊畫出細(xì)分 Case 的用例圖撒会。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末嘹朗,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子诵肛,更是在濱河造成了極大的恐慌屹培,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件怔檩,死亡現(xiàn)場離奇詭異褪秀,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)薛训,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門媒吗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人乙埃,你說我怎么就攤上這事闸英。” “怎么了介袜?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵甫何,是天一觀的道長。 經(jīng)常有香客問我遇伞,道長辙喂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任鸠珠,我火速辦了婚禮巍耗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘渐排。我一直安慰自己炬太,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布飞盆。 她就那樣靜靜地躺著娄琉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪吓歇。 梳的紋絲不亂的頭發(fā)上孽水,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天,我揣著相機(jī)與錄音城看,去河邊找鬼女气。 笑死,一個(gè)胖子當(dāng)著我的面吹牛测柠,可吹牛的內(nèi)容都是我干的炼鞠。 我是一名探鬼主播缘滥,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼谒主!你這毒婦竟也來了朝扼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤霎肯,失蹤者是張志新(化名)和其女友劉穎擎颖,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體观游,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡搂捧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了懂缕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片允跑。...
    茶點(diǎn)故事閱讀 38,163評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡匀油,死狀恐怖唆途,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情狭魂,我是刑警寧澤拌屏,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布潮针,位于F島的核電站,受9級特大地震影響倚喂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瓣戚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一端圈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧子库,春花似錦舱权、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至仓技,卻和暖如春鸵贬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背脖捻。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工阔逼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人地沮。 一個(gè)月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓嗜浮,卻偏偏與公主長得像羡亩,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子危融,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容