皇家方舟

          Use Case 中 include 與 extend 的區(qū)別

          最近上論壇,看到在爭論 Use Case 中 includeextend 的區(qū)別。其實這兩者是很容易區(qū)分的。

          include 是指用例中的包含關(guān)系,通常發(fā)生在多個用例中,有可以提取出來的公共部分(就象提取公因式一樣),例如 UseCaseA 中包括了 a 和 b 兩個流程,而 UseCaseC 中包含了 c 和 b 兩個流程。為了提高復(fù)用性,可以把 b 提取出來,形成另一個用例 UseCaseB,此時,UseCaseA include UseCaseB(表現(xiàn)為一條指向 UseCaseB 的虛線,箭頭在 UseCaseB 側(cè)),UseCaseC 也 include UseCaseB。因而,當(dāng)有 include 關(guān)系時,被 include 的用例通常會被兩個以上的其他用例 include(否則就不需要重用,也就不需要提取出來了),用例圖如下:



          在 include 關(guān)系中,“UseCaseA 和 UseCaseC 知道 UseCaseB 的存在,而 UseCaseB 根本不知道有 UseCaseA 和 UseCaseC);

          extend 則恰好相反。假設(shè) UseCaseA 的功能描述為“發(fā)送一條通知”,可是,發(fā)送通知的方式可能有許多種,例如通過郵件發(fā)送、通過短信發(fā)送等。在需求分析階段,可能無法明確到底有多少種方式,在用例分析階段,UseCaseA 需要留出擴(kuò)展接口,然后把已知的發(fā)送方式作為擴(kuò)展用例給出,例如 UseCaseB 是“通過短信發(fā)送”,而 UseCaseC 是“通過郵件發(fā)送”,此時,UseCaseB 和 UseCaseC extend 了 UseCaseA,表現(xiàn)為兩根虛線,箭頭指向 UseCaseA,用例圖如下:



          在 extend 關(guān)系中,UseCaseA 不知道 UseCaseB 和 UseCaseC 的存在,但 UseCaseB 和 UseCaseC 卻是知道 UseCaseA 并且知道如何在 UseCaseA 中作擴(kuò)展的。

          另:在用例圖中,有時會看到兩個用例之間有依賴關(guān)系(表現(xiàn)為一條單向或雙向的實線),這是錯誤的,說明用例沒有提純。



          也許有人會問“如果兩個用例之間,一個要調(diào)用另一個時,怎么辦?”(有可能是混淆了用例和模塊的關(guān)系),那么,首先要區(qū)分概念,用例就是用例,用例不是模塊,也不是組件(雖然一個用例能發(fā)展成為“一個或多個”模塊或組件);其次,從用例分析的角度來看,如果用例 A 確實要調(diào)用到用例 B,那么,可以進(jìn)一步分析:A 是調(diào)用了 B 的所有流程呢,還是其中一部分流程?
          (1)如果是調(diào)用了一部分,此時可以把 B 中的那部分流程提取出來,形成用例 C,然后 A 和 B 都 include C;
          (2)如果是調(diào)用了所有流程,那么,A 直接 include B 即可;
          (3)如果 A 沒有調(diào)用 B 中的任何流程……faint,那還畫那條代表依賴的實線干嘛?


          posted on 2006-09-19 17:12 阿輝 閱讀(3815) 評論(4)  編輯  收藏 所屬分類: eclipse

          Feedback

          # re: Use Case 中 include 與 extend 的區(qū)別 2006-12-01 14:59 心內(nèi)求法

          頂一個  回復(fù)  更多評論   

          # re: Use Case 中 include 與 extend 的區(qū)別 [未登錄] 2007-03-24 15:30 bruce

          ding  回復(fù)  更多評論   

          # re: Use Case 中 include 與 extend 的區(qū)別 2007-04-10 15:13 aylwin

          crystal clear
          thanks~~~~~~  回復(fù)  更多評論   

          # re: Use Case 中 include 與 extend 的區(qū)別 2007-06-15 10:45 huwei

          好文章!  回復(fù)  更多評論   


          My Links

          Blog Stats

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 广宗县| 马鞍山市| 博罗县| 盈江县| 孝义市| 泸西县| 阿瓦提县| 奉化市| 庆云县| 沅江市| 石台县| 龙井市| 海宁市| 甘肃省| 驻马店市| 霞浦县| 平定县| 通江县| 滦平县| 古蔺县| 邯郸县| 海阳市| 天峻县| 奈曼旗| 芦溪县| 新宁县| 波密县| 桓仁| 杭锦旗| 翁牛特旗| 五河县| 尤溪县| 武陟县| 纳雍县| 余庆县| 安阳县| 厦门市| 秦皇岛市| 修水县| 白城市| 孝义市|