现实世界中领域和子域--实现领域驱动设计-原文

领域中还同时存在问题空间和解决方案空间。在问题空间中,我们思考的是业务所面临的挑战,而在解决方案空间中,我们思考如何实现软件以 解决这些业务挑战。以下是如何将这两者应用到我们已经学过的知识中:

1.问题空间是领域的一部分,对问题空间的开发将产生一个新的核心域,对问题空间的评估应该同时考虑已有子域和额外所需子域,因此,问题空间是核心域和其他子域的组合。问题空间中的子域通常随着项目的不同而不同。他们各自关注域当前的业务问题,这使得子域对于问题空间的评估非常有用。子域允许我们快速地浏览领域中的各个方面,这些方面对于解决特定的问题是必须的。

2.解决方案空间包括一个或多个限界上下文,即一组特定的软件模型,这是因为界限上下文即是一个特定的解决方案,它是通过软件的方式来实现解决方案。

通常,我们希望将子域一对一地对应到限界上下文。这种做法显示地将领域模型分离到不同的业务板块中,并将问题空间和解决方案空间融合在一起。在实践中,这种做法并不总是可能的,但是通过新的努力,我们是可以做到这一点的。让我们考虑一个遗留系统,它有可能是个大泥球,其中子域和限界上下文存在相交的地方。在一个大型的企业中,通过对问题空间的评估,我们可以减少错误,进而降低成本。我,嗯可以在概念上使用两个或者多个子域来分解限界上下文,或者将多个限界上下文包含在同一个子域中。为了澄清问题空间和解决方案空间的区别,让我们来看一个例子。 

让我们来看看一个大型的ERP系统提供许多模块化的业务服务,将不同的模块看成不同的子域是有好处的。比如,我们可以将库存模块和采购模块拆分成不同的逻辑子域。我们将它们分别命名为库存子域和采购子域,在下文中,我们将讲到为什么这种划分是有用的。

在我们实施某个解决方案之前,我们需要对问题空间和解决方案空间进行评估。为了保证你的项目朝着正确的方向进行,你需要先回答以下问题:

1.这个战略的核心域的名字是什么,它的目标是什么?

2.这个战略核心域中包含哪些概念?

3.这个核心域的支撑子域和通用子域是什么?

4.如何安排项目人员?

5.你能组建出一支合适的团队吗?

如果你不了解核心域的目标及其所需的支撑子域,那么你是不能从核心域中得到好处的,同时你也无法避免由此带来的陷阱。因此,我们需要全面地对问题空间进行评估,并确保所有的利益相关方在核心域的目标上都达成一致。

在了解了问题空间之后,我们来看看解决方案空间。对于问题空间的评估也是有益于理解解决方案空间的。解决方案空间在很大程度上收到现有系统和技术的影响,这里,我们应该根据分离的限界上下文仔细地思考,考虑以下问题:

1.有哪些软件资产是已经存在的,它们是可以重用的吗?

2.哪些资产是需要创建的,或者从别处获得?

3.这些资产是如何集成在一起的?

4.还需要什么样的集成?

5.假设已经有了现有资产和那些需要被创建的资产,我们还需要做些什么?

6.核心域和那些支撑项目的成功几率如何?会不会出现由于其中一个失败而导致整个项目失败的可能?

7.在哪些地方我们使用了完全不同的术语?

8.限界上下文之间在哪些地方存在概念重叠?

9.这些重叠的概念在不同的限界上下文之间是如何映射和翻译的?

10.哪些限界上下文包含了核心域中的概念,其中是有了哪些[Evans]中的战术模式?

请记住,开发核心域的解决方案是一种关键性业务投入。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 领域(domain),广义的领域即是一个组织所做的事情以及其中所包含的一起。每个组织都有自己的业务范围和做事方式,...
    marx_yu阅读 1,242评论 0 0
  • 1.什么时领域驱动设计 领域启动设计(DDD)是一种软件开发方法,它可以帮助我们设计高质量的软件模型。 什么是领域...
    xiaochen0620阅读 389评论 0 0
  • GitChat课程《领域驱动设计--战略篇》笔记,课程作者张逸 一.理解限界上下文 1.限界上下文的定义 限界上下...
    莫小归阅读 5,891评论 1 11
  • 领域: 广义上讲,领域(Domain)即是一个组织所做的事件以及其中所包含的一切。每个组织都有它自己的业务范围和做...
    勇赴阅读 3,500评论 0 4
  • 2019-09-13 坚持分享第378天 读书打卡第196天《心理咨询师》( 职业技能二级)P62~65 《红楼梦...
    Shelley1165阅读 190评论 0 2