Advertisement

An Approach to Software Evolution Based on Semantic Change

  • Romain Robbes
  • Michele Lanza
  • Mircea Lungu
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4422)

Abstract

The analysis of the evolution of software systems is a useful source of information for a variety of activities, such as reverse engineering, maintenance, and predicting the future evolution of these systems.

Current software evolution research is mainly based on the information contained in versioning systems such as CVS and SubVersion. But the evolutionary information contained therein is incomplete and of low quality, hence limiting the scope of evolution research. It is incomplete because the historical information is only recorded at the explicit request of the developers (a commit in the classical checkin/checkout model). It is of low quality because the file-based nature of versioning systems leads to a view of software as being a set of files.

In this paper we present a novel approach to software evolution analysis which is based on the recording of all semantic changes performed on a system, such as refactorings. We describe our approach in detail, and demonstrate how it can be used to perform fine-grained software evolution analysis.

Keywords

IEEE Computer Society Reverse Engineering Software Maintenance Change Operation Change Matrix 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

References

  1. 1.
    Lehman, M., Belady, L.: Program Evolution: Processes of Software Change. Academic Press, London (1985)Google Scholar
  2. 2.
    Gall, H., Jazayeri, M., Klösch, R., Trausmuth, G.: Software evolution observations based on product release history. In: Proceedings International Conference on Software Maintenance (ICSM’97), pp. 160–166. IEEE Computer Society Press, Los Alamitos (1997)CrossRefGoogle Scholar
  3. 3.
    Mens, T., Demeyer, S.: Future trends in software evolution metrics. In: Proceedings IWPSE2001 (4th International Workshop on Principles of Software Evolution), pp. 83–86 (2001)Google Scholar
  4. 4.
    Van Rysselberghe, F., Demeyer, S.: Studying software evolution information by visualizing the change history. In: Proceedings 20th IEEE International Conference on Software Maintenance (ICSM ’04), pp. 328–337. IEEE Computer Society Press, Los Alamitos (2004)CrossRefGoogle Scholar
  5. 5.
    Gîrba, T., Ducasse, S., Lanza, M.: Yesterday’s Weather: Guiding early reverse engineering efforts by summarizing the evolution of changes. In: Proceedings 20th IEEE International Conference on Software Maintenance (ICSM 2004), pp. 40–49. IEEE Computer Society Press, Los Alamitos (2004)CrossRefGoogle Scholar
  6. 6.
    D’Ambros, M., Lanza, M.: Software bugs and evolution: A visual approach to uncover their relationship. In: Proceedings of CSMR 2006 (10th IEEE European Conference on Software Maintenance and Reengineering), pp. 227–236. IEEE Computer Society Press, Los Alamitos (2006)Google Scholar
  7. 7.
    Tichy, W.: Tools for software configuration management. In: Proceedings of the International Workshop on Software Version and Configuration Control, pp. 1–20 (1988)Google Scholar
  8. 8.
    Feiler, P.H.: Configuration management models in commercial environments. Technical report cmu/sei-91-tr-7, Carnegie-Mellon University (1991)Google Scholar
  9. 9.
    Conradi, R., Westfechtel, B.: Version models for software configuration management. ACM Computing Surveys 30(2), 232–282 (1998)CrossRefGoogle Scholar
  10. 10.
    Estublier, J., Leblang, D., van der Hoek, A., Conradi, R., Clemm, G., Tichy, W., Wiborg-Weber, D.: Impact of software engineering research on the practice of software configuration management. ACM Transactions on Software Engineering and Methodology 14(4), 383–430 (2005)CrossRefGoogle Scholar
  11. 11.
    Robbes, R., Lanza, M.: A change-based approach to software evolution. In: ENTCS volume 166, to appear (2007)Google Scholar
  12. 12.
    Görg, C., Weissgerber, P.: Detecting and visualizing refactorings from software archives. In: Proceedings of IWPC, 13th International Workshop on Program Comprehension, pp. 205–214. IEEE Computer Society Press, Los Alamitos (2005)Google Scholar
  13. 13.
    Van Rysselberghe, F., Rieger, M., Demeyer, S.: Detecting move operations in versioning information. In: Proceedings of the 10th Conference on Software Maintenance and Reengineering (CSMR’06), pp. 271–278. IEEE Computer Society Press, Los Alamitos (2006)CrossRefGoogle Scholar
  14. 14.
    Fowler, M., Beck, K., Brant, J., Opdyke, W., Roberts, D.: Refactoring: Improving the Design of Existing Code. Addison-Wesley, Reading (1999)Google Scholar
  15. 15.
    Beck, K.: Extreme Programming Explained: Embrace Change. Addison-Wesley, Reading (2000)Google Scholar
  16. 16.
    Gîrba, T., Lanza, M., Ducasse, S.: Characterizing the evolution of class hierarchies. In: Proceedings IEEE European Conference on Software Maintenance and Reengineering (CSMR 2005), pp. 2–11. IEEE Computer Society Press, Los Alamitos (2005)Google Scholar
  17. 17.
    Lanza, M.: The evolution matrix: Recovering software evolution using software visualization techniques. In: Proceedings of IWPSE 2001 (International Workshop on Principles of Software Evolution), pp. 37–42 (2001)Google Scholar
  18. 18.
    Jackson, D., Ladd, D.A.: Semantic diff: A tool for summarizing the effects of modifications. In: Müller, H.A., Georges, M. (eds.) ICSM, pp. 243–252. IEEE Computer Society Press, Los Alamitos (1994)Google Scholar
  19. 19.
    Robbes, R., Lanza, M.: Versioning systems for evolution research. In: Proceedings of IWPSE 2005 (8th International Workshop on Principles of Software Evolution), pp. 155–164. IEEE Computer Society Press, Los Alamitos (2005)Google Scholar
  20. 20.
    Tu, Q., Godfrey, M.W.: An integrated approach for studying architectural evolution. In: 10th International Workshop on Program Comprehension (IWPC’02), pp. 127–136. IEEE Computer Society Press, Los Alamitos (2002)Google Scholar
  21. 21.
    Jazayeri, M., Gall, H., Riva, C.: Visualizing Software Release Histories: The Use of Color and Third Dimension. In: Proceedings of ICSM ’99 (International Conference on Software Maintenance), pp. 99–108. IEEE Computer Society Press, Los Alamitos (1999)Google Scholar
  22. 22.
    Xing, Z., Stroulia, E.: Analyzing the evolutionary history of the logical design of object-oriented software. IEEE Trans. Software Eng. 31(10), 850–868 (2005)CrossRefGoogle Scholar
  23. 23.
    Gîrba, T., Lanza, M.: Visualizing and characterizing the evolution of class hierarchies (2004)Google Scholar
  24. 24.
    Eick, S., Graves, T., Karr, A., Marron, J., Mockus, A.: Does code decay? assessing the evidence from change management data. IEEE Transactions on Software Engineering 27(1), 1–12 (2001)CrossRefGoogle Scholar
  25. 25.
    Gall, H., Hajek, K., Jazayeri, M.: Detection of logical coupling based on product release history. In: Proceedings International Conference on Software Maintenance (ICSM ’98), pp. 190–198. IEEE Computer Society Press, Los Alamitos (1998)Google Scholar
  26. 26.
    Murphy, G.C., Notkin, D., Sullivan, K.J.: Software reflexion models: Bridging the gap between design and implementation. IEEE Trans. Software Eng. 27(4), 364–380 (2001)CrossRefGoogle Scholar
  27. 27.
    Mens, T.: A state-of-the-art survey on software merging. IEEE Transactions on Software Engineering 28(5), 449–462 (2002)CrossRefGoogle Scholar
  28. 28.
    Lippe, E., van Oosterom, N.: Operation-based merging. In: SDE 5: Proceedings of the fifth ACM SIGSOFT symposium on Software development environments, pp. 78–87. ACM Press, New York (1992)CrossRefGoogle Scholar

Copyright information

© Springer Berlin Heidelberg 2007

Authors and Affiliations

  • Romain Robbes
    • 1
  • Michele Lanza
    • 1
  • Mircea Lungu
    • 1
  1. 1.Faculty of Informatics, University of LuganoSwitzerland

Personalised recommendations