小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

識別用例之間的關(guān)系

 KILLKISS 2009-11-05
用例間的三種關(guān)系:
(1)擴(kuò)展(extends):用例B extends 用例A,表示用例B是用例A在某種特定情況下可能會出現(xiàn)的擴(kuò)展用例。例如:老王進(jìn)城辦事,2小時(shí)就可以回去,在這2小時(shí)內(nèi)內(nèi)急時(shí)就會去上廁所。上廁所用例是進(jìn)城用例的擴(kuò)展,因?yàn)椴簧蠋贤踹M(jìn)城辦事也可完成。
(2)包含(includes):用例A includes 用例B,表示沒有了用例B,用例A本身也就不完整了。例如:還是老王進(jìn)城,他從海南來北京辦事,3天才能回去,那么這種情況下進(jìn)城用例與上廁所用例的關(guān)系就應(yīng)該是包含關(guān)系了。
(3)泛化:泛化關(guān)系指的是同一業(yè)務(wù)目的的不同技術(shù)實(shí)現(xiàn)。例如:老王進(jìn)城,他可以坐飛機(jī),可以坐火車,還可以走路,那么進(jìn)城用例就泛化為坐飛機(jī)、坐火車和走路三個(gè)用例了,它們之間存在層級關(guān)系。
總的來看,擴(kuò)展可以“凍結(jié)”基本用例以保持穩(wěn)定(因?yàn)閿U(kuò)展用例通常是不確定的);包含可以提供公共交互,提高“復(fù)用”;泛化是同一業(yè)務(wù)目的的不同技術(shù)實(shí)現(xiàn)。用例之間除了上述三種關(guān)系不再有其他關(guān)系,用例之間不能通訊。

======================================================

下面是另外一種解釋,用例子來描述。

4.2 用例之間的關(guān)系

用例描述的是系統(tǒng)外部可見的行為,是系統(tǒng)為某一個(gè)或幾個(gè)參與者提供的一段完整的服務(wù)。從原則上來講,用例之間都是并列的,它們之間并不存在著包含從屬關(guān)系。但是從保證用例模型的可維護(hù)性和一致性角度來看,我們可以在用例之間抽象出包含(include)、擴(kuò)展(extend)和泛化 (generalization)這幾種關(guān)系。這幾種關(guān)系都是從現(xiàn)有的用例中抽取出公共的那部分信息,然后通后過不同的方法來重用這部公共信息,以減少模型維護(hù)的工作量。

4.2.1 包含(include)

包含關(guān)系是通過在關(guān)聯(lián)關(guān)系上應(yīng)用<<include>>構(gòu)造型來表示的,如下圖所示。它所表示的語義是指基礎(chǔ)用例(Base)會用到被包含用例(Inclusion),具體地講,就是將被包含用例的事件流插入到基礎(chǔ)用例的事件流中。




包含關(guān)系是UML1.3中的表述,在UML1.1中,同等語義的關(guān)系被表述為使用(uses),如下圖。




在ATM機(jī)中,如果查詢、取現(xiàn)、轉(zhuǎn)帳這三個(gè)用例都需要打印一個(gè)回執(zhí)給客戶,我們就可以把打印回執(zhí)這一部分內(nèi)容提取出來,抽象成為一個(gè)單獨(dú)的用例"打印回執(zhí)",而原有的查詢、取現(xiàn)、轉(zhuǎn)帳三個(gè)例都會包含這個(gè)用例。每當(dāng)以后要對打印回執(zhí)部分的需求進(jìn)行修改時(shí),就只需要改動(dòng)一個(gè)用例,而不用在每一個(gè)用例都作相應(yīng)修改,這樣就提高了用例模型的可維護(hù)性。




在基礎(chǔ)用例的事件流中,我們只需要引用被包含用例即可。

查詢-基本事件流

1. 用戶插入信用卡

2. 輸入密碼

3. 選擇查詢

4. 查看賬號余額

5. 包含用例"打印回執(zhí)"

