自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

解析UML用例圖六大元素

開發(fā) 架構(gòu)
UML用例圖你是否熟悉,本文向大家介紹一下UML用例圖包含的元素,它是由軟件需求分析到最終實(shí)現(xiàn)的第一步,它描述人們?nèi)绾问褂靡粋€(gè)系統(tǒng)。

本節(jié)和大家學(xué)習(xí)一下UML用例圖方面的內(nèi)容,UML用例圖在系統(tǒng)建模過程中是使用最為頻繁的,這里向大家介紹一下UML用例圖的元素,希望通過本節(jié)的學(xué)習(xí),你對(duì)UML用例圖有新的認(rèn)識(shí)。

UML用例圖

UML用例圖(UseCaseDiagram)是由軟件需求分析到最終實(shí)現(xiàn)的第一步,它描述人們?nèi)绾问褂靡粋€(gè)系統(tǒng)。用例視圖顯示誰是相關(guān)的用戶、用戶希望系統(tǒng)提供什么樣的服務(wù),以及用戶需要為系統(tǒng)提供的服務(wù),以便使系統(tǒng)的用戶更容易理解這些元素的用途,也便于軟件開發(fā)人員最終實(shí)現(xiàn)這些元素。用例圖在各種開發(fā)活動(dòng)中被廣泛的應(yīng)用,但是它最常用來描述系統(tǒng)及子系統(tǒng)。

當(dāng)用例視圖在外部用戶出現(xiàn)以前出現(xiàn)時(shí),它捕獲到系統(tǒng)、子系統(tǒng)或類的行為。它將系統(tǒng)功能劃分成對(duì)參與者(即系統(tǒng)的理想用戶)有用的需求。而交互部分被稱作用例。用例使用系統(tǒng)與一個(gè)或者多個(gè)參與者之間的一系列消息來描述系統(tǒng)中的交互。

用例圖包含六個(gè)元素,分別是:參與者(Actor)、用例(UseCase)、關(guān)聯(lián)關(guān)系(Association)、包含關(guān)系(Include)、擴(kuò)展關(guān)系(Extend)以及泛化關(guān)系(Generalization)。

UML用例圖可一個(gè)包含注釋和約束,還可一個(gè)包含包,用于將模型中的元素組合成更大的模塊。有時(shí),可以將用例的實(shí)例引入到圖中。用例圖模型如下所示,參與者用人形圖標(biāo)來標(biāo)識(shí),用例用橢圓來表示,連線表示它們之間的關(guān)系。

一、參與者(Actor)

1.參與者的概念

參與者是系統(tǒng)外部的一個(gè)實(shí)體,它以某種方式參與用例的執(zhí)行過程。參與者通過向系統(tǒng)輸入或請(qǐng)求系統(tǒng)輸入某些事件來觸發(fā)系統(tǒng)的執(zhí)行。參與著由參與用例時(shí)所擔(dān)當(dāng)?shù)慕巧珌肀硎尽T赨ML中,參與者用名字寫在下面的人形圖標(biāo)表示。

每個(gè)參與者可以參與一個(gè)或多個(gè)用例。它通過交換信息與用例發(fā)生交互(因此也與用例所在的系統(tǒng)或類發(fā)生了交互),而參與者的內(nèi)部實(shí)現(xiàn)與用例是不相關(guān)的,可以用一組定義其狀態(tài)的屬性充分的描述參與者。

參與者有三大類:系統(tǒng)用戶、與所建造的系統(tǒng)交互的其它系統(tǒng)和一些可以運(yùn)行的進(jìn)程。

第一類參與者是真實(shí)的人,即用戶,是最常見的參與者,幾乎存在于每個(gè)系統(tǒng)中。命名這類參與者時(shí),應(yīng)當(dāng)按照業(yè)務(wù)而不是位置命名,因?yàn)橐粋€(gè)人可能有很多業(yè)務(wù)。

第二類參與者是其它的系統(tǒng)。這類位于程序邊界之外的系統(tǒng)也是參與者。

