Playing Detective: Reconstructing Software Architecture from Available Evidence

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.

[1]  Mary Shaw,et al.  Abstractions for Software Architecture and Tools to Support Them , 1995, IEEE Trans. Software Eng..

[2]  Rick Kazman,et al.  An adaptable software architecture for rapidly creating information visualizations , 1996 .

[3]  Frederick P. Brooks,et al.  The Mythical Man-Month: Essays on Softw , 1978 .

[4]  Leonard J. Bass,et al.  Scenario-Based Analysis of Software Architecture , 1996, IEEE Softw..

[5]  David Notkin,et al.  An empirical study of static call graph extractors , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

[6]  Ralph E. Griswold,et al.  The Icon programming language , 1983 .

[7]  R. J. A. Buhr,et al.  Use Case Maps for Object-Oriented Systems , 1995 .

[8]  Mary Shaw,et al.  Abstractions and implementations for architectural connections , 1996, Proceedings of International Conference on Configurable Distributed Systems.

[9]  Mark Klein,et al.  A practitioner's handbook for real-time analysis - guide to rate monotonic analysis for real-time systems , 1993, The Kluwer international series in engineering and computer science.

[10]  Giuliano Antoniol,et al.  Augmenting pattern-based architectural recovery with flow analysis: Mosaic-a case study , 1996, Proceedings of WCRE '96: 4rd Working Conference on Reverse Engineering.

[11]  David Notkin,et al.  An empirical study of static call graph extractors , 1998, TSEM.

[12]  Leonard J. Bass,et al.  SAAM: a method for analyzing the properties of software architectures , 1994, Proceedings of 16th International Conference on Software Engineering.

[13]  Mary Shaw,et al.  An Introduction to Software Architecture , 1993, Advances in Software Engineering and Knowledge Engineering.

[14]  Paul Clements,et al.  Software Architecture in Practice: Addison-Wesley , 1998 .

[15]  David Notkin,et al.  Software reflexion models: bridging the gap between source and high-level models , 1995, SIGSOFT FSE.

[16]  Rick Kazman,et al.  View extraction and view fusion in architectural understanding , 1998, Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).

[17]  Mary Shaw,et al.  Software architecture - perspectives on an emerging discipline , 1996 .

[18]  Connie U. Smith,et al.  Software Performance Engineering: A Case Study Including Performance Comparison with Design Alternatives , 1993, IEEE Trans. Software Eng..

[19]  Rick Kazman,et al.  Assessing architectural complexity , 1998, Proceedings of the Second Euromicro Conference on Software Maintenance and Reengineering.

[20]  Michael Stonebraker,et al.  The Implementation of Postgres , 1990, IEEE Trans. Knowl. Data Eng..

[21]  David Garlan,et al.  Acme: an architecture description interchange language , 1997, CASCON.

[22]  Melissa P. Chase,et al.  Manipulating Recovered Software Architecture Views , 1997, Proceedings of the (19th) International Conference on Software Engineering.

[23]  Nasa,et al.  A metamodel for the runtime architecture of an interactive system: the UIMS tool developers workshop , 1992, SGCH.

[24]  P. Kidwell,et al.  The mythical man-month: Essays on software engineering , 1996, IEEE Annals of the History of Computing.

[25]  David Notkin,et al.  Lightweight lexical source model extraction , 1996, TSEM.

[26]  Hausi A. Müller,et al.  Programmable Reverse Engineering , 1994, Int. J. Softw. Eng. Knowl. Eng..

[27]  Ted J. Biggerstaff,et al.  Design recovery for maintenance and reuse , 1989, Computer.

[28]  Larry Wall,et al.  Programming Perl , 1991 .

[29]  Paul Clements,et al.  Software architecture in practice , 1999, SEI series in software engineering.

[30]  Jr. Frederick P. Brooks,et al.  The Mythical Man-Month: Essays on Softw , 1978 .