Product Architecture and Quality: A Study of Open-Source Software Development
49 Pages Posted: 14 Aug 2010
Date Written: August 12, 2010
We examine how the architecture of products relates to their quality. Using an architectural representation that accounts for both the hierarchical and dependency relationships between modules and components, we define a new construct, system cyclicality. System cyclicality recognizes component loops, which are akin to design iterations — a concept typically associated with models of product development processes rather than the products themselves. System cyclicality captures the fraction of mutually interdependent components in a system. Through a multilevel analysis of several open-source, Java-based applications developed by the Apache Software Foundation, we study the relationship between system cyclicality and the generation of bugs. At the system level, we examine 122 releases representing 19 applications and find that system cyclicality is positively associated with the number of bugs in a system. At the component level, we examine 28,395 components and find that components involved in loops are likely to be affected by a larger number of bugs. We find that, in order to identify the set of product components involved in cyclical dependencies that are detrimental to product quality, it is imperative to remove from consideration the architectural decisions by which components are assigned into modules: it is necessary to focus only on the patterns of dependencies among product components without considering how components are grouped together into modules. Our results suggest that new product development managers are likely to benefit from proactively examining the architecture of the system they develop and monitoring its cyclicality as one of their strategies to reduce defects.
Keywords: Product Architecture, Conformance Quality, Open-source Software Development, Design Iterations, Iterative Problem-solving, Defect Proneness
Suggested Citation: Suggested Citation