skip to main content
10.1145/2393596.2393646acmconferencesArticle/Chapter ViewAbstractPublication PagesfseConference Proceedingsconference-collections
research-article

History slicing: assisting code-evolution tasks

Published:11 November 2012Publication History

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.

References

  1. Apache Software Foundation. Apache Subversion. http://www.eclipse.org/aspectj/, 2000.Google ScholarGoogle Scholar
  2. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  3. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  4. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  5. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  6. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  7. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  8. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  9. Eclipse Foundation. AspectJ. http://www.eclipse.org/aspectj/, 2001.Google ScholarGoogle Scholar
  10. Free Software Foundation. CVS - Concurrent Versions System. http://www.nongnu.org/cvs/, 1990.Google ScholarGoogle Scholar
  11. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  12. T. Gîrba and S. Ducasse. Modeling History to Analyze Software Evolution. Journal of Software Maintenance, 18(3):207--236, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. T. Gîrba, A. Kuhn, M. Seeberger, and S. Ducasse. How Developers Drive Software Evolution. In Workshop on Principles of Software Evolution, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  15. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  16. J. J. Hunt and W. F. Tichy. Extensible Language-Aware Merging. In International Conference on Software Maintenance, pages 511--520, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. 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 ScholarGoogle ScholarCross RefCross Ref
  18. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  19. H. W. Kuhn. The Hungarian Method for the Assignment Problem. Naval Research Logistics Quarterly, 2(1-2):83--97, 1955.Google ScholarGoogle ScholarCross RefCross Ref
  20. 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 ScholarGoogle Scholar
  21. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  22. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  23. V. I. Levenshtein. Binary Codes Capable of Correcting Deletions, Insertions and Reversals. Soviet Physics Doklady, 10:707, 1966.Google ScholarGoogle Scholar
  24. J. I. Maletic and M. L. Collard. Supporting Source Code Difference Analysis. pages 210--219, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  26. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  27. S. P. Reiss. Tracking Source Locations. In International Conference on Software Engineering, pages 11--20, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. 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 ScholarGoogle Scholar
  29. D. Schuler and T. Zimmermann. Mining Usage Expertise from Version Archives. In International Working Conference on Mining Software Repositories, pages 121--124, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. F. Servant and J. A. Jones. History Slicing. In International Conference on Automated Software Engineering, pages 452--455, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Software Freedom Conservancy. Git: the Fast Version Control System. http://git-scm.com/, 2005.Google ScholarGoogle Scholar
  32. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  33. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  34. 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 ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. History slicing: assisting code-evolution tasks

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in
      • Published in

        cover image ACM Conferences
        FSE '12: Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
        November 2012
        494 pages
        ISBN:9781450316149
        DOI:10.1145/2393596

        Copyright © 2012 ACM

        Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 11 November 2012

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • research-article

        Acceptance Rates

        Overall Acceptance Rate17of128submissions,13%

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader