当前位置: 首页 > news >正文

业务工人业务实体元模型-软件方法(下)第9章分析类图案例篇Part09

DDD领域驱动设计批评文集>>

《软件方法》强化自测题集>>

《软件方法》各章合集>>

人群

前面为了不干扰主要的知识点,一直在回避一个问题:怎么看待在组织外面和组织打交道的人?例如,以“中原城镇银行”为目标组织,它服务的储户算什么?

法律上提供了“法人”的概念,把机构拉平到和自然人成为对等的民事主体。不过,在《软件方法》领域的领域模型中,我们把自然人看作人脑系统的容器,而且这个容器在“发糕”的分析模型中暂时不体现。

我们决定采取的处理方式是,把“人群”当作一种“组织类型”,具体人群则相当于具体的组织。以“中原城镇银行”为例,假设其目标储户人群为“中原富裕农民”(注意,要定位),可能的对象图如图9-65:

图9-65 人群作为组织类型的对象图示例

图9-65中,名称为“人群”的组织类型,直接上级是名称为“非正式组织”的组织类型,而名称为“银行”的组织类型和名称为“正式组织”的组织类型之间,可以有中间组织类型。

图9-65的信息如果转成业务用例图,则为图9-66:

图9-66 图9-65的信息对应的业务用例图

如果读者看到这里,冒出类似于“难道只有中原富裕农民可以到中原城镇银行存款吗?中原不富裕农民不行吗?广东的白领去存钱,难道要把人家拒之门外吗?”的想法,那就需要再复习本书的第2章到第5章。

如果需要美观,可以在“组织类型”、“组织”、“业务用例”等类添加一个“图示”属性,其属性值以图形方式反映“名称”属性值所表达的含义,然后在图上用图标代替名称。这个留待以后再考虑。

9.2.2.5 业务工人和业务实体

组织的业务用例所承诺的价值,需要通过一些系统的协作来实现,如图9-67:

图9-67 业务用例的实现

这些系统协作的过程可以称为业务用例的路径或者业务用例的流程,以下我们统一使用最常见的“业务流程”一词来表达。

一个业务用例会有多个业务流程,有主流程,有分支流程,甚至有分支的分支流程。如果用序列图描述,可以把流程看成若干交互片段,每个交互片段由若干消息组成,消息在系统实例之间传递,类图如图9-68:

图9-68 和业务流程相关的类图

我们可以通过图9-68来定义《软件方法》上册中业务工人和业务实体的概念。

业务工人:参与组织的业务流程的人脑系统;

业务实体:参与组织的业务流程的信息系统。

(图9-68也有助于初学者厘清“系统是属于哪个组织”的问题。信息系统“支付宝”由蚂蚁金服公司开发、运营和维护,人脑系统“保安”由保安公司负责招聘、培训和发薪水,但它们都参与到某家医院的流程中,它们就是这家医院的业务工人和业务实体。)

业务工人、业务实体只是系统扮演的角色,我们不能直接说“A系统是业务实体”,因为A系统可能参与组织甲的业务流程,却和组织乙无关。

如果只是要记住哪些系统在哪个组织中扮演业务工人和业务实体,可以使用如图9-69的类图:

图9-69 业务工人和业务实体是系统扮演的角色

不过,我们有了图9-68,就没有必要另外维护类似于图9-69的信息。在建模时,我们只需要说明某个系统的类型是人脑系统或信息系统。如果描述某个组织的业务流程的序列图中有某个系统的实例参与,该系统自然就会成为该组织的业务工人(如果系统的类型是人脑系统)或业务实体(如果系统的类型是信息系统)。

目前的UML建模工具并没有封装这方面的逻辑,常见做法是建立一个类,指定其构造型为“Business Worker”或“Business Entity”,相当于直接为系统指定了角色。例如,案例一“答题抽奖”中就建立了如图9-70的业务工人和业务实体:

图9-70 案例一“答题抽奖”的业务工人和业务实体

如果只是建模业务流程,这样做基本上没有问题。一个系统如果出现在模型中,如果不参与目标组织的流程,把它画出来干什么呢?

不过,更本质的知识是“系统是人脑系统(信息系统),可以在组织中扮演业务工人(业务实体)”而不是“系统是业务工人(业务实体)”。进入需求工作流,研究范围缩小到目标系统时,系统还可以扮演目标系统的执行者,扮演目标系统的涉众(如果类型是人脑系统)。

在《软件方法》上册第5章中说到如何获得系统用例图时,介绍了业务序列图映射系统用例图的方法,但现在的建模工具如EA等,并没有办法完成这个映射,需要建模人员把在系统用例图上建立系统执行者,然后把业务工人、业务实体的名称“搬运”到系统执行者上,如图9-71:

图9-71 业务工人、业务实体和系统执行者的映射

“发糕”需要封装这些映射的逻辑,为建模人员生成系统用例图,并保证有业务序列图存在时,系统用例图的信息不和业务序列图的信息冲突。

关于业务序列图、系统用例图等内容,后面还会再探讨。

我们把当前类图的进展合并,得到图9-72:

图9-72 合并得到的类图

系统和组织的其他关系

除了扮演业务工人和业务实体,系统和组织的关系可能还有:

*组织是系统当前的目标组织(这个看起来和前面的重复,其实不是)

*组织负责提供建造系统的人力资源

*组织负责提供建造系统的金钱资源

……

(待续……)

相关文章:

  • 乐观型人格分析,性格乐观的优缺点和职业发展分析
  • Dubbo之参数配置(一)
  • Dubbo之服务分组、分组聚合。
  • 15.ThreadLocal的作用
  • Android 11 adb无线调试使用方法
  • 【安卓学习之常见问题】自定义组件-刷新后跳到第一行
  • 为农田解渴为人民群众解忧 国稻种芯-桃源:湖南坚守抗旱一线
  • 【SSM框架】Mybatis详解11(源码自取)之表关联关系
  • docker安装ES(elasticsearch7.4.2)
  • C++—— pass by value and use std::move
  • STM32CubeIDE更新ST LINK驱动失败解决方法
  • PHP cURL 函数
  • 可编程 USB 转串口适配器开发板 SHT3x-DIS 温湿度传感器芯片
  • Git - branch name
  • Vue+element 商品参数业务实现
  • 【mysql】环境安装、服务启动、密码设置
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • download使用浅析
  • gulp 教程
  • Leetcode 27 Remove Element
  • PV统计优化设计
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • 分享一份非常强势的Android面试题
  • 机器学习中为什么要做归一化normalization
  • 基于 Babel 的 npm 包最小化设置
  • 计算机常识 - 收藏集 - 掘金
  • 跨域
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 为视图添加丝滑的水波纹
  • 用Python写一份独特的元宵节祝福
  • # Apache SeaTunnel 究竟是什么?
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #pragma multi_compile #pragma shader_feature
  • $forceUpdate()函数
  • (4)事件处理——(7)简单事件(Simple events)
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)shell调试方法
  • (转载)深入super,看Python如何解决钻石继承难题
  • .net FrameWork简介,数组,枚举
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .NET Remoting学习笔记(三)信道
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • @RunWith注解作用
  • [C#7] 1.Tuples(元组)
  • [C/C++]数据结构----顺序表的实现(增删查改)
  • [EFI]Atermiter X99 Turbo D4 E5-2630v3电脑 Hackintosh 黑苹果efi引导文件
  • [HackMyVM]靶场 Wild
  • [HNOI2015]实验比较