The aim of the project is to provide a solid foundation for software refactoring by the development of a suitable formal model. We aim at a lightweight model, facilitating the investigation of basic properties of refactoring, as well as the design of tools supporting the refactoring process. In particular, the potential of graph rewriting as a basis for such a model will be explored. Based on this formal model, we will try to answer the following questions:
- What is the exact meaning of behaviour preservation in this context?
- Can tools resolve conflicts between interacting refactorings?
- How can one address the composability and scalability of refactorings?
- How can the design be kept consistent with the refactored code?
- Which software quality factors are influenced by refactoring?.