Testing 如何让非程序员理解域模型

Testing 如何让非程序员理解域模型,testing,domain-driven-design,Testing,Domain Driven Design,当从事一个复杂的项目时,许多人会在很长的一段时间内参与开发。因此,如何让每个人都参与理解域模型的问题就来了 当一个项目第一次按照DDD进行开发时,所有人可能都对它进行了充分的讨论,并且进行了仔细的设计。在这个阶段,每个人都相对容易理解并同意底层域模型 然而,随着项目持续时间的延长,可能会涉及到不同的人群,很少有人能够掌握全部情况。即使代码维护得很好,非程序员,包括领域专家/产品经理/测试人员,也很难掌握代码中嵌入的业务规则 我能想到的唯一出路是为每次更改保持文档/uml/图形的良好维护,并始终反

当从事一个复杂的项目时,许多人会在很长的一段时间内参与开发。因此,如何让每个人都参与理解域模型的问题就来了

当一个项目第一次按照DDD进行开发时,所有人可能都对它进行了充分的讨论,并且进行了仔细的设计。在这个阶段,每个人都相对容易理解并同意底层域模型

然而,随着项目持续时间的延长,可能会涉及到不同的人群,很少有人能够掌握全部情况。即使代码维护得很好,非程序员,包括领域专家/产品经理/测试人员,也很难掌握代码中嵌入的业务规则

我能想到的唯一出路是为每次更改保持文档/uml/图形的良好维护,并始终反映底层模型。然而,我认为这对任何非平凡的项目来说都是一个巨大的挑战。而且很难决定文件中需要包含多少细节


是否有任何最佳实践可供我学习,以使领域模型能够被人们很好地理解,并且易于随产品发展?

DDD中最重要的策略是。这对应于业务中的(子)域。理想情况下,他们应该一一对应。因此,应该做的第一步是清楚地识别(子)域;这也是最难的

与其保留大量带有难以跟上项目进度的大量细节的图表,不如绘制一个上下文图

在此之后,您已经将问题分解为更易于管理的部分。看一幅背景图,你可以用几分钟的时间来理解全局


对于每个(子)域,您可以保留主要业务规则的列表。任务管理软件(即Jira)可能是这些问题的唯一真相来源。

DDD中最重要的策略是。这对应于业务中的(子)域。理想情况下,他们应该一一对应。因此,应该做的第一步是清楚地识别(子)域;这也是最难的

与其保留大量带有难以跟上项目进度的大量细节的图表,不如绘制一个上下文图

在此之后,您已经将问题分解为更易于管理的部分。看一幅背景图,你可以用几分钟的时间来理解全局


对于每个(子)域,您可以保留主要业务规则的列表。任务管理软件(即Jira)可能是这些问题的唯一真相来源。

使用行为驱动开发(BDD)

BDD类似于TDD。但是BDD始终关注于测试域行为,并且测试是使用域的通用语言定义的。所有故事/功能/场景都可以以结构化、可读的形式编写()

而且,由于测试与代码紧密耦合,它们必须保持同步(假设您的团队在保持测试最新方面遵守纪律)


根据我的经验,这为以中等可读的格式公开最新的域规则提供了最经济的解决方案。

使用行为驱动开发(BDD)

BDD类似于TDD。但是BDD始终关注于测试域行为,并且测试是使用域的通用语言定义的。所有故事/功能/场景都可以以结构化、可读的形式编写()

而且,由于测试与代码紧密耦合,它们必须保持同步(假设您的团队在保持测试最新方面遵守纪律)


根据我的经验,这为以中等可读的格式公开最新的域规则提供了最经济的解决方案。

谢谢您的回复。你能详细说明一下用吉拉作为真相的来源吗?我的意思是它只是包含了一系列的变化,有点像事件源。获取当前的“快照”很不方便?@fankai当前的“快照”是代码,但是不遵循DDD的代码很难逆向工程到业务规则中。对不起,快照是指当前有效的业务规则。我的意思是,一个非程序员如何从Jira那里掌握当前有效的业务规则?以Evans书中的cargo为例,有一个10%的超额预订规则。比如说6个月后,这一比例变为20%。这一变化确实有一个Jira的故事,代码也相应地发生了变化。然而,再过一年,如果不检查代码,人们怎么会发现当前的规则是20%?也许我们可以试着用Jira搜索,但听起来不太准确。@fankai确实,搜索Jira不太准确。非程序员无法理解代码,因此似乎需要单独的业务规则文档。在我目前的工作场所,老板问我,程序员,什么是业务规则,因为他忘了,我告诉他:让我看看代码。如果我使用DDD,答案很快就会出来。谢谢回复。你能详细说明一下用吉拉作为真相的来源吗?我的意思是它只是包含了一系列的变化,有点像事件源。获取当前的“快照”很不方便?@fankai当前的“快照”是代码,但是不遵循DDD的代码很难逆向工程到业务规则中。对不起,快照是指当前有效的业务规则。我的意思是,一个非程序员如何从Jira那里掌握当前有效的业务规则?以Evans书中的cargo为例,有一个10%的超额预订规则。比如说6个月后,这一比例变为20%。这一变化确实有一个Jira的故事,代码也相应地发生了变化。然而,再过一年,人们怎么会发现目前的规则是20%的wi