Parallel Changes: Detecting Semantic Interferences

Abstract

Parallel changes are a basic fact of modern software
development. Where previously we looked at prima facie
interference, here we investigate a less direct form that we
call semantic interference.
We reduce the forms of semantic interference that we
are interested in to overlapping def-use pairs. Using
program slicing and data flow analysis, we present
algorithms for detecting semantic interference for both
concurrent changes (allowed in optimistic version
management systems) and sequential parallel changes
(supported in pessimistic version management systems),
and for changes that are both immediate and distant in
time. We provide these algorithms for changes that are
additions, showing that interference caused by deletions
can be detected by considering the two sets of changes in
reverse-time order.