`
chelsea
  • 浏览: 118359 次
  • 来自: ...
社区版块
存档分类
最新评论

DCI: 与领域驱动设计,四色建模的关系

    博客分类:
阅读更多

接上篇: <<DCI: 代码的可理解性>>

与领域驱动设计的关系

Domain Driven Design是一种分析和设计方法, 它的目的也是使软件更简单更稳定更易于理解. 但它的出发点或角度是分离业务和技术细节. 业务相对技术实现细节来说是更稳定的, 也更贴近问题域.

DDD实际上有两部分的内容, 领域模型和如何建造领域模型. 但有趣的是事实上DDD对最终的领域模型看起来是什么样子并没有过多刻画, 只有Ubiquitous Language, 技术实现细节无关, Bounded Context等一些基本的属性. 那些构造块比如Entity, Value Object, Repository, Domain Service等既不必要也不充分. 难道不用DDD就不需要区分Entity和Value Object了吗? 难道用来Repository, Domain Service就是在DDD了吗?

DDD强调更多的是过程相关的实践, 比如与领域专家的合作,通过对话中的冲突矛盾之处来捕捉缺失的概念, 以及最重要的战略性设计: Distill Core Domain, Bounded Context, Context Mapping等.

DCI则正好相反: 它刻画了最终的领域模型是什么样子, 包含哪些元素, 而对软件开发过程保持中立.

因此可以说DDD与DCI是正交的, 可以结合使用. 我们可以用DCI来刻画最终的领域模型, 而用DDD推荐的实践来捕捉Data, Role, Interaction, Context等领域概念

(李彦辉说DDD书里的Building Blocks其实是一种参考实现, 比如Aggregate Root等概念. 因此也可以把DCI甚至下面的四色建模也都看成DDD的一种实现)

 

与四色建模的关系

四色建模也是一种分析和设计方法, 它的主要目的是确保最终开发出来的软件能支撑业务的运营. 客观上它也使模型更容易理解, 而它的出发点是业务的可追溯性. 角度是审计的角度. 前面我们说过电影和小说是可被人普遍所理解的. 事实上还有另外一件事也是有标准模型, 可被受过训练的人所理解的, 就是财务和审计. 换句话说, 如果我按照财务审计的要求来为业务建模, 那也是可以被普遍理解的.

而从不同的角度出发, 最终的结果却有重叠之处. 四色里的PartyPlaceThing可以看作DCI里的Data, 而Role甚至可以直接映射到DCI里的Role. 而Moment-interval和Interaction也有相似之处, 差别在于侧重点的不同. 总体来说, 四色建模还是侧重于系统的静态结构, 系统的状态, 而DCI则把交互作为一等公民.

(对四色建模的理解来自徐昊,比如这篇文章http://blog.vincentx.info/2011/12/on-moment-interval. 四色建模也偏重于结果, 对于建模过程, 徐昊还发展了一种尚未命名的方法来捕捉缺失的模型和去除冗余的模型, 核心是Data Flow)

 

 

分享到:
评论

相关推荐

    DDD领域驱动设计 DCI架构

    领域驱动设计(DDD)是由Eric Evans在2004年提出的,旨在应对复杂软件开发中的挑战。DDD的核心理念是通过领域建模来理解和表述业务逻辑,以提高软件系统的可读性、可维护性和可扩展性。领域模型是DDD的关键组成部分...

    DDD领域驱动设计基本理论知识总结.docx

    领域驱动设计(Domain-Driven Design,简称DDD)是一种软件开发方法,旨在通过深入理解和建模复杂的业务领域,来创建高质量、易于维护的软件系统。DDD的核心在于领域模型,它是对业务领域的抽象表示,包含了业务规则...

    dci:数据,上下文,交互(DCI)示例

    DCI 此存储库包含在Golang和Javascript中实现DCI(数据,上下文,交互)模式的示例。 在撰写这些文章时,我以DCI为动力来学习有关JS和Go的更多信息。 因此,随着我对语言的更多了解以及对DCI的了解加深,我对方法的...

    基于UltraScale+FPGA可编程逻辑DCI互连盒设计

    在数据中心领域,云计算的兴起和机器间的通信导致数据量呈爆炸性增长。这些海量数据带来了对数据中心内部及数据中心间高速、安全且可升级的数据传输需求。数据中心互连(DCI)正是为了解决这一需求而产生的技术,其...

    doctrine-dci:一个涉及用户上下文的实验

    我们相信发展必须是一种令人愉快的、创造性的体验,才能真正实现。 Laravel 试图通过简化大多数 Web 项目中使用的常见任务(例如身份验证、路由、会话、排队和缓存)来减轻开发过程中的痛苦。 Laravel 易于访问,但...

    GD32F407 DCI LWIP

    标题中的“GD32F407 DCI LWIP”涉及到的是基于兆易创新(GigaDevice)的GD32F407系列单片机,利用DCI(Digital Camera Interface,数字摄像头接口)功能,并集成轻量级网络协议栈LWIP(Lightweight IP)的开发实践。...

    dci-infra:Ansible-books部署DCI

    DCI红外线部署DCI基础结构的剧本和角色。用法 ansible-galaxy install -r installed_roles.yml -p rolesansible-playbook -vv playbook.yml -i &lt;path&gt;/hosts --tags dci-core dci-core标记将仅执行角色的一个子集,...

    MPLS L3 VRF DCI配置.rar

    MPLS L3vrf DCI配置 https://editor.csdn.net/md/?articleId=120409937 DCI互联 Layer 3 VRF-MPLS (EVE vqfx实验)全部配置

    通信行业周报:中国电信采购DCI波分设备,开放光网络拉开帷幕.zip

    在中国电信最近的动态中,其对DCI波分设备的采购标志着通信行业的重大进展,预示着开放光网络新时代的开启。DCI(数据中心互联)波分设备是现代通信基础设施的关键组成部分,它在大规模数据传输和云计算服务中扮演着...

    DCI型细水口模架.zip

    DCI型细水口模架是模具设计中的一个重要概念,尤其在注塑模具领域中广泛应用。这种模架设计主要用于实现高效的塑料制品生产,确保产品精度和质量。在深入理解DCI型细水口模架之前,我们需要先了解模架的基本结构和...

    6645G下行DCI设计和流程 pdf文档整理.zip

    6645G下行DCI(Downlink Control Information)设计与流程是5G通信系统中的关键技术之一,它在实现高效、灵活的无线资源管理中起着至关重要的作用。本资料整理自一个PDF文档,旨在深入解析6645G网络中的DCI结构、...

    DM8 - DCI Program.pdf

    DM DCI是针对开发者设计的一套接口,允许应用程序通过标准的调用方式与DM8数据库进行交互。这包括连接管理、游标操作、数据绑定、事务控制等核心功能。通过DCI,开发人员能够创建高效、稳定的数据访问层,实现数据库...

    dci-sample:DCI(数据-上下文-交互)代码示例

    在DCI模式中,数据部分通常对应于传统的实体类或领域模型。这些类主要负责存储和表示业务实体的状态,而不涉及行为。例如,在一个电子商务系统中,`Product`类可能包含`name`、`price`等属性,但不包含与购买过程...

    中国电信DCI组网和策略规范

    本文档基于中国电信ChinaNet网的网络现状,并根据中国电信宽带互联网业务承载的需求,对ChinaNet网组网结构、路由策略、链路组织、网络安全、资源分配等内容进行了规范。

    整理的培训目录

    - **领域驱动设计(DDD)**:强调将业务逻辑与软件设计相结合,通过定义明确的边界和实体,提高软件对复杂业务的适应性。 - **架构之殇和常见架构分析**:讨论了系统架构的挑战,如微服务、SOA(面向服务架构)等...

    GY-906 MLX90614ESF BAA BCC DCI IR红外测温传感器模块温度采集资料.zip

    GY-906 MLX90614ESF BAA BCC DCI IR红外测温传感器模块是一款广泛应用在温度监测领域的高科技设备。这款模块基于Melexis公司的MLX90614ESF芯片,它是一款高精度、非接触式的红外热电堆传感器,能够测量环境及物体...

Global site tag (gtag.js) - Google Analytics