第三類參與者是一些可以運(yùn)行的進(jìn)程,如時(shí)間。當(dāng)經(jīng)過一定的時(shí)間觸發(fā)系統(tǒng)中的某個(gè)事件時(shí),時(shí)間就成了參與者。

2.確定參與者

在獲取用例前首先要確定系統(tǒng)的參與者,開發(fā)人員可以通過回答以下的問題來尋找系統(tǒng)的參與者。

(1)誰將使用該系統(tǒng)的主要功能。

(2)誰將需要該系統(tǒng)的支持以完成其工作。

(3)誰將需要維護(hù)、管理該系統(tǒng),以及保持該系統(tǒng)處于工作狀態(tài)。

(4)系統(tǒng)需要處理哪些硬件設(shè)備。

(5)與該系統(tǒng)那個(gè)交互的是什么系統(tǒng)。

(6)誰或什么系統(tǒng)對(duì)本系統(tǒng)產(chǎn)生的結(jié)果感興趣。

在對(duì)參與者建模的過程中,開發(fā)人員必須要牢記以下幾點(diǎn)。

(1)參與者對(duì)于系統(tǒng)而言總是外部的,因此它們可以處于人的控制之外。

(2)參與者可以直接或間接的與系統(tǒng)交互,或使用系統(tǒng)提供的服務(wù)以完成某件事務(wù)。

(3)參與者表示人和事物與系統(tǒng)發(fā)生交戶時(shí)所扮演的角色,而不是特定的人或者特定的事物。

(4)每個(gè)參與者需要一個(gè)具有業(yè)務(wù)一樣的名字,在建模中不推薦使用類似“新參與者”的名字。

(5)每一個(gè)參與者要必須有簡(jiǎn)短的描述,從業(yè)務(wù)角度描述參與者是什么。

(6)一個(gè)人或事物在與系統(tǒng)發(fā)生交互時(shí),可以同時(shí)或不同時(shí)扮演多個(gè)角色。

(7)和類一樣,參與者可以具有表示參與者的屬性和可以接受的事件,但使用的不頻繁。

3.參與者之間的關(guān)系

因?yàn)閰⑴c者是類,所以多個(gè)參與者之間可以具有與類相同的關(guān)系。在UML用例圖中,使用了泛化關(guān)系來描述多個(gè)參與者之間的公共行為。如果系統(tǒng)中存在幾個(gè)參與者,它們既扮演自身的角色,同時(shí)也扮演更具一般化的角色,那么就用泛化關(guān)系來描述它們。這種情況往往發(fā)生在一般角色的行為在參與者超類中描述的場(chǎng)合。特殊化的參與者繼承了該超類的行為,然后在某些方面擴(kuò)展了此行為。參與者之間的泛化關(guān)系用一個(gè)三角箭頭來表示,指向扮演一般角色的超類。這與UML中類之間的返還關(guān)系符號(hào)相同。

二、用例(UseCase)

1.用例的概念

用例是外部可見的系統(tǒng)功能單元,這些系統(tǒng)功能由系統(tǒng)單元所提供,并通過一系列系統(tǒng)單元與一個(gè)或多個(gè)參與者之間交換的消息所表達(dá)。用例的用途是,在不揭示系統(tǒng)內(nèi)部構(gòu)造的前提下定義連貫的行為。

用例的定義包含它所必須的所有行為——執(zhí)行用例的主線次序、標(biāo)準(zhǔn)行為的不同變形、一般行為下的所有異常情況及其預(yù)期反應(yīng)。從用戶的角度來看,上述情況很可能是異常情況;從系統(tǒng)的角度來看,它們是必須被描述和處理的附加情況。更確切地說,用例不是需求或功能的規(guī)格說明,但是也展示和體現(xiàn)其所描述的過程中的需求情況。在UML中,用例用一個(gè)橢圓表示。

在模型中,每個(gè)用例的執(zhí)行都獨(dú)立與其它用例,盡管在執(zhí)行一個(gè)用例時(shí)由于用例之間共享對(duì)象的原因可能會(huì)在用例之間產(chǎn)生隱含的依賴關(guān)系。每個(gè)用例都表示一個(gè)縱向的功能塊,這個(gè)功能塊的執(zhí)行會(huì)和其它用例的執(zhí)行混合在一起。

