Taming architectural evolution

  • Authors:
  • André van der Hoek;Marija Mikic-Rakic;Roshanak Roshandel;Nenad Medvidovic

  • Affiliations:
  • University of California, Irvine, Dept. of Information and Computer Science, 444 Computer Science Building, Irvine, CA, ;University of Southern California, Computer Science Department, Henry Salvatori Computer Center 300, Los Angeles, CA, ;University of Southern California, Computer Science Department, Henry Salvatori Computer Center 300, Los Angeles, CA, ;University of Southern California, Computer Science Department, Henry Salvatori Computer Center 300, Los Angeles, CA,

  • Venue:
  • Proceedings of the 8th European software engineering conference held jointly with 9th ACM SIGSOFT international symposium on Foundations of software engineering
  • Year:
  • 2001

Quantified Score

Hi-index 0.00

Visualization

Abstract

In the world of software development everything evolves. So, then, do software architectures. Unlike source code, for which the use of a configuration management (CM) system is the predominant approach to capturing and managing evolution, approaches to capturing and managing architectural evolution span a wide range of disconnected alternatives. This paper contributes a novel architecture evolution environment, called Mae, which brings together a number of these alternatives. The environment facilitates an incremental design process in which all changes to all architectural elements are integrally captured and related. Key to the environment is a rich system model that combines architectural concepts with those from the field of CM. Not only does this system model form the basis for Mae, but in precisely capturing architectural evolution it also facilitates automated support for several innovative capabilities that rely on the integrated nature of the system model. This paper introduces three of those: the provision of design guidance at the architectural level, the use of specialized software connectors to ensure run-time reliability during component upgrades, and the creation of component-level patches to be applied to deployed system configurations.