倪光南:SOA标准与构件技术的结合


 2007-05-30 00:00:00       759

SOA标准与构件技术的结合
倪光南

软件从它诞生之日起就带着“手工”生产的烙印,甚至有人将软件看作是程序员的“艺术作品”,而“艺术作品”当然是只能用“手工”方式生产的。这些年来,尽管软件发展得愈来愈大,愈来愈复杂,但它的生产率仍然十分低下。颇有讽刺意味的是,当一些传统行业,比如制造业,在软件的帮助下走向自动生产、柔性制造时,软件本身的生产却仍然远离自动化、缺乏灵活性,基本上还停留在落后的“手工”生产阶段。

在IT领域,作为孪生兄弟的硬件和软件,经过了几十年以后,这两兄弟的差距却愈来愈大了。这些年来,硬件的发展始终遵循着“摩尔定律”,每一年半性能翻一番,而支撑着硬件的这种指数律增长的是硬件的自动设计技术,即EDA技术。依托EDA工具,硬件的设计已经达到了高度的自动化,例如一个开发组可以在几个月的时间里设计出包含百万晶体管甚至千万晶体管的集成电路芯片。相比之下,软件的发展并没有类似的“摩尔定律”,软件落后的“手工”生产方式使软件的发展大大落后于硬件,比如软件规模似乎只能以很慢的速度增长,从Windows 3.1发展到Windows 2000,在9年的时间里源代码行数只增长了9倍左右。

我们可以对软件生产率作个估算。中国一些公司的经验表明,从零开始,开发百万行源代码等级的大型软件,几百人的团队大约需要五、六年时间才能达到实用水平。折算起来,也就是每人年约2000行源代码而已。最近欧盟关于开源软件的研究报告(《开源软件对欧盟信息通信技术(ICT)部门创新与竞争力的影响》)对开源软件Debian 3.1作了估计,它的2.21亿行源代码如果由专门程序员开发,将需要16.4万人年,折算起来,也就是每人年约1300行源代码。由此可见,大型软件的生产率每人年只有一、二千行源代码,而且软件愈大,生产率愈低。

图灵奖获得者、计算机科学家布鲁克斯曾在其著名文章《没有银弹》一文中提出一个论断:“没有一种单纯的技术或管理上的进步,能够独立地承诺在10年内大幅度地提高软件的生产率、可靠性和简洁性”。他的这个论断是要强调,提高软件生产率是多么困难!但即使如此,人们还是要朝这个方向努力,因为对此有迫切的需求。

首先,提高软件生产率是软件厂商的迫切要求。今天,几乎所有的软件公司都不能摆脱软件计划延迟、开发预算超支、版本不能及时推出的困扰;至于软件缺陷更是无法避免,人们不得不一次次地发布补丁,而又一次次地发现新的缺陷。

其次,提高软件生产率也是用户的迫切要求。现在的企业面临激烈的竞争,为了提高竞争力,就要推进信息化。如按需求重新开发软件,无论是自己开发还是委托软件公司开发都需要很长的时间;如是购买现存的通用软件,也需要进行定制,同样非常费时。即使软件开发或定制出来了,但市场情况瞬息万变,软件应当能快速响应,而现在的软件却很难做到。所以,很多企业的业务都受到软件的制约。总之,软件厂商也好,软件用户也好,都希望能突破软件生产率的瓶颈,寻找解决这一问题的出路。

布鲁克斯认为,提高软件生产率不能由一种技术或管理的进步达到,也就是不能用一颗“银弹”解决问题,他也许是对的。但是否会有某些技术或管理对提高软件生产率产生重要的、甚至是决定的作用呢?也就是说,如果不能用一颗“银弹”,那么是否能用一些“银弹”解决问题呢?

构件技术显然有可能成为这样的“银弹”。在集成电路领域,构件技术取得了极大的成功,硬件的构件小至“标准单元”,大到“IP核”,都可以在集成电路设计中复用,大大提高了硬件的生产率。可是软件的构件概念提出了多年,却很难实现产业化,看来至少有两方面的原因。一方面原因是,将软件构件技术产业化需要有一个高效、实用的构件平台。正如普元公司的经验所表明的,它们开发了EOS中间件平台,即一个以构件为核心的生态系统,包括了构件运行环境、开发环境、应用管理环境、基础性的公共构件库、以及面向构件的方法学和经验论,有了这样的平台,很多用户就容易采纳构件技术,并容易取得成效。

另一方面原因是缺乏标准。虽然从软件本身来看,一个成熟的软件,其中有60%-70%的功能是可以被复用的,但是现实情况是,当我们淘汰一个软件的时候,往往是把它完全抛弃掉,然后再重新设计一个拥有诸多类似功能和少量新鲜功能的软件。这是由软件程序本身的编写规则决定的,拥有数百万行源代码的程序几乎没有人能完全看懂,也极难维护和更新。长期以来,软件行业缺乏一个标准,每个企业的标准都不一样,难以形成足够的标准化的构件。好在这个问题现在可以解决了,服务导向架构SOA已经成为行业标准,符合服务构件架构SCA标准的构件将可在一切遵循这一标准的系统中复用,从而使多年以来软件界所追求的“软件工业化生产”、“软件工厂”等等理念得到实践的机会。

令人高兴的是,在这方面中国有后发优势。发达国家的银行、通信等等行业的软件系统基本上在90年代初就已完成,如今要用新的构件技术将以往的系统推翻重来是相当困难的,因此对构件技术的市场需求不大。而中国的情况是,大部分企业的信息化还处于基础建设阶段,很多软件系统都是空白,最适合采用新的构件技术,因此对构件技术有巨大的市场需求。这也正是近年来构件技术在外国止步不前,而在中国却获得广阔发展空间的重要原因。同时,在中国发展构件技术另一个好处是,中国企业数量庞大,情况也复杂多变,这样,我们在设计构件的时候,能够有足够多的样本,构成更完善的构件库,使构件方法的软件生产达到更高的效率。

现在我们可以勾勒一下构件技术将为企业信息化带来的变化。过去我们对于企业软件的概念是ERP、CRM等等,当业务部门有需求之后,规划出一个三、五年的时间开发一套庞大的程序来满足需求。但是现在我们可以按照细小的业务流程来设计每一个流程的小软件作为服务构件,再将成百上千个这样的服务构件集合起来,构成整个公司的IT系统。一旦某个业务流程需要改变,就可以将与之关联的服务构件抽取出来,重新编写,再镶嵌进去,构成一个新系统。这样一来,企业的信息系统将能随需应变,而不必像以往那样,当一个固定的系统用上若干年过时以后,不得不全部抛弃,重新开发一套新系统。

总之,中国的特殊国情是构件技术在中国得以迅速发展的重要原因,这也是中国企业参与制订国际软件标准的契机。我们高兴地看到,普元公司已成为SOA标准有关国际组织(OASIS和OSOA)的核心成员,正在为制订服务构件架构和服务数据对象(SCA/SDO )的标准作出积极的贡献。我们相信,随着中国软件企业自主创新能力的增强,它们一定会在国际标准组织中发挥更大的作用。

我们期待着,在广大软件企业和用户的努力下,SOA标准和构件技术的结合能成为提高软件生产率的一颗“银弹”。


 

相关阅读: