如何使用领域驱动设计进行企业应用设计 1. 什么是领域驱动设计
发布时间:2022-12-17 13:08:53 所属栏目:应用 来源:
导读: 随着微服务架构和分布式技术的推广和普及,领域驱动建模方法/技术得到了越来越多的关注。领域驱动建模延承面向对象业务建模的技术路线,但是国内主流的技术实施路线还是以数据为核心的开发驱动,所以在学习和应用
|
随着微服务架构和分布式技术的推广和普及,领域驱动建模方法/技术得到了越来越多的关注。领域驱动建模延承面向对象业务建模的技术路线,但是国内主流的技术实施路线还是以数据为核心的开发驱动,所以在学习和应用领域驱动建模方面,很多公司以及项目组在领域驱动设计上存在不少认知和工程实施方面的困难;另一方面,驱动和引领国内开发技术和架构的互联网公司,由于业务流程和链条相对短平,没有复杂业务建模的场景,对领域驱动建模乃至面向对象构建方面没有迫切需求,因而在国内缺少在这方面的实践和知识探讨,很难找到合适的中文材料和相关文档。 埃森哲物流团队在大型物流公司核心系统架构规划和系统设计实施过程中,全面使用领域驱动设计的建模和系统实施方法,帮助大型物流公司在核心的中转业务方面,完成了整体企业架构规划,对核心中转业务的业务模型进行了概要设计和详细设计,明确了核心业务相关的服务化设计和工程技术方面的组件划分(微服务),推动了领域驱动设计在业务知识方面的精粹和积累,解决了很多以往业务和系统中长期以来难以解决的问题。 我们相信,对于大多数需要数字化转型的企业,在新的数字化经济浪潮下,如何进行企业架构规划,怎么设计性能优异、灵活扩展的核心业务服务化模型,如何抽象和沉淀核心业务能力和领域模型,不但是物流企业的迫切需求,也是其他行业企业的公共诉求和方法借鉴。 本系列预计包括十个篇幅左右的领域驱动设计的经验分享,将我们在物流核心业务系统设计和实施过程中,所学习和应用领域驱动设计的经验和心得整理出来,抛砖引玉,供大家参考,同时希望对这方面有经验以及有兴趣的同行一起探讨和指教。 幻灯片应用设计模版波形_设计应用_设计和应用 1.什么是领域驱动设计 随着业务系统复杂度的提高,以及互联网技术的推动,业务系统的性能要求和灵活性要求越来越高,如何构建一个性能优异、扩展灵活、生命力强的业务系统,一直是IT行业的关键和核心问题。 在70年代提出的面向对象思想从某种角度中给出了解决复杂系统构建的方法,但是在实践过程中,特别在企业应用领域中,面向对象技术实践面临一系列的挑战,譬如,数据库适配阻抗、操作系统以及分布式架构的面向对象的异构性,为了解决这些问题,业界提出了诸如面向对象数据库、EJB等一系列技术手段,以及MDD、四色领域建模等一系列建模和设计方法,但是仍然无法有效实现面向对象技术在企业应用方面的推进和实践。 在2003年由Eric Evans提出领域驱动设计后,面向对象思想在企业应用工程实践方面终于有了一个完整、可行的技术方法和实践路径。为了清楚的理解和认识什么是领域驱动设计,可以先从领域驱动设计不是什么开始: 首先,领域驱动设计不仅是针对问题域的领域建模和系统设计,它还包括了解决域的实现设计。对于不太熟悉面向对象思想的小伙伴们,可能不太理解问题域和解决域的概念定义,问题域是指不考虑系统实现的约束,对业务内在逻辑和联系的抽象和归纳,传统上面向对象技术在这方面有很强的方法优势,解决域是指针对特定系统实现,考虑到各种技术约束,问题域如何映射和适配到现实的实现场景,譬如事务的概念,就是标准的解决域的范畴,而解决域正是面向对象失效的经典场景,大量的适配阻抗都集中在解决域。因此,领域驱动设计的一个关键技术目标是解决的系统/应用的整体和端到端设计。 第二,领域驱动设计不仅是一种建模语言和建模范式,它不但想解决系统设计中的形式化和设计/编码映射问题,它还代表了一种从需求到设计,再到系统开发,乃至到后期软件运维的系统构建和系统演进的软件工程思路和方法。 最后,领域驱动设计不但包括设计和开发的形式化语言和规则范式,它还构成了设计/开发人员与业务人员的沟通语言和交流基础,领域驱动设计不局限于形式化的建模语言,它还包括了非正式的沟通和草图示意,它包括了整个软件开发中所有的知识沟通和知识记录。 从上面三个领域驱动设计的目标和范畴可以看出,什么是领域驱动设计的定义包括: 首先,领域驱动设计是针对复杂业务核心系统全生命周期业务知识能力的结构化、抽象、描述、定义以及演进的知识体系结构,领域驱动设计不仅仅想解决系统设计形式化和规则化的问题,而且想将用户、业务人员、设计人员、开发人员、运维人员统一在通用语言和沟通框架中,从而支持各个角色、各个阶段对业务需求、系统设计认识的统一和紧密合作。因此,领域驱动设计的一个核心目标是,建立基于特定业务范畴或者说是系统应用的通用语言,通过日益精化的通用语言,将系统和应用实施的各参与方整合在一起,从而减少不同角色和环节的信息熵减问题。所以,领域驱动设计更应该被视为是一种完整的软件工程方法设计和应用,而不是简单的建模手段。 其次,领域驱动设计设计的领域模型是整个软件的核心,是软件中最有价值和最具竞争力的部分,它不但描述了真实的业务逻辑和业务场景,也是系统实现的有效和可实现的表达。设计精良且提炼业务内涵的领域模型能够更快速的响应需求变化,让端到端的开发流程更加高效和顺畅,也可以让整个项目/应用在实施过程中,产生更多的共识和思维创新。 最后,领域驱动设计作为一个设计方法,有完整的形式化模式和设计要素,可以帮助团队快速完成符合业务需求的系统设计。领域驱动设计可以兼容现在流行的各种技术开发框架,在技术架构演技上有很强的适配能力和先进性,这几年微服务技术对领域驱动设计的需求增多,正是领域驱动设计优异的架构演进能力的体现。 综合而言,领域驱动设计不仅仅是一个形式化的系统分析或者设计的建模方法和语言,而是近20年以来,IT行业对复杂企业应用实施在需求管理、系统设计、软件生命周期管理层面的软件工程的重要探索和理论实践。它解决的是软件开发过程中的业务沟通问题,面向对象在现有技术体系下的设计实施问题,以及软件全生命周期的知识传递和知识积累的问题。 (编辑:应用网_扬州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐


浙公网安备 33038102330458号