沉淀、传递行业知识
应用软件很大一部分是行业应用软件,而行业应用软件涉及不同的行业,具有很强的领域特点。领域模型是行业应用软件的重要基础,这类应用软件在编写上是以领域模型为“龙骨”的,也就是说当技术平台升级或革命了,以领域模型为基础的行业应用软件应当变化最小,这样才能最大限度地保护我们行业应用软件的核心价值。
我们认为领域模型是更高层面、更持久的行业应用软件模型,也是我们更要引起重视的部分。在这里笔者简单说明一下领域模型影响样本程序的要点,简单地看,领域模型影响样本程序的结构(命名)和行为(逻辑)。在行业应用软件中,我们要为操作对象和函数命名,为了便于在概念变化时更好地把握它们,我们以领域模型中的定义和通行术语为基础,形成概念体,去命名相应的对象。从对象的特点上看,“领域”的对象和系统软件中的对象有不同特性。领域中的对象有经常变化的倾向,如: 存货、存款等,它们有可能随时间的变化而在内容和结构上变化,而系统软件中的对象,如内存、进程、文件等,则相对是稳定的。如果我们同样地做样本程序,在行业应用软件中,我们就要考虑样本程序中如何表达这些领域对象,如何控制它们的变化,如何在相似的情况下替换另一个相似的概念对象。
由于领域对象的易变性,我们在样本程序中应该能够看到这种变化的应对策略。从结构上看,如果领域对象的结构变化了,我们如何使用一种可变的Schema(它也对应表示层的结构及界面结构)来解决,应用程序是基于Schema编制的,当结构变化时,我们修改Schema,使整个程序变化最小。同样针对领域概念形成领域行为范围来对应不同分类的组件体,当行为变化时,只控制修改相应的部分。这部分内容实质上是行业应用软件的热点技术“业务产品化”的重要基础。
现阶段的很多样本程序大多抄袭了框架书中的范例,对这部分内容的考虑是比较欠缺的。同样道理在我们以领域模型为基础的样本程序中,也很少讨论程序的行为逻辑与领域的“业务逻辑”的相符度,提出一整套对这种逻辑的标识(命名)分类、变化控制、替换原则等,一个好的样本程序应当可以看到这种涉及领域背景的“龙骨”。