IEEE Access (Jan 2020)
Estimating the Complexity of Architectural Design Decision Networks
Abstract
The stability and longevity of software systems rely on the quality of design decisions over time. In modern software-intensive systems the number of design decisions taken, the dependencies between those decisions, and the number of design alternatives considered, complicate software maintenance and jeopardize the system's longevity. Despite the existence of complexity metrics applied to code, there is a lack of metrics for design decisions. As estimating the complexity of a set of design decisions is needed for understanding the difficulty of software evolution, this paper proposes and validates a new metric to estimate the complexity of decision networks. The metric is based on decision topologies and provides a way to understand the complexity of decision sets and reason about the maintenance difficulty. We validate our metric empirically in two different ways: (i) evaluating the complexity of two service-based platform systems, and (ii) analyzing the evolution of complexity in four open-source projects and compare how the evolution of complexity affects to the architecture in one of the open-source projects. Our results show that certain network topologies are more difficult to maintain, so we provide a set of tactics to reduce the complexity of design decision networks.
Keywords