什么是模型
利用抽象化繁为简,通过标准的结构来组织和传递信息,形成一致的可以进行推演的解决方案,这就是“模型”。模型反应了现实问题,表达了真实世界存在的概念,但它并不是现实问题与真实世界本身,而是分析人员对它们的一种加工与提炼。
例如地铁轨道交通图,他不是真正的地图,他是一个抽象的,只是体现了方向和距离等元素
模型的重要性并不体现在它的表现形式,而在于它传递的知识,建立模型是一个梳理、归纳、与分类的活动,目的是要建立一个清晰的业务需求结构。
为了便于更好地理解建模过程,我将整个建模过程中主要开展的活动称之为“建模活动”,并统一归纳为分析活动、设计活动与实现活动。每一次建模活动都是对知识的一次提炼和转换,产出的成果就是各个建模活动的模型。
- 分析活动:观察现实世界的业务需求,依据设计者的建模观点对业务知识进行提炼与转换,形成表达了业务规则、业务流程或业务关系的逻辑概念,建立分析模型。
- 设计活动:运用软件设计方法进一步提炼与转换分析模型中的逻辑概念,建立设计模型,使得模型在满足需求功能的同时满足更高的设计质量。
- 实现活动:通过编码对设计模型中的概念进行提炼与转换,建立实现模型,构建可以运行的高质量软件,同时满足未来的需求变更与产品维护。
整个建模过程如下图所示:
不同的建模活动会建立不同的模型,上图表达的建模过程体现了这三种模型的递进关系。一个完整的建模过程,就是模型驱动设计(Model-Driven-Design)。
模型分类
不仅仅是建模活动会对模型带来影响,设计者在面对业务需求时,关注的视角不同,抽象的设计思想不同,也会导致模型的不同,这就形成了从建模视角产生的模型分类。
如果我们是以数据为核心,关注数据实体的样式和它们之间的关系,由此建立的模型就是“数据模型”。
如果我们需要为系统外部的客户端提供服务,关注的是客户端发起的请求以及服务返回的响应,由此建立的模型就是“服务模型”。
而领域驱动设计则强调以领域为中心,通过识别领域对象来表达业务系统的领域知识包括业务流程、业务规则和约束关系,由此建立的模型就是“领域模型”。
领域驱动设计不过是模型驱动设计中的一种罢了。