Abstract
Nowadays, almost everyone uses some kind of cloud infrastructure. As clouds gaining more and more attention, it is now even more important to have stable and reliable cloud systems. Along with stability and reliability comes source code maintainability. Unfortunately, maintainability has no exact definition, there are several definitions both from users’ and developers’ perspective. In this paper, we analyzed two projects of OpenStack, the world’s leading open-source cloud system, using QualityGate, a static software analyzer which can help to determine the maintainability of software. During the analysis we found quality issues that could be fixed by refactoring the code. We have created 47 patches in this two OpenStack projects. We have also analyzed our patches with QualityGate to see whether they increase the maintainability of the system. We found that a single refactoring has a barely noticeable effect on the maintainability of the software, what is more, it can even decrease maintainability. But if we do refactorings regularly, their cumulative effect will probably increase the quality in the mid and long-term. We also experienced that our refactoring commits were very appreciated by the open-source community.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsNotes
- 1.
- 2.
Jenkins is an open-source continuous integration system. More details can be found at https://jenkins.io/.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
References
OpenStack Docs: Hacking: OpenStack Hacking Guideline Enforcement. https://docs.openstack.org/hacking/latest/user/hacking.html
User talk: OpenStack Quality Improvement Plan. https://wiki.openstack.org/wiki/User_talk:P%C3%A9ter_Heged%C5%B1s
How To Contribute - OpenStack (2018). https://wiki.openstack.org/wiki/How_To_Contribute. Accessed 09 Apr 2018
OpenStack Docs: Modules List (2018). https://docs.openstack.org/puppet-openstack-guide/latest/contributor/module-list.html. Accessed 09 Apr 2018
Advani, D., Hassoun, Y., Counsell, S.: Extracting refactoring trends from open-source software and a possible solution to the ‘related refactoring’ conundrum. In: Proceedings of the 2006 ACM Symposium on Applied Computing, SAC 2006, pp. 1713–1720. ACM, New York (2006). http://doi.acm.org/10.1145/1141277.1141685
Bakota, T., Hegedűs, P., Siket, I., Ladányi, G., Ferenc, R.: Qualitygate sourceaudit: a tool for assessing the technical quality of software. In: Proceedings of the CSMR-WCRE Software Evolution Week, pp. 440–445. IEEE Computer Society (2014)
Bakota, T., Hegedűs, P., Körtvélyesi, P., Ferenc, R., Gyimóthy, T.: A probabilistic software quality model. In: Proceedings of the 27th International Conference on Software Maintenance (ICSM), pp. 243–252. IEEE Computer Society (2011)
Bakota, T., Hegedűs, P., Ladányi, G., Körtvélyesi, P., Ferenc, R., Gyimóthy, T.: A cost model based on software maintainability. In: Proceedings of the 28th International Conference on Software Maintenance (ICSM), pp. 316–325. IEEE Computer Society (2012)
Baset, S.A., Tang, C., Tak, B.C., Wang, L.: Dissecting open source cloud evolution: an OpenStack case study. In: HotCloud (2013)
Demeyer, S.: Refactor conditionals into polymorphism: what’s the performance cost of introducing virtual calls? In: Proceedings of the 21st IEEE International Conference on Software Maintenance, ICSM 2005, pp. 627–630. IEEE (2005)
Du Bois, B., Demeyer, S., Verelst, J.: Refactoring-improving coupling and cohesion of existing code. In: Proceedings of the 11th Working Conference on Reverse Engineering, pp. 144–151. IEEE (2004)
Du Bois, B., Mens, T.: Describing the impact of refactoring on internal program quality. In: Proceedings of the International Workshop on Evolution of Large-Scale Industrial Software Applications, pp. 37–48 (2003)
Erl, T., Puttini, R., Mahmood, Z.: Cloud Computing: Concepts Technology & Architecture, 1st edn. Prentice Hall Press, Upper Saddle River (2013)
Ubuntu Cloud: OpenStack Wins, Eucalyptus Loses. http://talkincloud.com/ubuntu-cloud-openstack-wins-eucalyptus-loses
Fitfield, T.: Introduction to OpenStack. Linux J. 2013(235) (2013). http://dl.acm.org/citation.cfm?id=2555789.2555793
Fowler, M.: Refactoring: Improving the Design of Existing Code. Addison-Wesley Longman Publishing Co., Inc., Boston (1999)
Hegedűs, P., Kádár, I., Ferenc, R., Gyimóthy, T.: Empiricalevaluation of software maintainability based on a manually validatedrefactoring dataset. Inf. Softw. Technol. (2017, accepted, to appear). https://doi.org/10.1016/j.infsof.2017.11.012. http://www.sciencedirect.com/science/article/pii/S0950584916303561
ISO/IEC: ISO/IEC 9126. Software Engineering - Product quality 6.5. ISO/IEC (2001)
ISO/IEC: ISO/IEC 25000:2005. Software Engineering - Software product Quality Requirements and Evaluation (SQuaRE) - Guide to SQuaRE. ISO/IEC (2005)
Kemerer, C.F., Paulk, M.C.: The impact of design and code reviews on software quality: an empirical study based on PSP data. IEEE Trans. Software Eng. 35(4), 534–550 (2009)
Kim, M., Gee, M., Loh, A., Rachatasumrit, N.: Ref-finder: a refactoring reconstruction tool based on logic query templates. In: Proceedings of the 18th ACM SIGSOFT International Symposium on Foundations of Software Engineering (FSE 2010), pp. 371–372 (2010)
Letouzey, J.L.: The SQALE method for evaluating technical debt. In: Third International Workshop on Managing Technical Debt (MTD), pp. 31–36. IEEE (2012). https://doi.org/10.1109/MTD.2012.6225997
Martin, R.C.: Clean Code: A Handbook of Agile Software Craftsmanship. Pearson Education, New York (2009)
McIntosh, S., Kamei, Y., Adams, B., Hassan, A.E.: An empirical study of the impact of modern code review practices on software quality. Empir. Softw. Eng. 21(5), 2146–2189 (2016)
Mens, T., Tourwé, T.: A survey of software refactoring. IEEE Trans. Softw. Eng. 30(2), 126–139 (2004)
Mirkalaei, M., Pooya, S.: API Failures in OpenStack Cloud Environments. Ph.D. thesis, École Polytechnique de Montréal (2017)
Musavi, P., Adams, B., Khomh, F.: Experience report: an empirical study of API failures in OpenStack cloud environments. In: 2016 IEEE 27th International Symposium on Software Reliability Engineering (ISSRE), pp. 424–434. IEEE (2016)
Opdyke, W.F.: Refactoring object-oriented frameworks. Ph.D. thesis, University of Illinois (1992)
The OpenStack Foundation. https://www.openstack.org/foundation
OpenStack Releases. https://releases.openstack.org/
OpenStack Release models. https://releases.openstack.org/reference/release_models.html
Ubuntu Cloud Infrastructure. https://help.ubuntu.com/community/UbuntuCloudInfrastructure
OpenStack. https://en.wikipedia.org/wiki/OpenStack
Sahraoui, H.A., Godin, R., Miceli, T.: Can metrics help to bridge the gap between the improvement of OO design quality and its automation? In: Proceedings of International Conference on Software Maintenance, pp. 154–162. IEEE (2000)
Simon, F., Steinbruckner, F., Lewerentz, C.: Metrics based refactoring. In: Proceedings of the Fifth European Conference on Software Maintenance and Reengineering, pp. 30–38. IEEE (2001)
Slipetskyy, R.: Security issues in OpenStack. Master’s thesis, Institutt for telematikk (2011)
Stroulia, E., Kapoor, R.: Metrics of refactoring-based development: an experience report. In: Wang, X., Johnston, R., Patel, S. (eds.) OOIS 2001, pp. 113–122. Springer, Heidelberg (2001). https://doi.org/10.1007/978-1-4471-0719-4_13
Szőke, G., Antal, G., Nagy, C., Ferenc, R., Gyimóthy, T.: Empirical study on refactoring large-scale industrial systems and its effects on maintainability. J. Syst. Softw. 129(C), 107–126 (2017). https://doi.org/10.1016/j.jss.2016.08.071. http://www.sciencedirect.com/science/article/pii/S0164121216301558?via%3Dihub
Acknowledgment
The project has been supported by the UNKP-17-4 New National Excellence Program of the Ministry of Human Capacities, Hungary.
The authors would also like to express their gratitude to Gergely Ladányi and Béla Vancsics for providing technical support in QualityGate analysis and OpenStack contribution as well as to Balázs Gibizer from Ericsson Hungary for his valuable guidance in the OpenStack development.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2018 Springer International Publishing AG, part of Springer Nature
About this paper
Cite this paper
Antal, G., Szarka, A., Hegedűs, P. (2018). A Hands-on OpenStack Code Refactoring Experience Report. In: Gervasi, O., et al. Computational Science and Its Applications – ICCSA 2018. ICCSA 2018. Lecture Notes in Computer Science(), vol 10964. Springer, Cham. https://doi.org/10.1007/978-3-319-95174-4_37
Download citation
DOI: https://doi.org/10.1007/978-3-319-95174-4_37
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-95173-7
Online ISBN: 978-3-319-95174-4
eBook Packages: Computer ScienceComputer Science (R0)