RUP之用例間的關係

這一段時間,參加了部門組織的RUP教學項目,由一位“外援”架構師爲我們指導教練。最近一直在忙於業務建模,今天剛剛將自己負責部分的系統用例識別了一遍。其間一直有一個問題,纏繞着包括我在內的很多同事,那就是用例之間的關係——包含、擴展、泛化——到底該如何使用。

    翻閱了同事去年參加RUP培訓時帶來的材料,終於能基本分清三者之間的關係。

 

用例是從系統外部可見的行爲,是系統爲某一個或幾個參與者(Actor)提供的一段完整的服務。從原則上來講,用例之間都是獨立、並列的,它們之間並不存在着包含從屬關係。但是爲了體現一些用例之間的業務關係,提高可維護性和一致性,用例之間可以抽象出包含(include)、擴展(extend)和泛化(generalization)這幾種關係。

在分開介紹它們之前,先說下它們的共性:都是從現有的用例中抽取出公共的那部分信息,作爲一個單獨的用例,然後通後過不同的方法來重用這個公共的用例,以減少模型維護的工作量。

 

1、包含(include)

  包含關係:使用包含Inclusion用例來封裝一組跨越多個用例的相似動作(行爲片斷),以便多個基(Base)用例複用。基用例控制與包含用例的關係,以及被包含用例的事件流是否會插入到基用例的事件流中。基用例可以依賴包含用例執行的結果,但是雙方都不能訪問對方的屬性。


 

包含關係對典型的應用就是複用,也就是定義中說的情景。但是有時當某用例的事件流過於複雜時,爲了簡化用例的描述,我們也可以把某一段事件流抽象成爲一個被包含的用例;相反,用例劃分太細時,也可以抽象出一個基用例,來包含這些細顆粒的用例。這種情況類似於在過程設計語言中,將程序的某一段算法封裝成一個子過程,然後再從主程序中調用這一子過程。 

    例如:業務中,總是存在着維護某某信息的功能,如果將它作爲一個用例,那新建、編輯以及修改都要在用例詳述中描述,過於複雜;如果分成新建用例、編輯用例和刪除用例,則劃分太細。這時包含關係可以用來理清關係。

 

 

 

2擴展(extend)

擴展關係:將基用例中一段相對獨立並且可選的動作,用擴展(Extension)用例加以封裝,再讓它從基用例中聲明的擴展點(Extension Point)上進行擴展,從而使基用例行爲更簡練和目標更集中。

擴展用例爲基用例添加新的行爲。擴展用例可以訪問基用例的屬性,因此它能根據基用例中擴展點的當前狀態來判斷是否執行自己。但是擴展用例對基用例不可見。

對於一個擴展用例,可以在基用例上有幾個擴展點。

 

例如,系統中允許用戶對查詢的結果進行導出、打印。對於查詢而言,能不能導出、打印查詢都是一樣的,導出、打印是不可見的。導入、打印和查詢相對獨立,而且爲查詢添加了新行爲。因此可以採用擴展關係來描述:

 

 

用例詳述裏面大致可以這樣來寫:

執行查詢

  基本流:

1. 員工選擇查詢功能

        員工期望查詢業務數據時,選擇查詢鏈接,從而啓動本用例的執行。

2. 系統轉入查詢頁面,並顯示備選的查詢選項

       

3. 員工填寫查詢條件並提交

               

4. 系統驗證查詢條件的合法性

                驗證條件的格式以及簡單邏輯,如大小、前後、範圍

5. 系統將符合條件的信息返回

        系統將查詢結果以分頁列表的形式顯示在頁面上

6. 員工退出查詢功能

        員工點擊退出鏈接,返回到上一級頁面

    擴展點:導出、打印擴展點定義在步驟5

 

導出

    該用例是在“導出、打印”擴展點上擴展了執行查詢用例

    基本流:

        1.如果員工要求導出,選擇導出按鈕

        。。。。。。

 

由上例可以看出:擴展用例的事件流往往可以也可抽象爲基用例的備選流。但是在基用例本身已經是一個很複雜的情況下,選用擴展關係將備選流抽象成爲單獨的用例可以使基用例行爲更簡練和目標更集中(當然上面的例子中基用例可能簡單了些)。

 

 

4泛化(generalization)

泛化關係:子用例和父用例相似,但表現出更特別的行爲;子用例將繼承父用例的所有結構、行爲和關係。子用例可以使用父用例的一段行爲,也可以重載它。父用例通常是抽象的。在實際應用中很少使用泛化關係,子用例中的特殊行爲都可以作爲父用例中的備選流存在。

 

例如,業務中可能存在許多需要部門領導審批的事情,但是領導審批的流程是很相似的,這時可以做成泛化關係表示:

 

用例詳述裏面大致可以這樣來寫:

審批

  基本流:

7. 領導選擇要審批的記錄

        領導期望審批記錄時,選擇待審批記錄鏈接,從而啓動本用例的執行。

8. 系統轉入審批頁面,並顯示記錄的詳細信息

       

9. 領導填寫審批意見

                領導根據記錄的合理性來填寫個人審批意見

10.             提交審批結果

       

 

工資調整審批

    該用例是審批用例的子用例

    基本流:

        1.領導選擇要審批的記錄

 

2. 系統轉入審批頁面,並顯示記錄的詳細信息

 

3. 領導填寫審批意見

 

4. 提交審批結果

                如果調整幅度較大,則要提交上級審批

 

 

上面分析了用例之間的三種關係。其中最容易讓人迷惑的就是包含關係和擴展關係得區別。如果你現在對兩者還有迷惑,請再仔細的對比一下上面兩者的描述:)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章