Automated Software Engineering

, Volume 6, Issue 2, pp 107–138 | Cite as

Playing Detective: Reconstructing Software Architecture from Available Evidence

  • Rick Kazman
  • S. Jeromy Carrière


Because a system's software architecture strongly influences its quality attributes such as modifiability, performance, and security, it is important to analyze and reason about that architecture. However, architectural documentation frequently does not exist, and when it does, it is often “out of sync” with the implemented system. In addition, it is rare that software development begins with a clean slate; systems are almost always constrained by existing legacy code. As a consequence, we need to be able to extract information from existing system implementations and utilize this information for architectural reasoning. This paper presents Dali, an open, lightweight workbench that aids an analyst in extracting, manipulating, and interpreting architectural information. By assisting in the reconstruction of architectures from extracted information, Dali helps an analyst redocument architectures, discover the relationship between “as-implemented” and “as-designed” architectures, analyze architectural quality attributes and plan for architectural change.

software architecture source model extraction architectural views 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. Bass, L., Clements, P., and Kazman, R. 1998. Software Architecture in Practice. Addison-Wesley.Google Scholar
  2. Biggerstaff, T. 1989. Design recovery for maintenance and reuse. IEEE Computer, 22(7):36-49.Google Scholar
  3. Brooks, F. 1975. The Mythical Man-Month—Essays on Software Engineering. Addison-Wesley.Google Scholar
  4. Buhr, R. and Casselman, R. 1996. Use Case Maps for Object-Oriented Systems. Prentice-Hall.Google Scholar
  5. Garlan, D., Monroe, B., and Wile, D. 1997. ACME: An interchange language for software architecture, 2nd edition, Technical Report, Carnegie Mellon University.Google Scholar
  6. Griswold, R. and Griswold, M. 1983. The Icon Programming Language. Prentice-Hall.Google Scholar
  7. Imagix Corporation, http://www.imagix.comGoogle Scholar
  8. Kazman, R., Abowd, G., Bass, L., and Clements, P. 1996. Scenario-based analysis of software architecture. IEEE Software, 47-55.Google Scholar
  9. Kazman, R., Abowd, G., Bass, L., and Webb, M. 1994. SAAM: A method for analyzing the properties of software architecture. Proceedings of the 16th International Conference on Software Engineering, Sorrento, Italy, pp. 81-90.Google Scholar
  10. Kazman, R. and Burth, M. 1998. Assessing architectural complexity. Proceedings of 2nd Euromicro Working Conference on Software Maintenance and Reengineering, Florence, Italy, pp. 104-112.Google Scholar
  11. Kazman, R. and Carrière, J. 1996. An adaptable software architecture for rapidly creating information visualizations. Proceedings of Graphics Interface '96, Toronto, ON, pp. 17-27.Google Scholar
  12. Kazman, R. and Carrière, S.J. 1998. View extraction and view fusion in architectural understanding. Fifth International Conference on Software Reuse, Victoria, BC, pp. 290-299.Google Scholar
  13. Klein, M., Ralya, T., Pollak, B., Obenza, R., and Gonzales Harbour, M. 1993. A Practitioner's Handbook for Real-Time Analysis: Guide to Rate Monotonic Analysis for Real-Time Systems. Kluwer Academic.Google Scholar
  14. Murphy, G. and Notkin, D. 1996. Lightweight lexical source model extraction. ACM Transactions on Software Engineering and Methodology, 5(3):262-292.Google Scholar
  15. Murphy, G., Notkin, D., and Lan, E. 1996. An empirical study of static call graph extractors. Proceedings of ICSE 18, Berlin, Germany, pp. 90-99.Google Scholar
  16. Murphy, G., Notkin, D., and Sullivan, K. 1995. Software reflexion models: Bridging the gap between source and high-level models. Proceedings of the Third ACM SIGSOFT Symposium on the Foundations of Software Engineering, Washington, DC.Google Scholar
  17. Reasoning Inc., http://www.reasoning.comGoogle Scholar
  18. Shaw, M., DeLine, R., Klein, D., Ross, T., Young, D., and Zelesnik, G. 1995. Abstractions for software architecture and tools to support them. IEEE Transactions on Software Engineering.Google Scholar
  19. Shaw, M. and Garlan, D. 1996. Software Architecture: Perspectives on an Emerging Discipline. Prentice-Hall.Google Scholar
  20. Smith, C. and Williams, L. 1993. Software performance engineering: A case study including performance comparison with design alternatives. IEEE Transactions on Software Engineering, 19(7):720-741.Google Scholar
  21. Software Emancipation, http://www.setech.comGoogle Scholar
  22. Stonebraker, M., Rowe, L., and Hirohama, M. 1990. The implementation of POSTGRES. IEEE Transactions on Knowledge and Data Engineering, 2(1):125-141.Google Scholar
  23. Tonella, P., Fiutem, R., Antoniol, G., and Merlo, E. 1996. Augmenting pattern-based architectural recovery with flow analysis: Mosaic—A case study. Proceedings of the 3rd Working Conference on Reverse Engineering, Monterey, CA, pp. 198-207.Google Scholar
  24. UIMS Tool Developers Workshop, 1992. A metamodel for the runtime architecture of an interactive system. SIGCHI Bulletin, 24(1):32-37.Google Scholar
  25. Wall, L. and Schwartz, R. 1991. Programming Perl. O'Reilly & Associates.Google Scholar
  26. Wong, K., Tilley, S., Müller, H., and Storey, M. 1994. Programmable reverse engineering. International Journal of Software Engineering and Knowledge Engineering, 4(4):501-520.Google Scholar
  27. Yeh, A., Harris, D., and Chase, M. 1997. Manipulating recovered software architecture views. Proceedings of ICSE 19, Boston, MA, pp. 184-194.Google Scholar

Copyright information

© Kluwer Academic Publishers 1999

Authors and Affiliations

  • Rick Kazman
    • 1
  • S. Jeromy Carrière
    • 1
  1. 1.Software Engineering Institute, Carnegie Mellon UniversityPittsburghUSA

Personalised recommendations