Turning Conflicts into Collaboration
In model-driven software development, software models are the main artifacts used not only for supporting brainstorming, analysis, and design purposes, but also for generating executable code. Such software models are usually not created by one single developer, but within a team. To coordinate team work, versioning systems have proven to be indispensable for managing modifications performed by different modelers at the same time. When concurrently performed modifications are contradicting each other, the standard versioning paradigm requires the person who detected the conflict to resolve it immediately in order to keep the evolved artifacts in a consistent state. Whereas this approach works well in later phases of the software development process, in early phases, when the development team had not established a consolidated view on the system under development yet, the conflicts might provide valuable information on the various intentions of the modelers. This information might be lost if removed in an undocumented manner by a single modeler. We propose an alternative versioning paradigm for models, where conflicts are temporarily tolerated and discuss its technical realization for current modeling languages such as the UML. The resolution of conflicts is then not performed by one single modeler but within a team so that a consolidated version of the model is obtained.