解读中兴通讯在物联网行业如何践行DDD

  此前,在由 ThoughtWorks 举办的领域驱动设计峰会 DDD-China 2019 上,InfoQ 记者就开发团队为什么须要 DDD、目前业界实践 DDD 的挑战等问题对中兴通信资深软件架构师张晓龙进行了采访。如下为重点内容,这里记录采访内容的学习笔记。html

  张晓龙认为,开发团队真的须要 DDD。DDD 思想贯穿了整个软件开发的生命周期,包括对需求的分析、建模、架构、设计,和最终的代码实现,甚至对代码的测试与重构。代码是业务的核心资产,开发团队确定是代码的编写者和守护者。架构

  对于开发团队而言,须要关注如下几点:性能

  第一,统一语言,让团队成员能够作到无障碍沟通,不论是什么角色都能基于一样的画面进行讨论;学习

  第二,团队中各个角色都围绕领域模型开展工做测试

  第三,代码物理分层设计标准化,好比说在分层设计时,基础设施层怎么设计,应用层怎么设计,DTO 应该放在哪儿,领域层中各个建模元素如何组织?编码

  更进一步,在分层架构中,应用层更加关注横切面的东西,好比上报告警、给用户发送 Email 等,这些最好都集中放到应用层里面。但触发是在领域层发生的,应用层怎么知道?能够经过领域事件来实现依赖反转,即应用层订阅领域事件,领域层发布领域事件。spa

  在中兴通信,核心业务属于通讯行业,DDD 的应用场景跟互联网企业有着很大差异,中兴通信的技术与业务兼具复杂性,其软件规模大,功能复杂,特性交叉,还有高质量、高性能、高可靠的要求。操作系统

  第一,领域专家下团队,和团队一块儿交流和协做;设计

  第二,教练指导,开展战训营,按期 review;htm

  第三,在架构、设计、编码和工程实践方面,不只采用 DCI、DSL、正交设计、组合式设计,还要遵照编码规范和纪律,运用嵌入式 C/C++ 最佳实践,此外还要保证有持续交付的流水线和每日 Code Review。

DDD 的困局

  最近几年 DDD 的火爆也给业界开发团队带来了一些迷思,好比,为何个人 DDD 推行不下去?为何个人 DDD 作起来老是跟敏捷同样,最后都变了味?

  张晓龙总结了 DDD 目前面临的几大困局:

  第一,领域案例面比较窄。目前业界的 DDD 实践案例并很少,并且不少案例是偏向互联网领域的,对于工业领域、嵌入式领域和操做系统领域基本没有涉及;

  第二,DDD 书籍很是少,并且大多数书籍是以 Java 或 C# 写的。若是开发团队用的是 C、C++、Python 或 Go 语言,基本没有可参考的书籍,难度也就更大一些(尤为是 C 和 C++);

  第三,各个巨头公司,好比谷歌、微软、BAT 等,不多组织、参与或赞助 DDD 峰会,没有造成引导做用,业界天然也就少有跟随效应;

  第四,开发团队要么找不到领域专家,要么领域专家没法与开发团队长时间保持沟通,致使实践中出现误差;

  第五,DDD 落地有必定的门槛,对开发者的技能和素质都有较高的要求。

  针对以上几大困局,张晓龙也给出了本身的解决方案:

  • 培训 OOA、OOD 和 OOP 的基本知识,并实战演练,不断弥补与高手的差距 ;
  • 领域专家和团队一块儿工做,确保你们头脑中的画面是一致的;
  • DDD 建模要有文档交付物,并和代码同步演进,以便不熟悉代码的人员也能看到并理解领域驱动设计成果的全貌。

  软件开发没有银弹,DDD 也不是万能的。若是开发团队真的决定用 DDD 的思想指导软件开发,就必定要跟随时代的脚步,吃透 DDD 这个旧瓶里装的新酒。

 

原文出处:https://www.cnblogs.com/jackyfei/p/12114424.html

相关文章
相关标签/搜索