用例的動(dòng)態(tài)執(zhí)行過程可以用UML的交互來說明,可用用狀態(tài)圖、時(shí)序圖、協(xié)作圖或非正式的文字描述來表示。用例功能的執(zhí)行通過系統(tǒng)中類之間的協(xié)作來實(shí)現(xiàn)。一個(gè)類可以參與多個(gè)協(xié)作,因此也參與了多個(gè)用例。

在系統(tǒng)層,用例表示整個(gè)系統(tǒng)對(duì)外部用戶可見的行為。一個(gè)用例就像外部用戶可以使用的系統(tǒng)操作。但是,它不又與操作不同,用例可以在執(zhí)行過程中持續(xù)接受參與者的輸入消息。用例也可以被像子系統(tǒng)和獨(dú)立類這樣的系統(tǒng)小單元所應(yīng)用。一個(gè)內(nèi)部用例表示了系統(tǒng)的一部分對(duì)其它部分呈現(xiàn)出的行為。例如,某個(gè)類的用例表示了一個(gè)連貫的功能塊,這個(gè)功能塊是該類提供給系統(tǒng)內(nèi)其它有特定作用的類的。一個(gè)類可以有多個(gè)用例。#p#

2.識(shí)別用例

UML用例圖對(duì)整個(gè)系統(tǒng)建模過程非常重要,在繪制系統(tǒng)用例圖前,還有許多工作要做。系統(tǒng)分析者必須分析系統(tǒng)的參與者和用例,他們分別描述了“誰來做”和“做什么”這兩個(gè)問題。

識(shí)別用例最好的方法就是從分析系統(tǒng)的參與者開始,考慮每一個(gè)參與者是如何使用系統(tǒng)的。使用這種策略的過程中可能會(huì)發(fā)現(xiàn)新的參與者,這對(duì)完善整個(gè)系統(tǒng)的建模有很大的幫助。用例建模的過程是一個(gè)迭代和逐步精華的過程,系統(tǒng)分析者首先從用例的名稱開始,然后添加用例的細(xì)節(jié)信息。這些信息由簡(jiǎn)短的描述組成,它們被精華成完整的規(guī)格說明。

在識(shí)別用例的過程中,通過回答以下幾個(gè)問題,系統(tǒng)分析者可以獲得幫助。

(1)特定參與者希望系統(tǒng)提供什么功能。

(2)系統(tǒng)是否存儲(chǔ)和檢索信息,如果是,由哪個(gè)參與者觸發(fā)。

(3)當(dāng)系統(tǒng)改變狀態(tài)時(shí),是否通知參與者。

(4)是否存在影響系統(tǒng)的外部事件。

(5)哪個(gè)參與者通知系統(tǒng)這些事件。

3.用例與事件流

UML用例圖中用例分析處于系統(tǒng)的需求分析階段,這個(gè)階段應(yīng)該盡量避免考慮系統(tǒng)實(shí)現(xiàn)的細(xì)節(jié)問題。但是要實(shí)際建立系統(tǒng),則需要更加具體的細(xì)節(jié),這些細(xì)節(jié)寫在事件流文件中。事件流的目的是為用例的邏輯流程建立文檔,這個(gè)文檔詳細(xì)描述系統(tǒng)用戶的工作和系統(tǒng)本身的工作。

雖說事件流很詳細(xì),但其仍然是獨(dú)立于實(shí)現(xiàn)的方法的。換句話說,事件流描述的是一個(gè)系統(tǒng)“做什么”而不是“怎么做”。事件流通常包括:簡(jiǎn)要說明、前提條件、主事件流、其它事件流和事后事件流。

(1)簡(jiǎn)要說明。每個(gè)用例應(yīng)當(dāng)有一個(gè)相關(guān)的說明,描述該用例的作用,說明應(yīng)當(dāng)簡(jiǎn)明扼要,但應(yīng)包括執(zhí)行用例的不同類型的用戶和通過這個(gè)用例要達(dá)到的結(jié)果。

