为什么要采用领域驱动设计?
在很多应用程序的开发中,最复杂的并不来自于技术,而是来自于领域本身、用户的活动或者业务。当这种领域复杂性在设计中没有得到解决时,基础技术的构思再好也无济于事。成功的设计必须系统地考虑软件的这个核心方面。
领域驱动设计时一种思维方式,也是一组优先任务,它旨在加速那些必须要处理复杂领域的软件项目的开发。
使用领域渠道设计时,遵循的开发实践?
1、建议使用敏捷开发与极限编程(xp)
2、开发人员与领域专家具有密切的关系,领域驱动设计的是指就是消化吸收大量知识,最后产生一个反映深层次领域知识并聚焦于关键概念的模型。因此需要开发人员领域专家协作。
极限编程的概念是由Kent Beck、Ward Cunningham和其他人共同提出的 [Beck 2000],它是敏捷过程最重要的部分,也是我使用得最多的一种编程方法。 为了使讨论更加具体,整本书都将使用XP作为基础讨论设计和过程的交互。本书论 述的原则很容易应用于其他敏捷过程。
近年来,反对“精细开发方法学”(elaborate development methodology)的呼声渐起,人们认为无用的静态文档以及死板的预先规划和设计 加重了项目的负担。相反,敏捷过程(如XP)强调的是应对变更和不确定性的能 力。
极限编程承认设计决策的重要性,但强烈反对预先设计。相反,它将相当大的精力投入到促进沟通和提高项目快速变更能力的工作中。具有这种反应能力之后,开发人员就可以在项目的任何阶段只利用“最简单而管用的方案”,然后不断进行重构,一步一步做出小的设计改进,最终得到满足客户真正需要的设计。这种极端的简约主义是解救那些过度追求设计的执迷者的良方。那些几乎没有价值的繁琐文档只会为项目带来麻烦。项目受到“分析瘫痪症”的困扰,团队成员十分担心会出现不完美的设计,这导致他们根本没法取得进展。这种状况必须得到改变。
遗憾的是,这些有关过程的思想可能会被误解。每个人对“最简单”都有不同 的定义。持续重构其实是一系列小规模的重新设计,没有严格设计原则的开发人员 将会创建出难以理解或修改的代码,这恰好与敏捷的精神相悖。而且,虽然对意外 需求的担心常常导致过度设计,但试图避免过度设计又可能走向另一个极端——不敢做任何深入的设计思考。
《领域驱动设计》P29