DDD案例(2):从领域分析到代码实现(1)

简介: DDD案例(2):从领域分析到代码实现(1)

20.3.3EAS的架构映射

通过对EAS展开全局分析,我们已经获得了EAS系统的价值需求和业务需求。接下来,我将延续全局分析阶段输出的这些成果,开展架构映射,获得遵循领域驱动架构风格的架构映射战略设计方案。


1.映射系统上下文

全局分析阶段确定了EAS的利益相关者。通过对目标系统的分析,可以得出参与系统上下文的用户包括:集团决策者、市场部、人力资源部、项目管理部、子公司、服务中心、财务、员工。


整个目标系统就是EAS系统。在确定系统范围时,系统的当前状态告诉我们:集团已有OA系统提供部门之间的流程协作与消息通知,它是EAS系统的伴生系统。系统的当前状态虽然还告知软件学院和招聘网站的简历会作为集团的人才储备库,却并未确认EAS系统是否需要和软件学院与招聘网站集成。通过招聘流程服务蓝图可以确知,这些简历信息需要招聘专员手工录入EAS系统,因此,EAS系统的伴生系统并不包含软件学院和招聘网站。客户合作流程服务蓝图中的内部支持者包含了薪资管理系统,调用它提供的服务接口可以获得员工薪资,以便财务进行财务核算,这说明薪资管理系统也是EAS系统的伴生系统。EAS系统的系统上下文如图20-27所示。


image.png


确定了系统上下文,就确定了EAS系统的解空间,同时也确定了位于解空间之外的伴生系统。


2.映射限界上下文

全局分析阶段,EAS系统的问题空间被分解为业务场景下的各个业务服务。遵循业务维度的V型映射过程,需要针对这些业务服务进行归类和归纳,获得各个业务主体,再根据亲密度和限界上下文的特征对业务主体的边界进行调整,并运用验证原则验证业务边界的合理性。之后,根据管理维度的工作边界、技术维度的应用边界逐步对限界上下文做进一步的调整。


1)归类与归纳

V型映射过程从识别业务服务的语义相关性功能相关性开始。

语义相关性主要针对业务服务名的名词。例如,在客户活动业务流程中,诸如“创建合同”“添加附加合同”“指定合同承担者”等业务服务都包含“合同”一词,可归类到同一个业务主体,如图20-28所示。


功能相关性则从业务服务的业务目标进行归类,如图20-29中的业务服务都与市场管理的业务目标有关,可归类到同一个业务主体。


通过语义相关性和功能相关性对业务服务进行归类后,可以进一步针对它们表达的概念建立抽象,寻找共同特征完成对类别的归纳。例如,图20-29中的业务服务涵盖了市场需求、需求订单、客户需求等领域概念,它们都可以提炼为一个更高的抽象层次—市场。这也是图中业务主体名称的由来。从中也可发现,虽然归类与归纳属于V型映射过程的两个环节,但这两个环节并没有清晰的界限,在进行归类时,可以同时进行归纳。


image.png


无论是寻找领域概念的共同特征,还是识别领域行为的业务目标,都需要一种抽象能力。在进行抽象时,可能出现向左走还是向右走的困惑,因为抽象层次的不同,抽象的方向或依据亦有所不同。这时就需要做出设计上的决策


例如对识别出来的员工储备人才领域概念,可以抽象出人才的共同特征,得到图20-30所示的人才业务主体。从共同的业务目标考虑,储备人才又是服务于招聘和面试的,似乎归入招聘业务主体才是合理的选择,如图20-31所示。


image.png


有第三种选择,就是将储备人才单独抽离出来,形成自己的储备人才业务主体,如图20-32所示。


该如何抉择呢?我认为须得思考识别业务主体的目的。业务主体是架构映射过程的中间产物,并非最终的设计目标。业务主体是对业务服务的分类,为限界上下文的识别提供了参考。因此,选择人才主体,还是招聘主体,或者单独的储备人才主体,都需要从限界上下文与领域建模的角度去思考。如果暂时分辨不清楚,可以先做出一个初步选择,待所有的业务主体都归纳出来之后,在梳理业务主体的边界时再决定。


别业务主体不是求平衡,更不是为了让设计的模型更加好看。业务主体是根据业务相关性进行归类和归纳的,必然会出现各个业务主体包含的业务服务数量不均等的情形。例如,与项目管理有关的业务主体,包含的业务服务数量非常不均匀。项目业务主体的业务服务数量最多,如图20-33所示。


image.png

相关文章
|
3月前
|
Kubernetes Go 调度
Kubeflow-Trainer-架构学习指南
本指南系统解析Kubeflow Trainer架构,涵盖核心设计、目录结构与代码逻辑,结合学习路径与实战建议,助你掌握这一Kubernetes原生机器学习训练平台的原理与应用。
580 139
|
12月前
|
传感器 人工智能 大数据
高科技生命体征探测器、情绪感受器以及传感器背后的大数据平台在健康监测、生命体征检测领域的设想与系统构建
本系统由健康传感器、大数据云平台和脑机接口设备组成。传感器内置生命体征感应器、全球无线定位、人脸识别摄像头等,搜集超出现有科学认知的生命体征信息。云平台整合大数据、云计算与AI,处理并传输数据至接收者大脑芯片,实现实时健康监测。脑机接口设备通过先进通讯技术,实现对健康信息的实时感知与反馈,确保身份验证与数据安全。
|
数据采集 机器学习/深度学习 人工智能
Datawhale AI夏令营第四期魔搭-AIGC文生图方向Task1笔记
这段内容介绍了一个使用Stable Diffusion与LoRA技术创建定制化二次元图像生成模型的全流程。首先,通过安装必要的软件包如Data-Juicer和DiffSynth-Studio准备开发环境。接着,下载并处理二次元图像数据集,利用Data-Juicer进行数据清洗和筛选,确保图像质量和尺寸的一致性。随后,训练一个针对二次元风格优化的LoRA模型,并调整参数以控制模型复杂度。完成训练后,加载模型并通过精心设计的提示词(prompt)生成一系列高质量的二次元图像,展示模型对细节和艺术风格的理解与再现能力。整个过程展示了从数据准备到模型训练及结果生成的完整步骤,为定制化图像提供了方向。
|
Go 索引
go语言for遍历数组或切片
go语言for遍历数组或切片
373 62
|
机器学习/深度学习 人工智能 运维
智能化运维:从被动响应到主动预防####
【10月更文挑战第29天】 本文探讨智能化运维(AIOps)如何通过融合大数据、机器学习与自动化技术,推动IT运维管理从传统的被动响应模式向主动预防机制转变。不同于传统摘要概述全文内容的方式,本文摘要旨在直接揭示智能化运维的核心价值——利用智能算法预测潜在故障,减少系统停机时间,提升运维效率与服务质量,同时强调其在现代企业IT架构中的关键作用。 ####
411 9
|
监控 关系型数据库 数据库
怎样分析慢查询日志?
【10月更文挑战第29天】怎样分析慢查询日志?
389 2
|
安全 编译器 异构计算
现代CPU的节能技术
【10月更文挑战第2天】现代CPU的节能技术
452 3
|
移动开发 JavaScript 数据可视化
|
算法 关系型数据库 MySQL
浅析MySQL Join Reorder算法
本文浅析了MySQL Join Reorder算法的流程,cost计算,剪枝算法等,希望通过本文能帮助大家了解MySQL优化器生成执行计划的具体流程。
|
负载均衡 持续交付 Docker
Docker的应用场景有哪些?
Docker的应用场景有哪些?
594 6