DDD领域驱动设计

     

Jay Little:低代码软件开发是一个谎言

821 2

设计一个该死的解决方案实际上是软件开发过程中最困难的部分。低代码工具通过暗示编写代码是最难的部分来欺骗客户。任何低代码工具都不能使你免于花时间正确设计你的定制软件,也不能使你免于在围绕半成品设计建立解.

什么是垂直软件开发?

886 6K
敏捷方法现在可能很普遍,并且有了它,增量方法的概念应该被开发社区所了解和利用。尽管如此,在与开发人员交谈时,我仍然发现它的理论与它在日常开发实践中的应用之间存在脱节。我认为这种脱节部分是由于我们分层构.

领域驱动设计秘诀:如何区分问题与解决方案?

550 2K
区分问题和解决方案是领域驱动设计的秘诀这听起来很平常吗?不是。问题解决短路是人们在压力下最常犯的错误(灯下黑),我们都处于压力之下要探究原因,让我们依靠Vlad Khononov的学习领域驱动设计:调.

什么是以领域为中心的架构及其误解?

781 4K
讨论分离业务和技术代码的好处,并解决常见的误解。“域”是“业务域”的缩写。在这里,业务在广义上指的是应用程序旨在解决的现实问题(例如,待办事项列表、在线商店或游戏)。可更换性以领域为中心的架构(洋葱、.

如何实现多限界上下文的集成?

784 1 5K
领域驱动设计(DDD)自2003年由Eric Evans提出以来一直存在。由于它可以为我们的软件开发实践和成果带来潜在的好处,我经常与开发人员一起介绍它的概念,并将其作为推荐的方法进行宣传,特别是对于.

Kubernetes 模式:云原生之路 - bibryam

514
微服务是用于创建云原生应用程序的最流行的架构风格之一。他们通过业务功能的模块化和以开发复杂性换取操作复杂性来解决软件复杂性。这就是为什么在微服务方面取得成功的一个关键先决条件是创建可以通过Kubern.

bitloops/ddd-hexagonal-cqrs-es-eda: DDD、六边形架构、CQRS 完整示例

1049 2 2K

使用TypeScript和NestJS的领域驱动设计(DDD)、六边形架构(Hexagonal)、CQRS、事件源(ES)、事件驱动架构(EDA)、行为驱动开发(BDD)的完整工作实例。这个开源项目使.

将业务逻辑集中在一起的简单模式

420 6K

CanExecute/Execute模式背后的想法非常简单。让我们将决策制定(前提条件检查)与执行实际操作分开,但将它们都保留在域对象中。另外,如果不满足前提条件,我们将阻止执行该操作。例子假设一个社.

什么是CUPID快乐编码?

457

CUPID 的五个属性是: Composable可组合:与其他人一起玩得很好 Unix哲学:做好一件事 Predictable可预测的:做你期望的 Idiomatic惯用语:感觉自然 Domain-b.

三种科学建模范式 - stephenwolfram

887 1 3K

科学史上发展起来的三种主要建模范式:第一种:结构范式"结构范式"的关键思想是认为世界上的事物是由某种简单的描述元素--比如说几何物体--构成的,然后用类似于逻辑推理的方式来计算它们会发生什么。这种范式.

实践中的 DDD内聚机制 | by Gara Mohamed

900 1 11K
在我们的领域模型实现中,我们成功地使用了许多 DDD 模式和原则。在这篇文章中,我将展示一个内聚机制的示例,该机制使我们能够解决产品的复杂性。业务领域在整个欧盟行业的天然气运输和天然气交易中,客户可以.

程序员需要掌握三种符号语言

1100 4

“要取得成功,软件开发人员必须能够理解企业领域和这些领域内的感知问题(...) ,并用多种语言表达想法——至少是一种自然语言、一种建模语言和一种编程语言。” ——《对象思维》"To succeed, .

“事务”是任何大规模架构中最糟糕的耦合类型 - techleadjournal

1053 1

Neal Ford 是 ThoughtWorks 的总监兼软件架构师。在这一集中,我们讨论了关于软件架构的所有内容,涵盖了他最近的三本书:“软件架构基础”、“软件架构:硬部分”和“构建演化架构”。我们.

什么是泛在语言UL:Ubiquitous Language? - Jonathan

921

泛在语言(无处不在的语言UL:Ubiquitous Language) 是 DDD 核心的一个强大的想法。但领域语言并不总是能满足我们的领域需求,有时“标准”对于实际工作更具吸引力。泛在语言是一种通用.

事件风暴是一种理解复杂项目的技术 - Lucas

1115 2K
事件风暴是由 Alberto Brandolini 创建的技术,有助于通过应用程序生成的事件更清楚地了解应用程序的领域。它通常以研讨会的形式进行。它是一个涉及领域专家和技术领域的群体动态。事件映射橙色.

UL语言 + BC语境 = 超越 ChatGPT

1152 1
无所不在的语言UL超越了形式语义和任何现有的协约,因为它能够创造一个新的现实,这个现实有时会与一个不存在的词或概念联系在一起,由每个人在同一种语境上下文BC中分享和达成共识,这是ChatGPT无法处理.

业务网格上的上下文映射 - Alberto

956 2 2K
如果您的组织活跃于多个业务渠道或业务线,则映射有界/限界上下文可能会稍微复杂一些。在为 Avanscoperta 编写软件时,我们经常将不同的事物归类为限界上下文,例如“培训”、“咨询”、“计划”与“.

编码是不够的:投资领域知识的重要性

1252 3

作为技术专家,我们花了很多时间学习最新的技术、开发实践和工具。这些对我们所做的工作非常重要,因此我们理所当然地给予它们大量的关注。有很多资源可以用来学习这些信息,无论是博客文章、会议、认证、视频等等。.

领域驱动设计到底是什么? - Jak

1096 1

领域驱动设计(DDD)是一种软件开发方法,强调理解问题领域、业务需求和用户的重要性。DDD不是一种具体的技术或工艺,而是一套原则和最佳实践,通过使代码与业务需求相一致,帮助开发人员构建更好的软件。DD.

洋葱/六边形架构中的过度工程 – Victor

1562 4 11K

Clean Architecture、Onion Architecture和Hexagonal Architecture(又名端口和适配器)已成为当今后端系统设计的规范。有影响力的人在推广这些架构时并.

软件开发中最难的是什么?- Denilson N.

2022 6 11K
软件开发中最难的是什么?命名,但又不是你想的那样。我们的知识代表了现实的一小部分。名称是这种知识的可见部分。Phil Karlton 曾经说过,“计算机科学中只有两件难事:缓存失效和命名事物。”一个是.

《学习领域驱动设计》作者Vladik Khononov访谈

979 9K

“与领域专家的互动在实施软件中起着关键作用。你必须确保你理解你正在解决的问题。如果不先了解问题,就无法提供软件解决方案。”Vladik Khononov 是《学习领域驱动设计》一书的作者。在这一集中,.

学习领域驱动设计 (DDD) - Abrodi

1745 1 12K
我正在阅读Vlad Khononov的《学习领域驱动设计》一书。通过阅读开头和它的评论,我可以看出它可能是关于领域驱动设计的最好的书。令人兴奋的是,作者自己在一开始就解释了他是如何努力学习领域驱动设计.

领域驱动设计中的聚合模式 | by Alexey Zimarev

1534 2

聚合Aggregate模式可能是领域驱动设计 (DDD) 中最重要的战术模式。本质上,它可以这样描述:聚合是可以被视为单个单元的域对象的集群。这意味着聚合中的对象密切相关,并且出于数据更改的目的被视为.

bookstore:DDD领域驱动设计的Go示例

1475 2
这是一个订购/销售书籍的商店。它是一个可定制的用于集成的开源应用程序。创建一个允许请求的 API,最终客户可以订购和购买您的书。书店组件 店铺 客户 产品 类别 命令 订单项目 使用 Golang 语.

换个角度:采用时间建模来捕捉时间的流逝 - Mario

1580 1 3K
建模是软件或系统开发的一个重要部分,然而在试图捕捉系统的行为时,并不常见到时间被使用。当我们这样做时,我们倾向于提取这个概念,并以计划任务的形式将其放在领域之外。在这篇文章中,我将提倡把时间作为建模的.

什么代码是ChatGPT无法编写的? - datachimp

1983 1 2K
ChatGPT改变了游戏规则,而且,更广泛地说,这种语言模型可能是我们这一代最重要的开发工具。(承认这一点需要一些谦虚,因为我们正在为数据科学家开发一个开发工具。)但是,无论是ChatGPT还是一些更.

能显示业务目标的DDD微服务架构图 -Aleix

1588 1 2K
从我职业生涯的一开始,我就一直在分析和绘制架构图。他们中的大多数人关注正在使用的技术以及它们如何相互通信。他们中很少有共同的商业目的。您有多少次需要在查看图表时与某人交谈以询问该服务的作用?那一个呢?.

软件工程师第一性原理思考 - AddyOsmani

1519 1 3K

第一性原理思维有助于解决复杂问题,因为它可以让您将问题分解为核心元素,然后从中系统地构建解决方案。与尝试使用先入为主的概念或根据您过去的经验对问题做出假设相比,这可能是一种更有效的方法。它用于计算机科.

制作Wardley Maps四个步骤 - Paul

1604 2K
几年来我一直在使用和制作Wardley Maps。它们是一个非常有用的工具,让我能够快速理解问题空间,并快速返回到我正在寻找的问题。对于几乎所有使用 Wardley Maps 的人来说,最大的障碍之一.