用例是什么?

用例

thinking in uml 大象 用例_用户名

用例就是与参与者 actor交互的,并且给参与者提供可观测的有意义的结果的一系列活动的集合 

通俗的说所谓的用例就是一件事 要完成这件事情 需要做一系列的活动

在UML中 一个场景就是一个用例的实例

如果我们要描述一个系统的功能性需求 就要找到这个系统有愿望的人 让他们来说明他们在这个系统里做什么事 想要什么结果 如果所有对系统有愿望的人要做的所有事情都找全了 那这个系统的功能性就被确定下来了

举栗子

 想吃一顿饭 需要做菜和做饭  那么做菜和做饭就是俩个用例 而煮饭有不同的方法 可以用蒸笼 可以用电饭锅 这就是俩个不同的场景

也就是俩个实例 电饭锅 可以放精米 可以放糙米 糙米要多洗几次 这就是用例在不同场景下的不同处理场景

一个完整的用例定义由参与者,前置条件,场景,后置条件构成

thinking in uml 大象 用例_后台进程_02

用例的特 

1)用例是相对独立的

用例不需要与其他用例交互而独自完成参与者的目的 也就是说用例从“功能”上是完备的

用例本质体系了系统参与者的愿望 不能完整表达参与者愿望的不能称之为用例

理解:一个用例不用上下文 就是能描述一件完整的事情 比如 登陆系统  如果把输入密码当初一个用例 那输入密码干什么那  输入密码 然后系统就会自己登陆嘛 用户名怎么办  所以 用例要有独立性

举例子

如果取钱是一个有效的用例 那么填写取款单就不是 因为完整的目的是取到钱 没有人会为了去填单子 去趟银行

2)用例的执行结果对参与者来说是可观测的和有意义的

可观测:例如 系统里有一个后台进程 监视参与者在后台删除数据时 提前执行备份 虽然它是系统的一个重要组成部分 但是它并不能在需求阶段却不应该作为用例出现 因为这是一个后台进程 对参与者是不可观测的 

有意义的:比如登陆系统是一个有效的用例 但是输入密码就不是 因为登陆系统是一个对参与者有意义  但是输入密码却不是

thinking in uml 大象 用例_后台进程_03

 

3)这件事必须由一个参与者发起 不存在没有参与者的用例 用例不应该自动启动 也不应该主动启动另一个用例

举例子

去ATM机取钱 是一个有效用例 ATM机吐钞却不是 ATM机如果自己吐钱 人就不要工作了 在哪等着就行

4)用例必然是以动宾短语形式出现

用例必须有一个动作和动作受体 例如喝水是一个用例 而 喝 和 水

在没有水的情况下人是不会做出喝水这个动作 水必然是喝进去的 而不是滑进去的 但是书中作者 就见过 计算 统计 报表 输出 录入之类的命名

thinking in uml 大象 用例_用例_04

5)用例就是一个需求单元 分析单元 设计单元 开发单元 测试单元 设置部署单元

thinking in uml 大象 用例_后台进程_05