(2)前提條件。用例的前提條件列出用例之間必須滿足的條件。例如,前提條件是另一個(gè)用例已經(jīng)執(zhí)行或用戶具有運(yùn)行當(dāng)前用例的權(quán)限。但并不是所有用例都有前提條件。

(3)主事件流和其它事件流。用例的具體細(xì)節(jié)在主事件流和其它事件流中描述。事件流是從用戶角度描述執(zhí)行用例的具體步驟,關(guān)注系統(tǒng)“做什么”,而不是“怎么做”。主事件流和其它事件流包括:用例如何開始和結(jié)束、用例如何與參與者交互、用例的正常流程(主流程)、用例主事件流(其它事件流)的變體和錯(cuò)誤流。

(4)事后條件。事后條件是用例執(zhí)行完畢后必須為真的條件。例如,可以在用例完成之后設(shè)置一個(gè)標(biāo)識(shí),這種信息就是事后條件。與前提條件一樣,事后條件可以增加用例次序方面的信息,如果要求一個(gè)用例執(zhí)行完后必須執(zhí)行另一個(gè)用,那么就可以在事后條件中說明這一點(diǎn)。當(dāng)然,并不是每個(gè)用例中都有事后條件。

三、用例間的關(guān)系

UML用例圖中用例除了與參與者發(fā)生關(guān)系外,還可以具有系統(tǒng)中的多個(gè)關(guān)系,這些關(guān)系包括包含關(guān)系、擴(kuò)展關(guān)系和泛化關(guān)系。應(yīng)用這些關(guān)系的目的是為了從系統(tǒng)中抽取出公共行為和其變體。

1.關(guān)聯(lián)關(guān)系(Association)

關(guān)聯(lián)關(guān)系描述參與者與用例之間的關(guān)系,它是用于表示類的掛系的關(guān)聯(lián)元類的實(shí)例。在UML中,關(guān)聯(lián)關(guān)系用箭頭來表示。

關(guān)聯(lián)關(guān)系表示參與者與用例之間的通信。不同的參與者可以訪問相同的用例,一般說來它們和該用例的交互是不一樣的,如果一樣的話,說明它們的角色可能是相同的。如果兩中交互的目的也相同,說明它們的角色是相同的,就可以將它們合并。

2.包含關(guān)系(Include)

雖然每個(gè)用例的實(shí)例都是獨(dú)立的,但是一個(gè)用例可以用其它的更簡(jiǎn)單的用例來描述。這有點(diǎn)像通過繼承父類并增加附加描述來定義一個(gè)類。一個(gè)用例可以簡(jiǎn)單地包含其它用例具有的行為,并把它所包含的用例行為作為自身行為的一部分,這被稱作包含關(guān)系。在這種情況下,新用例不是初始用例的一個(gè)特殊例子,并且不能被初始用例所代替。在UML中,包含關(guān)系表示為虛線箭頭交<<include>>字樣,箭頭指向被包含的用例。

包含關(guān)系把幾個(gè)用例的公共步驟分離成一個(gè)單獨(dú)的被包含用例。被包含用例稱作提供者用例,包含用例稱作客戶用例,提供者用例提供功能給客戶使用。用例間的包含關(guān)系允許包含提供者用例的行為到客戶用例的事件中。

包含關(guān)系使一個(gè)用例的功能可以在另一個(gè)用例中使用,如下所述。

(1)如果兩個(gè)以上用例有大量一致的功能,則可以將這個(gè)功能分解到另外一個(gè)用例中。其它用例可以和這兩個(gè)用例建立包含關(guān)系。

(2)一個(gè)用例的功能太多時(shí),可以用包含關(guān)系建模兩個(gè)小用例。

要使用包含關(guān)系,就必須在客戶用例中說明提供者用例行為別包含的詳細(xì)位置。這一點(diǎn)同功能調(diào)用有點(diǎn)類似。事實(shí)上,它們?cè)谀撤N程度上具有相似的語義。

3.?dāng)U展關(guān)系(Extend)

