UML中的用例:如何编写有效的用例规范

仅使用UML符号表示是不够的。每个用例都配有文字说明,解释用例的目的以及在执行用例时完成的功能。用例规范通常在分析和设计阶段通过迭代方式创建。

  • 首先,仅对用例正常流程所需的步骤进行简要描述(即用例提供的功能)。
  • 随着分析的深入,这些步骤会进一步详细展开。
  • 最后,将备选流程和异常流程添加到用例中。
  • 每个项目都可以采用标准的用例模板来创建用例规范。

用例与用例规范

用例描述由参与者执行的、能够带来业务价值的任务。用例可以以用例图和/或结构化文本规范格式进行可视化:

Use Case vs. Use Case Specification

用例(客户希望执行的任务)可以是:

  • 交互 — 系统用例描述参与者如何与系统交互以实现特定的业务目标。
  • 手动 — 参与者执行的一系列操作。
  • 自动 — 由程序或脚本执行的一系列步骤。

用例的特征

用例具有:

  • 只有一个目标
  • 一个起点
  • 一个终点
  • 从开始到结束的多条路径
    • 也就是说,它针对各种可能的条件规定了行为
    • 每种条件可能需要特定的操作

Characteristics of a Use Case

例如——客户支付账单:

Customer Pays a Bill

实现目标有多种路径实现目标:

  • 通过电话
  • 通过邮件
  • 当面
  • 通过支票
  • 通过现金等

路径是无法达到目标:

  • 信用卡被拒

敏捷用例方法

用例模型及其各个用例会随着时间逐步演化。模型中的所有用例不必在相同详细程度上进行说明。

适时且适量

用例可以在不同详细程度和范围下编写,每种都有其用途:

  • 概要:对系统功能或业务流程的总体描述和高层次概述。
  • 用户目标层级:与任务相关的描述,包括用户的目标以及他们如何与系统交互;对特定业务流程的描述。用户目标用例通常被认为处于用户主要工作任务的层级。

示例:从ATM取现是一项有用的任务,属于核心层级用例,但输入您的密码并不属于这一层级,因为它只是支持主要任务。

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

Agile Use Case Approach

注意:某些用例可能需要完全指定到第二级。当您获得足够且及时的细节时即可停止。

详细用例规范

详细用例是一种文本表示,以特定格式描述事件序列及其他相关用例信息。人们通常采用标准用例模板来记录详细用例信息。

Detailed Use Case Specification

用例模板——ATM取现示例

如前所述,用例有多种表示风格(例如,图示、UML、文本格式)。无论使用何种表示方式,都应易于理解。您可以使用Alistair Cockburn提供的模板,或选择最适合您团队的模板。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. 无效的PIN码
10a. 机器内现金不足
10b. 机器内现金面额错误
11a. 取款金额超过取款限额
12a. 客户银行账户余额不足
14a. 银行卡被机器卡住
15a. 客户未取走银行卡
16a. 现金被机器卡住
17a. 客户未能取走现金

  • ATM无法与银行系统通信
  • 客户未对ATM提示作出响应
业务规则: B1:PIN码格式
B2:PIN码重试次数
B3:服务选项
B4:金额选项
B5:取款限额
B6:必须先取走银行卡,才能发放现金
非功能性需求: NF1:完成交易所需时间
NF2:PIN码输入的安全性
NF3:取卡和取现的允许时间
NF4:语言支持
NF5:盲人和部分视力障碍用户支持

Leave a Reply