| |
[Download PDF here!]
Authors: Nenad Medvidovic, Alexander
Egyed, and Paul Grünbacher
Ideally,
a software project commences with requirements gathering
and
specification, reaches its major milestone with system
implementation
and delivery, and then continues, possibly
indefinitely,
into an operation and maintenance phase. The
software
system’s architecture is in many ways the linchpin of
this
process: it is supposed to be an effective reification of the
system’s
requirements and to be faithfully reflected in the system’s
implementation.
Furthermore, the architecture is meant
to
guide system evolution, while also being updated in the process.
However,
in reality developers frequently deviate from
the
architecture, causing architectural erosion, a phenomenon
in
which the initial architecture of an application is (arbitrarily)
modified
to the point where its key properties no longer hold.
In
this paper, we present an approach intended to address the
problem
of architectural erosion by combining three complementary
activities.
Our approach assumes that a given system’s
requirements
and implementation are available, while the
architecturally-relevant
information either does not exist, is
incomplete,
or is unreliable. We combine techniques for architectural
discovery
from system requirements and architectural recovery
from system implementations; we then leverage
architectural
styles to identify and reconcile any mismatches
between
the discovered and recovered architectural models.
While
promising, the approach presented in the paper is a work
in
progress and we discuss a number of remaining research
challenges.
|
|