乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

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

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

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

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

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

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




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

      查詢-基本事件流

      1. 用戶插入信用卡

      2. 輸入密碼

      3. 選擇查詢

      4. 查看賬號余額

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

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

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

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

      4.2.2 擴展(extend)

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




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







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

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

      4.2.3 泛化(generalization)

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




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

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



       

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多