Measuring Architectural Stability and Instability in the Evolution of Software Systems
Sayyed G. Maisikeli · 2018
When a system is unstable, its output may be infinite even though the input to the system is finite, (i.e. producing unbounded output for a bounded input). The consequences of unstable software can lead to a system that is unpredictable, unsafe and unreliable, leading to a system that is highly likely to fail in delivering its required functionalities. Understanding the pattern of software architectural change as the software evolves over time is vital in making sure that systems retain their stability and can deliver their required functionalities as they evolve. Studying structural change in software systems can help identify hidden features that can be used as a guidance for subsequent software evolutions. Measuring the stability or instability in ob-j ect-oriented software systems in this research is based on the premise that if the domain abstraction of a software are stable, then the software structural components are highly likely to remain the same throughout the evolution of the software system. This research carefully profiled selected metrics from evolution repository datasets for large-scale open source software systems. Metric value fluctuations were studied, from which new reliable and empirically derived metrics are introduced. A process for monitoring and evaluation of stability of evolving e-type software systems is also presented. The set of metrics introduced will act as a numerical guideline for decision makers and developers to use in developing future versions of an evolving Software systems