Transformational Software Evolution by Assertions Programming Technology Lab Tom Mens tommens@vub.ac.be http://prog.vub.ac.be/~tommens
Software Transformations Can be used for software evolution and upgrading refactoring and restructuring software merging Are domain-independent useful for implementation, design, analyis, software architecture Can be formalised by graph rewriting
Problem and Proposed Solution Need for scalability To deal with industrial large-size software systems Approach Express software transformations in terms of assertions only (i.e., pre-, postconditions and invariants) Calculate dependencies in a transformation sequence based on these assertions Treat transformation sequences as atomic transformations by calculating their assertions
Advantages Uniform treatment of transformations and transformation sequences e.g. to detect conflicts between parallel evolutions Dependencies can be used to remove redundancy in a transformation sequence to factor out commonalities between parallel sequences to detect independent subsequences that can be parallellised
Position Statement Scalability and domain-independence are important in software evolution Formal foundations should try to address both Efficiency and usability of tools should not be sacrificed Graphs + graph rewriting seems suitable as a uniform underlying formalism for software evolution