软件再工程(Software Reengineering) 是指对既存软件系统进行调查,并将其重构为新形式代码的开发过程。其目的是重新审视现有的系统,以便进一步利用新技术来改善系统或促进现存系统的再利用。再工程的主要特点包括最大限度地重用既存系统的各种资源,以及通过逆向工程、重构等技术,在充分理解原有软件的基础上,进行分解、综合,并重新构建软件,以提高软件的可理解性、可维护性、可复用性或演化性。
再工程的主要活动包括信息库分析、文档重构、逆向工程、代码重构、数据重构和正向工程等。通过这些活动,再工程旨在解决现有软件系统在适应性维护、完善性维护和预防性维护等方面的问题,从而使遗产系统能够被逐步利用起来,同时提高其性能和功能。
软件再工程不仅包括对软件进行修改以增加新的功能或除错,还包括对软件进行仔细审查和改造,进行重新构造,最终成为一个新的形式,并包括随之产生的对新形式的实现。此外,再工程的主要目的是为遗留系统转化为可演化系统提供一条现实可行的途径,是在软件生命周期终止后开始的一个新的阶段。
综上所述,软件再工程是一个系统的、结构化的过程,旨在通过调查、重构和重用现有软件资源,来改善和优化软件系统的质量和性能。