前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >系统和系统实例-软件方法(下)第9章分析类图案例篇Part07

系统和系统实例-软件方法(下)第9章分析类图案例篇Part07

作者头像
用户6288414
发布2022-10-31 16:25:18
1890
发布2022-10-31 16:25:18
举报
文章被收录于专栏:软件方法

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

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

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

9.2.2.2 系统

广义上,从整个宇宙,到上一小节的组织,到原子,都可以叫做系统。

本书的系统特指封装了一定的逻辑计算能力的智能系统。非人的生命体(从大猩猩到病毒)和非智能机械(从老式的汽车到算盘)都不算是智能系统。

系统分为人脑系统和非人信息系统(以下简称“信息系统”),简单定义如下:

人脑系统:运行在人脑中的智能系统。

我们把人看作容器,人担任的角色或职位看作安装在人脑中的一个系统。例如,张三担任项目经理和产品经理两个职位,可以看作张三大脑中安装了“项目经理”和“产品经理”两个智能系统。

信息系统:运行在计算机中的智能系统。

按道理,和上面的“人脑系统”对应,应该叫“电脑系统”,但考虑再三,还是采用“信息系统”这个目前最流行的叫法。

同理,我们把计算机看作容器,上面可以安装各种信息系统。此处的计算机是广义的,包括冯诺依曼体系结构的超级计算机到嵌入式计算机,也包括非冯诺依曼体系结构的计算机,也包括将来可能出现的光子、量子计算机。

《软件方法(上)》提到,我们把“时间”想象成上帝制造的、运行在宇宙中的一个信息系统。它不停地向其他人脑系统或信息系统发送时间信号。从现代物理学的角度,这个想象肯定是有问题的,但对于本书的内容来说,这个想象够用了。

系统的分类可以用图9-46的泛化关系描述:

图9-46 泛化关系描述系统分类

我们还需要表达具体的人脑系统和信息系统。

以案例一“答题抽奖”为例,在9.1.3业务序列图中,给出了两张业务序列图。在业务序列图顶部,我们可以看到这样一些系统的实例:

图9-47 案例一“答题抽奖”业务序列图的顶部截图

如果沿着图9-46继续使用泛化关系,可能会得到图9-48:

图9-48 用泛化关系表达具体系统

不过,这样做是不合适的,最下层这些具体的系统并不属于《软件方法》领域中的概念,而是“答题抽奖”领域的概念,不宜作为“发糕”的分析类出现,因此,图9-49红色分隔线下面的类不宜保留,这些信息可以作为对象的属性值出现。

图9-49 红色分隔线下面的类不属于《软件方法》领域

可以如图9-50,具体系统的信息记录在“名称”属性中,如果不够可以再加个“备注”属性。

图9-50 具体系统的信息记录在“名称”属性中

也许在系统名称之前还要有分类,甚至是多层分类。例如,手机应用商店就对其中的信息系统(app)做了分类,如图9-51。

图9-51 信息系统分类示例,摘自小米应用商店

人脑系统也可以分类,例如,先分管理岗、技术岗、工勤岗,然后再细分。

如果要表达更详细的分类,可以和上一小节的“组织”一样,通过类类型的自反关联表达,如图9-52。

图9-52 自反关联表示系统类型

“发糕”确实需要区分人脑系统和信息系统,因为涉众利益、愿景等概念只和人脑系统有关。如果不是这样,“系统类型”或泛化结构都可以不需要。

但“发糕”当前并不打算关心多层次的系统类型,因此采用9-50左侧或9-52的类图均可。

考虑到“发糕”不关心人脑系统和信息系统之间太复杂的行为差异,优先使用关联,即9-52的类图,“系统类型”上的自反关联也暂时保留,后面确认不需要时再删除。

9.2.2.3 系统实例

系统可能会存在多个实例,“发糕”有时需要维护系统实例的信息。例如,图9-47所列的业务序列图顶部就是一个个系统实例。

“发糕”可能还要维护同一个系统的多个实例。例如,在某个软件开发组织的流程中,有多名程序员参与,程序员用的编码环境是Visual Studio Code,如果画出序列图,就会出现多个“名称”为“程序员”的“系统”(人脑系统)的实例,多个“名称”为“Visual Studio Code”的“系统”(信息系统)的实例。

添加“系统实例”类,类图如图9-53:

图9-53 添加“系统实例”

很多情况下,“系统实例”对象的属性值不需要赋值,有“系统”对象的属性值已经足够。

提供对象图如图9-54以帮助理解:

图9-54 对象图

从图9-54还可以看出,组织的职位相当于“系统类型”为“人脑系统”的“系统”,职位背后的人实际上是被忽略的,如果需要记录具体人的信息,可以在“系统实例”的“名称”中记录,如图9-54左上角的“张三”。

“程序员张三”实际上说的是某个“程序员”职位由某个人担任,这个人的姓名叫“张三”,但我们在这里把人的姓名(其他内容也可以)写在“系统实例”的“名称”属性中。

图9-54还有一个“系统实例”的“名称”也叫“张三”,它链接到的“系统”的名称是“产品经理”,这个“产品经理张三”和上一个“程序员张三”是不是同一个人,“发糕”就不关心了。

9.2.2.4 组织-组织、组织-系统、系统-系统

(待续……)

[改为19:30上课*5天]8月31-9月4日晚剔除伪创新的领域驱动设计-网络公开课

[改为19:30上课*5天]9月12-16晚网课:软件需求设计方法学全程实例剖析

[新增EA027智慧公寓系统]25套UML+EA和StarUML的建模示范视频-全程字幕(2022.7.25更新)

《软件方法》书中自测题-题目全文+分卷自测(1-8章)16套111题

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

CTO也糊涂的常用术语:功能模块、业务架构、用户需求……[20210217更新]

如何选择UMLChina服务

作者微信:umlchina2

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-08-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 UMLChina 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档