Skip to main content
Log in

Playing Detective: Reconstructing Software Architecture from Available Evidence

  • Published:
Automated Software Engineering Aims and scope Submit manuscript

Abstract

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Institutional subscriptions

Similar content being viewed by others

References

  • Bass, L., Clements, P., and Kazman, R. 1998. Software Architecture in Practice. Addison-Wesley.

  • Biggerstaff, T. 1989. Design recovery for maintenance and reuse. IEEE Computer, 22(7):36-49.

    Google Scholar 

  • Brooks, F. 1975. The Mythical Man-Month—Essays on Software Engineering. Addison-Wesley.

  • Buhr, R. and Casselman, R. 1996. Use Case Maps for Object-Oriented Systems. Prentice-Hall.

  • Garlan, D., Monroe, B., and Wile, D. 1997. ACME: An interchange language for software architecture, 2nd edition, Technical Report, Carnegie Mellon University.

  • Griswold, R. and Griswold, M. 1983. The Icon Programming Language. Prentice-Hall.

  • Imagix Corporation, http://www.imagix.com

  • Kazman, R., Abowd, G., Bass, L., and Clements, P. 1996. Scenario-based analysis of software architecture. IEEE Software, 47-55.

  • 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.

  • 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.

  • 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.

  • 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.

  • 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.

  • Murphy, G. and Notkin, D. 1996. Lightweight lexical source model extraction. ACM Transactions on Software Engineering and Methodology, 5(3):262-292.

    Google Scholar 

  • 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.

  • 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.

  • Reasoning Inc., http://www.reasoning.com

  • 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.

  • Shaw, M. and Garlan, D. 1996. Software Architecture: Perspectives on an Emerging Discipline. Prentice-Hall.

  • 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 

  • Software Emancipation, http://www.setech.com

  • 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 

  • 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.

  • UIMS Tool Developers Workshop, 1992. A metamodel for the runtime architecture of an interactive system. SIGCHI Bulletin, 24(1):32-37.

    Google Scholar 

  • Wall, L. and Schwartz, R. 1991. Programming Perl. O'Reilly & Associates.

  • 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 

  • Yeh, A., Harris, D., and Chase, M. 1997. Manipulating recovered software architecture views. Proceedings of ICSE 19, Boston, MA, pp. 184-194.

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

About this article

Cite this article

Kazman, R., Carrière, S.J. Playing Detective: Reconstructing Software Architecture from Available Evidence. Automated Software Engineering 6, 107–138 (1999). https://doi.org/10.1023/A:1008781513258

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1023/A:1008781513258

Navigation