Project Details
Befactoring and generically controlled changes
Applicant
Professor Dr. Friedrich Steimann
Subject Area
Software Engineering and Programming Languages
Term
from 2014 to 2018
Project identifier
Deutsche Forschungsgemeinschaft (DFG) - Project number 258832016
Changing software routinely introduces errors. These errors then need to be fixed by applying other changes. The goal of this proposal is to control changes by complementing intended, primary changes with mandatory, secondary changes required to correct the errors introduced by the primary changes. Of course, this is only possible for errors that can be detected automatically; for the purpose of this proposal, the set of errors that can be corrected is therefore restricted to those that can be detected using (constraint-based) static checking.The approach pursued to solve the problems of controlled changes shall be generic in the sense that required secondary changes are derived solely from the specification of the rules used for static checking. This way, the approach is easily implemented for all languages for which such rules are available. This includes domain-specific languages for which the rules are specified declaratively (e.g., using the Object Constraint Language).From a user perspective, controlled changes are atomic: they are either performed completely or not performed at all. A user only needs to specify those parts of a controlled change that reflect her intentions; the additionally required changes will be presented to her for selection or acknowledgement. Controlled changes naturally complement the code completion and quick fixes offered by most contemporary integrated development environments, given that their proposed changes introduce errors themselves (which is regularly the case): in that case, the proposals are complemented with the necessary secondary changes.Finally, befactorings (as a special case of controlled changes) shall popularize a special case of controlled changes in which behavioural changes of a software are guaranteed to preserve desired non-functional properties of the software. Befactoring is thus the converse of refactoring, which preserves behaviour. An easily appreciated form of befactoring allows behavioural changes of software that do not sacrifice asserted and (statically) proven security properties of the software.The implementation of controlled changes shall be constraint-based.
DFG Programme
Research Grants