Survey on Software Changes: Reasons and Remedies
Software systems play a key role in most businesses nowadays. Building robust, reliable and scalable software systems require going through a software production cycle (or process). However, it has been noticed that software systems are subjected to changes, whether those amendments are important or not. Those changes to software systems are viewed as a considerable issue in software engineering; they are considered as a burden and cost a lot, especially in cases such as enterprises and large-scale software systems. This study aims to identify the reasons that cause software changes and suggest remedies for those reasons. We survey the opinions of experts such as technical managers, team leaders, and senior developers. We collected 81 responses to our questionnaire, which aimed to establish common software development practices in the local industry. We also conducted 16 semi-structured interviews targeting the most senior experts, in which we directly discussed the reasons and remedies for software changes. Our results highlight the most influential reasons that cause changes to software systems, such as changes to user requirements, requests for new features, software development methodology, solving bugs, refactoring, and weak user experience design. Most importantly, the study solicited solutions that can reduce the need for software changes.
[1] Al-Fedaghi S., “Conceptualizing Software Life Cycle,” in Proceedings of Information Systems: Modeling, Development, and Integration, Sydney, pp. 438-457, 2009.
[2] Almasri N., Tahat L., and Korel B., “Toward Automatically Quantifying the Impact of A Change in Systems,” Software Quality Journal, vol. 25, no. 3, pp. 60-640, 2017.
[3] Anwer S., Wen L., Wang Z., and Mahmood S., “Comparative Analysis of Requirement Change Management Challenges Between In-House and Global Software Development: Findings of Literature and Industry Survey,” IEEE Access, vol. 7, pp. 116585-116611, 2019.
[4] Banker R., Datar S., Kemerer C., and Zweig D., “Software Errors and Software Maintenance Management,” Information Technology and Management, vol. 3, no. 1, pp. 25-41, 2002.
[5] Brooks F., “No Silver Bullet,” IEEE Computer, vol. 20, no. 4, pp. 10-19, 1987.
[6] Carr M. and Wagner C., “A Study of Reasoning Processes in Software Maintenance Management” Information Technology and Management, vol. 3, no. 1, pp. 181-203, 2002.
[7] Devore J., Farnum N., and Doi J., “Applied Statistics for Engineers and Scientists,” Nelson Education, 2013.
[8] Fowler M., “Refactoring: Improving the Design of Existing Code,” in Proceedings of 11th European Conference, Jyväskylä, pp. 1-163 1997.
[9] Hasan M., Altab H., Hosney J., Haider N., and Touhid B., “CSV-ANNOTATE: Generate Annotated Tables from CSV File” in Proceedings of International Conference on Artificial Intelligence and Big Data, Chengdu, pp. 71-75, 2018.
[10] Hughes C., Qualitative and Quantitative Approaches, http://tinyurl. com/bmztxp8, Last Visited , 2012.
[11] Kitchenham B. and Pfleeger S., “Guide to Advanced Empirical Software Engineering,” Springer link, 2008.
[12] Kreutzer P., Dotzler G., Ring M., Eskofier B., and Philippsen M., “Automatic Clustering of Code Changes,” in Proceedings of the 13th International Conference on Mining Software Repositories, Austin, pp. 61-72, 2016.
[13] Langer M., System Development Life Cycle (Sdlc), Springer Link , 2008. 260 The International Arab Journal of Information Technology, Vol. 18, No. 2, March 2021
[14] Majchrzak T., Improving Software Testing: Technical and Organizational Developments, Springer Science and Business Media, 2012.
[15] Mazumder F. and Das U., “Usability Guidelines for Usable User Interface,” International Journal of Research in Engineering and Technology, vol. 3, no. 9, pp. 79-82, 2014.
[16] McIntosh S., Kamei Y., Adams B., and Hassan A., “An Empirical Study of the Impact of Modern Code Review Practices on Software Quality,” Empirical Software Engineering, vol. 21, no. 5, pp. 2146-2189, 2016.
[17] Minge M., Thüring M., Wagner I., and Kuhr C., “The meCUE Questionnaire: A Modular Tool for Measuring User Experience” in Proceedings of Advances in Ergonomics Modeling, Usability and Special Populations, pp. 115-128, 2017
[18] Mockus A. and Votta L., “Identifying Reasonsfor Software Changes Using Historic Databases,” in Proceedings of International Conference on Software Maintenance, San Jose, pp. 120-130, 2000.
[19] Mondal M., Roy C., and Schneider K., “Acomparative Study on the Intensity and harmful-ness of Late Propagation in Near-Miss Code Clones,” Software Quality Journal, vol. 24, no. 4, pp. 883-915, 2016.
[20] Nurmuliani N., Zowghi D., and Fowell S., “Analysis of Requirements Volatility during Software Development Life Cycle,” in Proceeding of Australian Software Engineering Conference, Australian, pp. 28-37, 2004.
[21] Rahman F., Bird C., and Devanbu P., “Clones: What is that Smell?” Empirical Software Engineering, vol. 17, no. 4-5, pp. 503-530, 2012.
[22] Rajlich V., “Software Change and Evolution” in Proceedings of International Conference on Current Trends in Theory and Practice of Computer Science, Milovy, pp. 189-202. 1999.
[23] Rastkar S. and Murphy G., “Why Did This Code Change?” in Proceedings of the 35th International Conference on Software Engineering, San Francisco, pp. 1193-1196, 2013.
[24] Ray B., Nagappan M., Bird C., Nagappan N., and Zimmermann T., “The Uniqueness of Changes: Characteristics and Applications,” in Proceedings of the 12th Working Conference on Mining Software Repositories, Florence, pp. 34-44, 2015.
[25] Siow J., Gao C., Fan L., Chen S., and Liu Y., “CORE: Automating Review Recommendation for Code Changes,” in Proceedings of 27th International Conference on Software Analysis, Evolution and Reengineering, London, pp. 284- 295, 2020.
[26] Sjøberg D., Yamashita A., Anda B., Mockus A., and Dybå T., “Quantifying the Effectof Code Smells on Maintenance Effort,” IEEE Transactions on Software Engineering, vol. 39, no. 8, pp. 1144-1156, 2013.
[27] Uqaili I. and Ahsan S., “Machine Learning Based Prediction of Complex Bugs in Source Code,” The International Arab Journal of Information Technology, vol. 17, no. 1, pp.26- 37, 2020.
[28] Viggiato M., Oliveira J., Figueiredo E., Jamshidi P., and Kästner C., “How Do Code Changes Evolve in Different Platforms? A Mining-based Investigation,” in Proceeding of IEEE International Conference on Software Maintenance and Evolution, Cleveland, pp. 218- 222, 2019.
[29] Wohlin C., Runeson P., Höst M., Ohlsson M., Regnell B., and Wesslén A., Experimentation in Software Engineering, Springer Science and Business Media, 2012.
[30] Yan M., Fu Y., Zhang X., Yang D., Xu L., and Kymer J., “Automatically Classifying Software Changes via Discriminative Topic Model: Supporting Multicategory and Cross-Project,” Journal of Systems and Software, vol. 113, pp. 296-308, 2016.