用例圖主要用來描述“用戶说搅、需求、系統(tǒng)功能單元”之間的關(guān)系虏等。它展示了一個外部用戶能夠觀察到的系統(tǒng)功能模型圖蜓堕。
【用途】:幫助開發(fā)團隊以一種可視化的方式理解系統(tǒng)的功能需求。
用例圖所包含的元素如下:
1. 參與者(Actor)
表示與您的應用程序或系統(tǒng)進行交互的用戶博其、組織或外部系統(tǒng)。用一個小人表示迂猴。
2. 用例(Use Case)
用例就是外部可見的系統(tǒng)功能慕淡,對系統(tǒng)提供的服務進行描述。用橢圓表示沸毁。
3. 子系統(tǒng)(Subsystem)
用來展示系統(tǒng)的一部分功能峰髓,這部分功能聯(lián)系緊密。
4. 關(guān)系
用例圖中涉及的關(guān)系有:關(guān)聯(lián)息尺、泛化携兵、包含、擴展搂誉。
如下表所示:
a. 關(guān)聯(lián)(Association)
表示參與者與用例之間的通信徐紧,任何一方都可發(fā)送或接受消息。
【箭頭指向】:指向消息接收方
b. 泛化(Inheritance)
就是通常理解的繼承關(guān)系炭懊,子用例和父用例相似并级,但表現(xiàn)出更特別的行為;子用例將繼承父用例的所有結(jié)構(gòu)侮腹、行為和關(guān)系嘲碧。子用例可以使用父用例的一段行為,也可以重載它父阻。父用例通常是抽象的愈涩。
【箭頭指向】:指向父用例
c. 包含(Include)
包含關(guān)系用來把一個較復雜用例所表示的功能分解成較小的步驟望抽。
【箭頭指向】:指向分解出來的功能用例
d. 擴展(Extend)
擴展關(guān)系是指用例功能的延伸,相當于為基礎(chǔ)用例提供一個附加功能履婉。
【箭頭指向】:指向基礎(chǔ)用例
e. 依賴(Dependency)
以上4種關(guān)系煤篙,是UML定義的標準關(guān)系。但VS2010的用例模型圖中谐鼎,添加了依賴關(guān)系舰蟆,用帶箭頭的虛線表示,表示源用例依賴于目標用例狸棍。
【箭頭指向】:指向被依賴項
5. 項目(Artifact)
用例圖雖然是用來幫助人們形象地理解功能需求身害,但卻沒多少人能夠通看懂它。很多時候跟用戶交流甚至用Excel都比用例圖強草戈,VS2010中引入了“項目”這樣一個元素塌鸯,以便讓開發(fā)人員能夠在用例圖中鏈接一個普通文檔。
用依賴關(guān)系把某個用例依賴到項目上:
然后把項目-》屬性 的Hyperlink設(shè)置到你的文檔上唐片;
這樣當你在用例圖上雙擊項目時丙猬,就會打開相關(guān)聯(lián)的文檔。
6. 注釋(Comment)
****包含(include)费韭、擴展(extend)茧球、泛化(Inheritance)的區(qū)別:
條件性:泛化中的子用例和include中的被包含的用例會無條件發(fā)生,而extend中的延伸用例的發(fā)生是有條件的星持;
直接性:泛化中的子用例和extend中的延伸用例為參與者提供直接服務抢埋,而include中被包含的用例為參與者提供間接服務。
對extend而言督暂,延伸用例并不包含基礎(chǔ)用例的內(nèi)容揪垄,基礎(chǔ)用例也不包含延伸用例的內(nèi)容。
對Inheritance而言逻翁,子用例包含基礎(chǔ)用例的所有內(nèi)容及其和其他用例或參與者之間的關(guān)系饥努;
一個用例圖示例:
牢騷:
感覺用例圖還不成熟,并不能很好地表達系統(tǒng)的需求八回, 沒有UML背景的用戶幾乎不知道畫的是些什么酷愧。
其次,包含關(guān)系辽社、擴展關(guān)系的箭頭符號竟然是同樣的箭頭伟墙,僅靠上方寫個文字來加以區(qū)別,翻譯成其他語言的話滴铅,幾乎就不知道代表什么意思戳葵。擴展關(guān)系的箭頭朝向也很難理解,為何要指向基用例汉匙,而不指向擴展用例拱烁。
VS2010添加的“項目”元素生蚁,是個很好的創(chuàng)新,能夠在用例圖中關(guān)聯(lián)word, excel這些文檔戏自。但為什么不把這些功能直接集成到用例里面邦投,雙擊用例就彈出一份文檔豈不更容易理解,非要畫蛇添足地加一個元件擅笔,僅僅為了提供個鏈接功能志衣。