  Source Code Management (SCM) systems support software evolution by providing
features, such as version control, branching, and conflict detection. Despite
the presence of these features, support to parallel software development is
often limited. SCM systems can only address a subset of the conflicts that
might be introduced by developers when concurrently working on multiple
parallel branches. In fact, SCM systems can detect textual conflicts, which are
generated by the concurrent modification of the same program locations, but
they are unable to detect higher-order conflicts, which are generated by the
concurrent modification of different program locations that generate program
misbehaviors once merged. Higher-order conflicts are painful to detect and
expensive to fix because they might be originated by the interference of
apparently unrelated changes. In this paper we present Behavioral Driven
Conflict Identification (BDCI), a novel approach to conflict detection. BDCI
moves the analysis of conflicts from the source code level to the level of
program behavior by generating and comparing behavioral models. The analysis
based on behavioral models can reveal interfering changes as soon as they are
introduced in the SCM system, even if they do not introduce any textual
conflict. To evaluate the effectiveness and the cost of the proposed approach,
we developed BDCIf , a specific instance of BDCI dedicated to the detection of
higher-order conflicts related to the functional behavior of a program. The
evidence collected by analyzing multiple versions of Git and Redis suggests
that BDCIf can effectively detect higher-order conflicts and report how changes
might interfere.
