软件开发并非一蹴而就,在开发前需要进行大量的业务知识梳理,在梳理的过程中必然会形... 展开 >
十八年从业经验,曾经就职于阿里巴巴、神州数码等上市公司,长期从事敏捷团队指导、系统分析与架构设计,主导过支付宝会员产品线的开发,担任过省级银行的研发管理顾问、电商创业公司的技术总监、系统分析师和首席架构师等,熟悉各种分析模式并擅长UML业务建模,是国内最早一批DDD(领域驱动开发)实践者。2006起担任阿里技术研究院讲师,并于2017年担任中国首届DDD大会讲师,2018年担任厦门互联网技术峰会讲师,立志于长期在业务建模与DDD架构设计方面深耕发展。
软件开发并非一蹴而就,在开发前需要进行大量的业务知识梳理,在梳理的过程中必然会形成某个领域知识,根据领域知识来一步步驱动软件设计,最后是软件开发。现在很多公司都在实践DDD,一起来了解他们是如何运作的。
领域驱动设计逐渐成为一个开发人员用于炫耀的口号。很多没有受过基本软件工程训练的开发人员,打着领域驱动设计的大旗胡作非为,大有重演敏捷一幕的味道。本演讲结合软件工程历史文献,剖析领域驱动设计所使用的热门用语中,哪些是带来进步的,哪些是“重新包装”的,哪些是“因为无知而重新发明”的,哪些是无用的。
演讲提纲:
听众受益点:
DCI是数据、场景、交互(Data、Context、Interactions)简称,重点是关注数据的不同场景的交互行为,是面向对象系统状态和行为的一种范式设计;DCI在许多方面是许多过去范式的统一,多年来这些模式已经成为面向对象编程的辅助工具。
问题背景:电信软件的功能复杂特性交叉,对实时性和数据一致性的要求比较高,代码规模比较大,同时处理大量并发活动。
解决方案选型:1.领域建模+贫血模型;2.领域建模+充血模型;3.领域建模+DCI。
方案介绍:选择“领域建模+DCI”,将类和对象看成不同的事物。类作为一种模块化手段,遵循高内聚,低耦合,让软件易于应对变化;将类看做是领域对象拥有的职责或扮演的角色,对象作为一种领域对象的的直接映射,解决了过多的类带来的可理解性问题,让领域可以指导设计,设计真正反映领域。如果使用 C++ 语言来实现的话,可以通过多重继承的方式来完成职责 ROLE 的组合 ;如果使用Go语言来实现的话,可以通过依赖注入的方式完成职责 ROLE 的组合。
实施后效果说明:DCI 可以和 DDD 融合在一起,基于职责的组合式设计提高了代码的可理解性和应对变化的能力,而且对于开发人员来说 DCI 带来的收益比 DDD 更大。
演讲提纲:
听众受益点:
围绕在罗辑思维后端所经历的一次较大规模的系统重构展开的,用实例来说明领域驱动设计带来的帮助启发和指导。整理为了三个部分,第一部分是“用领域驱动来把握真正的业务需求”,第二部分简单介绍一下“领域驱动设计指导系统架构设计与建模”,第三部分是“用限界上下文来保护领域”。
演讲提纲:
1、用领域驱动来把握真正的业务需求
2、领域驱动设计指导系统架构设计与建模
3、用限界上下文来保护领域
听众受益点:
领域驱动设计战略部分的落地运用,重构或者新开发复杂业务系统时,如何把握到真正的业务需求,如何围绕着业务需求和技术目标,利用领域来更合理的建模和设计,用限界上下文来保护领域。