6. 退出系統(tǒng),取回信用卡

在這個(gè)例子中,多個(gè)用例需要用到同一段行為,我們可以把這段共同的行為單獨(dú)抽象成為一個(gè)用例,然后讓其他的用例來包含這一用例。從而避免在多個(gè)用例中重復(fù)性地描述同一段行為,也可以防止該段行為在多個(gè)用例中的描述出現(xiàn)不一致性。當(dāng)需要修改這段公共的需求時(shí),我們也只需要修改一個(gè)用例,避免同時(shí)修改多個(gè)用例而產(chǎn)生的不一致性和重復(fù)性工作。

有時(shí)當(dāng)某一個(gè)用例的事件流過于復(fù)雜時(shí),為了簡化用例的描述,我們也可以把某一段事件流抽象成為一個(gè)被包含的用例。這種情況類似于在過程設(shè)計(jì)語言中,將程序的某一段算法封裝成一個(gè)子過程,然后再從主程序中調(diào)用這一子過程。

4.2.2 擴(kuò)展(extend)

擴(kuò)展(extend)關(guān)系如下圖所示,基礎(chǔ)用例(Base)中定義有一至多個(gè)已命名的擴(kuò)展點(diǎn),擴(kuò)展關(guān)系是指將擴(kuò)展用例(Extension)的事件流在一定的條件下按照相應(yīng)的擴(kuò)展點(diǎn)插入到基礎(chǔ)用例(Base)中。對于包含關(guān)系而言,子用例中的事件流是一定插入到基礎(chǔ)用例中去的,并且插入點(diǎn)只有一個(gè)。而擴(kuò)展關(guān)系可以根據(jù)一定的條件來決定是否將擴(kuò)展用例的事件流插入基礎(chǔ)用例事件流,并且插入點(diǎn)可以有多個(gè)。




例如對于電話業(yè)務(wù),可以在基本通話(Call)業(yè)務(wù)上擴(kuò)展出一些增值業(yè)務(wù)如:呼叫等待(Call Waiting)和呼叫轉(zhuǎn)移(Call Transfer)。我們可以用擴(kuò)展關(guān)系將這些業(yè)務(wù)的用例模型描述如下。







在這個(gè)例子中,呼叫等待和呼叫轉(zhuǎn)移都是對基本通話用例的擴(kuò)展,但是這兩個(gè)用例只有在一定的條件下(如應(yīng)答方正忙或應(yīng)答方無應(yīng)答)才會將被擴(kuò)展用例的事件流嵌入基本通話用例的擴(kuò)展點(diǎn),并重用基本通話用例中的事件流。

值得注意的是擴(kuò)展用例的事件流往往可以也可抽象為基礎(chǔ)用例的備選流,如上例中的呼叫等待和呼叫轉(zhuǎn)移都可以作為基本通話用例的備選流而存在。但是基本通話用例已經(jīng)是一個(gè)很復(fù)雜的用例了,選用擴(kuò)展關(guān)系將增值業(yè)務(wù)抽象成為單獨(dú)的用例可以避免基礎(chǔ)用例過于復(fù)雜,并且把一些可選的操作獨(dú)立封裝在另外的用例中。

4.2.3 泛化(generalization)

當(dāng)多個(gè)用例共同擁有一種類似的結(jié)構(gòu)和行為的時(shí)候,我們可以將它們的共性抽象成為父用例,其他的用例作為泛化關(guān)系中的子用例。在用例的泛化關(guān)系中,子用例是父用例的一種特殊形式,子用例繼承了父用例所有的結(jié)構(gòu)、行為和關(guān)系。在實(shí)際應(yīng)用中很少使用泛化關(guān)系,子用例中的特殊行為都可以作為父用例中的備選流存在。




以下是一個(gè)用例泛化關(guān)系的例子,執(zhí)行交易是一種交易抽象,執(zhí)行房產(chǎn)交易和執(zhí)行證券交易都是一種特殊的交易形式。

用例泛化關(guān)系中的事件流示例如下:



 

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多