Condor is a tool for detecting dependencies and interferences between conditional program transformations. The analysis performed by Condor is
- able to identify a well-defined class of interferences
- able to determine an interference-free order of execution, if one exists
- able to determine the most suitable algorithm for executing a group of transformations
- independent of the programs to be transformed (only CTs need to be analyzed)
- independent of any special annotations of the analyzed CTs
Condor is an acronym for Conflict Detector, where “conflict” is used as a synonym for “interference”.
Conditional program transformations are at the heart of refactorings, aspect weaving , model driven architecture and many other application areas. In all these domains, joint application of different transformations may give rise to interferences, that is undesired effects of applying the transformations.
A conditional transformation (CT) is a sequence of program transformations guarded by a precondition. The transformation sequence is executed on a given program only if the guarding precondition is true for that program.
The precondition can express various constraints. For instance, it may select the places in a program to which the transformations should be applied, it may check conditions required for the correct execution of the transformations, or it may do both.
The preconditon may contain atomic conditions or complex ones created by conjunction, disjunction and negation of subconditions. Atomic conditions refer to the typical structure of a Java program (existence of classes, interfaces, fields, methods, parameters, annotations, exceptions, etc.). Transformations can change such structures (add / delete / rename class, method, field, parameter, …).
The notion of conditional transformations is central to many of the tools developed in our group:
- JTransformer provides for textual editing and application of CTs to Java projects in your Eclipse workspace.
- ConTraCT provides for grapical editing and composition of CTs.
- Condor detects dependencies and conflicts between CTs.
- LogicAJ is a generic aspect language that is implemented by a translation of aspects to CTs that are checked by Condor and executed by JTransformer.