DDD提出了面向业务领域的软件设计,以业务为驱动的设计,而非以技术为驱动,或者以数据为驱动的方式。
技术架构的选择需要服从具体业务特点。
只有面向业务需求,才能使用面向对象的分析设计方法提炼出业务对象模型。具体实现时不一定用面向对象编程(OOP)语言,也可以用函数式语言。
首先要瞄准业务需求中的问题。问题空间是解决问题的目标所在,有了问题空间,才能提出解决方案,而解决方案的提出有赖于人们对问题知识的理解。这是一项集体努力,这一事实构成了DDD中最大的必须面对的问题:“不是领域专家的知识进入了生产中的软件,而是开发人员自己的见解悄然渗透到了软件中。”
对问题空间中业务知识的理解不足与没有达成共识成为软件开发中的最大障碍。
深入理解知识还是必须深入事物内部和结合事物所处的上下文环境。
面对面访谈、成立专门领导小组、召开需求研讨会、头脑风暴与思维还原、角色扮演、观察与工作见习、原型演练、问卷调查、电子访谈、遗留代码分析(逆向工程)、阅读代码或其文档等。