|
在畫用例圖的時(shí)候,理清用例之間的關(guān)系是重點(diǎn)。用例的關(guān)系有泛化(generalization)、擴(kuò)展(extend)和包含(include)。其中include和extend最易混淆。下面我們結(jié)合實(shí)例徹底理清三者的關(guān)系。
基本概念 用例圖(Use Case Diagram):用例圖顯示誰是相關(guān)的用戶,用戶希望系統(tǒng)提供什么服務(wù)(用例),以及用例之間的關(guān)系圖。用例圖主要的作用是獲取需求、指導(dǎo)測(cè)試。 用例圖的4個(gè)基本組件:參與者(Actor)、用例(Use Case)、關(guān)系(Relationship)和系統(tǒng)。 泛化(generalization):泛化關(guān)系是一種繼承關(guān)系,子用例將繼承基用例的所有行為,關(guān)系和通信關(guān)系,也就是說在任何使用基用例的地方都可以用子用例來代替。泛化關(guān)系在用例圖中使用空心的箭頭表示,箭頭方向從子用例指向基用例。 擴(kuò)展(extend): extend關(guān)系是對(duì)基用例的擴(kuò)展,基用例是一個(gè)完整的用例,即使沒有子用例的參與,也可以完成一個(gè)完整的功能。extend的基用例中將存在一個(gè)擴(kuò)展點(diǎn),只有當(dāng)擴(kuò)展點(diǎn)被激活時(shí),子用例才會(huì)被執(zhí)行。 extend關(guān)系在用例圖中使用帶箭頭的虛線表示(在線上標(biāo)注<<extend>>),箭頭從子用例指向基用例。 包含(include): include為包含關(guān)系,當(dāng)兩個(gè)或多個(gè)用例中共用一組相同的動(dòng)作,這時(shí)可以將這組相同的動(dòng)作抽出來作為一個(gè)獨(dú)立的子用例,供多個(gè)基用例所共享。因?yàn)樽佑美怀槌觯?SPAN style="COLOR: green">基用例并非一個(gè)完整的用例,所以include關(guān)系中的基用例必須和子用例一起使用才夠完整,子用例也必然被執(zhí)行。include關(guān)系在用例圖中使用帶箭頭的虛線表示(在線上標(biāo)注<<include>>),箭頭從基用例指向子用例。 實(shí)例需求場(chǎng)景 聯(lián)通客戶響應(yīng)OSS。系統(tǒng)有故障單、業(yè)務(wù)開通、資源核查、割接、業(yè)務(wù)重保、網(wǎng)絡(luò)品質(zhì)性能等功能模塊?,F(xiàn)在我們抽出部分需求做為例子講解。 需求1:客戶響應(yīng)用戶和國(guó)際客服可以進(jìn)行割接通知查詢,在頁面上有骨干割接查詢、省間割接查詢、省級(jí)割接查詢的Tab。 分析:可以很容易看出割接查詢和不同的割接子查詢Tab之間是繼承的關(guān)系,所以此處用泛化。用戶和客戶響應(yīng)、國(guó)際客服也是繼承的Actor關(guān)系。 需求2:客戶響應(yīng)用戶和國(guó)際客服可以查看某條割接通知信息,可以在頁面上導(dǎo)出割接信息Excel格式,可以查詢和該條割接相關(guān)聯(lián)的故障單信息。 分析:因?yàn)?SPAN style="COLOR: green">導(dǎo)出割接和查看相關(guān)聯(lián)的故障單信息都是可選的,就是說我查看割接的時(shí)候,也可以不進(jìn)行這些操作,所以這里用extend關(guān)系。也就是導(dǎo)出割接和查看故障單信息擴(kuò)展了查看割接信息。 需求3:客戶響應(yīng)用戶可以以網(wǎng)管系統(tǒng)為來源創(chuàng)建割接通知,在創(chuàng)建割接通知時(shí)可以保存為草稿,也可以直接發(fā)布割接通知。 分析:由于創(chuàng)建割接通知時(shí),發(fā)布割接通知可以同時(shí)進(jìn)行,也可以先存為草稿,所以發(fā)布割接是可選的,用extend就比較合適。也就是發(fā)布割接擴(kuò)展了創(chuàng)建割接通知。 需求4:用戶在進(jìn)行業(yè)務(wù)開通、發(fā)布割接通知、發(fā)布重保通知及相關(guān)跨省的業(yè)務(wù)時(shí)需要進(jìn)行數(shù)據(jù)分發(fā)。 分析:由于業(yè)務(wù)開通、重保、割接及其它跨省的業(yè)務(wù)都需要用到數(shù)據(jù)分發(fā)用例,我們可以將數(shù)據(jù)分發(fā)用例單獨(dú)抽出來,供各業(yè)務(wù)使用,這里用include就比較合適。實(shí)際的系統(tǒng)中數(shù)據(jù)分發(fā)也是單獨(dú)抽出來用jms和webservice實(shí)現(xiàn)的接口服務(wù)。 其它需求:可以看到刪除割接通知和查看割接明細(xì)也可以做為割接通知查詢用例的擴(kuò)展,因查詢列表時(shí),一般可以選擇繼續(xù)查看明細(xì)或者刪除操作。但在實(shí)際化圖中,這兩個(gè)extend可以不畫,這里只是為了讓大家理解概念。 用例圖:大家可以參照著圖,好好理解。 加深理解 我們?cè)儆昧硗庖粋€(gè)場(chǎng)景的用例說明一下include和extend,因?yàn)榫瓦@兩個(gè)玩意比較容易搞混。 銷戶:因?yàn)殇N戶必需先進(jìn)行賬戶結(jié)算,所以這里用include 停機(jī)提醒:有兩個(gè)可選項(xiàng),短信提醒和郵件提醒,所以用extend. 經(jīng)過以上的分析,相信大家對(duì)三種關(guān)系已經(jīng)有比較好的理解了。大家有什么其它想法或好的見解,歡迎拍磚。 PS:以上用例圖用Enterprise Architect 7.5所畫,在此推薦一下EA,非常不錯(cuò)??梢蕴娲鶹isio和Rose了。Visio功能不夠強(qiáng)大,Rose太重。唯有EA比較合適。 你是說這個(gè)意思呀。沒有專門的時(shí)序模型,因?yàn)闀r(shí)序圖在用例模式、類模型等模型都能用到。算是公用的一個(gè)視圖。
用個(gè)幾天就可以很熟了。而且ea帶有很多uml的模板和例子教程。 1.在某個(gè)模型里右鍵添加視圖。 2.然后選擇uml behaviral里的sequence圖 3.假如你是在類模型里,可以把類直接往框架拖拉就行。 ![]() 不能畫序列圖的還是uml建模工具嗎?當(dāng)然能,可能你沒有學(xué)會(huì)怎么畫。:-> ![]() |
|
|