业务领域的概念
业务领域定义了公司的主要活动领域,这是公司为客户提供的服务内容。例如:联邦快递提供快递服务;星巴克最出名的是它的咖啡。
子域
为了实现其业务领域的目标和目标,公司必须在多个子领域中操作。子域是业务活动的细粒度集合。DDD中将子域分为三个类型:
- 核心子域:这是最复杂的,也是一家公司最核心的竞争能力。竞争对手应该很难复制或模仿该公司的解决方案。需要注意的是,核心子域不一定是技术性的,它应该是竞争优势的来源。核心子域不可能是“核心域”,子域可以随着时间的推移而演变,改变它们的类型。如。核心子域可以转换为通用子域。
- 通用子域:所有公司都以同样的方式进行的业务活动。通用子域名不会为公司提供任何竞争优势。不需要创新和优化。
- 支撑子域:顾名思义,支持子域支持公司的业务。然而,与核心子域相反,支持子域不提供任何竞争优势。
子域类比
我们从每个角度上看看,探索它们之间存在的差异,看看它们是如何影响战略性软件设计决策的。
公司竞争优势
只有核心子域才能为公司提供竞争优势。核心子域名是公司区别于竞争对手的策略。通用子域可能具有公司及其竞争对手使用的相同解决方案。支持子域的进入门槛较低,不能提供竞争优势。
复杂度
核心子域的复杂性往往最高,他为公司提供更高竞争力的同时,其他公司也难以模仿。通用域使用的是市场上常见的通用的解决方案,各个公司可能都在使用,往往不具有复杂度。支撑域的系统在复杂度上不好评判,有的公司使用常见方案来满足业务需求,有的公司则为了提供更高的竞争力,独自研发支撑域系统。
易变性
核心子域可以经常更改。如果一个问题可以在第一次尝试中解决,这可能不是一个很好的竞争优势。因此,核心子领域的解决方案应运而生。必须对不同的实现进行试验、改进和优化。此外,核心子域的工作从未完成。公司不断创新和发展核心子领域。与核心子域相反,支持子域不会经常更改。尽管有现有的解决方案,但通用子域可以随着时间的推移而改变。这些更改可以以安全补丁、错误修复或整个版本的形式出现。
识别子域边界
在构建软件解决方案时,确定子域及其类型可以在很大程度上帮助做出不同的设计决策。领域分析的一个很好的起点是分析公司的部门和其他组织单位的基本结构。
提炼子域
粗粒度子域是一个很好的起点,但关键在于细节。我们必须确保没有遗漏隐藏在错综复杂的业务功能中的重要信息。
用例保持一致
从技术角度来看,子域类似于一组相互关联的、一致的用例(参与者、业务实体、数据)。我们可以使用“子域的用例保持一致”的定义作为何时停止寻找细粒度子域的指导原则。这些是子域最精确的边界。
需要努力确定核心子域的子域边界。核心子域是最重要、最不稳定、最复杂的。我们必须尽可能地提炼这些功能,因为这将允许我们提取所有通用和支持功能,并将精力投入到更专注的功能上。
聚焦业务的本质
在寻找子域时,重要的是识别与软件无关的业务功能,将他们从核心业务范围中识别出来,并关注与您正在开发的软件系统相关的业务方面。
小结
公司的业务活动一切都始于业务领域:即公司运营的领域和向客户提供的服务。在业务领域中实现成功并使公司与其竞争对手区分开来的不同构建块:核心子域、通用子域、支持子域。
欢迎使用haptool.com(哈普工具),让程序员的工作更有效率。