【IT168 技术文章】
从宏观上看,对既存系统进行Web化再工程可以说存在准Web化和真Web化两类方案。借助MetaFrame、HA8000-ie/WebPlanet等软硬件工具使既存系统适应Web计算环境,但并不对既存系统本身进行再构的方案,我们称之为准Web化。相对而言,对既存系统本身进行再构、以适应Web计算环境的方案可以称为真Web化或Web化。Web化再工程解决方案的选择将直接影响具体作业的工作量以及Web化后新系统的性能和生存期。因而在再分析阶段,根据既存系统特点选择合适的解决方案从某种意义上可以说是Web化再工程价值的天平。
真Web化方案
由于Web化再工程前的既存系统基本都不直接支持Web访问,所以采用真Web化方案对其进行再构时,往往需要使用支持Web访问的编程语言重新编写程序去实现既存系统的功能。真 Web化再工程是一个重新构建活动,它需要先对既存系统实施逆向工程,以便建立适当的数据、功能和行为模型。而且真Web化方案需要对既存系统进行二次开发,涉及既存系统分析、应用程序分割、软件构件化等诸多工作。所以采用这种方案进行Web化再工程难度高、手工开发工作量大,不过可以采用一些再工程辅助工具、软件重用等技术来提高软件整体开发效率、保障质量、降低成本。
拥有多年Web化再工程案例经验积累的北京工业大学软件工程研究所自主研发的面向模式的Web化再工程辅助工作台eVWB就能够针对既存系统的特定模式,为其Web化再工程提供最优的整体解决方案。它还为项目成员提供了一个支持再工程全过程的集成工作环境,支持项目管理、过程控制、可重用资源共享等。
真Web化要重新搭建支持Web计算方式的环境,因此需要一定的软硬件投资。不过真 Web化方案可对Web系统进行量身定做的设计,所以相对而言该解决方案会更优。Web化后的系统的可扩展性、负载平衡、容错性等性能的优劣均取决于再工程的实施质量。
真Web化系统经过了再构加工,一般来说具有较好的可维护性。但需要管理、维护既存系统和Web化系统两套独立代码,而在大部分情况下它们都是两种以上语言编写的。
准Web化方案
准Web化方案通常借助一些软硬件工具,例如CITRIX公司开发的应用程序服务器软件MetaFrame、日立制作推出的应用程序网关服务器HA8000-ie/WebPlanet等将既存应用系统发布到Internet/Intranet上实现Web化。如同通过Web浏览器即可访问网上资源一样,用户可以通过MetaFrame的“瘦”客户端软件在任何地方通过Internet/Intranet来运行原系统,原系统的Windows或C/S应用程序只要原封不动地配置在MetaFrame的服务器端即可。而HA8000-ie/WebPlanet则更为简便,只需安装Web浏览器便可实现上述功能。
准Web化方案能够快速地把Windows、Unix和Java应用程序以嵌入和发布的方式转换为HTML页面,而无需重新编写程序代码。其工作量主要集中在测试阶段,大大少于真 Web化方案。
虽然准Web化方案需要购买价格不菲的HA8000-ie/WebPlanet、MetaFrame等软硬件产品,但由于无需二次开发,即可充分利用用户原有的基础设施和应用软件资源,因而有效地降低了总体成本。而且准Web化后系统的可扩展性、负载平衡、容错性等依赖于那些成熟的软硬件工具,通常可以提供较优的性能。
但是,准Web化方案不对既存系统进行修改,因而会全部保留旧系统的结构性缺点,加上准Web化之后的性能依赖于支撑工具,所以可维护性较差,虽然只需管理和维护一套独立的代码。
在笔者所参与的Web化再工程当中,有先因为“急功近利”选用了准Web化方案,后来在时间和经费允许时又要求实现真 Web化方案的情况,毕竟真 Web化方案的性能、可维护性等综合指标都要比准Web化方案好。不过具体问题具体分析,某种方案的某种优势在一定条件下可能会成为劣势,因此没有绝对化的结论。
·小资料2·
几种再工程方法
最近的再工程方法和技术研究热点很多,在实际再工程中,可以从不同角度灵活运用再造、再构、再结构化、文档重构、设计恢复、程序理解等再工程方法和技术。
● 再造(Rebuilding)
以提高可维护性、满足必要的功能追加和需求变更为目的,研究对系统整体进行重新构筑的方法。再造有两种方式,一种是废弃旧系统,在新平台新开发环境下重新开发的淘汰方式;一种是力图保留既存资产的再工程方式。在实际工程中,上述两种方式很难截然分开,多数情况是二者皆有。例如即使是淘汰方式,其重新开发时的上游工程也常常要参考既存资产中的原有文档。
以提高可维护性为目的的再造属于预防性维护,这显然不宜使用淘汰方式;进行功能追加和变更的再造属于完善性维护。如果使用适当的重用技术,淘汰率就可以降下来。
● 再构(Refactoring)
这是当前最受瞩目且成果较多的研究领域之一。它研究改善既存软件设计和代码以达到更理想状态的作业过程。该过程不改变软件外部功能,仅修改软件的内部结构。例如在不改变软件外部功能的前提下进行代码优化、性能优化、引入多线程并行处理方式、采用可供用户选择的多种算法实现同一功能、数据重组等。再构的思路、方法和技术不仅可以用于再工程,也可用于一次工程。再构是本专题后面将重点提及的反面模式解决方案的核心技术。
● 再结构化(Restructuring)
研究同一抽象级上对软件表现形式的变换。新表现形式必须满足原表现形式在含义(Semantics)和外部表现(External Behavior)上均不变的前提条件。与包含抽象粒度从细到粗、再从粗到细不同抽象级的再工程全过程不同,再结构化不涉及跨越软件不同抽象级的变换,它是最基本的再工程组成部分,也是目前最易实现自动化的领域之一。
● 文档重构(Redocumentation)
文档重构属于再结构化的一部分,它集中研究如何由源代码生成近于同一抽象级但与原文档不同形式的新文档,其目的在于得到更加易于理解的文档。
● 设计恢复(Design recovery)
是逆向工程的一部分。它研究如何在系统分析中加入领域知识、外部信息、推理、考察等,以便提升系统表现形式的抽象级。设计恢复的目的绝不是使系统设计更详细,它的重点在恢复设计判断及得到该判断的逻辑依据。
● 程序理解(Program Understanding或Comprehension)
也是逆向工程的一部分,研究如何取得关于程序的有关知识。它是进行修改、扩充、重用、文档重构等维护工作的必要准备过程,也是维护工作最困难的作业之一。