运用领域模型

zhijiancanxue zhijiancanxue     2023-04-11     436

关键词:

运用领域模型说明

模型是什么

模型被用来描绘人们所关注的现实或想法的某个方面。模型是一种简化。是对现实的解释——把与解决问题密切相关的方面抽象出来,而忽略无关的细节。

程序和业务

每个软件程序是为了执行用户的某项活动,或是满足用户的某种需求。这些用户应用软件的问题区域就是软件的领域。一些领域涉及物质世界,例如,机票预订程序的领域中包括飞机乘客在内。有些领域则是无形的,例如,会计程序的金融领域。软件领域一般与计算机关系不大,当然也有例外,例如,源代码控制系统的领域就是软件开发本身。

(技术或者软件是用来实现业务所要的功能或者解决业务计算遇到的瓶颈)

为了创建真正能为用户活动所用的软件,开发团队必须运用一整套与这些活动有关的知识体系。所需知识的广度可能令人望而生畏,庞大而复杂的信息也可能超乎想象。模型正是解决此类信息超载问题的工具。模型这种知识形式对知识进行了选择性的简化和有意的结构化。适当的模型可以使人理解信息的意义,并专注于问题。

(个人理解:如果遇到要对一个庞大复杂的业务做系统开发,所需要的知识体系非常大,这个时候可以使用一些抽象的模型或者方法,更好的理清业务逻辑,形成软件系统,有些人为什么业务设计能力那么厉害,就是因为抽象思维能力很强)

领域模型并非某种特殊的图,而是这种图所要传达的思想。它绝不单单是领域专家头脑中的知识,而是对这类知识严格的组织且有选择的抽象。图可以表示和传达一种模型,同样,精心书写的代码或文字也能达到同样的目的。领域建模并不是要尽可能建立一个符合“现实”的模型。即使是对具体、真实世界中的事物进行建模,所得到的模型也不过是对事物的一种模拟。它也不单单是为了实现某种目的而构造出来的软件机制。建模更像是制作电影——出于某种目的而概括地反映现实。即使是一部纪录片也不会原封不动地展现真实生活。就如同电影制片人讲述故事或阐明观点时,他们会选择素材,并以一种特殊方式将它们呈现给观众,领域建模人员也会依据模型的作用来选择具体的模型。

模型在领域驱动设计中的作用

在领域驱动的设计中,3个基本用途决定了模型的选择。

(1) 模型和设计的核心互相影响。正是模型与实现之间的紧密联系才使模型变得有用,并确保我们在模型中所进行的分析能够转化为最终产品(即一个可运行的程序)。模型与实现之间的这种紧密结合在维护和后续开发期间也会很有用,因为我们可以基于对模型的理解来解释代码。

(2) 模型是团队所有成员使用的通用语言的中枢。由于模型与实现之间的关联,开发人员可以使用该语言来讨论程序。他们可以在无需翻译的情况下与领域专家进行沟通。而且,由于该语言是基于模型的,因此我们可借助自然语言对模型本身进行精化。

(3) 模型是浓缩的知识。模型是团队一致认同的领域知识的组织方式和重要元素的区分方式。透过我们如何选择术语、分解概念以及将概念联系起来,模型记录了我们看待领域的方式。当开发人员和领域专家在将信息组织为模型时,这一共同的语言(模型)能够促使他们高效地协作。模型与实现之间的紧密结合使来自软件早期版本的经验可以作为反馈应用到建模过程中。

软件的核心(技术为业务服务)

软件的核心是其为用户解决领域相关的问题的能力。所有其他特性,不管有多么重要,都要服务于这个基本目的。当领域很复杂时,这是一项艰巨的任务,要求高水平技术人员的共同努力。开发人员必须钻研领域以获取业务知识。他们必须磨砺其建模技巧,并精通领域设计。

(个人理解:然而,很多技术开发人员都不会主动去了解业务设计,只关注自己的技术是否得到提高,我曾经的组员很多都是这样的思维,最后导致做东西需要别人来设计框架,讲解逻辑,自己使用技术实现,非常片面的认为写代码是技术的全部,认为掌握很多复杂的业务新知识,而这些新知识对提高计算机的能力并无裨益。我认为,技术人员使用模型来抽象业务逻辑,是非常有必要的。)

开发人员可以采用一些系统性的思考方法来透彻地理解领域并开发出有效的模型。还有一些设计技巧可以使毫无头绪的软件应用变得井井有条。掌握这些技能可以令开发人员的价值倍增,即使是在一个最初不熟悉的领域中也是如此。

领域模型

...了创建真正能为用户活动所用的软件,开发团队必须运用一整套与这些活动有关的知识体系。所需的知识广度可能令人望而生畏,庞大而复杂的信息也可能超乎想象。模型正是解决此类信息超载问题的工具。模型这种知... 查看详情

videodiffusionmodels:基于扩散模型的视频生成

...els专栏文章汇总:入门与实战前言:扩散模型已经被广泛运用到图像生成、image-to-image转换、时间序列生成、3D点云生成、文本生成、音频生成等领域,谷歌研究院最新的研究成果成功将diffusionmodels运用到视频生成领域。目录模... 查看详情

