UML学习2 - 用例图

上一篇文章可知在程序设计中最基础的就是用例图(use case diagram), 因为他描述了系统的功能,也就是对应于系统需求, 整个程序也就是为了满足这些需求而实现的. 如果用例图描述错误, 将直接导致整个系统不满足需求, 也就是说整个系统是无用的.
用例图也就是对需求的抽象, 描述, 将需求从文字转变成图形, 在整个转变过程中使不明确的需求变的明确. 用例图只关心需求, 也就是系统需要具有哪些功能, 而不关心如何实现这些功能, 更不关心系统非功能部分,比如性能, 使用的开发语言, 技术等.
如何来画用例图呢? 由于用例对应于需求, 因此也就是说如何来用图形的方式描述一个需求呢.
首先应该是搞清楚 参与者(actor), 也就是与你的系统进行交互的东西(人或物), 严格来说, 参与者需要满足两个要求: (1) 与系统进行交互; (2)不是系统的一部分. 参与者并不一定都是人, 也可能是第三方系统等, 可以将其想象成一个黑盒子, 首先我们不能改变他, 而且也不关心参与者本身是如何实现的, 其次他需要与我们的系统进行相互.
比如我们在设计开发一个博客内容管理系统(weblog content management system, 以下简称CMS), 他有如下需求:
Requirement A.1
CMS系统允许管理员去创建新的博客账号, 该账号对应的个人详细信息作者认证数据库来确认.
针对上面的A.1需求, 最容易发现的参与者就是管理员, 他与系统进行交互(创建新的账号), 并且他不属于系统的一部分. 在用例图中, 参与者可以有两种表示方式: (1)火柴人(stick man); (2)元数据框(stereotyped box), 如下所示:

也可以通过以下的问题来找出参与者:

用例图的另一个组成部分就是用例(use case), 或者说任务(job), 也就是该需求到底要做什么事, 可能只是简单的登录, 也可能是复杂的多个全球数据库之间的分布式事务. 比如上面的需求A.1, 就是创建新的博客账号. 在用例图中, 用例用一个椭圆形框来表示, 如下所示:

最后就是将参与者与用例联系起来, 因为参与者就是要与系统发生交互的, 然后完成用例所示的功能或任务, 在用例图中使用 通信线(communication lines)来连接参与者与用例, 如下所示:

另外, 为了表明参与者不属于系统的一部分,可以使用 系统边界(system boundary)来表示, 如下所示:

到这里, 一个简单完整的用例图就画好了, 总结下来, 用例图主要包括2个组成部分:参与者和用例, 然后使用通信线将参与者(一个或多个)分别与用例连接起来, 最后可以使用系统边界来显式的指明系统内的部分(用例)和系统外的部分(参与者).
图形的一个好处就是简洁明了, 但这也恰恰是他的不足, 也就是不够详细充分, 比如如果有多个参与者, 那么哪个参与者是最重要的? 用例包含哪些步骤等等? 所以我们可以使用 用例描述(use case description)来对用例图加以补充描述. 在UML中用例描述一般包含以下内容, 但并没有严格的要求, 可以自行增删:
用例描述内容 解释和用途 解释和用途原文
相关需求(Related Requirements)该用例图所描述的需求Some indication as to which requirements this use case partially or completely fulfills.
目标背景(Goal in Context)该用例在系统中的位置和重要性The use case's place within the system and why this use case is important.
先决条件(Preconditions)用例实现(发生)的前提What needs to happen before the use case can be executed.
成功末端条件(Successful End Condition)成功后系统的状态What the system's condition should be if the use case executes successfully.
失败末端条件(Failed End Condition)失败后系统的状态What the system's condition should be if the use case fails to execute successfully.
主要参与者(Primary Actors)用例的主要参与者The main actors that participate in the use case. Often includes the actors that trigger or directly receive information from a use
case's execution.
次要参与者(Secondary Actors)用例的其他参与者Actors that participate but are not the main players in a use case's execution.
触发条件(Trigger)触发用例发生的事件The event triggered by an actor that causes the use case to execute.
主要流程(Main Flow)描述用例主要的正常流程The place to describe each of the important steps in a use case's normal execution.
扩展流程(Extensions)除主流程之外的其他情况A description of any alternative steps from the ones described in the Main Flow.
下面就是针对需求A.1的用例描述:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值