也说软件开发与建筑结构

来源:互联网 发布:五笔打字练习软件 编辑:程序博客网 时间:2024/05/01 22:48
       任何一个复杂的系统都应该存在简单的规则,可以使用一些基本元素组合构建而成,这样的系统在数学上被认为是简洁和优美的。这一点在软件中最容易被归纳出来,人们也一直试图找出一种更简洁方便方法和系统来构建软件。

软件的一个特性是相似性。我们写过大量代码后会发现:很多代码都有相当程度的相似性。我们每个人每天只是重复写其他人写过的代码或者组合别人的代码,而根据软件的相似性,让我们有可能找到组成软件的简单规则和基本元素。

首先每一个软件的基本架构所包含的要素都是相同的,如界面、实体、功能等等。将基本要素用结构化的数据描述组成一种模型,可以称其为基本模型。

其次软件的处理模式有相似性, 如果我们为这种模式命名,用属性描述模式的变化,最后抽象成另一种模型,我们称之为插件模型。这些模型依附于基本模型。

基本模型是软件系统的共性,插件模型是软件的特殊性。特殊性建立在共性基础之上。基本模型是固定的,插件模型是多样的。当遇到新的模式,只需增加新的插件或者新的属性,这样就能解决软件多样性的问题,做出丰富的软件功能。

构造插件模型的方法和人们归纳认识新事物相似:观察特性,归纳共性,创立新概念,建立新模型供人使用。使用插件让软件复用更加容易和有效。

如果将软件元数据比作骨架,将不容易修改代码比作肌肉,那么现在的软件全部用代码构成,就像软体动物一样,只有肌肉组织没有骨架,不能适应变化。“基本模型+插件模型”的方式将软件的基本架构用结构化的数据描述,将实现功能的代码以插件的形式附着在这些基本结构之上,这样的软件就像有骨有肉的脊柱动物,能适应性更加广阔的环境。

目前大多数开发平台停留在使用一套基本模型描述软件系统这一阶段,没有提供通过插件或其他方式扩展基本模型的功能,这样开发人只能使用平台提供的大量内置功能,平台提供的无用功能无法去掉,而用户需要的特殊功能加不进去,很难扩展平台的本身,因此很难做出丰富多样的软件。

一个模型驱动的开发平台需要包括建模工具和模型运行引擎,可以使用“基本模型+插件模型”的方法描述和构建软件系统。基本模型用于描述软件的各个部件和基本功能,插件模型用于描述特殊的业务功能。用引擎加载并运行模型,在运行态修改模型、调整插件。也可以实现抽象模型、模型继承、模型接口等高级模型复用技术,进一步简化开发步骤,快速完成软件开发。

开发平台让计算机直接运行抽象层次较高的模型,而不是低级的代码,可以解决设计人员、编程人员和计算机因为使用不同语言需要互相翻译而产生的"阻抗“的问题。

使用"基本模型+插件模型“让平台比较容易实现,可以使用微内核技术,实现一个比较小的引擎,基本模型包括实体、界面、功能、菜单等软件基本元素,可以增加大量的插件模型处理各种特殊需求,使用这些方方面面的插件,可以简单地处理极为复杂的企业级应用逻辑。甚至建模工具本身也是使用“模型+插件”配置出来的,可以实现模型工具的自描述功能。其他开发者也可以使用“模型+插件”这一概念,通过自定义模型和插件扩展平台本身,从而实现任何复杂的应用系统。

使用过面向过程、面向对象的语言和各种设计模式之后,首次遇到模型驱动的开发方法时,多数设计师会认为模型就是构建软件的基石。但是模型驱动方法已经提出近十年,一直没有推广开来。归根结底是因为它没有有效解决软件多样性的问题,也没有充分归纳软件的相似性。而基本模型和插件模型相结合的技术,解决了单一模型和软件多样性的的矛盾,是软件开发方法从面向机器、面向过程、面向对象到面向模型发展道路上一个新的里程碑。

赛斐软件公司的iModel Studio就是根据这些方法实现的模型驱动软件开发平台。

转载请注明出处 jlee2cacn@gmail.com 和我们的网址
原创粉丝点击