  Activity diagrams (ADs) have recently become widely used in the modeling of
workflows, business processes, and web-services, where they serve various
purposes, from documentation, requirement definitions, and test case
specifications, to simulation and code generation. As models, programs, and
systems evolve over time, understanding changes and their impact is an
important challenge, which has attracted much research efforts in recent years.
In this paper we present addiff, a semantic differencing operator for ADs.
Unlike most existing approaches to model comparison, which compare the concrete
or the abstract syntax of two given diagrams and output a list of syntactical
changes or edit operations, addiff considers the Semantics of the diagrams at
hand and outputs a set of diff witnesses, each of which is an execution trace
that is possible in the first AD and is not possible in the second. We motivate
the use of addiff, formally define it, and show two algorithms to compute it, a
concrete forward-search algorithm and a symbolic xpoint algorithm, implemented
using BDDs and integrated into the Eclipse IDE. Empirical results and examples
demonstrate the feasibility and unique contribution of addiff to the
state-of-the-art in version comparison and evolution analysis.
