(1) 程序分解
利用程序分解从程序中找出对象和关系,并将它们存入信息库。而对象和关系一般用于分析、度量以及进一步对信息实施分析和提取。不是直接对源程序实现分解可以节省利用工具进行程序语法分析和生成对象和关系的工作量。
这项工作对于多数语言都不困难,但很费时。使用像UNIX中的lex和yacc那样的分解生成器是很方便的。

(2) 对象恢复
它可以从源程序中取得对象,这可以帮助我们用面向对象的方法来观察以前的一些非面向对象的源程序。面向对象(类、继承、方法、抽象数据类型等)可能是部分的,也可能是全部的。
把源程序转化成面向对象的程序的工作目前正在受到重视,特别是将C程序转化为C++程序已经取得了一些有益的经验。

(3) 程序理解
程序理解有几种形式。一种是程序员用手工的或自动的方式获得对软件的较好理解,另一种是将有关编程的信息保存起来,再利用这些信息找到编程知识的实例。理解是否正确,需要由软件与编程知识库中信息相匹配的程度决定。

(4) 知识库和程序变换
知识库和程序变换是许多再工程技术的基础。变换在程序图上和存于知识库的对象图上进行。为开发新的再工程工具,基于对象的、针对再工程工具的变换结构正在受到广泛关注.
