接上篇: <<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)
分享到:
相关推荐
彭辰阳的讲座PPT :http://www.jdon.com/jivejdon/thread/39722
DCI 此存储库包含在Golang和Javascript中实现DCI(数据,上下文,交互)模式的示例。 在撰写这些文章时,我以DCI为动力来学习有关JS和Go的更多信息。 因此,随着我对语言的更多了解以及对DCI的了解加深,我对方法的...
我们相信发展必须是一种令人愉快的、创造性的体验,才能真正实现。 Laravel 试图通过简化大多数 Web 项目中使用的常见任务(例如身份验证、路由、会话、排队和缓存)来减轻开发过程中的痛苦。 Laravel 易于访问,但...
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波分设备,开放光网络拉开帷幕.pdf
平面设计用网上的源码DCI 102:人文科学中的数据 2018 年秋季 // TR 2:45-4:45pm // CGL 212 是活文件。 它将定期更改以反映课程的需要。 接触 Mackenzie Brooks,助理教授兼数字人文图书馆员 // 540-458-8659 // 莱...
Google B4 DCI网络论文,详细介绍B4网络的优点以及实现!
随着实施基于云的服务和机器到机器通信所产生的数据呈指数级增长,数据中心面临重重挑战。
DCI作业的CI管道管理 dci-pipeline命令 dci-pipeline命令允许使用不同的凭据执行多个DCI作业。作业按类型分组。每个组必须成功完成才能开始下一个组。作业及其类型在传递到dci-pipeline命令行的YAML文件中进行了...
DCI样本 该存储库包含示例代码,该示例代码显示了各种编程语言中的DCI实现。
兆易单片机gd32F407单片机程序 rtthread + lwip + DCI
包含DCI0-0、DCI0-1、DCI1-0、DCI1-1的解码 输入字节流,解出对应字段的内容 如0-0中。 Nrb_dl_bwp 48 payload bitstring 11010100101110101111111 频域资源分配 11 11010100101 时域资源分配" 4 1101 VRB-to-PRB...
在大前端辉煌发展、在数据时代的当下我们一起阅读了一篇设计相关的老文:《TheDCIArchitecture》一起来再探索和复习一下相关的设计和思想DCI是数据Data场景Context交互Interactions简称,重点是关注数据的不同场景的...
对DDD概念的理解,以及综合其他建模、四色建模、DCI、UML模式应用 的理解。 数据类应用的设计和开发如何应用DDD思想? 客户交易系统和GIS这样的系统,DDD应用上有何区别? 很明显的流程类功能或系
慧点科技DCI.Dec数据交换中心将“电子政务”的基本需求、电子政务安全平台提供的安全机制、数据存储层与应用层的有效隔离有机地结合在一起,使电子政务的应用与其底层的数据结构和存储方式无关。各应用系统与数据...
达梦数据库DM8_DCI 编程指南 OCI接口使用指南
基于DCI标准的数字影院系统,王延生,,本文针对目前数字电影技术国内外现状,提出了一套真正符合数字影院技术规范的数字影院系统,详细介绍了数据码流的处理过程,并在