  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$.
