You are working in a team changing the code base with other members in parallel. Every change you deliver to the team's repository, is not only affecting the system quality, but also may interfere with changes of other team members. While the development process is chosen very carefully by the team to prevent introduction of bugs and improve system quality, current tools are very limited in dealing with a developer's contribution. They can record code changes, recover deleted resources, and detect textual merge conflicts, but effects of changes on the code base remain unpredictable. Resulting problems are, e.g., (undetected) merge conflicts, ineffective testing, and a high likeliness of introducing bugs.
Change models represent textual edits at the level of program elements, i.e., AST nodes. Every node of a change model, an atomic change, reflects the semantics of the underlying programming language, e.g., add method, change field, and delete class. Change-aware tools can leverage the model to compute structural and behavioral effects of changes. For example, a change-aware unit testing tool can not just provide test results, but also guide the development of new unit tests aiming for a full coverage of change effects.
In this talk fundamental concepts of change impact analysis will be summarized and illustrated with examples from the implementation of a change-aware unit testing tool. Useful change classifications and their application will be presented, and interesting implementation aspects discussed. Two concrete application scenarios from software testing and process-aware change delivery will be used to present the potential of change-aware tools.
This session is part of the curated collection of short talks titled
"You and Your Tools"