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.
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.
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.
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.
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.
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.
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.
Yeh, A., Harris, D., and Chase, M. 1997. Manipulating recovered software architecture views. Proceedings of ICSE 19, Boston, MA, pp. 184-194.
Author information
Authors and Affiliations
Rights 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
Issue Date:
DOI: https://doi.org/10.1023/A:1008781513258