Fundamental Approaches to Software Engineering

Volume 4961 of the series Lecture Notes in Computer Science pp 362-376

Formal Model-Driven Program Refactoring

  • Tiago MassoniAffiliated withDepartment of Computing Systems, University of Pernambuco
  • , Rohit GheyiAffiliated withInformatics Center, Federal University of Pernambuco
  • , Paulo BorbaAffiliated withInformatics Center, Federal University of Pernambuco


Evolutionary tasks, specially refactoring, affect source code and object models, hindering correctness and conformance. Due to the gap between object models and programs, refactoring tasks get duplicated in commonly-used model-driven development approaches, such as Round-Trip Engineering. In this paper, we propose a formal approach to consistently refactor systems in a model-driven manner. Each object model refactoring applied by the user is associated with a sequence of behavior preserving program transformations, which can be semi-automatically performed to an initially conforming program. As a consequence, this foundation for model-driven refactoring guarantees behavior preservation of the target program, besides its conformance with the refactored object model. This approach is described in detail, along with its formal infrastructure, including a conformance relationship between object models and programs. A case study reveals evidence on issues that will surely recur in other model-driven development contexts.