Software Architecture Evolution
Jeffrey M. Barnes.
PhD thesis, Institute for Software Research, School of Computer Science, Carnegie Mellon University, 2013. Technical Report CMU-ISR-13-118.
Online links:
Abstract
Many software systems eventually undergo changes to their basic architectural structure.
Such changes may be prompted by new feature requests, new quality attribute
requirements, changing technology, or other reasons. Whatever the causes, architecture
evolution is commonplace in real-world software projects.
Today’s software architects, however, have few techniques to help them plan such
evolution. In particular, they have little assistance in planning alternatives, making
trade-offs among these different alternatives, or applying best practices for particular
domains.
To address this, we have developed an approach for assisting architects in planning
and reasoning about software architecture evolution. Our approach is based on
modeling and analyzing potential evolution paths that represent different ways of
evolving the system. We represent an evolution path as a sequence of transitional
architectural states leading from the initial architecture to the target architecture,
along with evolution operators that characterize the transitions among these states.
We support analysis of evolution paths through the definition and application of
constraints that express rules governing the evolution of the systemand evaluation
functions that assess path quality. Finally, a set of these modeling elements may
be grouped together into an evolution style that encapsulates a body of knowledge
relevant to a particular domain of architecture evolution.
We evaluate this approach in three ways. First, we evaluate its applicability to
real-world architecture evolution projects. This is accomplished through case studies
of two very different software organizations. Second, we undertake a formal evaluation
of the computational complexity of verifying evolution constraints. Finally, we
evaluate the implementability of the approach based on our experiences developing
prototype tools for software architecture evolution. |
Keywords: Architecture Evolution.
@PhdThesis{Barnes/Thesis/2013,
AUTHOR = {Barnes, Jeffrey M.},
TITLE = {Software Architecture Evolution},
YEAR = {2013},
SCHOOL = {Institute for Software Research, School of Computer Science, Carnegie Mellon University},
PDF = {http://acme.able.cs.cmu.edu/pubs/uploads/pdf/CMU-ISR-13-118.pdf},
ABSTRACT = {Many software systems eventually undergo changes to their basic architectural structure.
Such changes may be prompted by new feature requests, new quality attribute
requirements, changing technology, or other reasons. Whatever the causes, architecture
evolution is commonplace in real-world software projects.
Today’s software architects, however, have few techniques to help them plan such
evolution. In particular, they have little assistance in planning alternatives, making
trade-offs among these different alternatives, or applying best practices for particular
domains.
To address this, we have developed an approach for assisting architects in planning
and reasoning about software architecture evolution. Our approach is based on
modeling and analyzing potential evolution paths that represent different ways of
evolving the system. We represent an evolution path as a sequence of transitional
architectural states leading from the initial architecture to the target architecture,
along with evolution operators that characterize the transitions among these states.
We support analysis of evolution paths through the definition and application of
constraints that express rules governing the evolution of the systemand evaluation
functions that assess path quality. Finally, a set of these modeling elements may
be grouped together into an evolution style that encapsulates a body of knowledge
relevant to a particular domain of architecture evolution.
We evaluate this approach in three ways. First, we evaluate its applicability to
real-world architecture evolution projects. This is accomplished through case studies
of two very different software organizations. Second, we undertake a formal evaluation
of the computational complexity of verifying evolution constraints. Finally, we
evaluate the implementability of the approach based on our experiences developing
prototype tools for software architecture evolution.},
NOTE = {Technical Report CMU-ISR-13-118},
KEYWORDS = {Architecture Evolution} }
|