[Show abstract] [Hide abstract]
ABSTRACT: The ability of a software system to survive is not only dependent on a good architectural design, but also the effective management
of architectural changes as the system evolves over time. With the emergence of incremental and evolutionary development approaches,
this evolution is no longer restricted to the maintenance phase of development, but now manifests itself during system elaboration
and construction. Structural complexity is often inadvertently introduced as the number of interdependencies between parts
of the system grows and design goals are violated. Such increasing complexity may paradoxically impede its survivability.
Software architects must, therefore, learn to track, manage, and mitigate software complexity since, left unchecked, it can
lead to systems that are difficult to maintain and evolve. There are two key aspects of software systems that must be monitored
in order to effectively manage the inherent complexity that is systematically introduced in evolving systems: the stability of intermediate forms must be preserved, and structural complexity must be monitored to prevent incidental (excessive) complexity from being introduced. While these key aspects of software
architecture are often monitored independently in evolving systems, an integrative metric-based approach would provide a more
comprehensive means of assessing the impact that architectural changes have on overall system quality. In this study, an integrative,
multidimensional approach was used to examine the evolutionary changes that occurred in the architectural stability and structural
complexity over 21 releases of Hibernate, a large-scale open source software system.
KeywordsSoftware architecture-Structural complexity-Software evolution-Open source software
Innovations in Systems and Software Engineering 01/2010; 6(4):299-310.