Improving System Understanding via Interactive, Tailorable, Source Code Analysis

  • Vladimir Jakobac
  • Alexander Egyed
  • Nenad Medvidovic
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3442)


In situations in which developers are not familiar with a system or its documentation is inadequate, the system’s source code becomes the only reliable source of information. Unfortunately, source code has much more detail than is needed to understand the system, and it disperses or obscures high-level constructs that would ease the system’s understanding. Automated tools can aid system understanding by identifying recurring program features, classifying the system modules based on their purpose and usage patterns, and analyzing dependencies across the modules. This paper presents an iterative, user-guided approach to program understanding based on a framework for analyzing and visualizing software systems. The framework is built around a pluggable and extensible set of clues about a given problem domain, execution environment, and/or programming language. We evaluate our approach by providing the analysis of our tool’s results obtained from several case studies.


Processing Element Class Diagram Reverse Engineer Usage View Initial Label 
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.


  1. 1.
    Bauer, M., Trifu, M.: Architecture-Aware Adaptive Clustering of OO Systems. In: Proc. of the Eighth European Conference on Software Maintenance and Reengineering(CSMR 2004), Tampere, Finland, March 24-26 (2004)Google Scholar
  2. 2.
    Egyed, A.: Compositional and Relational Reasoning During Class Abstraction. In: Proceedings of the 6thInternational Conf. on the UML, San Francisco (October 2003)Google Scholar
  3. 3.
    Egyed, A., Horling, B., Becker, R., Balzer, R.: Visualization and Debugging Tools. In: Lesser, V., Ortiz, C., Tambe, M. (eds.) Distributed Sensor Networks: A multiagent perspective, pp. 33–41. Kluwer Academic Publishers, Dordrecht (2003)Google Scholar
  4. 4.
    Harris, D.R., Yeh, A.S., Reubenstein, H.B.: Extracting Architectural Features from Source Code. Automated Software Engineering 3, 109–138 (1996)CrossRefMathSciNetGoogle Scholar
  5. 5.
    Jakobac, V., Egyed, A., Medvidovic, N.: ARTISAn: An Approach and Tool for Improving Software System Understanding via Interactive, Tailorable Source Code Analysis, TR USC-CSE-2004-513, USC, USA (December 2004)Google Scholar
  6. 6.
    Jerding, D.F., Rugaber, S.: Using Visualization for Architectural Localization and Extraction. In: Proc. of the Fourth WCRE, October 1997, pp. 56–65 (1997)Google Scholar
  7. 7.
    Lanza, M., Ducasse, S.: A Categorization of Classes based on the Visualization of their Internal Structure: the Class Blueprint. In: Proceedings of the, ACM OOPSLA, October 14-18, Tampa, Florida, USA (2001)Google Scholar
  8. 8.
    Lengauer, T., Tarjan, R.E.: A Fast Algorithm for Finding Dominators in a Flowgraph. ACM Trans. on Programming Languages and Systems 1(1), 121–141 (1979)zbMATHCrossRefGoogle Scholar
  9. 9.
    Medvidovic, N., Jakobac, V.: Using Software Evolution to Focus Architectural Recovery. In: J. of Automated Software Engineering (2005) (to appear)Google Scholar
  10. 10.
    Mendonca, N., Kramer, J.: An Approach for Recovering Distributed System Architectures. J. of Automated Software Engineering 8, 311–354 (2001)zbMATHCrossRefGoogle Scholar
  11. 11.
    Müller, H.A., Wong, K., Tilley, S.R.: Understanding Software Systems Using Reverse Engineering Technology. In: The 62nd Congress of L’Association Canadienne Francaise pour l’Avancement des Sciences Proceedings, ACFAS (1994)Google Scholar
  12. 12.
    Perry, E., Wolf, A.L.: Foundations for the Study of Software Architecture. ACM Sigsoft Software Engineering Notes 17(4) (October 1992)Google Scholar
  13. 13.
    Shaw, M., Garlan, D.: Software Architecture: Perspectives on an Emerging Discipline. Prentice-Hall, Englewood Cliffs (1996)zbMATHGoogle Scholar
  14. 14.
    Wong, K., Tilley, S., Müller, H.A., Storey, M.D.: Structural Redocumentation: A Case Study. IEEE Software, 46–54 (January 1995)Google Scholar
  15. 15.
    Siena: A Wide-Area Event Notification Service,
  16. 16.
    Yan, H., Garlan, D., Schmerl, B., Aldrich, J., Kazman, R.: DiscoTect: A System for Discovering Architectures from Running Systems. In: Proc. Intl’l Conf. Soft. Eng., Edinburgh, Scotland, United Kingdom, May 23-28 (2004)Google Scholar
  17. 17.
    Yeh, S., Harris, D.R., Chase, M.P.: Manipulating Recovered Architecture Views. In: Proc. Intl’l Conf. Soft. Eng., Boston, May 17-23, pp. 184–194 (1997)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2005

Authors and Affiliations

  • Vladimir Jakobac
    • 1
  • Alexander Egyed
    • 2
  • Nenad Medvidovic
    • 1
  1. 1.Computer Science DepartmentUniversity of Southern CaliforniaLos AngelesUSA
  2. 2.Teknowledge CorporationMarina Del ReyUSA

Personalised recommendations