目录
[2.1 什么是参与者](#2.1 什么是参与者)
[2.2 如何识别参与者](#2.2 如何识别参与者)
[2.3 参与者之间的关系](#2.3 参与者之间的关系)
从今天开始,就到了最干的各种的图的梳理和学习了,未来AI就能编码了,把业务建模和设计的基本功打好,也许能和AI和平相处呢。
一、什么是用例图
UML中的用例图是一种描述系统功能的动态视图,它由参与者(Actor)、用例(Use Case)以及它们之间的关系构成。这种图主要用于对系统、子系统或类的功能行为进行建模,并展示用例之间以及同用例参与者之间是怎样相互联系的。用例图定义了系统的功能需求,是从系统的外部看系统功能,并不描述系统内部对功能的具体实现。它是需求分析中的产物,主要作用是描述参与者和用例之间的关系,帮助开发人员可视化的了解系统的功能。
用例图主要多用于需求分析阶段。
二、参与者
2.1 什么是参与者
参与者(Actor)是与主体系统交互的外部实体。每个参与者实际上是一个角色集。在UML中,参与者使用使用人形的图形表示,并给这个参与者赋予一个名字。如下图中的"管理员"即是图书馆借阅系统中的一个参与者。
但是一定要注意:参与者不一定是人。
在UML的用例图中,"参与者"(Actor)是一个重要的元素,指的是与系统进行交互的外部实体。这些实体可以是用户、其他系统、组织或任何与所建模系统有交互行为的对象。参与者的主要特点是,它们不是系统的一部分,但是会与系统进行交互,从而触发系统的某些功能或行为。
简而言之,参与者是与系统发生交互作用的人或事物,它们通过用例与系统交换信息,并期望系统能够提供某种服务或功能。在用例图中,参与者通常用人形图标表示,以突出其与系统之间的交互关系。
2.2 如何识别参与者
识别用例图中的参与者是一个涉及多个维度的过程,需要综合考虑系统的各种交互场景和可能的利益相关者。以下是一些常用的方法来识别和确定参与者:
1.定义系统边界:
- 明确系统范围和边界。
- 识别系统的主要功能和服务。
2.识别用户角色:
- 列出与系统交互的所有人或组织。
- 考虑不同用户角色的权限和职责。
3.考虑其他系统或设备:
- 识别与其他系统或设备的交互。
- 注意非人类参与者的接口或功能。
4.分析业务场景和用例:
- 深入研究系统的业务场景和用例。
- 识别在特定情境下与系统交互的实体。
5.考虑信息的来源和目的地:
- 分析系统中的信息流。
- 确定信息的起点和终点。
6.检查现有文档和资料:
- 查看用户需求、业务需求、市场分析报告等。
- 获取关于潜在参与者的线索。
7.进行访谈和调研:
- 与潜在用户、利益相关者或领域专家进行访谈。
- 识别可能被忽略的参与者或特殊场景。
8.使用原型和模拟:
- 使用原型或模拟来验证和细化对参与者的理解。
- 观察和理解参与者的行为和需求。
9.持续更新和调整:
- 随着对系统的理解加深,更新和调整参与者定义。
- 保持识别和定义的灵活性。
10.注意特殊情况和异常:
- 不要忽视特殊情况或异常场景下的参与者。
- 考虑故障恢复、系统维护或灾难恢复等情况下的参与者。
此外,还有一些有用的思考维度,可以帮助你找到系统的参与者:
- 系统的使用者。比如电商平台的消费者。
- 系统的管理员,维护者。比如电商平台的运营人员、客服、超级管理员。
- 外部接口相关的实体,或者设备。比如开放平台,外部接口和设备。
- 子系统。比如你需要对接的SAP、财务系统等。
- 时间相关的自动触发的事件,比如定时任务,自动提醒。
- 自动化的一些事件。这个比较难以界定,我们可以认为,触发条件,也是一种参与者。
再次注意:参与者可能是其它子系统、其它系统、时间、温度等其它因素。
- 参与者位于系统的外部,而不是系统的一部分;
- 参与者通过系统边界与系统进行交互;
- 参与者的图标虽然使用人形图标来表示,但参与者不一定是人。
2.3 参与者之间的关系
在用例图中,参与者之间的关系主要是描述它们之间的相似性或差异性。其中,泛化关系是参与者之间最常见的一种关系。
泛化关系(Generalization):
- 泛化关系表示一个更一般的参与者(父参与者)与一个或多个更具体的参与者(子参与者)之间的关系。
- 父参与者通常代表一组共同的特性和行为,而子参与者则继承这些特性,并可能添加一些自己的特性。
- 在图形表示中,使用带空心箭头的实线连接子参与者和父参与者,箭头指向父参与者。
这里稍微有些"别扭",就是泛化这个词,我们很容易直觉理解为,是从一般到具体。但是箭头,却是从具体指向一般。可以说,UML中,泛化关系的箭头方向可能初看起来有些反直觉!这种表示方法有助于强调子类是父类的一种特殊情况或具体实现。
记忆这个规则的一个方法是将其与继承的概念联系起来。在面向对象编程中,子类继承父类的属性和方法。因此,可以将箭头从子类指向父类理解为"子类继承了父类的特性"。这样,当看到箭头指向一个更一般的参与者或类时,就可以联想到"继承"和"特化"的概念,从而帮助记忆泛化关系的表示方法。
除了泛化关系外,参与者之间还可以存在其他关系,但这些关系在用例图中并不常见。例如,在某些情况下,参与者之间可能存在关联关系,表示它们之间的某种联系或交互模式。但这些关系通常不直接在用例图中表示,而是通过用例之间的交互来描述。
(未完,下次来讲用例。)