## UML用例图
### 基本概述
用例图(Use Case Diagram)是用于描述某某角色通过某某系统能做什么事情。当需要对系统整体或者某一部分功能进行行为建模时,就能够使用用例图了。
### 用例图
### 基本语法
![](https://box.kancloud.cn/2016-02-25_56cec6c4ed74a.jpg)
解释:
1、主角表示执行者(Actor),其表示的是与当前系统交互交互的人或者其他系统。
2、用例能够表示系统能够为执行者提供什么功能。
3、用例是以动词加名词的形式,也就是动宾结构。
4、外边框表示系统边界,要注明是什么系统,外边框可以不画,个人建议画上比较清晰。
5、线条有三种:无箭头的,指向用例的箭头,指向执行者的箭头。
6、箭头可以有两种解释:
1、数据流向
箭头指向用例,说明向系统输入数据。箭头指向执行者,说明系统输出数据。
2、谁启动谁
箭头指向用例,说明启动系统中某一模块。箭头指向执行者,说明系统启动另一系统。
### 进阶语法
![](https://box.kancloud.cn/2016-02-25_56cec6c5096b3.jpg)
解释:
1、执行者之间只有一种关系,那就是泛化关系。
2、用例之间有三种关系。
3、include关系,表示用例4有用例5的功能,也就是有。。。功能。
4、extend关系,表示在用例6的基础上用例7有什么功能,也就是在。。。基础上。
5、继承关系,表示用例9继承抽象用例8什么功能,抽象用例是不能被实例化的。
案例:
![](https://box.kancloud.cn/2016-02-25_56cec6c51be18.jpg)
### 用例的粒度控制
1、在客户能准确全面理解的基础上,用例越精简越好。
2、用例应使用客户的语言,也就是领域语言,需保证客户能看懂能理解,而不应处于开发人员的角度来描述。
3、全面并且有重点地表达好用例,对于重点难点用例应详细描述,对于常识型用例则不需要太多笔墨。
4、可以通过include和extend分解和细化用例,最底层的用例粒度应大体一致,注意这点应该灵活把握,不应僵化。
5、应当立于客户想法,但又高于客户的想法。
6、不应盲目地从客户的想法中直接导出用例,用例更多地是从系统的目标、待解决的客户问题而推到出来的。
7、用例图不是万能的,所以有时也可以结合用例表来描述需求,甚至有时候也可以不用用例图来描述需求。
案例:
![](https://box.kancloud.cn/2016-02-25_56cec6c53b7fe.jpg)
### 用例表
光是用例图,很难说清楚每个用例,这时,可以借助用例表来详细说明用例。不过一般也填写重要用例的用例表就行了,没必要把每个用例都做成用例表。
### ![](https://box.kancloud.cn/2016-02-25_56cec6c55b4e3.jpg)
解释:
编号:指用例的编号,通常格式是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>