Design decisions are continuously made during the development of software systems
and are important artifacts for design documentation. Dedicated decision
management systems are often used to capture such design knowledge. Most
such systems are, however, separated from the design artifacts of the system.
In model-based software development, where design models are used to develop
a software system, outcomes of many design decisions have big impact on design
models. The realization of design decisions is often manual and tedious
work on design models. Moreover, keeping design models consistent with all
made decisions is a time-consuming manual task that is often performed in peer
reviews.
In this thesis, a generic technology has been developed for extracting model
differences from models and transferring them to other models. These concepts,
called model-independent differences, can be used to specify realizations of decisions
in design models. This way, recurring realization work of design decisions
can be automated. Since the concepts are generic and not bound to design decisions,
other recurring work on models can be automated as well, for instance,
design patterns and refactorings.
With such a technology at hand, design decision realizations can easily be specified and parts of the realization work can be automated. A binding is produced
as a by-product that links documented decision outcomes to design model elements
which are affected by the respective decisions. With a set of constraints,
such a binding can be used to validate the consistency between the design and
made design decisions. Whenever the evolving design models become inconsistent
with realized decisions, developers are notified about the violations. The
violations can be fixed by correcting the design, adjusting the binding, or by
ignoring the causes. This substitutes manual reviews to some extent.
The concepts, implemented in a tool, have been validated with design patterns,
refactorings, and domain level tests that comprise a replay of a real project. This
proves the applicability of the solution to realistic examples. The implementation
of model-independent differences, called MPatch, is further contributed to
the Eclipse open source project.