什么是用例规范?

仅用UML表示法显示用例图是不够的。每个用例都附有解释用例目的以及执行用例时完成的功能的文本。用例规范通常在分析和设计阶段以迭代方式创建。
  • 首先,只写了执行用例正常流程所需的步骤的简要描述(即用例提供了什么功能)。
  • 随着分析的进行,这些步骤被充实以添加更多细节。
  • 最后,将异常流添加到用例中
  • 每个项目都可以采用一个标准的用例模板来创建用例规范。

用例与用例规范

用例描述了由参与者执行的任务,该任务为业务产生了业务价值。用例可以可视化为用例图或/和结构化文本规范格式:

用例与用例规范

 

用例(任务 – 客户想要执行)可能是:
  • 交互– 系统用例描述了参与者与系统的交互,以实现既定的业务目标
  • 手动– 由演员执行的一系列动作
  • 自动化– 由程序或脚本执行的一系列步骤

用例的特征

一个用例有:

  • 只有一个目标
  • 一个起点
  • 一个终点
  • 从头到尾的多条路径
    • 即为各种可能的条件指定行为
    • 每个条件可能需要特定的操作

用例的特征

例如 – 客户支付账单:

客户支付账单

有多种途径可以实现目标

  • 电话支付
  • 通过邮寄
  • 亲自
  • 支票
  • 以现金等方式

不通向目标的路径

  • 信用卡被拒绝

敏捷用例方法

用例模型及其各个用例随着时间的推移逐级发展。并非模型的所有用例都必须指定为相同的详细程度。

准时制和刚好够用

用例可以在不同级别的数据和范围内编写,每个级别都有一个目的:

    • 摘要:系统功能或业务流程的一般描述和全面概述。
    • 用户级别用户的任务相关描述以及他们如何与系统交互;特定业务流程的描述。用户级用例通常被认为是处于用户主要工作的任务级别。

例如:从 ATM 机取现金是一项有用的任务,将是核心级别的用例,但输入您的 PIN 码不会在此级别,因为它支持主要工作。

  • 子功能:用于完成核心用例子部分的较低级别活动的描述。

敏捷用例方法

注意:某些用例可能被充分指定到级别 II。当使用及时和恰到好处的方式获得足够的细节时,您就停止了。

详细的用例规范

详细用例是一种文本表示,以某种格式说明一系列事件以及其他相关用例信息。人们通常采用标准的用例模板来记录用例的详细信息

详细的用例规范

用例模板 – ATM 取款案例示例

如前所述,用例有多种符号样式(例如图表样式、统一建模语言、文本格式)。无论使用什么符号,都应该易于理解。您可以使用模板,例如Alistair Cockburn 中的模板,但也可以选择使用最适合您团队的模板。

用例规范
用例名称: 提取现金
演员: 客户(主要),银行系统(次要)
摘要说明: 允许任何银行客户从他们的银行账户中提取现金。
优先事项: 一定有
地位: 中等详细程度
前提: 银行客户有一张卡可以插入ATM
ATM正常在线
后置条件:
  • 银行客户已收到现金(和可选收据)
  • 银行已从客户的银行账户中扣款并记录交易详情
基本路径:
  1. 客户将他们的卡输入 ATM
  2. ATM 验证该卡是有效的银行卡
  3. ATM 要求输入 PIN 码
  4. 客户输入他们的 PIN 码
  5. ATM 根据 PIN 码验证银行卡
  6. ATM 提供服务选项,包括“提款”
  7. 客户选择“提款”
  8. ATM 提供金额选项
  9. 客户选择金额或输入金额
  10. ATM 验证它的账户中是否有足够的现金
  11. ATM 验证客户是否低于取款限额
  12. ATM 验证客户银行账户中的资金是否充足
  13. ATM 从客户的银行账户中扣款
  14. ATM 退回客户的银行卡
  15. 客户拿走他们的银行卡
  16. ATM 向客户发放现金
  17. 客户拿走他们的现金
替代路径: 2a. 无效卡

2b. 卡倒置

5a. 被盗卡

5b. 密码无效

10a. 账户中的现金不足

10b. 账户中的现金面额错误

11a. 提款超过提款限额

12a. 客户银行账户资金不足

14a. 银行卡卡在机器里

15a. 客户未取走银行卡

16a. 现金卡在机器里

17a. 客户未能取走他们的现金

    • ATM 无法与银行系统通信
    • b 客户不响应 ATM 提示
商业规则: B1:PIN的格式

B2:PIN 重试次数

B3:服务选项

B4:金额选项

B5:提款限额

B6:取钱前必须取卡

非功能性要求: NF1:完成交易的时间

NF2:PIN 输入的安全性

NF3:允许收集卡和现金的时间

NF4:语言支持

NF5:盲目和部分盲目支持