UML 中的 include 和 extend

  • include

Include是指“包含的關(guān)系”,指多個用例中都包含一個共有的相同的過程,這時為了將用例圖畫的更為清晰,所以我們需要將用例更加細分出來,這時候就用到了Include。
include是指用例中的包含關(guān)系,通常發(fā)生在多個用例中,有可以提取出來的公共部分(就象提取公因式一樣),例如一個用例中包括了A和C兩個流程,而另一個用例中包含了B和C兩個流程。為了提高復用性,可以把C提取出來,形成另一個用例C。因而,當有include關(guān)系時,被include的用例通常會被兩個以上的其他用例include(否則就不需要重用,也就不需要提取出來了),比如下圖1-1中,兩個用例中都包含了C這個過程,這個時候,我們就需要將C提出來,形成圖1-2


圖:1-1
圖:1-2

圖1-2的意思是A,B用例在執(zhí)行的時候,都會使用C用例,那么我就將C用例單獨拿出來,形成一個用例,特點是C用例不知道A,B用例的存在,而A,B用例知道C用例的存在。

  • extend

Extend表示“擴展”,指的就是,在執(zhí)行某一個用例的時候,可能會有所選擇的再去執(zhí)行其他用例。假設(shè)發(fā)送消息的功能描述為"發(fā)送一條通知",可是,發(fā)送通知的方式可能有許多種,例如通過郵件發(fā)送、通過短信發(fā)送等。在需求分析階段,可能無法明確到底有多少種方式,在用例分析階段,發(fā)送消息需要留出擴展接口,然后把已知的發(fā)送方式作為擴展用例給出,例如短信是"通過短信發(fā)送",而E-mail是"通過郵件發(fā)送",此時, 短信和 E-mail了發(fā)送短信,表現(xiàn)為兩根虛線,箭頭指向發(fā)送短信比如圖2-1,在這個圖中,參與者當執(zhí)行“發(fā)送消息”這個用例的時候,可能會選擇是通過發(fā)送“短息”,還是發(fā)送“E-mail”這兩種方式,而這兩種方式是“發(fā)送消息”這個用例的具體過程,同時“短信”用例和“E-mail”用例是知道“發(fā)送消息”這個用例的存在的,而發(fā)送消息是不知道短信和 E-mail 存在的。


圖:2-1

也許有人會問"如果兩個用例之間,一個要調(diào)用另一個時,怎么辦?"(有可能是混淆了用例和模塊的關(guān)系),那么,首先要區(qū)分概念,用例就是用例,用例不是模塊,也不是組件(雖然一個用例能發(fā)展成為"一個或多個"模塊或組件);其次,從用例分析的角度來看,如果用例A確實要調(diào)用到用例B,那么,可以進一步分析:A是調(diào)用了B的所有流程呢,還是其中一部分流程?

(1)如果是調(diào)用了一部分,此時可以把B中的那部分流程提取出來,形成用例C,然后A和B都includeC;

(2)如果是調(diào)用了所有流程,那么,A直接includeB即可;

(3)如果A沒有調(diào)用B中的任何流程……faint,那還畫那條代表依賴的實線干嘛?


錯誤
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容