Advertisement

Abstract

During a software project’s lifetime, the software goes through many changes, as components are added, removed and modified to fix bugs and add new features. This paper is intended as a lightweight introduction to some of the issues arising from an ‘archaeological’ investigation of software evolution. We use our own work to look at some of the challenges faced, techniques used, findings obtained, and lessons learnt when measuring and visualising the historical changes that happen during the evolution of software.

Keywords

Software Evolution Archaeological Investigation Extension Point Integrate Development Environment Architectural Evolution 
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.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Adar, E.: GUESS: a language and interface for graph exploration. In: Proc. SIGCHI Conf. on Human Factors in Computing Systems, pp. 791–800. ACM, New York (2006)CrossRefGoogle Scholar
  2. 2.
    Beyer, D.: CCVisu: automatic visual software decomposition. In: Proc. of Int’l Conf. on Software Engineering, companion volume, pp. 967–968. ACM, New York (2008)Google Scholar
  3. 3.
    Beyer, D., Noack, A., Lewerentz, C.: Efficient relational calculation for software analysis. IEEE Trans. Software Eng. 31(2), 137–149 (2005)CrossRefGoogle Scholar
  4. 4.
    Bois, B.D., Rompaey, B.V., Meijfroidt, K., Suijs, E.: Supporting reengineering scenarios with FETCH: an experience report. Electronic Communications of the EASST 8 (2008)Google Scholar
  5. 5.
    Briand, L.C., Morasca, S., Basili, V.R.: Property-based software engineering measurement. IEEE Trans. Software Eng. 22(1), 68–86 (1996)CrossRefGoogle Scholar
  6. 6.
    Canfora, G., Cerulo, L., Di Penta, M.: Tracking your changes: A language-independent approach. IEEE Softw. 26(1), 50–57 (2009)CrossRefGoogle Scholar
  7. 7.
    Canfora, G., Penta, M.D.: New frontiers of reverse engineering. In: Future of Software Engineering, pp. 326–341. IEEE, Los Alamitos (2007)Google Scholar
  8. 8.
    Cordy, J.R.: The TXL source transformation language. Sci. Comput. Program. 61(3), 190–210 (2006)MathSciNetCrossRefzbMATHGoogle Scholar
  9. 9.
    Cordy, J.R.: The txl source transformation language. Sci. Comput. Program. 61(3), 190–210 (2006)MathSciNetCrossRefzbMATHGoogle Scholar
  10. 10.
    Czarnecki, K., Eisenecker, U.: Generative Programming: Methods, Tools, and Applications. Addison-Wesley Professional, Reading (June 2000)Google Scholar
  11. 11.
    Dagenais, B., Robillard, M.P.: Recommending adaptive changes for framework evolution. In: Proc. 30th Int’l Conf. on Software Engineering, pp. 481–490. ACM, New York (2008)Google Scholar
  12. 12.
    Fernández-Ramil, J., Lozano, A., Wermelinger, M., Capiluppi, A.: Empirical studies of open source evolution. In: Software Evolution, ch. 11, pp. 263–288. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  13. 13.
    Fluri, B., Wuersch, M., Pinzger, M., Gall, H.: Change distilling:tree differencing for fine-grained source code change extraction. IEEE Transactions on Software Engineering 33, 725–743 (2007)CrossRefGoogle Scholar
  14. 14.
    Jackson, M.: Automated software engineering: supporting understanding. Autom. Softw. Eng. 15(3-4), 275–281 (2008)CrossRefGoogle Scholar
  15. 15.
    Kagdi, H.H., Collard, M.L., Maletic, J.I.: A survey and taxonomy of approaches for mining software repositories in the context of software evolution. Journal of Software Maintenance 19(2), 77–131 (2007)CrossRefGoogle Scholar
  16. 16.
    Klint, P., Lämmel, R., Verhoef, C.: Toward an engineering discipline for grammarware. ACM Trans. Softw. Eng. Methodol. 14(3), 331–380 (2005)CrossRefGoogle Scholar
  17. 17.
    Madhavji, N.H., Fernandez-Ramil, J., Perry, D.E.: Software Evolution and Feedback: Theory and Practice. Wiley, Chichester (2006)CrossRefGoogle Scholar
  18. 18.
    Martin, R.C.: Large-scale stability. C++ Report 9(2), 54–60 (1997)Google Scholar
  19. 19.
    Mens, T., Demeyer, S. (eds.): Software Evolution. Springer, Heidelberg (2008)zbMATHGoogle Scholar
  20. 20.
    Osterweil, L.: Software processes are software too. In: Proc. 9th Int’l Conf. on Software Engineering, pp. 2–13. IEEE, Los Alamitos (1987)Google Scholar
  21. 21.
    Popper, K.R.: The Logic of Scientific Discovery. Hutchinson (1959)Google Scholar
  22. 22.
    Schmidt, M., Gloetzner, T.: Constructing difference tools for models using the sidiff framework. In: Proc. 30th Int’l Conf. on Software Engineering, companion volume, pp. 947–948. ACM, New York (2008)Google Scholar
  23. 23.
    Selic, B.: The pragmatics of model-driven development. IEEE Software 20(5), 19–25 (2003)CrossRefGoogle Scholar
  24. 24.
    Shull, F., Singer, J., Sjoberg, D.I. (eds.): Guide to Advanced Empirical Software Engineering. Springer, Heidelberg (2008)Google Scholar
  25. 25.
    Stringfellow, C., Amory, C., Potnuri, D., Andrews, A., Georg, M.: Comparison of software architecture reverse engineering methods. Information and Software Technology 48(7), 484–497 (2006)CrossRefGoogle Scholar
  26. 26.
    Wermelinger, M., Yu, Y.: Analyzing the evolution of Eclipse plugins. In: Proc. 5th Working Conf. on Mining Software Repositories, pp. 133–136. ACM, New York (May 2008)Google Scholar
  27. 27.
    Wermelinger, M., Yu, Y., Lozano, A.: Design principles in architectural evolution: a case study. In: Proc. 24th Int’l Conf. on Software Maintenance, pp. 396–405. IEEE, Los Alamitos (October 2008)Google Scholar
  28. 28.
    Wermelinger, M., Yu, Y., Strohmaier, M.: Using formal concept analysis to construct and visualise hierarchies of socio-technical relations. In: Proc. 31st Int’l Conf. on Software Eng., companion volume, pp. 327–330. IEEE, Los Alamitos (May 2009)Google Scholar
  29. 29.
    Wong, K.: The Rigi User’s Manual, Version 5.4.4 (June 1998)Google Scholar
  30. 30.
    Wu, J., Spitzer, C., Hassan, A., Holt, R.: Evolution spectrographs: visualizing punctuated change in software evolution. In: Proc. 7th Intl Workshop on Principles of Software Evolution, pp. 57–66 (2004)Google Scholar
  31. 31.
    Xing, Z., Stroulia, E.: Umldiff: an algorithm for object-oriented design differencing. In: Proc. 20th Int’l Conf. on Automated Software Engineering, pp. 54–65. ACM, New York (2005)Google Scholar
  32. 32.
    Yu, Y., Wang, Y., Mylopoulos, J., Liaskos, S., Lapouchnian, A., do Prado Leite, J.C.S.: Reverse engineering goal models from legacy code. In: Int’l Conf. on Requirements Engineering, pp. 363–372. IEEE, Los Alamitos (2005)Google Scholar
  33. 33.
    Yu, Y., Wermelinger, M.: Graph-centric tools for understanding the evolution and relationships of software structures. In: Proc. 15th Working Conf. on Reverse Engineering, pp. 329–330. IEEE, Los Alamitos (October 2008)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2011

Authors and Affiliations

  • Michel Wermelinger
    • 1
  • Yijun Yu
    • 1
  1. 1.Computing Department & Centre for Research in ComputingThe Open UniversityUK

Personalised recommendations