用例圖是在項目初期確認需求的時候,需要明確各個參與者之間的關系以及對應的功能,它可視化地展示了整個系統的功能以及功能之間、功能與參與者之間的關系。
1、元素
1.1 角色(actor)
角色不一定是人,可以是一個程序、組織或者外部系統。
1.2 用例(use case)
這個名詞有點難以理解,在公司里,測試用例說的是每個測試項目,而在這里的意思是指功能。
1.3 子系統(subsystem)
它代表着一個系統、模塊的集合,在子系統里有自己的功能
1.4 關系
關系是連接用例與用例之間、用例與角色之間的連接線,常用的分為以下5種
a、關聯(association)
含義:角色與用例之間的聯系、交互等
連接對象:角色與用例之間
箭頭指向:指向消息接收方,對於角色來說,如果發出指令給用例,那么箭頭指向用例;如果是接受用例執行的結果和數據,那么箭頭指向自己。
b、泛化(Inheritance)
含義:跟面向對象編程里的意義類似,具體用例繼承於抽象用例,子角色繼承於父角色
連接對象:用例之間或者角色之間
箭頭指向:子用例指向父用例,子角色指向父角色
c、包含(include)
含義:將一個復雜的用例分解成多個較小的用例或者步驟。
連接對象:用例之間
箭頭指向:父用例指向子用例
d、依賴(dependency)
含義:用例之間的依賴關系
連接對象:用例之間
箭頭指向:依賴方指向被依賴方
e、擴展(extend)
含義:用例的延伸,就相當於給用例增加了一個附加功能
連接對象:用例之間
指頭指向:指向被擴展方
2、重點
包含、擴展、泛化這三點有時候很難區分
條件性:泛化中的子用例和include中的被包含的用例會無條件發生,而extend中的延伸用例的發生是由條件的;
直接性:泛化中的子用例和extend中的延伸用例,是可以為參與者提供直接服務的,但include就不能提供直接服務,只能提供間接服務;
對擴展而言:延伸的用例並不包含基礎用例的內容,基礎用例也不包含延伸用例的內容;
而對於泛化而言:子用例包含基礎用例的所有內容及其和其他用例或者參與者之間的關系。













