Model-driven software engineering is a suitable method for dealing with the ever-increasing complexity of software development processes. Graphs and graph transformations have proven useful for representing such models and changes to them. These models must satisfy certain sets of constraints. An example are the multiplicities of a class structure. During the development process, a change to a model may result in an inconsistent model that must at some point be repaired. This problem is called model repair. In particular, we will consider rule-based graph repair which is defined as follows: Given a graph $G$, a constraint $c$ such that $G$ does not satisfy $c$, and a set of rules $R$, use the rules of $\mathcal{R}$ to transform $G$ into a graph that satisfies $c$. Known notions of consistency have either viewed consistency as a binary property, either a graph is consistent w.r.t. a constraint $c$ or not, or only viewed the number of violations of the first graph of a constraint. In this thesis, we introduce new notions of consistency, which we call consistency-maintaining and consistency-increasing transformations and rules, respectively. This is based on the possibility that a constraint can be satisfied up to a certain nesting level. We present constructions for direct consistency-maintaining or direct consistency-increasing application conditions, respectively. Finally, we present an rule-based graph repair approach that is able to repair so-called \emph{circular conflict-free constraints}, and so-called circular conflict-free sets of constraints. Intuitively, a set of constraint $C$ is circular conflict free, if there is an ordering $c_1, \ldots, c_n$ of all constraints of $C$ such that there is no $j <i$ such that a repair of $c_i$ at all graphs satisfying $c_j$ leads to a graph not satisfying $c_j$.
翻译:模型驱动软件工程是应对软件开发过程日益复杂性的一种合适方法。图和图变换已被证明能有效表示此类模型及其变更。这些模型必须满足特定的约束集合,例如类结构的多重性。在开发过程中,对模型的变更可能导致不一致的模型,需要在某个时刻进行修复,此问题称为模型修复。本文将特别关注规则化图修复,其定义如下:给定图$G$、一个$G$不满足的约束$c$,以及一组规则$\mathcal{R}$,利用$\mathcal{R}$中的规则将$G$变换为满足$c$的图。现有的一致性概念或将其视为二元属性(图相对于约束$c$一致或不一致),或仅考虑约束首个图违背的次数。本文引入新的一致性概念,分别称为一致性保持变换和一致性增加变换及其对应规则。该概念基于约束可在特定嵌套层级上被满足的可能性。我们分别给出了直接一致性保持或直接一致性增加应用条件的构造方法。最后,提出一种能够修复所谓"循环无冲突约束"及"循环无冲突约束集"的规则化图修复方法。直观而言,约束集$C$是循环无冲突的,如果存在一个排序$c_1, \ldots, c_n$使得对于所有约束$c_i$,不存在$j < i$导致在所有满足$c_j$的图上修复$c_i$会产生不满足$c_j$的图。