Skip to main content
Log in

An empirical study of fine-grained software modifications

  • Published:
Empirical Software Engineering Aims and scope Submit manuscript

Abstract

Software is typically improved and modified in small increments (we refer to each of these increments as a modification record—MR). MRs are usually stored in a configuration management or version control system and can be retrieved for analysis. In this study we retrieved the MRs from several mature open software projects. We then concentrated our analysis on those MRs that fix defects and provided heuristics to automatically classify them. We used the information in the MRs to visualize what files are changed at the same time, and who are the people who tend to modify certain files. We argue that these visualizations can be used to understand the development stage of in which a project is at a given time (new features are added, or defects are being fixed), the level of modularization of a project, and how developers might interact between each other and the source code of a system.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Figure 1
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6
Figure 7
Figure 8
Figure 9
Figure 10
Figure 11
Figure 12
Figure 13
Figure 14
Figure 15
Figure 16

Similar content being viewed by others

References

  • Collberg C, Kobourov S, Nagra J, Pitts J, Wampler K (2003) A system for graph-based visualization of the Evolution of software. In: SoftVis ’03: Proceedings of the 2003 ACM symposium on software visualization, ACM, New York, New York, pp 77-ff

  • Eick SG, Graves TL, Karr AF, Mockus A, Schuster P (2002) Visualizing software changes. IEEE Trans Softw Eng 28(4):396–412

    Article  Google Scholar 

  • Fischer M, Pinzger M, Gall H (2003a) Analyzing and relating bug report data for feature tracking. In: Proc. 10th working conference on reverse engineering, IEEE, pp 90–101

  • Fischer M, Pinzger M, Gall H (2003b) Populating a release history database from version control and bug tracking systems. In: Proceedings of the 19 IEEE international conference on software maintenance (ICSM'03), IEEE Computer Society, pp 23–32

  • Fisher M, Gall H (2003) MDS-views: visualizing problem report data of large scale software using multidimensional scaling. In: Proceedings of the international workshop on Evolution of large-scale industrial software applications (ELISA)

  • Gall H, Jazayeri M, Krajewski J (2003) CVS release history data for detecting logical couplings. In: Proceedings of the international workshop on principles of software Evolution (IWPSE), IEEE, pp 12–23

  • German DM (2004a) Decentralized open source global software development, the GNOME experience. Journal of Software Process: Improvement and Practice 8(4):201–215

    Article  Google Scholar 

  • German DM (2004b) Mining CVS repositories, the softChange experience. In: 1st international workshop on mining software repositories, pp 17–21

  • German DM (2004c) Using software trails to reconstruct the Evolution of software. Journal of Software Maintenance and Evolution: Research and Practice 16(6):367–384

    Article  Google Scholar 

  • German DM, Mockus A (2003) Automating the measurement of open source projects. In: Proceedings of the 3rd workshop on open source software engineering

  • German DM, Hindle A, Jordan N (2004) Visualizing the Evolution of software using softChange. In: Proceedings SEKE 2004 The 16th international conference on software engineering and knowledge engineering, Knowledge Systems Institute, 3420 Main St. Skokie, Illinois 60076, USA, pp 336–341

  • Girba T, Ducasse S, Lanza M (2004) Yesterday's weather: guiding early reverse engineering efforts by summarizing the Evolution of changes. In: Proceedings of the 20th IEEE International Conference on Software Maintenance (ICSM’04), pp 44–49

  • Graves TL, Karr AF, Siy H (2000) Visualizing software changes. IEEE Trans Softw Eng 26(7):653–661

    Article  Google Scholar 

  • Hassan AE, Holt RC (2003) The chaos of software development. In: Proceedings of the international workshop on principles of software Evolution (IWPSE), pp 84–95

  • Hassan AE, Holt RC (2004) Predicting change propagation in software systems. In: Proceedings of the 20th IEEE international conference on software maintenance (ICSM'04), pp 284–293

  • Lanza M (2001) The Evolution Matrix: recovering software Evolution using software visualization techniques. In: Proceedings of the 4th international workshop on principles of software Evolution (IWPSE), pp 37–42

  • Lerner J, Triole J (2000) The simple economics of open source. Working Paper 7600, National Bureau of Economic Research, http://papers.nber.org/papers/w7600

  • Liu Y, Stroulia E (2003) Reverse engineering the process of small novice software teams. In: Proc. 10th working conference on reverse engineering. IEEE, pp 102–112

  • Liu Y, Stroulia E, Wong K, German D (2004) Using CVS historical information to understanding how students develop software. In: 1st international workshop on mining software repositories, pp 32–36

  • Mockus A, Fielding RT, Herbsleb J (2002) Two case studies of open source software development: Apache and Mozilla. ACM Trans Softw Eng Methodol 11(3):1–38

    Article  Google Scholar 

  • Ostrand TJ, Weyuker EJ (2004) A tool for mining defect-tracking systems to predict fault-prone files. In: 1st international workshop on mining software repositories, pp 85–89

  • Ostrand TJ, Weyuker EJ, Bell R (2005) Predicting the location and number of faults in large software systems. IEEE Trans Softw Eng 340–355

  • Purushothaman R, Perry DE (2005) Toward understanding the rhetoric of small source code changes. IEEE Trans Softw Eng 31(6):511–526

    Article  Google Scholar 

  • Storey MA, Čubranić D, German DM (2005) On the use of visualization to support awareness of human activities in software development: a survey and a framework. In: Proceedings of the 2nd ACM symposium on software visualization, pp 193–202. To be presented

  • Williams CC, Hollingsworth JK (2005) Automatic mining of source code repositories to improve bug finding techniques. IEEE Trans Softw Eng 31(6):466–480

    Article  Google Scholar 

  • Wu J, Holt RC, Hassan AE (2004a) Exploring software Evolution using spectrographs. In: Proc. 11th working conference on reverse engineering, pp 80–89

  • Wu X, Murray A, Storey M-A, Lintern R (2004b) A reverse engineering approach to support software maintenance: version control knowledge extraction. In: Proc. 11th working conference on reverse engineering, pp 90–99

  • Ying A, Murphy GC, Ng R, Chu-Carroll MC (2005) Predicting source code changes by mining change history. IEEE Trans Softw Eng 31(9):574–586

    Google Scholar 

  • Zimmermann T, Weissgerber P (2004) Preprocessing CVS data for fine-grained analysis. In: 1st international workshop on mining software repositories, pp 2–6

  • Zimmermann T, Weissgerber P, Diehl S, Zeller A (2005) Mining version histories to guide software changes. IEEE Trans Softw Eng 31(6):429–445

    Article  Google Scholar 

Download references

Acknowledgments

This research was supported by the National Sciences and Engineering Research Council of Canada, and the Advanced Systems Institute of British Columbia. The author would like to thank the reviewers of this paper for their thoughtful comments that greatly improved the quality of this paper, and the Apache, Evolution, GNU gcc, Mozilla and PostgreSQL development teams.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Daniel M. German.

Rights and permissions

Reprints and permissions

About this article

Cite this article

German, D.M. An empirical study of fine-grained software modifications. Empir Software Eng 11, 369–393 (2006). https://doi.org/10.1007/s10664-006-9004-6

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10664-006-9004-6

Keywords

Navigation