引言
本案例研究聚焦于银行ATM系统的用例建模。ATM系统旨在为客户提供一种便捷的方式来访问账户并执行各种银行业务,例如取现、存款、转账、查询账户余额以及修改PIN码。本案例研究讨论了系统的背景描述与需求,以及为建模系统功能而创建的用例图、参与者和场景。此外,本案例研究还探讨了如何与其他类型的UML图(如活动图和顺序图)结合使用用例图以更详细地展示系统的运行行为与交互过程。案例研究结束时,读者将对用例建模过程有清晰的理解,并掌握其在现实系统(如ATM系统)中的应用方法。

开发有效用例及编写恰当用例场景的指南与技巧
以下是开发用例及编写恰当用例场景的一些指南、技巧与窍门:
- 识别参与者:首先识别将与系统交互的参与者。这可能包括用户、管理员以及其他将使用该系统的利益相关者。
- 定义系统范围:明确界定系统的范围及其目标。这有助于确保用例场景能够涵盖所有必要需求。
- 采用结构化方法:采用结构化方法来开发用例场景。可以使用模板或指南,以确保每个场景遵循一致的结构。
- 编写清晰简洁的场景:编写清晰、简洁且易于理解的用例场景。使用通俗语言,避免使用所有利益相关者可能不熟悉的术语或缩写。
- 使用以行动为导向的语言:使用以行动为导向的语言编写用例场景,描述用户或系统正在执行的操作。这有助于确保场景易于理解与跟进。
- 聚焦用户目标与需求:在开发用例场景时,应聚焦于用户的目标与需求。这有助于确保场景能够反映用户视角,并与其需求保持一致。
- 识别前置条件与后置条件:明确识别场景成功所需的任何前置条件和后置条件。这有助于确保场景完整且准确。
- 包含异常场景:识别可能出现的任何异常场景,并将其包含在用例场景中。这有助于确保系统能够应对意外情况和错误。
- 获取反馈并评审:从利益相关者处获取反馈,并定期评审用例场景,以确保其保持准确,并与最新的系统规格和需求同步。
通过遵循这些指南、技巧与窍门,开发者可以制定出准确反映系统功能并满足所有利益相关者需求的用例场景。
案例研究问题描述——ATM
银行需要为客户提供一种便捷的方式来访问账户并执行各种银行业务,例如取现、存款、转账、查询账户余额以及修改PIN码。为解决这一问题,银行计划实施ATM系统,使客户能够通过ATM卡和PIN码完成这些交易。
需求:
- 安全性: ATM系统必须通过使用客户的ATM卡和PIN码验证其身份,确保客户交易的安全性。系统必须防止未经授权访问客户账户,并需防范各种欺诈和攻击形式,例如盗卡和黑客攻击。
- 可用性: ATM系统必须在所有时间对客户保持可用,仅受定期维护和停机时间的限制。系统必须具备可靠性并能抵御硬件和软件故障,以最大限度减少服务中断,确保客户满意度达到高水平。
- 易用性: ATM系统必须对所有年龄和背景的客户都易于使用和导航。系统必须提供清晰的指示和反馈,引导客户完成交易过程,减少错误和困惑。
- 交易处理: ATM系统必须准确高效地处理客户交易,包括取款和存款、资金转账、查询账户余额以及修改PIN码。系统必须准确记录所有交易,并在需要时向客户提供收据和其他相关文件。
- 集成: ATM系统必须与银行现有的IT基础设施集成,包括核心银行系统、网络和数据库。系统必须与其他系统和组件安全可靠地通信,以确保交易和账户信息的准确及时处理。
用例建模与用例场景开发
从ATM系统的問題描述開始,下一步是識別為滿足系統用戶需求所必需的各種用例。這包括分析系統需求,並定義用戶與系統互動時可以執行的具體操作。每個用例都將有其自身的場景集合,用以描述在特定情況下系統與用戶如何互動。這些場景應以結構化的方式開發,使用清晰簡潔的語言,確保項目中所有利益相關者都能輕易理解。
识别用例并开发用例场景的过程是软件开发生命周期中的关键步骤。它使开发团队能够全面理解系统的需求,并设计出满足用户需求的解决方案。随着开发过程的推进,可能需要对用例和场景进行优化,以反映需求的变化或纳入利益相关者的反馈。这一迭代过程有助于确保最终系统满足所有利益相关者的需求,并能够应对各种场景和用例。
- 用例图:
ATM系统的用例图可能包括以下参与者:
- 客户
- 银行
以及以下用例:
- 取款
- 存款
- 查询余额
- 转账
- 修改PIN码
该图将展示参与者与用例之间的关系,表明哪些用例由哪些参与者访问。
- 用例场景:
a)取款:
- 客户将ATM卡插入机器。
- 系统提示客户输入其PIN码。
- 客户输入其PIN码。
- 系统验证PIN。
- 客户选择“取现”选项。
- 系统提示客户输入他们希望提取的现金金额。
- 客户输入现金金额。
- 系统发放现金。
- 客户取出他们的ATM卡并拿走现金。
b) 存现:
- 客户将他们的ATM卡插入机器。
- 系统提示客户输入他们的PIN。
- 客户输入他们的PIN。
- 系统验证PIN。
- 客户选择“存现”选项。
- 系统提示客户输入他们希望存入的现金金额。
- 客户输入现金金额。
- 系统验证金额并将其显示给客户。
- 客户确认金额。
- 系统接收现金并贷记客户账户。
c) 查询余额:
- 客户将他们的ATM卡插入机器。
- 系统提示客户输入他们的PIN。
- 客户输入他们的PIN。
- 系统验证PIN。
- 系统显示客户的账户余额。
d) 转账:
- 客户将他们的ATM卡插入机器。
- 系统提示客户输入他们的PIN。
- 客户输入他们的PIN。
- 系统验证PIN。
- 客户选择“转账”选项。
- 系统提示客户输入希望转账的账户号码。
- 客户输入账户号码。
- 系统提示客户输入希望转账的资金金额。
- 客户输入资金金额。
- 系统验证金额并将其显示给客户。
- 客户确认金额。
- 系统转账并显示确认信息给客户。
e)更改PIN:
- 客户将他们的ATM卡插入机器。
- 系统提示客户输入当前的PIN。
- 客户输入当前的PIN。
- 系统验证当前的PIN。
- 系统提示客户输入新的PIN。
- 客户输入新的PIN。
- 系统提示客户确认新的PIN。
- 客户确认新的PIN。
- 系统更新客户的PIN并显示确认信息。
细化用例场景——取现
随着开发过程的推进,细化用例场景非常重要,原因有以下几点:
- 确保该场景准确并反映系统的当前状态:随着开发过程的推进,系统可能会发生变化,新的需求也可能出现。细化用例场景有助于确保其保持准确,并与最新的系统规格保持一致。
- 识别任何缺失或不完整的需求:随着系统的发展,可能会发现需要额外的需求才能完整地捕捉系统的功能。细化用例场景有助于识别任何缺失或不完整的需求。
- 提高可用性和用户体验:细化用例场景有助于提高系统的可用性和用户体验。通过细化场景,开发人员可以更好地理解用户需求,并做出更符合这些需求的设计决策。
细化用例场景的过程可能包括以下几个步骤:
- 审查场景的准确性和完整性: 开发人员应审查场景,以确保其准确反映系统的当前状态,并确保所有需求都被涵盖。
- 识别任何缺失或不完整的需求: 开发人员应识别任何缺失或不完整的需求,并努力将其纳入场景中。
- 优化用户界面: 开发人员应优化用户界面,以提高可用性和用户体验,同时考虑用户反馈和设计最佳实践。
- 整合反馈: 开发人员应整合利益相关者和用户的意见,以完善场景,确保其满足所有用户的需求。
优化用例场景的步骤
通过在整个开发过程中持续优化用例场景,开发人员可以确保系统满足用户需求和要求,并尽可能地易于使用和友好。
以下是ATM系统“取现”场景的详细说明,包括正常流程和异常流程,以及插入点以反映真实生活场景:
场景: 取现
主要参与者: 客户
前提条件:
- 客户已将ATM卡插入机器。
- 客户已输入正确的PIN码。
基本流程:
- 客户从主菜单中选择“取现”选项。
- ATM提示客户输入希望提取的现金金额。
- 客户输入希望提取的现金金额。
- ATM验证客户账户中是否有足够的资金来覆盖取款金额。
- ATM向客户发放所请求的现金。
- ATM显示一条确认成功取款的消息,并提示客户选择另一项交易或结束会话。
- 客户选择另一项交易或结束会话。
- ATM吐出客户的ATM卡。
异常流程:
1a. 资金不足
- ATM验证客户账户中的资金不足以覆盖取款金额。
- ATM显示一条错误消息,告知客户其资金不足,无法完成交易。
- ATM提示客户输入更少的取款金额或取消交易。
- 客户要么输入更少的取款金额,要么取消交易。
2a. 金额无效
- 客户输入了无效的取款金额,例如负数或超过每日取款限额的数值。
- ATM显示一条错误消息,告知客户输入的金额无效。
- ATM提示客户输入有效的取款金额。
- 客户输入了一个有效的取款金额。
3a. 卡片被留存
- 由于硬件或软件故障,ATM无法发放现金。
- ATM显示一条错误消息,告知客户其卡片已被留存。
- ATM提示客户联系银行或客户服务以获得帮助。
- 客户联系银行或客户服务以取回其卡片。
插入点:
- 步骤1之后:客户将ATM卡插入机器并输入其PIN。
- 步骤2之后:客户输入希望提取的现金金额。
- 步骤3之后:ATM验证客户是否有足够的资金来覆盖取款金额。
- 步骤5之后:ATM向客户发放所请求的现金。
总结
附录 – 优化的用例场景 – ATM
用例名称: 取款
参与者: 客户,ATM
前提条件: 客户必须持有有效的ATM卡和PIN码。ATM必须正常运行并连接到银行网络。
基本流程:
- 客户将他们的ATM卡插入ATM的卡槽中。
- ATM提示客户使用键盘输入其PIN码。
- 客户输入其PIN码。
- ATM验证PIN码并显示主菜单选项。
- 客户从菜单中选择“取现”选项。
- ATM提示客户使用键盘输入希望提取的现金金额。
- 客户输入希望提取的现金金额。
- ATM验证客户账户中是否有足够的资金完成交易。
- ATM向客户发放所请求的现金金额。
- ATM显示一条消息,表明交易已完成。
- 客户从卡槽中取出其ATM卡。
替代流程:
- 1a. 如果ATM无法读取客户的ATM卡,ATM将显示错误信息,并提示客户重新尝试或联系银行。
- 4a. 如果客户连续三次输入错误的PIN码,ATM将保留其卡片,并显示一条消息表明卡片已被保留。
- 8a. 如果客户账户中没有足够的资金完成交易,ATM将显示错误信息,并提示客户输入更小的金额或取消交易。
用例名称: 查询账户余额
参与者: 客户,ATM
前提条件: 客户必须持有有效的ATM卡和PIN码。ATM必须正常运行并连接到银行网络。
基本流程:
- 客户将他们的ATM卡插入ATM的卡槽中。
- ATM提示客户使用键盘输入其PIN码。
- 客户输入其PIN码。
- ATM验证PIN码并显示主菜单选项。
- 客户从菜单中选择“查询账户余额”选项。
- ATM在屏幕上显示客户的当前账户余额。
- 客户从读卡槽中取出他们的ATM卡。
替代流程:
- 1a. 如果ATM无法读取客户的ATM卡,ATM将显示错误信息,并提示客户重新尝试或联系银行。
- 4a. 如果客户连续三次输入错误的PIN码,ATM将保留其卡片,并显示提示信息说明卡片已被保留。
用例名称:存款现金
参与者:客户,ATM
前置条件:客户必须持有有效的ATM卡和PIN码。ATM必须正常运行并连接到银行网络。
基本流程:
- 客户将ATM卡插入ATM的读卡槽中。
- ATM提示客户使用键盘输入其PIN码。
- 客户输入其PIN码。
- ATM验证PIN码后显示主菜单选项。
- 客户从菜单中选择“存款现金”选项。
- ATM提示客户将希望存入的现金插入ATM的现金存款槽。
- 客户将现金插入存款槽。
- ATM验证现金后显示一条消息,说明已存入的现金金额。
- 客户从读卡槽中取出他们的ATM卡。












