Generation and composition of corrective actions to code design problems with Heal
Sergio Castro, Andy Kellens, Coen De Roover, Kim Mens · 2010
Maintaining consistency between design and implementation is a fundamental issue in software evolution. Although existing tools and techniques provide support for correcting inconsistencies, they target generally-applicable design rules. Unfortunately, in addition to these common design rules, any software system has an abundance of custom design rules that are very specific to the system at hand. For such custom design rules, verification and correction are often left to the developer or require a considerable investment in the implementation of specific verification and correction meta-programs. HEAL is a framework that alleviates the problem of diagnosing and correcting violations of custom design rules in code. It supports the implementation and automatic inference of corrective actions (i.e., program transformations that may solve a detected design inconsistency. Using an abductive logic reasoner, HEAL infers these corrective actions from the design rules themselves and the code over which these rules are verified. In previous work we showed how simple solutions are generated from a repository of corrective actions to lowlevel structural problems. In this paper, we extend our previous work by showing how multiple solutions affecting the same source code element can be composed, allowing for the correction of complex design inconsistencies.