- 浏览: 118359 次
- 来自: ...
文章分类
最新评论
接上篇: <<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)
发表评论
-
Architecture is layered
2004-12-11 11:57 379那天被问道软件架构师需要了解编程语言的细节吗? 呵呵,架构是 ... -
Thinking Everyday
2004-12-11 12:01 4371,编程语言的发展趋势 ... -
糟糕命名集锦
2004-12-11 16:50 5681,公交支线,如375和375 ... -
古代的软件开发 (一)
2005-02-19 16:45 6751,额外的中间层鞋子:人类发明鞋子的意义无论如何评价都不过分, ... -
访问控制 : 语言和平台
2005-03-15 19:27 611程序逻辑上的组织方式(如名称空间,包等)可以和部署时的分发 ... -
Thinking Everyday II
2005-03-17 15:11 6191, 是业务,不是技术,傻瓜 是集成,不是编程 是使用,不 ... -
内容与标准为王:下一代互联网与下一代搜索
2005-07-25 14:53 702第一代互联网混淆了真正的数据和它的表现形式,第一代搜索无法 ... -
个性与定制为王:下一代互联网和下一代门户
2005-07-28 11:28 599看一下现在我与互联网有关的生活:我有两三个常用的Web邮箱 ... -
泛型编程 vs. 面向对象
2005-08-10 14:30 817面向对象:封装(数据抽象)是基础,继承是手段,多态是目的 ... -
函数式编程 vs. 对象式编程
2005-08-10 14:44 648<<我爱我家>>有一集和平摔成了脑 ... -
用手机从ATM取钱
2005-11-21 22:49 692手机的以下两个特性,使它潜在的可能成为统一的支付和信用平 ... -
Web 3.0 : Unified Human-like Interaction
2006-01-14 16:31 696你还在到搜索引擎的主页上去搜索吗?你还登录新闻网站查询最新比赛 ... -
软件生物学
2006-01-14 16:59 647长久以来,软件的建筑学隐喻已经深入人心,可始终无法达到建筑 ... -
广义对象论
2006-01-25 15:31 688前几天本想接着以前的思维中对“3.2 Programming ... -
Thinking Everyday III
2006-03-26 14:17 7871, RAII让我告别了delete,IoC让我告别了ne ... -
简单至及的AOP和IOC
2006-03-26 14:21 659I. AOP的例子 1, Google To ... -
TDD: Tricky Driven Development
2007-05-10 07:07 590命名 测试用例的名字应该描述需求, 不要描述实现. ... -
Thinking Everyday IV
2007-05-15 04:36 5201, 实际上 C# 2.0 已经部 ... -
迭代本质论
2008-02-14 13:58 630新年伊始, 可能你又要制定一些计划了, 实际上, 你的生活在开 ... -
建筑的永恒之道
2004-08-10 18:31 6492,质 这种特质是任 ...
相关推荐
领域驱动设计(DDD)是由Eric Evans在2004年提出的,旨在应对复杂软件开发中的挑战。DDD的核心理念是通过领域建模来理解和表述业务逻辑,以提高软件系统的可读性、可维护性和可扩展性。领域模型是DDD的关键组成部分...
领域驱动设计(Domain-Driven Design,简称DDD)是一种软件开发方法,旨在通过深入理解和建模复杂的业务领域,来创建高质量、易于维护的软件系统。DDD的核心在于领域模型,它是对业务领域的抽象表示,包含了业务规则...
DCI 此存储库包含在Golang和Javascript中实现DCI(数据,上下文,交互)模式的示例。 在撰写这些文章时,我以DCI为动力来学习有关JS和Go的更多信息。 因此,随着我对语言的更多了解以及对DCI的了解加深,我对方法的...
在数据中心领域,云计算的兴起和机器间的通信导致数据量呈爆炸性增长。这些海量数据带来了对数据中心内部及数据中心间高速、安全且可升级的数据传输需求。数据中心互连(DCI)正是为了解决这一需求而产生的技术,其...
我们相信发展必须是一种令人愉快的、创造性的体验,才能真正实现。 Laravel 试图通过简化大多数 Web 项目中使用的常见任务(例如身份验证、路由、会话、排队和缓存)来减轻开发过程中的痛苦。 Laravel 易于访问,但...
标题中的“GD32F407 DCI LWIP”涉及到的是基于兆易创新(GigaDevice)的GD32F407系列单片机,利用DCI(Digital Camera Interface,数字摄像头接口)功能,并集成轻量级网络协议栈LWIP(Lightweight IP)的开发实践。...
DCI红外线部署DCI基础结构的剧本和角色。用法 ansible-galaxy install -r installed_roles.yml -p rolesansible-playbook -vv playbook.yml -i <path>/hosts --tags dci-core dci-core标记将仅执行角色的一个子集,...
MPLS L3vrf DCI配置 https://editor.csdn.net/md/?articleId=120409937 DCI互联 Layer 3 VRF-MPLS (EVE vqfx实验)全部配置
在中国电信最近的动态中,其对DCI波分设备的采购标志着通信行业的重大进展,预示着开放光网络新时代的开启。DCI(数据中心互联)波分设备是现代通信基础设施的关键组成部分,它在大规模数据传输和云计算服务中扮演着...
DCI型细水口模架是模具设计中的一个重要概念,尤其在注塑模具领域中广泛应用。这种模架设计主要用于实现高效的塑料制品生产,确保产品精度和质量。在深入理解DCI型细水口模架之前,我们需要先了解模架的基本结构和...
6645G下行DCI(Downlink Control Information)设计与流程是5G通信系统中的关键技术之一,它在实现高效、灵活的无线资源管理中起着至关重要的作用。本资料整理自一个PDF文档,旨在深入解析6645G网络中的DCI结构、...
DM DCI是针对开发者设计的一套接口,允许应用程序通过标准的调用方式与DM8数据库进行交互。这包括连接管理、游标操作、数据绑定、事务控制等核心功能。通过DCI,开发人员能够创建高效、稳定的数据访问层,实现数据库...
在DCI模式中,数据部分通常对应于传统的实体类或领域模型。这些类主要负责存储和表示业务实体的状态,而不涉及行为。例如,在一个电子商务系统中,`Product`类可能包含`name`、`price`等属性,但不包含与购买过程...
本文档基于中国电信ChinaNet网的网络现状,并根据中国电信宽带互联网业务承载的需求,对ChinaNet网组网结构、路由策略、链路组织、网络安全、资源分配等内容进行了规范。
- **领域驱动设计(DDD)**:强调将业务逻辑与软件设计相结合,通过定义明确的边界和实体,提高软件对复杂业务的适应性。 - **架构之殇和常见架构分析**:讨论了系统架构的挑战,如微服务、SOA(面向服务架构)等...
GY-906 MLX90614ESF BAA BCC DCI IR红外测温传感器模块是一款广泛应用在温度监测领域的高科技设备。这款模块基于Melexis公司的MLX90614ESF芯片,它是一款高精度、非接触式的红外热电堆传感器,能够测量环境及物体...