Real world software systems undergo, during their lifetime, to repeated maintenance activities. Due to the market pressure and to the need for having back the system operational in the shortest time possible, maintenance tends to introduce negative side effects. Some examples are the growth of the cloning percentage, the increase of library size, the presence of unused objects, or the lost of source file organization. This thesis proposes a framework, named Evolution Doctor, to diagnose and cure such phenomena. The framework permits the analysis and prediction of several indicators of software system evolution (size, complexity, cloning). Then, the framework defines a set of methods and tools to cure the problems: remove clones and unused objects, reorganize libraries, and restructure the source file directory organizations.