案例研究:物流中的超通用框架

83
一家非常大的物流公司聘请了一家咨询公司来建立一个网上商店来购买该物流公司的产品。该系统的核心是一个使用通用订单框架构建的专有订单引擎。我们检查了系统并发现以下行为: 一切都是命令。如果您想更改地址、购.

案例研究:将结帐系统拆分为太多服务

86
该项目应该用现代的、可扩展的、松散耦合的实现来取代现有的、单一的、难以扩展的结账系统。 为了实现这一目标,选择微服务架构作为软件系统的目标架构。微服务应该由一些核心服务来编排。此外,还有一个 Java.

案例研究:12种保险产品的通用产品模型

90
在开发基于 COBOL 和分层数据库的旧保险系统的替代品时,决定使用通用产品建模系统。系统的背景是什么?背景是一家保险公司,长期开发并运营了一个采用COBOL的32*70终端前端的保险计算、销售和维护.

使用BPMN引擎实现商店结账流程的案例总结

43
随着时间的推移,一家国际商业公司现有的商店结账系统变得越来越复杂,该公司管理层决定启动一个项目来实施基于现代技术的新系统。系统的背景是什么? 主要是 Java 和 TypeScript 微服务 内部客.

图书馆管理系统之软件开发项目

85 28K
图书馆管理系统是迄今为止最常见的软件开发项目之一。在本文中,我们将从头开始为最后一年的学生制作图书馆管理系统软件开发项目。我们将介绍您在开发该项目时必须执行的所有步骤。第 1 步 - 团队组建阶段:创.

DDD中如何破解上下文划分难点?

318 2 9K
领域驱动设计(DDD)通过将精心设计的领域模型整合到软件系统中,为解决复杂业务问题提供了有价值的框架。其中,有界上下文(BC:限界上下文、有边界的上下文)的概念至关重要,它们是针对特定用户或业务挑战而.

三体问题的复杂性

104
亨利·庞加莱(Henri Poincaré)是一位法国数学家、理论物理学家和科学哲学家,生活于1854年至1912年。他作出了重大贡献的各个领域,包括数学,天体力学,拓扑学和科学哲学。在天体力学方面,.

隔行隔的是关键字

109
(banq注)隔行如隔山 其实隔的是关键字,只要你知道那个行当的关键字,你能搜出一大把,chatgpt可以帮你找到这种关键字 .

Java中的规则引擎

388 1 10K
Java 中的规则引擎为我们提供了一个以灵活且定义的方式管理和执行业务规则的框架。这些引擎使开发人员能够在不更改核心应用程序的情况下更轻松地修改和理解规则,从而将业务逻辑与应用程序代码分开。规则引擎旨.

贪心贪婪算法示例

66 3K
贪心贪婪算法(greedy algorithm)是计算机科学和优化的基本方法。它是一种简单直观的策略,用于解决各种问题并做出一系列选择以得出最佳解决方案。本质上,贪心算法在每一步都会做出局部最优选择,.

PageRank算法简介

88 14K
PageRank 是由 Google 创始人拉里·佩奇和谢尔盖·布林开发的一种算法,用于衡量互联网上网页的相关性或重要性。它于 20 世纪 90 年代末推出,通过提供一种根据网页的整体影响力和受欢迎程.

算法和流程图之间的区别

127 3K
在计算机科学和编程领域,解决问题是每项挑战的核心。无论是编写简单的程序还是开发复杂的软件,拥有系统的方法都非常重要。这就是算法和流程图发挥作用的地方。算法提供分步指令,而流程图直观地表示这些指令的逻辑.

领域建模中容易出错的部分

149 3K
领域建模是考虑实体和它们之间的关系?啊,不太好。 虽然这通常是典型的建议的例子,它实际上是落后的。 不要构建数据库模式/结构。如何对复杂的领域进行建模?在领域驱动设计中,您在领域建模时可能会考虑实体、.

表达业务规则时能明确无误、毫无疑问吗?

