首页 百科知识 软件再工程概念

软件再工程概念

时间:2024-10-09 百科知识 版权反馈
【摘要】:软件再工程是指对既存对象系统进行调查,并将其重构为新形式代码的开发过程。最常见的再工程类型是代码重构。当数据结构较差时,数据被再工程。在理想的情况下,可以使用自动的“再工程引擎”来重建应用,旧的程序被输入引擎,分析、重构,然后以展示软件质量最佳方面的形式重新生成。在大多数情况下,被再工程的软件可以重新实现现存系统的功能,并且加入新功能或改善整体性能。

7.2.1 软件再工程概念

软件再工程是指对既存对象系统进行调查,并将其重构为新形式代码的开发过程。最大限度地重用既存系统的各种资源是再工程的最重要特点之一。从软件重用方法学来说,如何开发可重用软件和如何构造采用可重用软件的系统体系结构是两个最关键问题。不过对再工程来说前者很大一部分内容是对既存系统中非可重用构件的改造。

软件再工程模型是一个循环模型,该模型中的每个活动均可能被重复。软件再工程模型如图7.1所示。

img132

图7.1 软件再工程模型

一、库存目录分析(Inventory Analysis)

每个软件组织应该保存所有应用的库存目录。该目录可能仅仅是包含如下信息的一个电子表格模型:

①应用的名字。

②最初构建的年份。

③已对它进行过的实质性修改的次数。

④完成这些修改所花费的总劳动。

⑤最好一次实质性修改的日期。

⑥最好一次实质性修改所花费的劳动。

⑦它驻留的系统。

⑧和它有接口的应用。

⑨它访问的数据库

⑩过去18个月所报告的错误。

img133用户数量。

img134它被安装的机器数量。

img135程序结构的复杂性、代码的复杂性和文档的复杂性。

img136文档的质量。

img137整体可维护性(等级值,scale value)。

img138预期寿命(以年算)。

img139预期在未来36个月内的修改次数。

img140年度维护成本。

img141年度运作成本。

img142年度业务值。

img143业务重要程度。

应该对每一个现存的应用收集上面列出的信息,通过按照业务重要程度、寿命、当前可维护性以及其他局部重要标准对这些信息排序,可以选出再工程的候选者,然后可以明智地分配资源。

必须注意:上面描述的目录表应该定期整理修订,应用的状况(如,业务重要程度)可能随时间发生变化,其结果是:再工程的优先级将发生变化。

二、文档重构(Document Restructuring)

文档重构主要是实现了同一概念信息的聚集,是更接近于人类进行信息查找的思维方法。

贫乏的文档是很多遗产系统的注册商标。但是,我们对此可做些什么呢?

选项1:建立文档是非常耗费时间的。系统正常运作,我们将保持现状。在某些情况下,这是一个正确的方法,不可能为数百个计算机程序重新建立文档。如果一个程序是相对静止的,正在走向其有用生命的末端,并且可能不会再经历什么变化,那么,让它保持现状。

选项2:文档必须更新,但是,我们只有有限的资源。我们将使用“使用时建文档”的方法。可能不需要对某应用全部重构文档,而是对系统中当前正在进行改变的那些部分建立完整文档。随时间流逝,将得到一组有用的和相关的文档。

选项3:系统是业务关键的,而且必须完全地重构文档。即使在此情形,明智的方法是设法将文档工作减少到必需的最小量。

每个选项均是可行的,软件组织必须选择最适合于每种情形的方法。

三、逆向工程(Reverse Engineering)

术语“逆向工程”源于硬件领域,一个公司分解某竞争者的硬件产品去了解竞争者的设计和制造“秘密”。如果得到了竞争者的设计和制造规约,则这些秘密可以很容易地理解。但是,这些文档是别人专有的,对做逆向工程的公司来说是不可得到的。本质上,成功的逆向工程通过检查产品的实际样本导出一个或多个关于产品的设计和制造规约。

软件的逆向工程是相当类似的。然而,在大多数情况下,被逆向工程的程序不是来自于竞争者,而是公司自己的软件(经常是很多年以前的)。将被理解的“秘密”是未开发过的相关规约所带来的模糊不明。因此,软件的逆向工程是分析程序在比源代码更高的抽象层次上创建程序的某种表示的过程。逆向工程是一个设计恢复过程,逆向工程工具从现存的程序中抽取数据、体系结构和过程的设计信息。

四、代码重构(Code Restructuring)

最常见的再工程类型(实际上,在这里使用术语“再工程”是有疑问的)是代码重构。某些遗产系统具有相对完整的程序体系结构,但是,个体模块被以难于理解、测试和维护的方式编码。在这样的情形下,在可疑模块内的代码可被重构。

为了完成该活动,用重构工具去分析源代码,标注出和结构化程序设计概念相背的部分,然后重构代码(此工作可以自动进行)。复审和测试生成的重构代码以保证没有引入异常和不规则。

五、数据重构(Data Restructuring)

数据体系结构差的程序将难于进行适应性修改和增强。事实上,对很多应用来说,数据体系结构比源代码本身对程序的长期生存力有更大影响。

和代码重构不同,数据重构发生在相当低的抽象层次上,它是一种全范围的再工程活动。在大多数情况下,数据重构以逆向工程活动为开始,当前的数据体系结构被分解。必要时,数据重构还可以定义数据模型,标识数据对象和属性,并从质量的角度复审现存的数据结构。当数据结构较差时(例如,平坦文件正被实现,而关系型方法将大大地简化处理),数据被再工程。因为数据体系结构对程序体系结构及其中的算法有很强的影响,对数据的改变将总是会导致体系结构或代码层的改变。

六、正向工程(Forward Engineering)

理想的情况下,可以使用自动的“再工程引擎”来重建应用,旧的程序被输入引擎,分析、重构,然后以展示软件质量最佳方面的形式重新生成。但是,在短期内,这样的“引擎”还不可能出现。

正向工程也称为革新或改造,不仅可以从现存软件中恢复设计信息,还可以使用该信息去改变或重构现存系统,以改善系统整体质量。在大多数情况下,被再工程的软件可以重新实现现存系统的功能,并且加入新功能或改善整体性能。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