如何运用领域驱动设计-聚合(代码片段)

原文:如何运用领域驱动设计-聚合目录概述何为聚合演化案例发现实体关系开始划分边界吧选取一个聚合根通过聚合根保护你的内部对象聚合的一些特性通过ID引用聚合真的是不变的吗小的聚合一致性总结概述在前几篇的博文中... 查看详情

马尔可夫链模型实际运用(以金融领域为例)(超详细代码)(代码片段)

运用马尔可夫链模型进行量化金融分析文章目录运用马尔可夫链模型进行量化金融分析1介绍马尔可夫模型2数据格式与处理3预测结果4结果检验5代码(含标注)1介绍马尔可夫模型2数据格式与处理数据来源于锐思数据库平安银行2021... 查看详情

了解什么是迁移学习理论?以及如何运用实践(代码片段)

一、迁移学习理论预训练模型(Pretrainedmodel):一般情况下预训练模型都是大型模型,具备复杂的网络结构,众多的参数量,以及在足够大的数据集下进行训练而产生的模型.在NLP领域,预训练模型往往是语言模型࿰... 查看详情

《领域驱动设计精粹》读书笔记

...略上的重点,如何按重要性分配工作,以及如何进行最佳运用限界上下文(BoundedContext)的战略设计模式来分离领域模型;在明确的限界上下文中发展一套领域模型的通用语言;通过子域处理遗留系统中无边界的复杂性,以及如... 查看详情

运用四色建模法进行领域分析

领域建模有很多种方法,对于同样的问题域使用不同的建模手段得到的模型可能也不尽相同。于是我经常听到这样一个问题:怎么才能保证建模的正确性?这听起来是个合理的质疑,但实际上却不是那么有道理。首先我们需要明... 查看详情

如何运用领域驱动设计-实体

原文:如何运用领域驱动设计-实体目录概述何为实体似曾相识你确定它真的需要ID吗运用实体结合值对象为实体赋予它的行为尝试转移一部分行为给值对象愿景是美好的现实是残酷的总结概述本文将介绍领域驱动设计(DDD)战术... 查看详情

如何运用领域驱动设计-领域服务(代码片段)

原文:如何运用领域驱动设计-领域服务目录概述什么是领域服务从实际场景下手更贴近现实领域服务VS应用服务扩展上面的需求最常见的认证授权是领域服务吗使用领域服务不要过多的使用领域服务不要将过多的行为都给了领域... 查看详情

领域模型贫血模型充血模型概念总结

 1.      领域模型  领域模型是对领域内的概念类或现实世界中对象的可视化表示。又称概念模型、领域对象模型、分析对象模型。它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间... 查看详情

如何运用领域驱动设计-值对象

原文:如何运用领域驱动设计-值对象目录概述何为值对象值对象是基于上下文的当前上下文的值对象可能是另一个上下文的实体怎么运用值对象尽量避免使用基元类型值对象是内聚并且可以具有行为来看一个例子值对象的持久化... 查看详情

贫血领域模型与领域模型

】贫血领域模型与领域模型【英文标题】:anemicdomainmodelversusdomainmodel【发布时间】:2010-12-2019:26:17【问题描述】:在阅读了这个反模式以及关于它的许多担忧之后再次感到困惑。如果我有一个域模型并捕获必须保存在数据传输... 查看详情

ddd领域模型贫血模型充血模型概念总结(代码片段)

DDD领域模型领域模型是对领域内的概念类或现实世界中对象的可视化表示。又称概念模型、领域对象模型、分析对象模型。它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系。业务... 查看详情

分层领域模型规约与领域模型命名规约

分层领域模型规约与领域模型命名规约一、分层领域模型规约DO(DataObject):与数据库表结构一一对应,通过DAO层向上传输数据源对象。DTO(DataTransferObject):数据传输对象,Service或Manager向外传输的对象。BO(BusinessObject):业... 查看详情

[第五章]领域模型

领域建模是从需求分析到面向对象设计的一个桥梁领域模型是指对需求所涉及的领域的建模,换言之就是业务模型领域模型的作用:  发掘重要的业务领域模型;  建立业务领域概念之间的联系;领域模型的建立,... 查看详情

我对领域驱动设计(ddd)的学习成果

领域驱动设计之领域模型2004年EricEvans发表Domain-DrivenDesign–TacklingComplexityintheHeartofSoftware(领域驱动设计),简称EvansDDD。领域驱动设计分为两个阶段:1.以一种领域专家、设计人员、开发人员都能理解的“通用语言”作为相互交... 查看详情

领域模型(domainmodel)&贫血模型(anaemicdomainmodel)&充血模型(richdomainmodel)

领域模型是领域内的概念类或现实世界中对象的可视化表示,又称为概念模型或分析对象模型,它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系。贫血模型是指使用的领域对象中只有setter... 查看详情

领域模型(转)

...个?如何将需求阶段和分析阶段联系起来呢?答案就是“领域模型”    什么是“领域模型”呢?只要抓住“领域(Domain)”二字就可以理解,也就是说领域模型是帮助我们理解相关领域知识的模型。进一步 查看详情