软件构件技术的发展及前瞻

    回顾经典的工业化革命,我们可以得出这样的有益启示,即功能再复杂的产品都是由大量标准的零件组成,零件在生产线上装配成一个成品,所有零件在成品中共同发挥作用;分工越细致、专业生产的程度越高,总体的生产效率就越高。当今,软件的构件技术也扮演着相同的角色,它把零件、生产线和装配运行的概念运用在在软件工业中,并取得了初步成效。可以预见,软构件技术将是软件产业化革命的必然发展趋势。

一、构件技术的历史渊源

    1968年的`NATO软件工程会议上,Mcllroy在提交会议的论文《大量生产的软件构件》中,提出了“软件组装生产线”的思想。从那以后,采用构件技术实现软件复用,采用“搭积木”的方式生产软件,成为软件开发人员长期的梦想。20世纪九十年代初,中国科学院的杨芙清院士也同样提出了构件化软件体系的设想。海内外学者不谋而合对面向构件技术展开的大量探索,归根结底是为了解决软件开发中如何能“让同一个轮子可以用于不同车”的问题。在过去几十年中,尽管软件开发的主流思想几经沿革,软件业一直没有放弃对构件技术的探索和尝试。
  60年代末到80年代初,结构化的软件开发思想占主导地位,当时的复用是函数复用和模块复用。函数通过参数来适应不同应用需求的变化,package模块也是通过接口规范说明进行连接和组装实现复用。但是,由于结构化的软件存在极大隐患,函数层面的复用能力有限,其结果是系统结构混乱,效率低,软件成份复用性差。函数复用和模块复用没有解决软件工程的危机。
  80年代起,面向对象的软件开发思想迅速发展起来,通过类的封装、继承和应用,面向对象的软件开发成功的实现代码级的复用。类和封装性、继承性,实现数据抽象和信息隐蔽,提高了代码复用性。面向对象技术被公认为当前的主流技术。但是,面向对象的复用脱离不了代码级复用的本质,由于复用的颗粒较低,软件开发中的复用潜力远远没有发挥出来,类复用也没有解决软件工程的危机。
  在互联网应用时代到来之际,软件的应用需求及其复杂性又大大增加。而构件技术在互联网时代有了长足进步,已经为实现软件复用的梦想、切实解决软件危机带来了喜人的曙光!

二、软件体系的变革之路

    1999年,计算机科学家布鲁克斯(Frederick Phillips Brooks,Jr.)以近70岁的高龄获得了图灵奖。这位数十年来蜚声世界的软硬件专家、教育家曾在其《没有银弹》(1986)一文中,提出了一个迄今为止尚未被打破的著名论断:“没有一种单纯的技术或管理上的进步,能够独立地承诺在10年内大幅度地提高软件的生产率、可靠性和简洁性”。在某种意义上,布鲁克斯的观点是正确的——如果不能对基于代码的软件体系进行彻底的革新,那么在今后10年(甚至更久)的时间里,我们仍会在繁复迂曲的代码迷宫中遭遇“陷阱”。
确实,直到上个世纪末的20多年来,软件行业的生产效率依然没有数量级的提高,软件在帮助传统行业提高效率的同时,自身却成为最原始意义上的“手工行业”。虽然,许多大型的企业级应用软件采取了大规模的生产和协作,但是这种软件往往开发时间长,效率低,无法动态调整,无法由僵硬变得灵活和敏捷。软件业也需要脱离手工作坊时代和工业时代走进敏捷定制的后工业时代,而构件技术的发展正是软件体系大幅度跃进的变革之路。
    1、软件结构的变革
    要解决大型应用软件的难题,必须首先解决软件的结构问题。汇编语言的出现,使软件告别了“0”与“1”组成的“天书”。其后软件的车轮走过高级语言、面向对象、面向服务等不同阶段。直至面向构件的软件技术出现,软件技术人员才将挣脱面对大段冗长代码的泥潭。在面向构件的软件中,一个应用系统不是由上百万行的代码组成的,而是由几千个构件经过可视化组装而成的。系统的复杂度有了数量级的下降,而图形化的组装使软件跟应用设计合二为一。
作为对代码式软件体系的颠覆和革新,面向构件的软件体系首先从表达层面填平了代码表达与图形化知识表达两者间的鸿沟,彻底消除了软件源代码与软件设计思路之间的断层。主要优势在于:用户的需求改变可以直接通过构件装配式的图形化设计思路得以体现;永久的屏蔽软件代码层,可以让软件架构师和程序员跳出传统开发模式的局限,只需和图形化的构件打交道,在彻底进化软件表达的同时,也使其改动与维护易如反掌。
    在面向构件的软件思路下,简洁表达带来了简洁的软件更新——“随需应变”不再只是一句口号。面向构件的软件体系,松散耦合的构件组装方式,系统不同部件之间的低关联度。重复使用经过考验的构件,可视化的知识表达,系统复杂指数的数量级下降,也使得企业应用更为成熟与稳定。
    2、软件生产方式的变革
    软件在传统的企业应用模式中,是为某一个部门服务的,也是以其所完成的功能表述的,如可以把企业应用分割为人事、财务、行政、ERP、CRM、SCM、BI等等;而在互联网的应用中,横向的部门互动、实时的企业间互动、多样的交互渠道、灵活的业务规则,使得原先意义上的“独立应用”不复存在。客户应用模式的变化,从根本上对软件企业及其产品提出了更高的要求。
    面向构件的技术,彻底打破了原有软件基于代码层开发的固有模式,使之完全可以构筑在“构件组装”的模式之上。这样,软件技术人员可以摆脱“一行行写代码”的低效环节,直接进入“一块块搭配构件”的更高阶段。这种新的生产方式,以“构件”取代“代码”成为软件的“信息原子”(基本结构单元)。作为软件代码的集合,构件可以完成一个或多个功能的特定服务,也为用户提供了多个接口。并且随着构件库的不断充实和完善,灵活的构件、集成式的软件结构,将把搭积木式的“组装软件”从梦想变为现实,实现契合互联网时代应用需求的全部软件功能。这样,面向构件的产品不仅将在客户需求吻合度、上线时间、软件质量上领先于同类产品,大大提高了项目的成功率,而且对软件的开发和维护变得空前简单,客户可以随时随地获取应对商业环境变化和IT技术变化的最新信息化方案,真正实现“敏捷定制”,这种解决思路必将为当前的大型企业应用产品画上一个历史性的圆满句号。不久我们看到的企业解决方案将会面目一新,不再单一固化;它是一组或多组面向构件的模块,按照企业自身需要灵活组装,并随着企业的变化不断重组重构、动态匹配,快速实现像硬件那样的任意装配定制。
    3、软件产业的变革
    目前,全球范围内的软件从业者都在探寻着“提高软件开发效率”的可行途径,其关键在于提高软件的复用能力和复用程度。有研究报告显示:“一个软件的60%-70%的功能是可以被复用的。”然而现实情况则是,不同的企业总是不断在为其客户开发着几近相同的“轮子”。毫无疑问,只有面向构件才能让企业这驾战车(包括软件公司和客户在内)在“软件复用之路”上奔驰得更加迅疾、更加平稳。据不完全统计,目前国内外已经有相当一部分前瞻性厂商,开始尝试新的软件体系产业化的过程。与此同时,面向构件的技术还将会极大地促进应用市场的发展。未来以面向构件技术为基础的软件产业必将催生出众多的应用构件厂商,从而形成社会化的分工和交换。这种分工协作带来的明显好处是,面向构件的应用软件在成本、质量、交货期等方面的竞争力,将远远超越传统的软件体系结构下的应用软件。
    分析面向构件的软件产业的生命周期,大致可划分为五个阶段:创新期、接受期、成熟期早期、成熟期晚期和衰退期。如今,面向构件的软件生产已经跨过了接受期,其标志是面向构件的软件生产思想开始商业化,单个厂商开始采用面向构件的软件生产方式。然而,接受期和成熟期早期之间的产业鸿沟依旧存在。构件理念由接受期向成熟期早期进化,单点突破很多,但尚未形成生态链。可以预见,一旦跨越产业鸿沟,整体产业发展将经历巨变,我们将面临一个雪崩式的发展阶段——根据Gartner Group的预测:“到2005年至少70%的新应用将主要建立在如软件构件和应用框架这类‘构造块’之上。”在我国,构件化软件的探索也已悄然前行,国务院信息化工作办公室在《振兴软件产业行动纲要(2002年至2005年)》中,多次提到推广应用软件构件和复用技术,加快构件技术发展的目标要求。国内已经有一些厂商开始通过联盟的方式推动面向构件的软件体系的发展。毋庸置疑,新体系将为中国软件产业提供“后发先至”的宝贵机遇!

三、面向构件的应用基础平台

        面向构件的软件体系为软件业勾画了一个”美丽新世界“,在这种体系下,面向构件的互联网应用基础平台必然会应运而生,并将成为新体系的主角。
        从技术层面看,面向构件的软件技术需要解决构件之间的通信和互操作的问题,应用基础平台可以提供基础设施及”管道“,使得构件之间可以相互通信。在构件的开发与生产过程中:确定构件在分层的架构中的位置、确定组件的类型、确定包装和适配器、定义构件的范围以及构件的规格说明等,这一系列的操作必须要有一个平台来管理和方便的实现。同时,由于企业网络资源层面常常会发生变动,不同的企业网络资源层面也不同,软件产品部署和运行的环境常常都需要动态的进行,因此也需要一个良好的平台。此外,随着构件数量和规模的不断扩大,构件库的管理变得十分重要,包括构件查找、构件扩充、构件的更新等,也很需要有一个坚实的技术平台来支撑。
  从产业层面看,平台的诞生也是软件业进行分工专业化的特殊标志。软件平台层级的不断分化是人们对软件不断进行抽象和提炼的过程,新的层级的出现总是为应用软件开发提供了坚实的基础。构件技术的开发部署环境和构件运行所需要的基础设施开发的难度很大,如果所有的厂商都从环境和基础设施层做起,显然会造成社会资源的极大浪费,因此,面向构件技术革命的兴起,需要有专业提供应用基础设施的厂商,以形成产业中的有效分工,提高产业整体的效率。
  从应用层面看,基于互联网的应用时代,人们期望通过无所不在的应用终端实现随时随地的移动计算,分布式处理的中间件已经和操作系统、数据库一样成为一种计算资源。为了屏蔽各种不同操作系统、数据库、中间件以及各种不同硬件、网络资源之间的差别,互联网应用基础平台正是在这种趋势下应运而生了。显而易见,面向构件的应用软件体系的实现,迫切需要面向构件的互联网应用基础平台的支撑,不久专业的应用基础平台提供商必然会随着产业革命的浪潮走向产业前端!

四、基于构件的应用软件开发

    基于构件的应用软件开发的核心问题是:如何提取可复用构件以及如何组装成系统并能实现互操作。目前探讨的软件体系结构、构件模型,均是为解决构件之间的接口实现互操作。近年来国际上各种软件公司正在开发各种中间件产品或领域构件,但它们离集成应用软件所需要的构件还有很大距离,常常是不能拿来就用。特别是一些与领域有关的专用构件,还必须要由我国自主开发。针对基于构件的应用软件开发过程,我国软件界前驱者提出以下三个阶段的生命周期:第一阶段为需求获取,采用仿真办法,描述客观世界的人工系统。第二阶段是分析客观系统,设计出逻辑系统,即所称的领域分析。第三阶段为系统集成,找到合适构件类,将其生成实例,用过程控制语言描述出系统中的各子系统;配置用户喜爱的操作界面;生成各种输入输出构件实例等。最后集成系统,通过实际运行,不断修改,直到用户完全满意为止。这种方法也能适应今后系统的演化,一旦领域软件系统形成后,在开发同一领域的应用软件时仅仅是第三阶段的工作,用户自己可以来完成,维护工作也大大减轻。
  在上述开发过程中,软件开发人员可以分工去做。先由咨询公司或软件公司完成第一、第二阶段工作,后由软件产品开发公司完成逻辑系统,提供领域分析的设计件、领域专用或通用的构件类库以及系统集成专用平台,再由集成公司或用户自己来完成第三阶段工作。
    软件业变革的帷幕已然拉开,面向构件的软件技术被越来越多的国内外业界专家推崇为软件产业的The One。可以深信,在未来的十年里,我们将有幸目睹软件在面向构件的思想指导下不断发展、日臻成熟。代码式的软件最终会成为历史,软件将以更优美的形式被表达、更优美的方式在生产,并在使用过程中获得更加完美的体验。

(参考文献:《软件的涅磐》  作者:黄柳青)                                                                      

猜你喜欢

转载自blog.csdn.net/zjzcl/article/details/27935