Abstract

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.

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.