Abstract
Software studies on the function level, which is inherently different than coarse-grained investigations, contributes to the deep understanding of the laws of software internal evolution. This paper focuses on the life cycle distribution and the propagation behaviour of removed functions in Linux kernels. After an in-depth analysis of 300 Linux kernels, from Version 2.6.12-rc2 to 3.7-rc6, we found that most removed functions have relatively low life cycles, which indicates that many functions are likely to be removed between two consecutive versions. Our experimental results also show that function removal propagation is closely related to the file containing the functions, function call dependency, and historical information. This motivated us to propose a few heuristics to predict function removal propagation, which are based on the file position, call graph, and historical information in git. Furthermore, we analyzed the impact of removed functions on software structure and found that Linux kernel has a strong resistance to function removal. The life cycle feature and the prediction heuristics presented in this paper can be utilized to facilitate the maintenance of large-scale complex software systems.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
GCC 3.4: GCC 3.4 release series (2006). http://gcc.gnu.org/gcc-3.4/
Bohner, S.A.: Impact analysis in the software change process: a year 2000 perspective. In: Proceedings of the International Conference on Software Maintenance, pp. 42–51 (1996)
Bohner, S.A.: Software change impacts-an evolving perspective. In: Proceedings of the International Conference on Software Maintenance, pp. 263–272 (2002)
Codeviz: Codeviz – freecode (2008). http://freshmeat.sourceforge.net/projects/codeviz/
Ctags: Exuberant ctags (2009). http://ctags.sourceforge.net/
Hassan, A.E.: Predicting faults using the complexity of code changes. In: Proceedings 31th International Conference on Software Maintenance, pp. 78–88 (2009)
Hassan, A.E., Holt, R.C.: Predicting change propagation in software systems. In: Proceedings of the International Conference on Software Maintenance, pp. 284–293 (2004)
Hata, H., Mizuno, O., Kikuno, T.: Bug prediction based on fine-grained module histories. In: Proceedings 34th International Conference on Software Engineering, pp. 200–210 (2012)
Hirschberg, D.S.: Algorithms for the longest common subsequence problem. J. ACM 24, 664–675 (1997)
Kernel, L.: The linux kernel archives (2018). https://www.kernel.org/
Kim, S., Zimmermann, T., Whitehead, E., Zeller, A.: Predicting faults from cached history. In: Proceedings of 29th International Conference on Software Engineering, pp. 489–498 (2007)
Lehman, M.: Laws of software evolution revisited. Lect. Notes Comput. Sci. 1149(1996), 108–124 (1996)
Maia, M.C.O., Bittencourt, R.A., de Figueiredo, J.C.A., Guerrero, D.D.S.: The hybrid technique for object-oriented software change impact analysis. In: Software Maintenance and Reengineering (CSMR), pp. 252–255 (2010)
Nagappan, N.: Static analysis tools as early indicators of pre-release defect density. In: Proceedings of the 27th International Conference on Software Engineering, pp. 580–586 (2005)
Nagappan, N., Ball, T.: Use of relative code churn measures to predict system defect density. In: Proceedings of the 29th International Conference on Software Engineering, pp. 284–292 (2005)
Ostrand, T., Weyuker, E., Bell, R.: Predicting the location and number of faults in large software systems. IEEE Trans. Softw. Eng. 31(10), 340–355 (2005)
Parnas, D.L.: Software aging. In: Proceedings of the International Conference on Software Maintenance, pp. 279–287 (1994)
Pinzger, M., Nagappan, N., Murphy, B.: Can developer-module networks predict failures? In: Proceedings of the 16th ACM SIGSOFT International Symposium on Foundations of Software Engineering (2008)
Rajlich, V.T., Bennett, K.H.: A staged model for the software life cycle. In: IEEE Compute, pp. 2–8 (2000)
Svetinovic, D., Godfrey, M.: Architecture, evolution, and cloning of linux device drivers: a case study (2007). citeseer.ist.psu.edu/745737.html
Vora, U.: Change impact analysis and software evolution specification for continually evolving systems. In: Software Engineering Advances (ICSEA), pp. 238–243 (2010)
Wilkerson, J.W.: A software change impact analysis taxonomy. In: Proceedings of the International Conference on Software Maintenance, pp. 625–628 (2012)
Acknowledgments
This work was supported by National Natural Science Foundation of China (No. 61672073).
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2020 Springer Nature Switzerland AG
About this paper
Cite this paper
Wang, L., Chen, G., Li, L. (2020). Prediction of Function Removal Propagation in Linux Evolution. In: Miao, H., Tian, C., Liu, S., Duan, Z. (eds) Structured Object-Oriented Formal Language and Method. SOFL+MSVL 2019. Lecture Notes in Computer Science(), vol 12028. Springer, Cham. https://doi.org/10.1007/978-3-030-41418-4_16
Download citation
DOI: https://doi.org/10.1007/978-3-030-41418-4_16
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-41417-7
Online ISBN: 978-3-030-41418-4
eBook Packages: Computer ScienceComputer Science (R0)