……
举个例子:我以前每次做项目总是会积累一些通用的东西,并且做成中间件,融入到开发框架之中去。也因此,每次做项目时也会特别高效,很多上个项目已经解决的问题,这个项目就不必再去做了,直接在框架中调用就可以。比如,界面这个很烦琐的东西,被我做成了一系列通用类,用的时候只需要做简单的继承就可以,根本不用再考虑按钮大小、位置、字体这些细节。(不过也因此,我做的界面是千篇一律的难看。)经过这种不断去做同一类项目,不断积累,最终做成了一个通用性很强的开发框架。再开发类似项目时,几乎不再需要花什么时间,只需要根据业务特点做很少的修改就可以实现,而且质量比直接开发更有保证。
还想举一个例子。就像钉子和铁的关系,钉子也是一块铁,但是却可以实现普通铁块难以实现的功能。java本质是c语言开发的一种中间件。但是java早已被人们称作和c语言并列的另一种语言,因为它的功能实在太强大了,使用java时,可以在逻辑上完全无视c语言的存在。它的中间件本质已经完全失去了意义。但是,理论上说,java能做的事情,c语言都能做。只不过,做起来会大不一样。实际操作起来,可能有些java可以轻易实现的功能,c语言却因为过于复杂而几乎不可能实现。我觉得,java之所以比c语言强,就是因为在开发这个中间件时,封装了一些全新的理念,形成了全新的开发模式,运用这些模式,可以很轻松的实现以前很复杂的事情。
我举的这些例子,对我们目前的工作作用可能并不大。因为我们几乎没有那样相似的两个项目去做。但是,在一次偶然的机会,我接触到了OME这个大垃圾。那是一个封装了开发过程的JAVA中间件。其设计思想很强,通过其规定的一系列标准过程按部就班的实施,可以实现B/S架构JAVA项目的开发,甚至包括jsp页面都可以自动编码。不过,真正实施起来根本做不到。很少有完全符合OME标准要求的功能需求,因此,那些自动生成的代码反而成了漏洞百出的一堆垃圾。但是,在那些少有的需求中,却可以惊讶地发现,原来java/jsp的开发也可以这么方便。这让我意识到,封装了开发过程的中间件技术在外包项目中会有很大的作用。只不过,运用范围可能比较狭窄。但是,一旦遇上适合的项目,将会大大降低成本和提高质量。
我们已经做了ISO和CMMI这些面向过程的工作。这些工作,正是将已有经验封装进一系列文档,形成一些比较通用的标准过程。但是,软件行业是技术密集型产业,单纯说过程往往导致形而上学,不能完全适用。因此,我觉得我们最终需要的软件过程不是一套,而是一系列。针对不同的技术,不同的项目,我们需要不同的中间产品,大到一个模式、一个框架,小到一个组件、一个通用类、一条规则,应有尽有。作为一个专业的软件工厂,想要在外包产业中独特地低成本、高质量,我们就需要更多的这种封装了过程的中间产品作为支撑,从而形成高质高效低成本的各种标准化生产线。这种中间技术的创新发展绝对不逊于单纯的软硬件技术发展的价值。
……
这种事情不可能一蹴而就,可能要到CMM5以后才可以真正逐渐实现,但是,我们现在也完全可以一边进行CMMI核心过程的开发,一边零散地对各种技术和项目进行总结性的知识管理,不断积累这些独立的中间产品。
……(……是信件中的一些无关内容,已删去)