一個(gè)用例也可以被定義為基礎(chǔ)用例的增量擴(kuò)展,這被稱作擴(kuò)展關(guān)系,擴(kuò)展關(guān)系是把新的行為插入到已有的用例中的方法。同一個(gè)基礎(chǔ)用例的幾個(gè)擴(kuò)展用例可以在一起應(yīng)用。基礎(chǔ)用例的擴(kuò)展增加了原有的語義,此時(shí)基礎(chǔ)用例而不是擴(kuò)展用例被作為例子使用。在UML用例圖中,擴(kuò)展關(guān)系表示為虛線箭頭加<<extend>>字樣,箭頭指向被擴(kuò)展展的用例。

基礎(chǔ)用例提供了一組擴(kuò)展點(diǎn),在這些新的擴(kuò)展點(diǎn)中可以添加新的行為,而擴(kuò)展用例提供了一組插入片片段,這些片段能夠被插入到基礎(chǔ)用例的擴(kuò)展點(diǎn)上。基礎(chǔ)用例不必知道擴(kuò)展用例的任何細(xì)節(jié),它僅為其提供擴(kuò)展點(diǎn)。事實(shí)上,基礎(chǔ)用例即使沒有擴(kuò)展用例也是完整的,這點(diǎn)與包含關(guān)系有所不同。一個(gè)用例可能有多個(gè)擴(kuò)展點(diǎn),每個(gè)擴(kuò)展點(diǎn)可以出現(xiàn)多次。但是一般情況下,基礎(chǔ)用例的執(zhí)行不會(huì)涉及到擴(kuò)展用例,只有特定的條件發(fā)生,擴(kuò)展用例才被執(zhí)行。擴(kuò)展關(guān)系為處理異?;驑?gòu)建靈活的系統(tǒng)框架提供了一種有效的方法。

4.泛化關(guān)系(Generalization)

一個(gè)用例可以被特別列舉為一個(gè)或多個(gè)用例,這被稱為用例泛化。當(dāng)父用例能夠被使用時(shí),任何子用例也可以被使用。在UML中用例泛化與其它泛化關(guān)系的表示法相同,用一個(gè)三角箭頭從子用例指向父用例。

在用例泛化中,子用例表示父用例的特殊形式。子用例從父用例處繼承行為和屬性,還可以添加、覆蓋或改變繼承的行為。如果系統(tǒng)中一個(gè)或多個(gè)用例是某個(gè)一般用例的特殊化時(shí),就需要使用用例的泛化關(guān)系。
 

【編輯推薦】

  1. UML基礎(chǔ)專題:UML簡(jiǎn)介及UML用例圖
  2. UML實(shí)踐--UML用例圖和類圖解析
  3. 如何繪制UML用例圖
  4. UML建模時(shí)需要注意的四大問題
  5. 解析九大UML建模圖形用法

 

 

責(zé)任編輯:佚名 來源: sina.com.cn
相關(guān)推薦

2010-07-08 14:24:09

UML數(shù)據(jù)建模

2010-07-06 09:48:34

六大UML圖

2010-07-01 14:13:51

UML時(shí)序圖

2010-07-09 10:45:11

UML類圖關(guān)系

2010-07-02 08:57:45

UML用例圖

2010-07-06 12:54:17

UML序列圖

2010-07-12 12:32:35

UML用例圖

2010-08-12 16:28:51

Flex應(yīng)用程序

2010-06-09 18:38:28

UML用例圖

2010-06-13 14:51:27

UML實(shí)踐

2010-06-13 14:37:04

UML實(shí)踐

2010-06-29 10:40:37

UML類圖關(guān)系

2010-07-07 14:19:55

UML用例圖關(guān)系

2019-12-04 09:54:25

網(wǎng)絡(luò)功能虛擬化NFVIT

2010-07-06 09:35:37

UML六大關(guān)系

2010-07-05 12:50:01

用Visio畫UML用

2010-06-18 14:56:15

UML綜合實(shí)例

2010-07-06 15:57:58

UML圖形

2010-06-30 17:36:58

UML用例圖

2010-07-02 12:53:07

UML對(duì)象圖
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)