Incremental Design-Flaw Detection and Co-Evolution on Java Programs based on Bidirectional Graph Transformation
Géza Kulcsár
PhD student, Real-Time Systems Lab, Technical University of Darmstadt, Germany
DEIB - Building 24, Alfa Room (ground floor, via Golgi 40, Milano)
July 13th, 2016
10.30 am - 12.00 pm
Contact:
Carlo Ghezzi
Research Line:
Advanced software architectures and methodologies
PhD student, Real-Time Systems Lab, Technical University of Darmstadt, Germany
DEIB - Building 24, Alfa Room (ground floor, via Golgi 40, Milano)
July 13th, 2016
10.30 am - 12.00 pm
Contact:
Carlo Ghezzi
Research Line:
Advanced software architectures and methodologies
Abstract
Modern Java IDE aim at assisting object-oriented software development workflows with continuously interleaved evolution steps of program editing and maintenance. Program editing usually comprises manually performed program changes applied by a programmer at source code level. In contrast, maintenance activities often involve refactorings, i.e., behavior-preserving program restructuring rules with complex preconditions, usually formulated over an appropriate program abstraction. As a consequence of continuous software evolution, initial program design may be prone to erosion, eventually leading to structural decay and spontaneously arising design flaws. Detecting design flaws during software evolution might substantially support maintenance decisions. To integrate all these into a comprehensive program evolution framework, we present a graph-based approach for incremental design-flaw detection and co-evolution on Java programs. Our approach is based on a concise representation of Java programs by means of a program model, i.e., a reduced abstract syntax tree capturing high-level object-oriented code entities, further augmented with qualitative and quantitative design-related information such as coupling/cohesion. On this basis, a precise formal specification of object-oriented program refactorings can be defined in terms of endogenous graph transformation rules. Moreover, based on the same model, a comprehensive methodology is devised for specifying design flaws by means of compound rules integrating code metrics, code smells and anti-patterns in a modular way. In addition, Triple Graph Grammars (TGG) are used to define exogenous bidirectional graph transformation rules for automated incremental synchronization between a program model and the corresponding source code.
Short Bio
Géza Kulcsár is a PhD student at TU Darmstadt in the research group of Andy Schürr. His research interests are graph transformation semantics and graph-based support of object-oriented software development.