TY - GEN
T1 - Does your configuration code smell?
AU - Sharma, Tushar
AU - Fragkoulis, Marios
AU - Spinellis, Diomidis
PY - 2016/5/14
Y1 - 2016/5/14
N2 - Infrastructure as Code (IaC) is the practice of specifying computing system configurations through code, and managing them through traditional software engineering methods. The wide adoption of configuration management and increasing size and complexity of the associated code, prompt for assessing, maintaining, and improving the configuration code's quality. In this context, traditional software engineering knowledge and best practices associated with code quality management can be leveraged to assess and manage configuration code quality. We propose a catalog of 13 implementation and 11 design configuration smells, where each smell violates recommended best practices for configuration code. We analyzed 4,621 Puppet repositories containing 8.9 million lines of code and detected the cataloged implementation and design configuration smells. Our analysis reveals that the design configuration smells show 9% higher average co-occurrence among themselves than the implementation configuration smells. We also observed that configuration smells belonging to a smell category tend to co-occur with configuration smells belonging to another smell category when correlation is computed by volume of identified smells. Finally, design configuration smell density shows negative correlation whereas implementation configuration smell density exhibits no correlation with the size of a configuration management system.
AB - Infrastructure as Code (IaC) is the practice of specifying computing system configurations through code, and managing them through traditional software engineering methods. The wide adoption of configuration management and increasing size and complexity of the associated code, prompt for assessing, maintaining, and improving the configuration code's quality. In this context, traditional software engineering knowledge and best practices associated with code quality management can be leveraged to assess and manage configuration code quality. We propose a catalog of 13 implementation and 11 design configuration smells, where each smell violates recommended best practices for configuration code. We analyzed 4,621 Puppet repositories containing 8.9 million lines of code and detected the cataloged implementation and design configuration smells. Our analysis reveals that the design configuration smells show 9% higher average co-occurrence among themselves than the implementation configuration smells. We also observed that configuration smells belonging to a smell category tend to co-occur with configuration smells belonging to another smell category when correlation is computed by volume of identified smells. Finally, design configuration smell density shows negative correlation whereas implementation configuration smell density exhibits no correlation with the size of a configuration management system.
KW - Code quality
KW - Configuration smells
KW - Infrastructure as Code
KW - Maintainability
KW - Technical debt
UR - http://www.scopus.com/inward/record.url?scp=84974602546&partnerID=8YFLogxK
U2 - 10.1145/2901739.2901761
DO - 10.1145/2901739.2901761
M3 - Conference contribution
AN - SCOPUS:84974602546
T3 - Proceedings - 13th Working Conference on Mining Software Repositories, MSR 2016
SP - 189
EP - 200
BT - Proceedings - 13th Working Conference on Mining Software Repositories, MSR 2016
PB - Association for Computing Machinery (ACM)
T2 - 13th Working Conference on Mining Software Repositories, MSR 2016
Y2 - 14 May 2016 through 15 May 2016
ER -