An empirical investigation on the relationship between design and architecture smells
- PDF / 17,920,516 Bytes
- 49 Pages / 439.642 x 666.49 pts Page_size
- 63 Downloads / 180 Views
An empirical investigation on the relationship between design and architecture smells Tushar Sharma1
· Paramvir Singh2 · Diomidis Spinellis3
© Springer Science+Business Media, LLC, part of Springer Nature 2020
Abstract Context: Architecture of a software system represents the key design decisions and therefore its quality plays an important role to keep the software maintainable. Code smells are indicators of quality issues in a software system and are classified based on their granularity, scope, and impact. Despite a plethora of existing work on smells, a detailed exploration of architecture smells, their characteristics, and their relationships with smells in other granularities is missing. Objective: The paper aims to study architecture smells characteristics, investigate correlation, collocation, and causation relationships between architecture and design smells. Method: We implement smell detection support for seven architecture smells. We mine 3 073 open-source repositories containing more than 118 million lines of C# code and empirically investigate the relationships between seven architecture and 19 design smells. Results: We find that smell density does not depend on repository size. Cumulatively, architecture smells are highly correlated with design smells. Our collocation analysis finds that the majority of design and architecture smell pairs do not exhibit collocation. Finally, our causality analysis reveals that design smells cause architecture smells. Keywords Maintainability · Code quality · Code smells · Architecture smells · Design smells · Inter-smell relationships · Collocation · Correlation · Causality · Refactoring Communicated by: Barbora Buhnova Tushar Sharma
[email protected] Paramvir Singh [email protected] Diomidis Spinellis [email protected] 1
Siemens Corporate Technology, Charlotte, NC, USA
2
School of Computer Science, University of Auckland, Auckland, New Zealand
3
Athens University of Economics and Business, Athens, Greece
Empirical Software Engineering
1 Introduction In the software development lifecycle, software design spans from low-level class design to high-level architecture design. The quality of software design, including all its facets, plays an important role in keeping a software system maintainable. Code smells (Fowler 1999; Sharma and Spinellis 2018b) are indicators of software quality deterioration that make software hard to maintain. Based on granularity, scope, and impact, smells are classified as implementation (Fowler 1999), design (Suryanarayana et al. 2014), and architecture smells (Garcia et al. 2009). Implementation smells are confined to a limited scope, typically to a method, and require relatively less effort to refactor. Design smells have a larger scope and impact and therefore refactoring a design smell may introduce a change in a set of classes. The architecture of a software system represents the critical design decisions that span multiple components and have a system-level impact (Bass et al. 2012). Thus, architecture smells affect a
Data Loading...