一般都倾向于将软件比作建筑,因为建筑的架构和软件框架类似。好的建筑需要好的框架,但是大家忽略了另外一个情况,一个建筑要能居住,不但要好的建筑风格和框架,更需要有好的家居和内部装修,建筑居住的舒适度很大程度上由内部装修细节决定的。装修时家居位置摆放,尺寸大小不但决定着可用性也决定着美观性。装修和家居的风格比建筑的风格更多变化。一些家居如现在的液晶电视生产过程一点不被建筑本身简单。
使用模型驱动方法开发软件,应该将模型区分文基本模型+插件模型, 所谓的基本模型就像建筑框架本身,实现了软件的总体架构,而插件模型就是建筑内部的装修和家居。插件附着在各种不同的基本模型之上,有不同的参数调整,完成特殊的功能,表现丰富的变化。软件的功能陷阱都在细节当中。基本模型不需要太复杂,插件模型可有开发很多甚至相同功能根据复杂程度的插件可以开发多个,就像我们家里的电视有很多型号一样,开发者的主要工作是选择插件和调整参数。虽然有一些插件实现非常复杂,但选择配置却非常简单。
大部分开发平台要不就只是一个框架结构需要程序进一步细化,要不然就包括一个架构和一套固定的功能风格。开发人不要的功能不好去掉,想加入功能不好加入。但是软件需求的多样性不可能千篇一律的,用一套方案实现所有功能的想法是幼稚的。就像在一个房间里装上所有电器一样。
很多平台号称可以不写代码完成80%-90%的工作量。如果你愿意住在一个没有装修过的房子里面,或者一个开发商‘精装修’过的房子里面,那么你可以接受这个观念,如果你需要定制实现你的软件,那么就会发现需要砸掉地板大量改造。这是你会这样平台软件只是让本来并不复杂的事情变得更简单了,让本来复杂的事情变得更复杂了。
开发平台应该让用户可以完全定制,用简单的方法实现最复杂的业务逻辑。最大限度的提高软件可复用型。归纳新的模型,区别事物的一般性特点,承认事物的特殊性,允许开发者建立新的模型,描述特使的模式,开放扩充模型体系. 这也是赛斐软件开发的iModel Studio 模型驱动开发平台所追求的。