Inferring Architectural Evolution from Source Code Analysis

A Tool-Supported Approach for the Detection of Architectural Tactics
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 9839)


Several approaches have been proposed to study and provide information about the evolution of a software system, but very few proposals analyze and interpret this information at the architectural level. In this paper, we propose an approach that supports the understanding of software evolution at the architectural level. Our approach relies on the idea that an architectural tactic can be mapped to a number of operational representations, each of which is a transformation described using a set of elementary actions on source code entities (e.g., adding a package, moving a class from a package to another, etc.). These operational representations make it possible to: (1) detect architectural tactics’ application (or cancellation) by analyzing different versions of the source code of analyzed systems, and (2) understand the architectural evolution of these systems. To evaluate the proposed approach, we carried out a case study on the JFreeChart open source software. We focused on the modifiability tactics and we analyzed a number of available releases of JFreeChart. The results of our analysis revealed inconsistencies in the evolution of the system and some erratic applications and cancellations of modifiability tactics.


Software evolution Architectural evolution Architectural tactics Tactics detection 


  1. 1.
    Negara, S., Vakilian, M., Chen, N., Johnson, R.E., Dig, D.: Is it dangerous to use version control histories to study source code evolution? In: Noble, J. (ed.) ECOOP 2012. LNCS, vol. 7313, pp. 79–103. Springer, Heidelberg (2012). doi: 10.1007/978-3-642-31057-7_5 CrossRefGoogle Scholar
  2. 2.
    Garlan, D., Barnes, J.M., Schmerl, B.R., Celiku, O.: Evolution styles: foundations and tool support for software architecture evolution. In: WICSA/ECSA, pp. 131–140 (2009)Google Scholar
  3. 3.
    Garlan, D., Schmerl, B.: Ævol: a tool for defining and planning architecture evolution. In: the 31st International Conference on Software Engineering, pp. 591–594 (2009)Google Scholar
  4. 4.
    Tonu, S.A, Ashkan, A, Tahvildari, L.: Evaluating architectural stability using a metric-based approach. In: CSMR 2006, 22–24 March 2006, p. 10, 270 (2006)Google Scholar
  5. 5.
    McNair, A., German, D.M., Weber-Jahnke, J.: Visualizing software architecture evolution using change-sets. In: WCRE 2007, 28–31 October 2007, pp. 130–139 (2007)Google Scholar
  6. 6.
    Abi-Antoun, M., Aldrich, J., Nahas, N., Schmerl, B., Garlan, D.: Differencing and merging of architectural views. ASE 15(1), 35–74 (2008)Google Scholar
  7. 7.
    Breivold, H.P., Crnkovic, I., Larsson, M.: A systematic review of software architecture evolution research. IST 54(1), 16–40 (2012)Google Scholar
  8. 8.
    Le, D.M., Behnamghader, P., Garcia, J., Link, D., Shahbazian, A., Medvidovic, N.: An empirical study of architectural change in open-source software systems. In: IEEE/ACM 12th Working Conference on Mining Software Repositories, Florence, pp. 235–245 (2015)Google Scholar
  9. 9.
    Eden, A.H., Kazman, R.: Architecture design implementation. In: 25th International Conference on Software Engineering, pp. 149–159 (2003)Google Scholar
  10. 10.
    Fairbanks, G.: Just Enough Software Architecture: A Risk-Driven Approach. Marshall & Brainerd, Boulder (2010)Google Scholar
  11. 11.
    Bass, L., Clements, P., Kazman, R.: Software Architecture in Practice. Addison-Wesley, Boston (2003)Google Scholar
  12. 12.
    Bachmann, et al.: Modifiability tactics, CMU Software Engineering Institute Technical Report CMU/SEI-2007-TR-002Google Scholar
  13. 13.
    D’Ambros, M., Gall, H., Lanza, M., Pinzger, M.: Analysing software repositories to understand software evolution. In: D’Ambros, M., Gall, H., Lanza, M., Pinzger, M. (eds.) Software Evolution, pp. 37–67. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  14. 14.
    Kim, M., Gee, M., Loh, A., Rachatasumrit, N.: Ref-Finder: a refactoring reconstruction tool based on logic query templates. In: FSE 2010, Santa Fe, New Mexico, USA, pp. 371–372 (2010)Google Scholar
  15. 15.
    Fowler, M.: Refactoring: Improving the Design of Existing Code. Addison-Wesley, Boston (1999)zbMATHGoogle Scholar
  16. 16.
    Kpodjedo, S., et al.: Madmatch: many-to-many approximate diagram matching for design comparison. IEEE Trans. Softw. Eng. 39(8), 1090–1111 (2013)CrossRefGoogle Scholar
  17. 17.
    Aldrich, J., Sazawal, V., Chambers, C., Notkin, D.: Language support for connector abstractions. In: Cardelli, L. (ed.) ECOOP 2003. LNCS, vol. 2743, pp. 74–102. Springer, Heidelberg (2003). doi: 10.1007/978-3-540-45070-2_5 CrossRefGoogle Scholar
  18. 18.
    Gueheneuc, Y.G., Antoniol, G.: DeMIMA: a multilayered approach for design pattern identification. IEEE Trans. Softw. Eng. 34(5), 667–684 (2008)CrossRefGoogle Scholar
  19. 19.
    Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading (1995)zbMATHGoogle Scholar
  20. 20.
    Barnes, J.M., Garlan, D.: Challenges in developing a software architecture evolution tool as a plug-in. In: 3rd International Workshop on Developing Tools as Plug-ins (TOPI), San Francisco, CA, pp. 13–18 (2013)Google Scholar

Copyright information

© Springer International Publishing AG 2016

Authors and Affiliations

  1. 1.Department of Software and IT EngineeringÉcole de Technologie SupérieureMontrealCanada
  2. 2.LIRMM- CNRS and University of Montpellier IIMontpellierFrance

Personalised recommendations