构件技术,应用软件行业的未来
19世纪,人类文明历经了第一次工业革命—机械的发明;
20世纪,人类文明历经了第二次工业革命—电子的发明;
20世纪末期,人类文明正在历经第三次工业革命—信息产业;
每一次伟大的革命都有惊人的相似之处,如今机器和电力都遍布我们身边的每个角落,已经成为一种重要的生产资料。
软件产业自20世纪70年代的迅猛发展,20世纪90年代中期互联网的产生,已经确实在改变我们的生活了,任何一种划时代革命意义的产业革命,当完成了它的历史使命,它的将来会是什么样子的呢?
软件产业将会是一种基础性行业,作为一种重要的生产资料存在于我们的社会之中。
我有一个梦想,就是应用软件行业能够象家庭装修行业一样。
在中国,八十年代家俱的生产基本上是木匠师傅的拿手好戏,如果家里要想新的家俱,找一个会做木匠活的师傅在你家里看看,确定你的需求,锯、刨、装,这样一个新家俱就产生了。
然而二十年过去了,在城市里,一个家庭要进行装修,装修公司的项目经理(或者叫设计师)拿着一本家俱介绍的册子,了解客户的需求,客户选定了几款家俱,项目经理回公司做出效果图,然后进行施工,完成了一个项目。
在二十年的今天,如果还象以前那样由木匠去了解需求,家庭装修则是很复杂的事情。
同样的事情也发生在我们的应用软件行业,到现在为止,大多数项目经理还在津津乐道如何更好的挖掘客户的需求、如何提供原型让客户进行需求确认、在加班加点指挥他的团队指望在DEADLINE之前给客户看到这个系统,然而看到这个系统仅仅是一个开始,而不是终结,客户才真正告诉你“他的需求”。
开发人员也是从一个一个Button和一个一个Web Form完成一个项目,好一些的公司会给你模块设计说明,更多的是两只袖子一拂就开始干活。
现在的软件行业已经比十年前好得多,我们有.NET技术体系和J2EE技术体系,至少我在写一个Hashtable的时候可以直接用STL或者System.Collections,而不需要自己开发,我们有了基于B/S结构的三层开发结构,有了HTTP协议,有了丰富的HTML表示语言和XML规范语言,有了UML语言进行面向对象的分析的设计。整个软件行业在技术层面已经有了一定的基础积累和复用产生。
然而这一切还不足够,我们很多的开发人员仍然在用这些基础的“技术”层面的类库在开发企业应用系统,一个企业的应用系统有成百上千个类组成,在IDE环境里进行编译。
A项目经理和B项目经理做了一个客户非常近似的项目,已经归档在公司的服务器之中,然后C项目经理又遇到一个客户非常近似的项目,然而很少有C项目经理拿出A项目经理和B项目经理的源程序进行复用,即使做了,也是搭建环境,由开发人员再找到相似的部分,拿出其中的代码,再放到新的系统之中编译,再调试。
这就是中国应用软件行业目前的现状,IT资源严重浪费,开发人员缺乏有效的业务支持框架层、项目粒度太大难以复用。
我们需要构件技术,一种站在业务层面上进行复用和基于项目实践的技术,项目经理可以拿着每一个构件的介绍给客户去了解需求,并迅速搭建一个应用系统,使得客户最快体验到最终效果;我们的开发人员希望直接创建一个部门,如new Department(),而不是写RunSQL(“insert into department….”)。
构件技术发展是应用软件行业的未来,你准备好了么?