Software evolution is an inevitable process when developing a system of any notable size and is the most costly stage in the life cycle of a system. Automating parts of this proces...
Software is multidimensional but the tools that support it are not. The lack of tool support causes the software artifacts representing different dimensions to evolve independentl...
Aspect oriented programming has been proposed as a way to improve modularity of software systems by allowing encapsulation of cross-cutting concerns. To do so, aspects specify whe...
One of the issues in software evolution is debugging. Debugging large and complex software systems evolved requires a lot of effort since it is very difficult to localize and ide...
Software product line engineering aims at producing functionally similar software systems as a family of products. In this process, the development life cycle has been shifted from...