137 2K
消除歧义是政策解释者和专业分析师的一项基本技能。自然语言可以完全明确吗?不,当然不。在某些情况下,它是否可以毫无疑问地变得明确?绝对如此——这样做对于群体和社区的规则至关重要。(忽视上下文的语言其实都.

Apache Causeway:实现领域驱动设计的原型工具

437 4K
Apache Causeway™ 通过自动为 Spring Boot™ 应用程序生成 UI 来实现域驱动的应用程序开发。这意味着: 生产力- 您的应用程序主要是业务逻辑,消除了昂贵的 UI 代码。 发.

解码数据库架构:揭示表结构及其意义

91 4K
在复杂的数据管理领域,数据库表的结构是组织和存储信息的支柱。这种探索深入研究了表结构的本质,揭示了它们的复杂性,并了解它们在高效数据管理中的关键作用。表结构在数据库管理领域,信息的基本构建块位于复杂的.

领域驱动设计兑现承诺了吗?

150 2K
“解决软件核心的复杂性” ——DDD 能成功兑现这个承诺吗?为了诚实地回答这个问题:DDD 有助于降低复杂性吗?,我根据四个因素开发了一个个人的复杂性心理模型:F1-F4。在我看来,复杂性可以在以下情.

Go中的DDD存储库设计模式

97 3K
根据 DDD 原则实现存储库和聚合可以封装领域逻辑并增强应用程序的可维护性。确定聚合边界需要深入考虑域和表设计,但这可以说是软件开发中更有趣的方面之一。让我们考虑一下电子商务网站的购物车界面。假设有购.

代码内聚性

368 27K
在软件开发的动态环境中,代码内聚性的概念是创建高效且可维护的应用程序的基石。尤其是在Java这种以其健壮性和可扩展性而闻名的语言中,理解和应用内聚性原则可以显着提高软件项目的质量。本文深入探讨了 Ja.

使用 Spring Modulith 改进模块化整体应用

378 1 12K
在第一篇文章:使用Spring Boot和领域驱动设计实现模块化整体中,我们了解了如何使用 Spring Boot 和 DDD 构建和实现模块化整体应用程序。本博客中,我们将尝试解决这些限制以创建更易.

ReBAC:兼容DDD的下一代授权模型

195 3K
ReBAC是一种基于关系的访问控制模型,与传统的RBAC和ABAC模型相比具有更高的表现力、细粒度和灵活性。它能够更准确地定义和管理用户的权限和角色,并且可以根据不同的业务领域进行定制。在Agicap.

JavaScript中(function() { } )() 是什么?

119 1 3K
JavaScript 的(function() { } )()结构初看起来可能令人困惑,但对于编写即时执行且自成一体的代码块来说,它却是一个非常有用的工具。虽然 (function() { } )().

使用 Structurizr 实现企业范围建模的项目

141 2K
这里有一个使用Structurizr进行企业建模的方法的例子,其中自顶向下的系统景观图是自动生成的这个存储库展示了一种使用 Structurizr 工具进行企业范围建模的方法;结合使用 Structu.

幽默:律师是自然语言的程序员

99
少数律师是非常好的自然语言程序员,使用自然语言编程写文章的程序员。律师需要写一份100多页的复杂的商业合同,必须大体保证逻辑上一致性,有几十个定义的术语,以及所有相互关联的章节和子章节。他们都以写精确.

从关系数据转向事件指南

133
在事件建模中,以事件的形式保存业务数据。事件是已经发生的事实,我们在每次操作后都会将其存储起来。事件流记录了我们的记录所发生的一切。很遗憾,你不能更改事件,因为它们是不可变的。但你可以在最后添加一个新.

如何从CRUD中捕捉意图事件?

235 1
CRUD(创建读取更新删除)虽然看起来很简单,但在大型系统中,它常常会导致代码混乱、复杂。创建、读取、更新、删除 (CRUD) 非常常见。一般来说,它只是简单的表单,用于将数据添加到数据库并提供记录列.

认知中概念思维与创建抽象两个能力比较

139 1
软件开发有两个重要点:编写代码与逻辑方法来自于两种认知能力:概念思维(战略思维)创建抽象(量化思维)事实上,很多人可以做到第一个而不是第二个,这也解释了设计模式的流行。概念思维和创建抽象都是认知过程,.

维特根斯坦如何定义图画picture?

102
在读《逻辑哲学论》时,很难理解到底什么是图画picture。感觉他给出的定义相互矛盾: 2.1 我们为自己描绘事实。 2.141 一幅图画就是一个事实。 2.12 图画是现实的模型 如果一幅图画是现实.

8年双时态事件溯源经验

124 4K
双时态事件源将数据存储为一系列事件,这些事件告诉数据发生了什么,并且数据有两个关联的时间点,一个是数据进入系统的时间,另一个是数据生效的时间。这篇文章讲述了我们 8 年多的双时态事件溯源经验,以及展示.

离开Java/C#并不喜欢在Go中看到DDD

166 2K
我注意到,在 Gophers 的小圈子里,他们离开 Java/C# 的动机是渴望一种更简单、更直接的编程方法,以避免与 DDD 和其他强调松散耦合的范式相关的复杂性和不可预测性。他们表示,之所以转用 .