|首页|产品介绍|优秀论文|关于我们|诚聘英才|联系我们|
 
软件拒绝喜新厌旧
 

模式化轻松重用过去

 

软件拒绝喜新厌旧

 

重用软件再工程的灵魂

 

举一反三的结果——面向模式的Web化再工程辅助平台eVWB

 

Web化再工程的两种整体解决方案

 
北京工业大学软件工程研究所 赵晓华

  差不多20年前,笔者在国外一个超一流软件公司的系统综合研究所做程序员工作,周围一些软件工程技术人员竟不约而同地“点拨”笔者:“做完的程序就像泼出去的水,切莫再看!”

    大约在1988年,有人第一次发现了“千年虫”。此后世界性的“Y2K除虫运动”一直延续到2001年年底,人们不得不把那些“泼出去的水”收回来,从洪水般的源代码“陈年谷子”中寻找那些芝麻般的“时间变量”,虽然不过是有限变量长度和类型的修改,但其影响几乎波及了西方世界近75%的企业,调动了据说百万人年数量级的软件人力。如今虽然时过境迁,有识者却再也不敢掉以轻心,因为他们清楚地看到了那些滋养了“千年虫”的大量程序仍然生存在世界的各个角落,而谁又敢说不再有别的什么“虫”仍在暗中“蠕动”?

    越是庞大、悠久的软件系统,它们沉淀的历史遗产越雄厚,所以越是不能淘汰。与硬件频繁更新的逻辑不同,“继承过去”是软件的立身之本,身后的历史越长,前面的路越宽。

    软件工程进入再工程时代 软件工程进入再工程时代的呼声起于20世纪90年代初,当时更多的提法是软件重用(Reuse)。实际上可以说是用“重用”的旗帜为再工程开道。这样引出再工程,是软件工程理论先导的远见卓识,因为重用是软件工程的最高境界。

     然而最初的再工程,像“Y2K”,多是被逼出来的。正如30多年前的软件工程也是时势所造一样。如果把1968年软件工程方法学体系诞生的原动力看做是计算机应用瓶颈从硬件转到软件,那么这30多年来,硬件发展速度和更新换代周期(据统计目前大致四个月到一年半)均呈指数型递增,而软件生产率至多是螺旋形、波动形或线性发展,总也追不上硬件,始终也没能把当年的瓶颈拓宽。一方面由于软件工程方法学理论的进步、软件开发人员的成熟,软件的覆盖面越来越大,从操作系统到应用软件,无不在功能、性能、普及率以及换代周期上今非昔比;但另一方面下面所述现象也是一些不争的事实:
查看大图
● 新开发与既存软件维护比例反向逆转,且逆转速度越来越快(参看图1)。有资料表明,20世纪90年代以后,先进国家的既存软件维护性开发已占软件开发总量的80%以上。

● 据报道,“千年虫”影响的软件仅占先进国家既存软件的20%,它们经过小修小补后依然运行在世界各地,特别是导入计算机较早的一些重要应用领域,例如银行、证券、物流乃至政府、军队等。

查看大图


● 硬件和操作系统平台的升级换代周期越来越短,换代比例越来越高。然而半个世纪以来,大部分软件资产并没能像硬件那样频繁地经历彻底的更新换代,为了适应硬件的飞速换代,环境适应性维护周期也越来越短,范围越来越大。
● 数据——这一系统赖以存在、也是系统价值标志的基石——越积累越多,却从未彻底进行过合理重组……
如此看来,软件开发人员的担子越来越重。

    20多年前曾有人预言:软件进入维护期的比例将随软件递增率一起增长,进入21世纪后将有80%的软件人员从事维护性开发。从软件的价值随着生存期而递增(参看图2)的特点来看,这并不违背市场经济的价值规律。

    什么是再工程?

    图3给出了一个软件生存期示意图,再工程处于软件生存期的维护期。所以要研究再工程首先要研究软件维护(Software Maintenance)。

    ANSI/IEEE在20世纪80年代是这样定义软件维护的:“软件维护是指软件成品提供使用后,为了修改差错、改善功能和性能、适应环境变化而进行的软件修正。”具体说软件维护分为4类:改正性维护、适应性维护、完善性维护和预防性维护。

    而再工程是对一次工程后的成品软件进行再次开发,软件维护期的适应性、完善性、预防性维护都属于再工程范畴。再工程面对的不是原始需求,而是既存软件,是从既存软件开发出新软件的过程,为了与软件从无到有的第一次开发相区别,有必要引入如下概念:

    正向工程(Forward Engineering):由抽象的、逻辑性的、不依存代码的设计逐步展开,直至具体代码实现的开发活动,即从需求规格设计到产品初次发布的过程或子过程。

    逆向工程(Reverse Engineering):即对既存系统的分析过程,明确系统各组成部分及其相互间的关系,并将系统以其他形式来表现。

    再工程(Reengineering):也称再加工(Renovation),是对既存软件系统进行调查,并将其重构为新形式代码的开发过程。逆向过程从源代码出发,旨在取得高一级抽象成果,再工程根据对对象系统更深层次的理解将其重构为另一种形式的软件产品。即:再工程=逆向工程+正向工程。再工程这一用语也常用于业务过程再工程(BPR),有时为了与BPR相区分,通常将这里的再工程称为软件再工程(Software Reengineering)。

查看大图
  <1> <2>
 

版权声明

北京工业大学软件工程研究所 版权所有
建议使用:1024*768分辨率,16位以上颜色、
Netscape6.0、IE5.0以上版本浏览器和中文大字符集
网页设计:软件工程研究所