Exploring trends in the evolution of open-source systems
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