|| In order to manage the high complexity of developing software systems, oftentimes several models are employed describing different aspects of the system under development. Models often contain redundant or dependent information, meaning changes to one model without adjustments to others representing the same concepts lead to inconsistencies, which need to be repaired automatically. Otherwise, developers would have to know all dependencies to preserve consistency by hand.
For automated consistency preservation, model transformations can be used to specify how elements from one model correspond to those of another and define consistency preservation operations to fix inconsistencies. In this specification, it is not always possible to determine one generally correct way of preserving consistency without insight into the intentions of the developer
responsible for making the changes. To be able to factor in underlying intentions, user interactions used to clarify the course of consistency preservation in ambiguous cases are needed. Existing approaches either do not consider user interactions during consistency preservation or provide an unstructured set of interaction options. In this thesis, we therefore identify a structured classification of user interaction types to employ during consistency preservation. By applying those types in preexisting case studies for consistency preservation between models in different application domains, we were able to show the applicability of these types in terms of completeness and appropriateness.
Furthermore, software projects are rarely developed by a single person, meaning that multiple developers may work on the same models in different development branches and combine their work at some point using a merge operation. One reasonable option to merge different development branches of models is to track model changes and merge the change sequences by applying one after another. Since the model state changed due to changes made in the one branch, the changes in the other branch can potentially lead to different user decisions being necessary for consistency preservation. Nevertheless, most necessary decisions will be the same, which is why it would be useful to reuse the previously applied choices if possible. To achieve this, we provide a concept for storing and reapplying decisions during consistency preservation in this thesis. Thus, we establish which information is necessary and reasonable to represent a user interaction and allow for its correct reuse. By applying the reuse mechanism to a change scenario with several user interactions in one of the case studies mentioned above, we were able to show the feasibility of our overall concept for correctly reusing changes.