Static Analysis Based Software Architecture Recovery

  • Jiang Guo
  • Yuehong Liao
  • Raj Pamula
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3982)


Recover the software architectures is a key step in the reengineering legacy (procedural) programs into an object-oriented platform. Identifying, extracting and reengineering software architectures that implement abstractions within existing systems is a promising cost-effective way to create reusable assets and reengineer legacy systems. We introduce a new approach to recover software architectures in legacy systems. The approach described in this paper concentrate especially on how to find software architectures and on how to establish the relationships of the identified software components. This paper summarizes our experiences with using computer-supported methods to facilitate the reuse of the software architectures of the legacy systems by recovering the behavior of the systems using systematic methods, and illustrate their use in the context of the Janus System.


Legacy System Software Component Symbolic Execution Reverse Engineer Abstract Syntax Tree 
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.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Favre, J., Sanlaville, R.: Continuous Discovery of Software Architecture in a Large Evolving Company. In: Workshop on Software Architecture Reconstruction, the Working Conference on Reverse Engineering (2002)Google Scholar
  2. 2.
    Hall, P.: Architecture-driven Component Reuse. Information and Software Technology 41(14) (1999)Google Scholar
  3. 3.
    Gall, H., Klösch, R., Mittermeir, R.: Application Patterns in Reengineering: Identifying and Using Reusable Concepts. In: Proceedings of the 5th International Conference on Information Processing and Management of Uncertainty in Knowledge-Based Systems, Granada, Spain (1996)Google Scholar
  4. 4.
    Ali, F., Du, W.: Toward reuse of object-oriented software design models. Information and Software Technology 46(8) (2004)Google Scholar
  5. 5.
    Hakala, K., Hautamäki, J., Koskimies, K.: Annotating Reusable Software Architectures with Specialization Patterns. In: Proceedings of the Working IEEE/IFIP Conference on Software Architecture (2001)Google Scholar
  6. 6.
    Guo, J.: Towards Semi-Automatically Reusing Objects from Legacy Systems. International Journal of Computers and Their Applications 11(3) (2004)Google Scholar
  7. 7.
    Goseva-Popstojanova, K., Trivedi, K.: Architecture-Based Approaches to Software Reliability Prediction. Computers and Mathematics with Applications 46 (2003)Google Scholar
  8. 8.
    Svetinovic, D., Godfrey, M.: A Lightweight Architecture Recovery Process. Software Architecture Recovery and Modelling, Stuttgart, Germany (2001)Google Scholar
  9. 9.
    Ali-Babar, M., Zhu, L., Jeffery, R.: A Framework for Classifying and Comparing Software Architecture Evaluation Methods. In: Australian Software Engineering Conference, Melbourne (2004)Google Scholar
  10. 10.
    Pinzger, M., Gall, H.: Pattern-Supported Architecture Recovery. In: Proceedings of 10th International Workshop on Program Comprehension. IEEE Computer Society Press, Paris (2002)Google Scholar
  11. 11.
    Kazman, R., Carriere, S.: View Extraction and View Fusion in Architectural Understanding. In: Prococeedings of the 5th International Conference on Software Reuse, Victoria, BC, Canada (1998)Google Scholar
  12. 12.
    Fiutem, R., Tonella, A., Antoniol, G., Merlo, E.: A Cliché-based Environment to Support Architectural Reverse Engineering. In: Proceedings of the International Conference on Software Maintenance, Monterey, California (1996)Google Scholar
  13. 13.
    Harris, D., Reubenstein, H., Yeh, A.: Reverse Engineering to the Architectural Level. In: Proceedings of the 17th International Conference on Software Engineering, Seattle, Washington (1995)Google Scholar
  14. 14.
    Guo, G., Atlee, J., Kazman, R.: A Software Architecture Reconstruction method. In: Proceedings of the 1st Working IFIP Conference on Software Architecture, San Antonio, Texas (1999)Google Scholar
  15. 15.
    Sartipi, K., Kontogiannis, K., Mavaddat, F.: A Pattern Matching Framework for Software Architecture Recovery and Restructuring. In: Proceedings of the 8th International Workshop on Program Comprehension, Limerick, Ireland (2000)Google Scholar
  16. 16.
    Dijsktra, E.: A Discipline of Programming. Prentice Hall, Englewood Cliffs (1976)Google Scholar
  17. 17.
    Boehm, C., Jacopini, G.: Flow Diagrams, Turing Machines, and Languages with only Two Formation Rules. Communications of the ACM 9(5) (1966)Google Scholar
  18. 18.
    Atkinson, D., Griswold, W.: Implementation Techniques for Efficient Data-flow Analysis of Large Programs. In: Proceedings of the International Conference on Software Maintenance (2001)Google Scholar
  19. 19.
    Carriére, S., Woods, S., Kazman, R.: Software Architectural Transformation. In: Proceedings of 6th Working Conference on Reverse Engineering, Atlanta, Georgia (1999)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Jiang Guo
    • 1
  • Yuehong Liao
    • 1
  • Raj Pamula
    • 1
  1. 1.Department of Computer ScienceCalifornia State University Los AngelesLos AngelesUSA

Personalised recommendations