C-REX : An Evolutionary Code Extractor for C

Software systems are continuously changing to adapt to customer’s evolving needs. However, the source code change process is not well understood. Source control systems record changes to the source code of a software system. These recorded details could be used to gain some insight into the evolutionary process followed by the source code. In this paper, we discuss C-REX, an evolutionary code extractor, which recovers information from source control repositories to study source code evolution. We present our design choices for C-REX, explain the reasoning for these choices, and give an overview of our extraction approach. We also discuss a number of limitations to our approach and show results of using C-REX to recover the evolution of several software systems. We believe that the discussion presented here is beneficial for others interested in recovering and studying data stored in source control repositories.

[1]  Hausi A. Müller,et al.  Rigi: a system for programming-in-the-large , 1988, Proceedings. [1989] 11th International Conference on Software Engineering.

[2]  C. V. Ramamoorthy,et al.  The C Information Abstraction System , 1990, IEEE Trans. Software Eng..

[3]  Ken Kennedy,et al.  Constructing the Procedure Call Multigraph , 1990, IEEE Trans. Software Eng..

[4]  Dewayne E. Perry,et al.  Metrics and laws of software evolution-the nineties view , 1997, Proceedings Fourth International Software Metrics Symposium.

[5]  Harald C. Gall,et al.  Detection of logical coupling based on product release history , 1998, Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272).

[6]  Audris Mockus,et al.  Identifying reasons for software changes using historic databases , 2000, Proceedings 2000 International Conference on Software Maintenance.

[7]  Harvey P. Siy,et al.  Predicting Fault Incidence Using Software Change History , 2000, IEEE Trans. Software Eng..

[8]  Audris Mockus,et al.  Measuring technology effects on software change cost , 2000, Bell Labs Technical Journal.

[9]  Michael W. Godfrey,et al.  Evolution in open source software: a case study , 2000, Proceedings 2000 International Conference on Software Maintenance.

[10]  Qing Zhang,et al.  CVSSearch: searching through source code using CVS comments , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[11]  Stan Matwin,et al.  Supporting software maintenance by mining software update records , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[12]  Michael W. Godfrey,et al.  The build-time software architecture view , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[13]  Annie T. T. Ying,et al.  Predicting source code changes by mining revision history , 2003 .

[14]  Harald C. Gall,et al.  CVS release history data for detecting logical couplings , 2003, Sixth International Workshop on Principles of Software Evolution, 2003. Proceedings..

[15]  Richard C. Holt,et al.  ADG: Annotanted Dependency Graphs , 2003 .

[16]  Ralf Lämmel,et al.  Deriving tolerant grammars from a base-line grammar , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

[17]  Richard C. Holt,et al.  Studying the chaos of code development , 2003, 10th Working Conference on Reverse Engineering, 2003. WCRE 2003. Proceedings..

[18]  Richard C. Holt,et al.  The chaos of software development , 2003, Sixth International Workshop on Principles of Software Evolution, 2003. Proceedings..

[19]  Audris Mockus,et al.  Automating the Measurement of Open Source Projects , 2003 .

[20]  Andreas Zeller,et al.  How history justifies system architecture (or not) , 2003, Sixth International Workshop on Principles of Software Evolution, 2003. Proceedings..

[21]  Thomas Zimmermann,et al.  Preprocessing CVS Data for Fine-Grained Analysis , 2004, MSR.

[22]  Richard C. Holt,et al.  Studying the evolution of software systems using evolutionary code extractors , 2004, Proceedings. 7th International Workshop on Principles of Software Evolution, 2004..

[23]  Richard C. Holt,et al.  Using development history sticky notes to understand software architecture , 2004, Proceedings. 12th IEEE International Workshop on Program Comprehension, 2004..

[24]  Richard C. Holt,et al.  Predicting change propagation in software systems , 2004, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..

[25]  Andreas Zeller,et al.  Mining Version Histories to Guide Software Changes , 2004 .

[26]  Richard C. Holt,et al.  Source Control Change Messages : How Are They Used And What Do They Mean ? , 2005 .