模型驱动开发:基本模型+插件模型的开发方法
任何一个复杂的系统都应该存在简单的规则,可以使用一些基本元素组合构建而成。这样的系统在数学上被认为是简洁和优美的。这一点在软件中最容易归纳出来。人们也一直试图找出一种简洁方便方法和系统来构建软件。
软件的一个特性是相似性。我们写过大量代码后会发现:很多代码都有相当程度的相似性。我们每个人每天只是重复写其他人写过的代码或者组合别人的代码。软件的相似性,让我们有可能找到组成软件的简单规则和基本元素。
首先每一个软件的基本架构所包含的要素都是相同的,如界面、实体、功能等等。将基本要素用结构化的数据描述组成一种模型,可以称其为基本模型。
![基本模型和插件示意图](http://www.imodeltools.com/images/screenshot/PluginDiagram.jpeg)
基本模型是软件系统的共性,插件模型是软件的特殊性。特殊性建立在共性基础之上。基本模型是固定的,插件模型是多样的。当遇到新的模式,只需增加新的插件或者新的属性。这样就能解决软件多样性的问题,做出丰富的软件功能。
构造插件模型的方法和人们归纳认识新事物相似:观察特性,归纳共性,创立新概念,建立新模型供人使用。使用插件让软件复用更加容易和有效。
如 果将软件元数据比作骨架,将不容易修改代码比作肌肉,那么现在的软件全部用代码构成,就像软体动物一样,只有肌肉组织没有骨架,不能适应变化。“基本模 型+插件模型”的方式将软件的基本架构用结构化的数据描述,将实现功能的代码以插件的形式附着在这些基本结构之上,这样的软件就像有骨有肉的脊柱动物,适 应性更广阔的环境。
目 前虽然有一些公司也提供模型驱动开发平台,但大部分都停留在使用基本模型描述软件系统这一阶段,没有提供通过插件或其他方式扩展基本模型的功能,这样开发 人只能使用平台提供的大量内置功能,平台提供的无用功能无法去掉,而用户需要的特殊功能加不进去。很难扩展平台的本身,因此很难做出丰富多样的软件。
通 过多年摸索和实践,西安赛斐软件公司开发出一套模型驱动的软件开发平台—iModelStudio。它包括建模工具和模型运行引擎,使用“基本模型+插件 模型”的方法描述和构建软件系统。它使用基本模型描述软件的各个部件和基本功能,用插件模型描述特殊的业务功能,用模型引擎加载并运行模型,在运行态修改 模型、调整插件,同时iModelStudio 实现了抽象模型、模型继承、模型接口等高级模型复用技术,进一步简化开发步骤,快速完成软件开发。
iModel Studio 让计算机直接运行抽象层次较高的模型,而不是低级的代码,解决了设计人员、编程人员和计算机因为使用不同语言需要互相翻译而产生的"阻抗“的问题。
iModel Studio使用微内核技术,它的运行引擎很小,基本模型也只包括了实体、界面、功能、菜单等软件基本元素,但它同时包括了超过100个插件模型,使用这 些插件,可以简单地处理极为复杂的企业级应用逻辑。最为难能可贵的是它的建模工具本身也是使用“模型+插件”配置出来的,实现了模型工具的自描述功能。在 此基础之上用户也可以使用“模型+插件”这一概念,通过自定义模型和插件扩展平台本身,从而实现任何复杂的应用系统。
使 用过面向过程、面向对象的语言和各种设计模式之后,首次遇到模型驱动的开发方法时,多数设计师会认为模型就是构建软件的基石。但是模型驱动方法已经提出近 十年,一直没有推广开来。我们认为它没有有效解决软件多样性的问题,也没有充分归纳软件的相似性。而基本模型和插件模型相结合的技术,解决了单一模型和软 件多样性的的矛盾,是软件开发方法从面向机器、面向过程、面向对象到面向模型发展道路上一个新的里程碑。
转载请注明出处 jlee2cacn@gmail.com