Exploring trends in the evolution of open-source systems

Springer Science and Business Media LLC - Tập 10 - Trang 1516-1526 - 2019
Raed Shatnawi1
1Software Engineering Department, Jordan University of Science and Technology, Irbid, Jordan

Tóm tắt

Software evolution is the costliest process in software project. Successful software projects tend to evolve longer for high quality software. To keep the software quality under control, software engineers need to know the trends in software growth to help in allocating appropriate resources in future releases. How does software evolve and in what pace is very important to understand software evolution? Knowing the evolution of software as a whole is not enough to make decisions. Software engineers need to understand the class evolution in object-oriented systems. The evolution of classes in five open-source systems are empirically studied using the growth rate using linear and nonlinear models. The work analyzes the evolution of classes for logarithmic, exponential and quadratic models. The results show that that most classes follow the logarithmic and quadratic models. While the linear model was the best fit in few number of classes. The systems evolution, measured using line of code and number of classes, also follows the logarithmic model for three out of five systems. These results show that nonlinear models are more common than linear model both at the class and system levels.

Tài liệu tham khảo

Ali S, Maqbool O (2009) Monitoring software evolution using multiple types of changes. In: ICET’09, pp 410–415 Bagherzadeh M, Kahani N, Bezemer CP, Hassan A, Dingel J, Cordy J (2018) Analyzing a decade of Linux system calls. Empir Softw Eng 23:1519. https://doi.org/10.1007/s10664-017-9551-z Bauer A, Pizka M (2003) The contribution of free software to software evolution. In: Sixth international workshop on principles of software evolution, pp 170–179 Brown AM (2001) A step-by-step guide to non-linear regression analysis of experimental data using a Microsoft Excel spreadsheet. Comput Methods Programs Biomed 65:191–200 Capiluppi A (2003) Models for the evolution of OO projects. In: ICSM’03, pp 65–74 Capiluppi A, Ramil J (2004) Studying the evolution of open source systems at different levels of granularity: two case studies. In: IWPSE, pp 113–118 Capiluppi A, Gonzlez-Barahona J, Herraiz I, Robles G (2007) Adapting the staged model for software evolution to free/libre/open source software. In: IWPSE’07, pp 79–82 Chatzigeorgiou A, Melas G (2012) Trends in object-oriented software evolution: investigating network properties. In: Proceedings of the 34th international conference on software engineering (ICSE’12). IEEE Press, Piscataway, pp 1309–1312 Chatzimparmpas A, Bibi S, Zozas I, Kerren A (2019) Analyzing the evolution of javascript applications. In: 14th International conference on evaluation of novel approaches to software engineering (ENASE 2019) Counsell S, Hassoun Y, Johnson R, Mannock K, Mendes E (2003) Trends in Java code changes: the key to identification of refactorings? In: Proceedings of the 2nd international conference on principles and practice of programming in Java, Kilkenny City, Ireland, pp 45–48 D’Ambros M, Lanza M, Robbes R (2010) An extensive comparison of bug prediction approaches. In: Proceedings of MSR 2010 (7th IEEE working conference on mining software repositories), pp 31–41 Fylstra D, Lasdon L, Watson J, Waren A (1998) Design and use of the Microsoft Excel Solver. Interfaces 28:29–55 Gatrell M, Counsell S (2015) The effect of refactoring on change and fault-proneness in commercial C# software. Sci Comput Program 102:44–56 Godfrey MW, Tu Q (2000) Evolution in open source software: a case study. In: Proceedings of the international conference on software maintenance. IEEE Computer Society, Washington, DC, USA, pp 131–142 Godfrey MW, Tu Q (2001) Growth, evolution, and structural change in open source software. In: Proceedings of the international workshop on principles of software evolution. Vienna, Austria, pp 103–106 Gonzalez-Barahona J, Robles G, Michlmayr M, Amor J, German D (2009) Macro-level software evolution: a case study of a large software compilation. J Empir Softw Eng 14(3):262–285 Gonzalez-Barahona JM, Robles G, Herraiz I, Ortega F (2014) Studying the laws of software evolution in a long-lived floss project. J Softw Evol Process 26:589–612 Herraiz I, Robles G, Gonzalez-Barahon JM (2006) Comparison between SLOCs and number of files as size metrics for software evolution analysis. In: Proceedings of the conference on software maintenance and reengineering, pp 206–213 Herraiz I, Rodriguez D, Robles G, Gonzalez-Barahona JM (2013) The evolution of the laws of software evolution: a discussion based on a systematic literature review. ACM Comput Surv 46(2):1–28 Illes-Seifert T, Paech B (2010) Exploring the relationship of a file’s history and its fault-proneness: an empirical method and its application to open source programs. Inf Softw Technol 52(5):539–558. https://doi.org/10.1016/j.infsof.2009.11.010 Israeli A, Feitelson DG (2010) The Linux kernel as a case study in software evolution. J Syst Softw 83(3):485–501 Kaur A, Kaur K, Kaur H (2016) Application of machine learning on process metrics for defect prediction in mobile application. In: Information systems design and intelligent applications. Springer, New Delhi, pp 81–98 Kemerer CF, Slaughter S (1999) An empirical approach to studying software evolution. IEEE Trans Softw Eng 25(4):493–509 Kemmer G, Keller S (2010) Nonlinear least-squares data fitting in Excel spreadsheets. Nat Protoc 5:267–281 Kim S, Whitehead EJ, Bevan J (2005) Analysis of signature change patterns. In: Proceedings of the 2005 international workshop on mining software repositories (MSR’05). ACM, New York, pp 1–5 Kirbas S, Caglayan B, Hall T, Counsell S, Bowes D, Sen A, Bener A (2017) The relationship between evolutionary coupling and defects in large industrial software. J Softw Evol Proc 29:e1842. https://doi.org/10.1002/smr.1842 Koch S (2005) Evolution of open source software systems—a large-scale investigation. In: Proceedings of the international conference on open source systems. Genova, Italy. Stefan Koch S (2007) Software evolution in open source projects—a large-scale investigation. J Softw Maint Evol Res Pract 19(6):361–382 Kour G, Singh P (2016) Using Lehman’s laws to validate the software evolution of agile projects. In: 2016 International conference on computational techniques in information and communication technologies (ICCTICT), New Delhi, pp 90–96 Kung DC, Gao J, Hsia P, Wen F, Toyoshima Y, Chen C (1994) Change impact identification in object oriented software maintenance. In: Proceedings of the international conference on software maintenance, Victoria, Canada, pp 202–211 Lehman MM (1974) Programs, cities, students: limits to growth?. Inaugural Lecture, Imperial College of Science and Technology, University of London, London Lehman MM (1996) Laws of software evolution revisited. In: Proceedings of the European workshop on software process technology. Springer, London, pp 108–124 Lehman MM (1996b) Feedback in the software evolution process. Inf Softw Technol 38(11):681–686 Marounek P (2012) Simplified approach to effort estimation in software maintenance. J Syst Integr 3(3):51–63 McIntosh S, Adams B, Hassan A (2010) The evolution of ant build systems. In: MSR’10, pp 42–51 Mens T, Demeyer S (2008) Software evolution. Springer, Berlin Mens T, Fernndez-Ramil J, Degrandsart S (2008) The evolution of eclipse. In: International conference on software maintenance (ICSM), pp 386–395 Moser R, Pedrycz W, Succi G (2008) A comparative analysis of the efficiency of change metrics and static code attributes for defect prediction. In: ICSE’08: proceedings of the 30th international conference on software engineering. ACM, New York, pp 181–190. https://doi.org/10.1145/1368088.1368114 Okwu O, Onyeje IN (2014) Software evolution: past, present and future. Am J Eng Res 3(5):21–28 Pirzada S (1988) A statistical examination of the evolution of the UNIX system. Ph.D. Dissertation. Imperial College. University of London Rajlich V (2014) Software evolution and maintenance. In: Proceedings of the on future of software engineering, pp 133–144 Robles G, Amor J, Gonzalez-Barahona JM, Herraiz I (2005) Evolution and growth in large libre software projects. In: Proceedings of the international workshop on principles in software evolution. Lisbon, Portugal, pp 165–174 Schach SR, Jin B, Wright DR, Heller GZ, Offutt AJ (2002) Maintainability of the Linux kernel. In: IEE proceedings—software, 149:1, pp 18–23. https://doi.org/10.1049/ip-sen:20020198 Shatnawi R (2017) Identifying and eliminating less complex instances from software fault data. Int J Syst Assur Eng Manag 8(Suppl 2):974. https://doi.org/10.1007/s13198-016-0556-6 Simmons MM, Vercellone-Smith P, Laplante P (2006) Understanding open source software through software archeology: the case of Nethack. In: 30th SEW, pp 47–58 Stefan K (2007) Software evolution in open source projects a large-scale investigation. J Softw Maint Evol Res Pract 19:361–382 Thomas LG, Schach SR, Heller GZ, Offutt J (2009) Impact of release intervals on empirical research into software evolution, with application to the maintainability of Linux. IET Softw 3(1):58–66. https://doi.org/10.1049/iet-sen:20080052 Tripathy P, Naik K (2014) A practitioner’s approach, software evolution and maintenance. Wiley, New York Walpole RE, Myers RH, Myers SL, Ye K (2011) Probability & statistics for engineers & scientists, 9th edn. Prentice Hall, Englewood Cliffs Wermelinger M, Yu Y, Lozano A (2008) Design principles in architectural evolution: a case study. In: Proceedings of the 24th IEEE international conference on software maintenance (ICSM), pp 396–405 Xiao G, Zheng Z, Wang H (2017) Evolution of Linux operating system network. Phys A 466:249–258 Xie G, Chen J, Neamtiu I (2009) Towards a better understanding of software evolution: an empirical study on open source software. In: 2009 IEEE international conference on software maintenance, Edmonton, AB, pp 51–60 Xie H, Yang J, Chang CK, Liu L (2017) A statistical analysis approach to predict user’s changing requirements for software service evolution. J Syst Softw 132:147–164 Xing Z, Stroulia E (2004) Understanding class evolution in object-oriented software. In: Proceedings of the 12th IEEE international workshop on program comprehension, pp 34–43 Yu L, Mishra A (2013) An empirical study of Lehman’s law on software quality evolution. Int J Softw Inf 7(3):469–481