1. 地球到底是方的还是圆的?领域抽象
一、中国
看到这个标题,你很有可能认为我要讲一篇科普文,来论述地球到底是方的还是圆的。其实,迄今为止,地球上生活的人仍然有人相信地球是方的。在这里,我不讨论的地球母亲他的形状,单从地图来看,我们应该怎么描述中国。
18世纪中国描绘的世界地图,图中央最大的部分就是中国,周围散布着其他国家,但是这些国家都是草草地表示一下。这是适用于当时中国社会的世界模型,它意在关注中国本身。然而,这幅地图所呈现的世界观对于处理外交事务并无益处。地图,就是模型,它被用来描绘人们所关注的现实或想法的某个方面。它是对现实的解释,把与解决问题密切相关的方面抽象出来,而忽略无关的细节。
二、领域知识
领域抽象要从消化知识开始,我们要对知识进行搭建整合。大致可以分为如下四个步骤:
- 建模,做一个有效的建模关键是,我们要有一个基于模型的统一语言,并在丰富的知识模型上提炼他,和同事进行头脑风暴并实验;
- 知识消化,通过比对传统方法,将任务集中在设计人员头上,但往往就会存在知识倾斜,不仅让程序缺乏能动性,同时也无法开发人员得到锻炼,迭代的时候需要一个代价很大的知识传递过程。但是,如果我们采用识别领域的变化的方法后,我们就需要采用敏捷性开发方式,全员共同参与;
- 持续学习,在满足知识消化的时候,全员均持续学习领域知识,完善文档;
- 丰富设计,充分认识领域模型后,我们删除无用规则,与软件专家相互学习,从而丰富模型与设计;
三、应用
软件是为了执行用户的某项活动,我们的星空就为了给财务人员解放双手开始,逐渐深入到生产制造,供应链,CRM,零售,PLM,电商分销等众多领域,星空基于动态领域模型抽象出业务元数据模型,通过动态构造表单,从而完成业务流转。
抽象业务模型在领域中有三个最重要的作用:
- 模型与设计的核心互相影响;
- 模型是团队所有成员使用的通用语言的中枢;
- 模型是浓缩的知识。
抽象的魅力体现,如图所示:
从技术角度出发,我们不用关注具体领域具体到底做了什么,我甚至不用知道100.00在哪一行哪一列。领域模型将所有的数据抽象为 动态元数据,动态实体,动态属性,其中动态属性可以包含三种:简单属性、复杂属性、集合属性。通过相互组合,就构成元数据模型。
DynamicObject是星空的起源。