ABSTRACT
Many software-engineering tasks require developers to understand the history and evolution of source code. However, today's software-development techniques and tools are not well suited for the easy and efficient procurement of such information. In this paper, we present an approach called history slicing that can automatically identify a minimal number of code modifications, across any number of revisions, for any arbitrary segment of source code at fine granularity. We also present our implementation of history slicing, Chronos, that includes a novel visualization of the entire evolution for the code of interest. We provide two experiments: one experiment automatically computes 16,000 history slices to determine the benefit brought by various levels of automation, and another experiment that assesses the practical implications of history slicing for actual developers using the technique for actual software-maintenance tasks that involve code evolution. The experiments show that history slicing offered drastic improvements over the conventional techniques in three ways: (1) the amount of information needed to be examined and traced by developers was reduced by up to three orders of magnitude; (2) the correctness of developers attempting to solve software-maintenance tasks was more than doubled; and (3) the time to completion of these software-maintenance tasks was almost halved.
- Apache Software Foundation. Apache Subversion. http://www.eclipse.org/aspectj/, 2000.Google Scholar
- T. Apiwattanapong, A. Orso, and M. J. Harrold. JDiff: A Differencing Technique and Tool for Object-Oriented Programs. Automated Software Engineering, 14:3--36, 2007. Google ScholarDigital Library
- T. Bakota. Tracking the Evolution of Code Clones. In International Conference on Current Trends in Theory and Practice of Computer Science, pages 86--98, 2011. Google ScholarDigital Library
- A. W. J. Bradley and G. C. Murphy. Supporting Software History Exploration. In International Working Conference on Mining Software Repositories, pages 193--202, 2011. Google ScholarDigital Library
- G. Canfora, L. Cerulo, and M. D. Penta. Identifying Changed Source Code Lines from Version Repositories. In International Workshop on Mining Software Repositories, pages 14--21, 2007. Google ScholarDigital Library
- A. Chen, E. Chou, J. Wong, A. Y. Yao, Q. Zhang, S. Zhang, and A. Michail. CVSSearch: Searching through Source Code using CVS Comments. In International Conference on Software Maintenance, pages 364--373, 2001. Google ScholarDigital Library
- D. Dig, K. Manzoor, R. Johnson, and T. N. Nguyen. Refactoring-Aware Configuration Management for Object-Oriented Programs. In International Conference on Software Engineering, pages 427--436, 2007. Google ScholarDigital Library
- A. Duley, C. Spandikow, and M. Kim. A Program Differencing Algorithm for Verilog HDL. In International Conference on Automated Software Engineering, pages 477--486, 2010. Google ScholarDigital Library
- Eclipse Foundation. AspectJ. http://www.eclipse.org/aspectj/, 2001.Google Scholar
- Free Software Foundation. CVS - Concurrent Versions System. http://www.nongnu.org/cvs/, 1990.Google Scholar
- T. Fritz, J. Ou, G. C. Murphy, and E. Murphy-Hill. A Degree-of-Knowledge Model to Capture Source Code Familiarity. In International Conference on Software Engineering, pages 385--394, 2010. Google ScholarDigital Library
- T. Gîrba and S. Ducasse. Modeling History to Analyze Software Evolution. Journal of Software Maintenance, 18(3):207--236, 2006. Google ScholarDigital Library
- T. Gîrba, A. Kuhn, M. Seeberger, and S. Ducasse. How Developers Drive Software Evolution. In Workshop on Principles of Software Evolution, 2005. Google ScholarDigital Library
- A. E. Hassan and R. C. Holt. Using Development History Sticky Notes to Understand Software Architecture. In International Workshop on Program Comprehension, pages 183--192, 2004. Google ScholarDigital Library
- R. Holmes and A. Begel. Deep Intellisense: a Tool for Rehydrating Evaporated Information. In International Working Conference on Mining Software Repositories, pages 23--26, 2008. Google ScholarDigital Library
- J. J. Hunt and W. F. Tichy. Extensible Language-Aware Merging. In International Conference on Software Maintenance, pages 511--520, 2002. Google ScholarDigital Library
- H. Kagdi, M. Hammad, and J. Maletic. Who Can Help Me with this Source Code Change? In International Conference on Software Maintenance, pages 157--166, 2008.Google ScholarCross Ref
- A. J. Ko, R. DeLine, and G. Venolia. Information Needs in Collocated Software Development Teams. In International Conference on Software Engineering, pages 344--353, 2007. Google ScholarDigital Library
- H. W. Kuhn. The Hungarian Method for the Assignment Problem. Naval Research Logistics Quarterly, 2(1-2):83--97, 1955.Google ScholarCross Ref
- M. Lanza and S. Ducasse. Understanding Software Evolution using a Combination of Software Visualization and Software Metrics. In Langages et Modèles à Objets, pages 135--149, 2002.Google Scholar
- T. D. LaToza and B. A. Myers. Hard-to-Answer Questions about Code. In Evaluation and Usability of Programming Languages and Tools, pages 8:1--8:6, 2010. Google ScholarDigital Library
- T. D. LaToza, G. Venolia, and R. DeLine. Maintaining Mental Models: a Study of Developer Work Habits. In International Conference on Software Engineering, pages 492--501, 2006. Google ScholarDigital Library
- V. I. Levenshtein. Binary Codes Capable of Correcting Deletions, Insertions and Reversals. Soviet Physics Doklady, 10:707, 1966.Google Scholar
- J. I. Maletic and M. L. Collard. Supporting Source Code Difference Analysis. pages 210--219, 2004. Google ScholarDigital Library
- D. W. McDonald and M. S. Ackerman. Expertise Recommender: a Flexible Recommendation System and Architecture. In Computer Supported Cooperative Work, pages 231--240, 2000. Google ScholarDigital Library
- A. Mockus and J. D. Herbsleb. Expertise Browser: a Quantitative Approach to Identifying Expertise. In International Conference on Software Engineering, pages 503--512, 2002. Google ScholarDigital Library
- S. P. Reiss. Tracking Source Locations. In International Conference on Software Engineering, pages 11--20, 2008. Google ScholarDigital Library
- R. M. Ripley, A. Sarma, and A. van der Hoek. A Visualization for Software Project Awareness and Evolution. In International Workshop on Visualizing Software for Understanding and Analysis, pages 137--144, 2007.Google Scholar
- D. Schuler and T. Zimmermann. Mining Usage Expertise from Version Archives. In International Working Conference on Mining Software Repositories, pages 121--124, 2008. Google ScholarDigital Library
- F. Servant and J. A. Jones. History Slicing. In International Conference on Automated Software Engineering, pages 452--455, 2011. Google ScholarDigital Library
- Software Freedom Conservancy. Git: the Fast Version Control System. http://git-scm.com/, 2005.Google Scholar
- C. C. Williams and J. W. Spacco. Branching and Merging in the Repository. In International Working Conference on Mining Software Repositories, pages 19--22, 2008. Google ScholarDigital Library
- T. Zimmermann, S. Kim, A. Zeller, and E. J. Whitehead, Jr. Mining Version Archives for Co-changed Lines. In International Workshop on Mining Software Repositories, pages 72--75, 2006. Google ScholarDigital Library
- T. Zimmermann, P. Weibgerber, S. Diehl, and A. Zeller. Mining Version Histories to Guide Software Changes. In International Conference on Software Engineering, pages 563--572, 2004. Google ScholarDigital Library
Index Terms
- History slicing: assisting code-evolution tasks
Recommendations
Slicing and replaying code change history
ASE '12: Proceedings of the 27th IEEE/ACM International Conference on Automated Software EngineeringChange-aware development environments have recently become feasible and reasonable. These environments can automatically record fine-grained code changes on a program and allow programmers to replay the recorded changes in chronological order. However, ...
Controlling Software Evolution Process Using Code Smell Visualization
ICCCV '19: Proceedings of the 2nd International Conference on Control and Computer VisionSoftware change is inevitable, evolution becomes a part of software lifetime, and software release becomes more frequent. Hence there is a need for the project manager to inspect and control the process during software development and evolution. In the ...
Incremental exploratory visualization of relationships in large codebases for program comprehension
OOPSLA '05: Companion to the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applicationsAs software systems grow in size and use more third-party libraries and frameworks, the need for developers to understand unfamiliar large codebases is rapidly increasing. In this poster, we present a tool, Relo that supports users' understanding by ...
Comments