【軟考路上】——用例圖之include和extend
記得去年剛學UML的時候,寫了一篇用例圖的部落格——《UML圖—用例圖》。
2011年5月的軟考下午題,考到了用例圖,突然感覺對用例圖中的include和extend概念有些模糊,因此搬出來,與大家共同學習。
其實仔細思考後,這兩者的概念還是很好理解的,顧名思義,include就是“包含”的意思,extend就是“擴充套件”的意思。
include
雖然include是包含的意思,但筆者認為,include在用例圖中,主要體現的是“抽象”的思想。即當兩個或多個用例存在相同的部分時,可以將這組動作抽出來作為一個獨立的子用例,中的共同部分抽象出來。
因為子用例被抽象出來了,因此它與基用例都不是一個完整的用例,只有他們結合起來時才是一個完整的用例。
我們在做系統時經常會這樣設計一個查詢介面:
這個查詢介面和刪除、修改就是一個典型的extend(擴充套件)關係用例的例子,如果要執行修改、刪除操作時,都必須先進行查詢操作,因此可以把查詢功能抽出來。它的用例可表示為:
(include使用帶虛線頭的箭頭表示,箭頭方向指向子用例)
extend
extend關係是對一個基用例的擴充套件,與include的區別就是, 具有extend關係的基用例是一個完整的用例,由它extend(擴充套件)而來的用例是在它基礎之上的另一個功能(用例)。
extend關係中,基用例
同樣也是上面這個查詢介面:
這個查詢和匯入到Excel就是一個extend的關係,匯出到Excel是在查詢的基礎上進行的,是查詢的擴充套件。
include使用帶虛線頭的箭頭表示,箭頭方向指向基用例。
總結:
include關係中主要體現的是“抽象”的思想,基用例與子用例是不可分割的一個整體,必須同時執行。
extend關係主要指由一個用例可以擴展出另一個用例,即使沒有子用例的參與,也可以完成一個完整的功能。