初学者指南:用例图——开启您的软件工程之旅
目录
背景:
基本组成:
关联(Assciation):
包含(Include):
扩展(Extend):
泛化(Inheritance):
完整银行系统用例图:
总结:
背景:
用例图(Use Case Diagram)是一种在软件开发和系统设计中广泛使用的图形化工具,它属于UML(Unified Modeling,统一建模语言)的一部分。用例图通过展示参与者(Actor)与系统用例(Use Case)之间的交互关系,来描述系统功能需求和行为
基本组成:
名称 | 表示 | 名词解释 |
系统(System) | 用一个矩形代表一个系统,然后将系统名称放在顶部。矩形用于定义系统的范围,矩形内的所有内容都在系统内发生,矩形外的所有内容都不会在系统外发生 | |
参与者(Actor) | 与系统交互的外部实体,可以是用户、其他系统或任何能够触发系统功能的实体 | |
用例(Use Case) | 描述系统的一个功能或行为,是系统参与者提供的一项服务或完成一个任务 | |
关联(Assciation) | 参与者与用例间的关系 | |
包含(Include) | 参与者之间或用例之间的关系 | |
扩展(Exten) | 用例之间的关系 | |
泛化(Inheritance) | 用例之间的关系 |
关联(Assciation):
关联关系,用实线表示。表示参与者与用例与用例之间的通信,任何一方都可以发送和接收消息。
例子:在银行系统中,客户(参与者)与登录(用例)之间存在关联关系。客户登录银行应用、客户检查账单、客户转账、客户付款。这种之间的连接或交互就是关联关系
包含(Include):
包含关系,把一个较复杂用例所表示的功能分解成较小的步骤,是上一个用例过程中不可可少的。箭头指向包含的子用例
例子:登录是基本用例,验证密码是包含用例,在银行系统中,每次客户登录时,银行应用都会验证密码
扩展(Extend):
扩展关系,用例功能的延伸,相当于为基础用例提供一个附加功能。(指向基础用例)
基本用例和扩展用例,当执行基本用例时,扩展用例有时候会触发有时候不会触发,扩展用例只会在满足某种条件的时候才会触发,
当有扩展关系时,使用一条带有箭头的虚线指向基本用例
例子:在银行系统中,登录是基本用例,而提示登录错误是一个扩展用例,银行应用不会在每次可客户登录时都提示登录错误消息,而是当客户输入错误的密码时,才会提示登录错消息。因为这是一个扩展关系,所以画一条带有箭头的虚线,箭头指向基本用例。
转账和支付者两个动作完成之前都需要检查余额是否充足
泛化(Inheritance):
泛化关系是一种继承关系,它表示一般与特殊的关系。在用例图中,泛化关系通常用于描述用例或参与者之间的继承关系。一个用例(或参与者)可以是另一个用例(或参与者)的特化或子类,继承父类(基类)的所有行为或者特征。
例子:在银行系统中,当客户使用银行应用付款时,可以从支票账户进行付款或者从储蓄账户进行付款,付款是一个通用用例。从支票账户付款和从储蓄账户付款是专门用例,可以把它们叫做父用例和子用例,子用例有着父用例的功能,并且子用例还具有特有的功能。
完整银行系统用例图:
总结:
用例图的好处 | 解释 |
---|---|
清晰表达系统需求 | 通过展示参与者与系统之间的交互,使系统需求更加明确和直观 |
促进沟通 | 为开发团队、测试团队、业务分析师等提供了共同的语言和理解基础 |
识别系统功能 | 明确列出系统需要实现的功能,有助于后续的设计和开发工作 |
降低开发风险 | 通过早期识别潜在的问题和需求变更,减少开发过程中的风险和不确定性 |
支持迭代开发 | 易于更新和调整,适应迭代开发过程中的需求变化 |
提高开发效率 | 为开发团队提供了明确的指导,减少不必要的开发和测试工作 |