1: IntroductionIn the last few years, the contribution of researchers and practitioners in the reverse engineering field has been very rich of proposals and applications in all the key objectives pointed out in [5]: coping with complexity, generating alternate views, recovering lost information, detecting side effects and analyzing quality, synthesizing higher abstractions, facilitating reuse, and populating a repository or knowledge base. Many research studies and industrial experiences have also been published on reengineering old systems in a new form to decrease maintenance costs, reduce software errors, or upgrade to a new hardware [2]. However, very little has been written regarding what happens in the maintenance process after a software system has been reengineered or simply reverse engineered.Consider the three maintenance process models, proposed by Basili in [3]: quick-fix model, iterativeenhancement model, and full-reuse model. All three models assume that the existing system has a complete and consistent documentation from requirements to code. This assumption can be realistic if we consider the configuration of a system after that a reverse engineering process has been applied. The quick-fix model, shown in Figure 1, starts modifying the existing source code, and then test the new version and modify the system documentation. It represents an abstraction of the common approach to handling software maintenance where all changes stem directly from the implementation abstraction level. The iterative-enhancement model, shown in Figure 2, starts with an analysis of the existing system's documents. The highest level artifact which is affected by the request of change is then modified and the modification is propagated downward through the lower abstraction levels. At each step, the system is redeveloped based on the analysis of the existing system. The full-reuse model, shown in Figure 3, differ from the iterative-enhancement model, because it assumes that there exists a repository of software artifacts from the current and earlier versions of the subject system or similar systems. It starts with the analysis of the requirements for the new system and rebuilds the system by reusing whatever existing document or component is applicable, or developing them when necessary.The full-reuse model promotes the development of reusable artifacts and encourages their reuse also in modification tasks, while the iterative-enhancement model try to accomplish changes by adapting the existing system. Both models differ from the quick-fix approach because the analysis and update of documentation is performed before the modification of the code. This allows maintainer programmers to have a control on the increasing entropy as the system evolve [7].