<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    每日一得

    不求多得,只求一得 about java,hibernate,spring,design,database,Ror,ruby,快速開發
    最近關心的內容:SSH,seam,flex,敏捷,TDD
    本站的官方站點是:顛覆軟件

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      220 隨筆 :: 9 文章 :: 421 評論 :: 0 Trackbacks

    這一段時間,參加了部門組織的 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. 提交審批結果

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

    ?

    ?

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


    posted on 2006-08-29 22:23 Alex 閱讀(528) 評論(1)  編輯  收藏 所屬分類: 建模

    評論

    # re: [zt]RUP之用例間的關系 2008-01-25 10:51 Uranus
    你那個Include畫的有問題  回復  更多評論
      

    主站蜘蛛池模板: 97视频免费观看2区| 日韩视频免费在线| 久久亚洲国产成人影院| 国产男女性潮高清免费网站| www.xxxx.com日本免费| 亚洲高清中文字幕综合网| 午夜免费不卡毛片完整版| 在线免费观看h片| 亚洲第一区二区快射影院| 国内精品久久久久久久亚洲| 999久久久免费精品国产| 欧洲美女大片免费播放器视频 | 国产亚洲无线码一区二区| 国产高清免费视频| www免费黄色网| 亚洲资源最新版在线观看| 国产成人麻豆亚洲综合无码精品| 91香蕉成人免费网站| 一本到卡二卡三卡免费高| 亚洲无成人网77777| 中文字幕亚洲不卡在线亚瑟| 2021免费日韩视频网| 91免费在线视频| 日日摸日日碰夜夜爽亚洲| 久久久亚洲AV波多野结衣| 中文字幕亚洲不卡在线亚瑟| 色www永久免费视频| 99免费观看视频| 福利免费在线观看| 国产精品亚洲av色欲三区| 亚洲小视频在线播放| 亚洲AV无码日韩AV无码导航 | 免费看国产精品麻豆| 免费看污成人午夜网站| 一个人免费视频在线观看www| 精品亚洲成a人在线观看| 亚洲一卡二卡三卡| 亚洲男人都懂得羞羞网站| 亚洲色无码专区在线观看| 亚洲国产成人久久精品99 | 国产免费久久精品|