现在的位置: 首页 > 综合 > 正文

软件开发方法的进化

2014年01月01日 ⁄ 综合 ⁄ 共 1833字 ⁄ 字号 评论关闭

软件开发方法的进化

 

从面向过程编程时代的“数据结构+算法”到面向对象时代的“组件式开发”,与现在正要火起来的面向模型,有什么规律可循呢?其实,总得来说是为了适应新的软件开发需求。

90年代以前的软件规模都比较小,相对于现在的系统而言不算太复杂,所以以数据结构定义数据的组织形式,以函数为数据处理的运算单元,这样就有了“数据结构+算法“的概念,当然,这样的程序也足已解决当时的问题。但随着应用需求的变化,导致软件越来越复杂,越来庞大,软件的开发和维护都变得越来越困难,面向过程的开发方法越来越不能胜任大型系统的开发,在这种需求下产生了面向对象的开发方法,把数据结构和数据处理逻辑都封装在一个对象中,只暴露出公有的属性,事件,方法供调用者访问,这样是解决了面向过程编程中的数据与操作数据的方法分离的问题,把一个对象及其要处理的数据都封装在一起,通过对象之间的调用与事件的订阅来实现对象之间的交互,这确实是软件开发方法中的一大进步,已经非常贴进现实世界了,但是也有其不足的地方,软件生成后就是一个有操作面板的黑箱子,如果软件不在变化,则这种方法也不错,操作箱子上的控件面板来控制整个系统,不过这样产生的软件天生的缺陷就是随着需求的变动更改系统将变的非常困难,虽然有开发文档和原代码做辅助,但还是得在复杂的变更后进行重新编译并发布的痛苦过程,这样的系统不但维护起来复杂而且也会中断用户的使用,想象一下以前不能热插拨的硬盘接口在一个大型的不间断服务系统中变更起来是多么的麻烦,必须停机才能更换或增加硬盘,而现在的可热插拨的磁盘系统无需服务器停机就能实现即插即用,再看现在电脑系统的可热插拨的usb接口,不用关机就能随时增加外设的连接,还有一个例子就是飞机的空中加油机,飞行中进行加油,真是伟大的发明,不过这些强大的功能都是经过事先精确的设计才实现的,软件系统也在经历着变化,如果不改变开发方法,则没办法做到运行中维护系统,想想为了实现这种动态特性软件人做出的努力,靜态链接库是在编译进链接,动态链接库是在运行中需要时链接,编译型的系统必须编译才能运行,解释型的虚拟机系统直接可以解释运行脚本,但如何为运行中的软件动态增加或修改一个模块且随时能挂接在已有系统中呢?

软件系统应该学学计算机硬件架构的设计,预设一些标准的接口,为将来的应用做准备,而软件系统想要在运行态就能变更与维护系统则也必须定义一预留接口,为将来的变更做准备,和计算机硬件一样,软件也必须有一块母板,以后的扩展都在这块母板上进行,那么,什么是软件系统的母板呢?操作系统算是软件系统的母板,不过这块母板与硬件相关性太大了,对于变化的应用软件来说并不适合做母板,再往上一层就是各种基础支撑系统,如j2ee平台,.net平台等,这种平台随然可以隔离与硬直接相关,但此层也只是包装了对操作系统的分类调用,可以做为母板运行的平台,但不能做为母板,那么这个母板只能在此层之上了,现在流行的业务平台就是一种母板,但现在的业务平台也只是站在软件层面将面向对象的“黑箱子”再次包装一下并能对下层支撑平台进行访问,也是需要编写代码并编译后运行,并不具备母板的即插即用特性,在这种情况下,模型驱动开发方法带来了实现这种特性的可能,以软件模型为中心,将模型定义与模型实现相分离,使用模型引擎运行模型定义,在运行态对模型进行的维护可以直接体现在运行效果上,从而在理论上实现了运行态的软件维护能力。

iModel做为一款面象模型驱动的开发与运行平台,则可以完全实现此这种即插即用的要求,该平台以基本模型定义软件基本结构与功能,使用运行引擎读取模型定义并实现定义的基本软件功能,并已在基本模型上定义了可扩展的接口,以插件模型定义与基本模型相适应的插件的规范,并用插件运行库实现此规范,系统在运行过程实现插件的增加,调整与卸载,并能即时的看到系统变更的运行效果,iModel的插件不同于一般意义上的插件,它是一种可以带参数的进一步扩展基本模型功能的可复用的软件组件。插件挂在基本模型对象上(也就是插件的主体对象),让主体对象实现一定的业务规则或者完成一定的功能。插件可以自动响应主体对象的消息并完成相关操作。iModel用这种创新的方法实现了运行态软件的即插即用。

iModel是一款即插即用的软件开发与运行平台,iModel平台涵盖软件的设计,开发,测试,运行,维护,更新和发布等整个生命周期;对于大型复杂系统的开发与维护都提供最佳的解决方案。

 

抱歉!评论已关闭.