In general, changing complex software systems often results in unintended efects that can be very costly or can have serious negative consequences . At the same time, complex code changes require substantial engineering eort
and can often only be justied when the added value exceeds the maintenance costs [5, 30]. To estimate the maintenance risks and costs of a given change request, researchers have developed two major impact analysis techniques :
(1) tracebility analysis and (2) dependency analysis. In this paper, we focus on dependency-based impact analysis techniques that show how changes to a source code element affect other source code elements.
Most impact analysis techniques focus on procedural, functional, and object-based dependencies [2, 13, 14, 23, 24], while some techniques perform domain-specic analyses such as impact analysis of database schema changes . No current impact analysis techniques can be readily applied to event-based applications because the event-based architectural style utilizes implicit invocations. In particular, the impact of changes on event-based system components is more difficult to analyze because these components, by design, do not know the receivers of the messages they send.