## UML用例圖
### 基本概述
用例圖(Use?Case?Diagram)是用于描述某某角色通過某某系統能做什么事情。當需要對系統整體或者某一部分功能進行行為建模時,就能夠使用用例圖了。
?
### 用例圖
### 基本語法

解釋:
1、主角表示執行者(Actor),其表示的是與當前系統交互交互的人或者其他系統。
2、用例能夠表示系統能夠為執行者提供什么功能。
3、用例是以動詞加名詞的形式,也就是動賓結構。
4、外邊框表示系統邊界,要注明是什么系統,外邊框可以不畫,個人建議畫上比較清晰。
5、線條有三種:無箭頭的,指向用例的箭頭,指向執行者的箭頭。
6、箭頭可以有兩種解釋:
????1、數據流向
????????箭頭指向用例,說明向系統輸入數據。箭頭指向執行者,說明系統輸出數據。
????2、誰啟動誰
????????箭頭指向用例,說明啟動系統中某一模塊。箭頭指向執行者,說明系統啟動另一系統。
### 進階語法

解釋:
1、執行者之間只有一種關系,那就是泛化關系。
2、用例之間有三種關系。
3、include關系,表示用例4有用例5的功能,也就是有。。。功能。
4、extend關系,表示在用例6的基礎上用例7有什么功能,也就是在。。。基礎上。
5、繼承關系,表示用例9繼承抽象用例8什么功能,抽象用例是不能被實例化的。
?
案例:

### 用例的粒度控制
1、在客戶能準確全面理解的基礎上,用例越精簡越好。
2、用例應使用客戶的語言,也就是領域語言,需保證客戶能看懂能理解,而不應處于開發人員的角度來描述。
3、全面并且有重點地表達好用例,對于重點難點用例應詳細描述,對于常識型用例則不需要太多筆墨。
4、可以通過include和extend分解和細化用例,最底層的用例粒度應大體一致,注意這點應該靈活把握,不應僵化。
5、應當立于客戶想法,但又高于客戶的想法。
6、不應盲目地從客戶的想法中直接導出用例,用例更多地是從系統的目標、待解決的客戶問題而推到出來的。
7、用例圖不是萬能的,所以有時也可以結合用例表來描述需求,甚至有時候也可以不用用例圖來描述需求。
?
案例:

### 用例表
????光是用例圖,很難說清楚每個用例,這時,可以借助用例表來詳細說明用例。不過一般也填寫重要用例的用例表就行了,沒必要把每個用例都做成用例表。
?
### 
解釋:
編號:指用例的編號,通常格式是UC+數字。
名稱:用例的名稱,可以直接使用用例圖中用例的名稱。
執行者:發動該用例的人或系統,如果是多個執行者發動,都寫入。
優先級:最基本的、最重要的、需要先實現的用例優先級應該標識位高。
描述:對用例的簡單描述,簡單說明執行者能夠做什么事情、達到怎樣的效果。
前置條件:要發動該用例,需要先滿足的其他用例或者條件。
基本流程:
1、書寫格式
????1、以阿拉伯數字編號。
????2、執行者的操作頂頭寫。
????3、系統的操作空兩格寫。
2、基本流程是用例表中最關鍵的信息,在這里要思考用戶與系統是如何交互的,需要注意以下幾點:
????1、要用比較高層次的語言來表達,不要明確寫出實現方法。
????2、系統與用戶的交互要符合用戶的使用習慣,盡量減少交互次數,盡量減少信息輸入量。
結束狀況:用例正常結束情況下,系統會有什么效果。
可選流程:在基本流程的基礎上,某些步驟可能是有分支的,這時可用可選流程,當流程不止一個時,可用多個可選流程。
異常流程:系統應該怎么處理用例的某些基礎條件不滿足而導致發生異常,或是發生了一些特殊情況。
說明:寫入業務信息。
?
案例
<table><tbody><tr><td valign="top"><p>編號</p></td><td valign="top"><p>2.1</p></td><td valign="top"><p>名稱</p></td><td valign="top"><p>提出請假申請</p></td></tr><tr><td valign="top"><p>執行者</p></td><td valign="top"><p>普通員工</p></td><td valign="top"><p>優先級</p></td><td valign="top"><p>高■低口</p></td></tr><tr><td valign="top"><p>描述</p></td><td width="451" valign="top" colspan="3"><p>普通員工錄入請假的信息,?能成功提出請假申請</p></td></tr><tr><td valign="top"><p>前置條件</p></td><td width="451" valign="top" colspan="3"><p>無</p></td></tr><tr><td valign="top"><p>基本流程</p></td><td width="451" valign="top" colspan="3"><p>l.指示提出請假申請。</p><p>????2.顯示請假申請表單。</p><p>3.填寫申請單,選擇請假類別。</p><p>4.指示提交申請。</p><p>????5.顯示成功提交申請的信息。</p></td></tr><tr><td valign="top"><p>結束狀況</p></td><td width="451" valign="top" colspan="3"><p>系統保存請假申請數據,并提示成功提交申請的信息。</p></td></tr><tr><td valign="top"><p>可選流程1</p></td><td width="451" valign="top" colspan="3"><p>4.指示取消申請。</p><p>5.顯示申請被取消的信息。</p></td></tr><tr><td valign="top"><p>異常流程</p></td><td width="451" valign="top" colspan="3"><p>3..顯示申請被取消的信息。</p><p>4.指示提交申請。</p><p><span style="color:rgb(255,0,0)">5.發現可休年假不足,顯示相應提示,并向用戶顯示相應通知。</span></p><p>6.修改請假申請單,或取消請假申請。</p></td></tr><tr><td valign="top"><p>說明</p></td><td width="451" valign="top" colspan="3"><p>請假申請單有以下內容:申請者、開始時間、結束時間、請假事由、請假類別。</p><p>申請者默認為當前的用戶,?不可修改。</p><p>申請者默認為當前的用戶,?不可修改。</p><p>類別為:事假、病假、婚嫁、產假、年假,只能而且必須選其一</p><p><span style="color:rgb(255,0,0)">請假時間不能超過年假時間</span></p></td></tr></tbody></table>