《面向对象分析与设计》一3.2 参与者

简介: 本节书摘来自华章出版社《面向对象分析与设计》一书中的第3章,第3.2节,作者 麻志毅,更多章节内容可以访问云栖社区“华章计算机”公众号查看

3.2 参与者

对于每个有意义的系统,都存在着一些与系统打交道的事物,这些事物为了某些目的而与系统进行交互。这些事物还能预料到系统的运行方式,为达到某种目的事物间也可能要通过系统进行协作。

3.2.1 概念与表示法

一个参与者(actor)定义了一组在功能上密切相关的角色,当一个事物与系统交互时,该事物要扮演这样的角色。
例如,超市里的每个具体的收款员的首要职责为收款,他还要负责检验购物篮中商品的数量以及验证顾客的信誉卡以给予优惠。这样,每个收款员就要扮演三种在功能上紧密相关的角色。把这组角色定义为一个参与者,对其命名为“收款员”。该参与者的一个实例就是扮演上述角色的一个具体人。这个具体的人,可能还扮演其他参与者(例如“商品供货员”)的角色,这说明一个系统的用户可以扮演不同的参与者中的角色。此外,一个参与者也可以由一组用户来扮演,如参与者“收款员”往往代表着一组具体的人。
一个参与者可以发出请求,要求系统提供服务;系统以某种方式对其做出响应,把响应的结果返回给该参与者或者给其他的参与者。系统也可以向参与者发出请求,参与者对此做出响应。为了完成某项功能,一组参与者和系统之间请求与响应的对话可能是复杂的。
尽管在模型中使用了参与者,但参与者实际上并不是系统的一部分,它们位于系统之外,是在系统之外的与系统进行交互的任何事物。
参与者的标准图符是一个“人型符号”,参与者的名字放在图符的下方,如图32所示。
如果一些参与者与系统的交互有一部分是相同的,这时不是显式地将相同的交互与每一个参与者相关联,而是引入包含这些共同的交互的一般参与者,并对这些参与者进行特殊化处理,特殊参与者从一般参与者中继承执行这些交互的能力,见图33。

image

从特殊参与者到一般参与者之间的继承关系,意味着特殊参与者的实例能够同与一般参与者的实例进行交互的用况实例进行通信。

3.2.2 识别参与者

上节讲到,参与者是在系统之外与系统进行交互的任何事物。具体地讲,参与者分为三类:人员、外部系统或设备。下面讲述如何从这三个方面识别参与者。
(1)人员
从直接使用系统的人员中发现参与者。这里强调的是直接使用,而不是间接使用。这样的人可能要启动、维护和关闭系统,更多的可能是这样的人要从系统中获得什么信息或向系统提供什么信息。
特定的人在系统中可扮演不同参与者中的角色。例如,添加数据、使用数据及产生分析报告的那个人就扮演了三种不同的角色,这些角色可能要分别属于三种不同的参与者。再如,对于使用银行系统的一个具体的人来讲,他扮演的角色可为前台职员、经理或顾客等。
(2)外部系统
所有与本系统交互的外部系统都是参与者。相对于当前正在开发的系统而言,外部系统可以是其他子系统、下级系统或上级系统,即任何与它进行协作的系统,但对这样的系统的开发并不是开发本系统的人员的责任,无论它们是已存在的,还是正在开发的。
要指出的是,如果一个大系统在任务分解时被划分成几个子系统,则每个子系统的开发者都把与之相关的其他子系统看作是外部系统,子系统的边界以内只包括它的开发者所负责的那部分功能。
(3)设备
识别如下的所有与系统交互的设备:这样的设备与系统相连,向系统提供外界信息;也可能系统要向设备提供信息,设备在系统的控制下运行。这样的设备是系统的参与者。通常,像监视器、键盘、鼠标这样的标准用户接口设备(操作系统管理它们)不包括在内,而像外部传感器和受控马达这样的与系统交互的设备很可能是参与者,因为所开发的系统往往要直接对它们进行处理。
下面是一些识别与组织参与者的指导策略:
1)首先将精力集中于启动系统的参与者。这些是最容易识别的参与者,从中可以找出其他参与者。
2)从用户的角度考虑怎样使用这个系统,从设备和外部系统的角度考虑它们如何与系统交互。
3)对识别出来的参与者,记录它们的责任。
4)通过识别继承关系,组织参与者。
5) 若有必要,在参与者间建立继承关系。

相关文章
|
人工智能 编解码 芯片
告别低效沟通|让技术提问不再头疼-这套高效AI提问模板来帮你
不会向ai提问,不知道怎么提问的 可以看看
21494 1
告别低效沟通|让技术提问不再头疼-这套高效AI提问模板来帮你
|
人工智能 自然语言处理 算法
AI 对研发流程的变革
AI编程助手通过自然语言生成代码、解释复杂算法、优化代码等,极大提升了开发效率与代码质量。开发者可利用通义灵码进行代码解释、生成注释及单元测试,简化开发流程。在需求分析、设计、编码、测试到部署的全流程中,AI助手表现优异,尤其在编码和测试阶段显著提高工作效率。尽管目前AI助手在需求分析方面尚需改进,但其未来发展潜力巨大,有望逐步替代部分人力工作。体验地址:[阿里云智能编码](https://www.aliyun.com/solution/tech-solution/intelligent-coding)。
|
数据库 数据安全/隐私保护 UED
如何开发CRM系统中的订单管理板块(附架构图+流程图+代码参考)
CRM系统中的订单管理板块是企业数字化转型的关键工具,能够高效管理客户订单、提升销售效率和客户满意度。本文详解订单管理的功能设计、业务流程、开发技巧及代码实现,助力企业优化订单流程、提高业绩。
ArcMAP对遥感影像进行波段提取的3种方法
ArcMAP对遥感影像进行波段提取的3种方法
5236 0
|
存储 缓存 数据安全/隐私保护
偶然间发现C盘爆红,几个办法超详细教你轻松解决,电脑小白也不用为此而烦恼!
今天无意间打开“我的电脑”发现作为驱动盘的**C盘爆红**!!!导致自己的血压飙升,在网上查了很多的处理办法之后,苦苦花费数小时之后自己顺利解决,以下方法教你轻松解决“C盘爆红”。**以下方法本人亲测,放心使用****清理和扩容C盘的方法还有很多,我觉得值得注意的是在平时安装软件的时候,要注意对安装路径的选择更改,而不是一股脑的点击“下一步”,这样你的C盘会减小很大的压力! 大家还有什么清理和扩容C盘的好办法呢?欢迎在评论区分享出来 ~ :)**
1292 0
偶然间发现C盘爆红,几个办法超详细教你轻松解决,电脑小白也不用为此而烦恼!
|
Java 数据库连接 Spring
一文讲明 Spring 的使用 【全网超详细教程】
这篇文章是一份全面的Spring框架使用教程,涵盖了从基础的项目搭建、IOC和AOP概念的介绍,到Spring的依赖注入、动态代理、事务处理等高级主题,并通过代码示例和配置文件展示了如何在实际项目中应用Spring框架的各种功能。
一文讲明 Spring 的使用 【全网超详细教程】
|
供应链 数据库 UED
图解:订单系统的设计
本文主要讲述了在传统电商企业中,订单系统应承载的角色,就订单系统所包含的主要功能模块梳理了设计思路,并对订单系统未来的发展做了一些思考。
2262 1
图解:订单系统的设计
|
消息中间件 监控 Kafka
保证消息顺序性:Kafka 的策略与挑战
保证消息顺序性:Kafka 的策略与挑战

热门文章

最新文章