This Article 
 Bibliographic References 
 Add to: 
Discovering Architectures from Running Systems
July 2006 (vol. 32 no. 7)
pp. 454-466
One of the challenging problems for software developers is guaranteeing that a system as built is consistent with its architectural design. In this paper, we describe a technique that uses runtime observations about an executing system to construct an architectural view of the system. In this technique, we develop mappings that exploit regularities in system implementation and architectural style. These mappings describe how low-level system events can be interpreted as more abstract architectural operations and are formally defined using Colored Petri Nets. In this paper, we describe a system, called DiscoTect, that uses these mappings and we introduce the DiscoSTEP mapping language and its formal definition. Two case studies showing the application of DiscoTect suggest that the tool is practical to apply to legacy systems and can dynamically verify conformance to a preexisting architectural specification.

[1] M. Ajmone Marsan, G. Balbo, G. Chiola, and G. Conte, “Modeling the Software Architecture of a Prototype Parallel Machine,” Proc. SIGMETRICS Performance Evaluation Rev., vol. 15, no. 1, pp. 175-185, 1987.
[2] J. Aldrich, C. Chambers, and D. Notkin, “ArchJava: Connecting Software Architecture to Implementation,” Proc. 24th Int'l Conf. Software Eng., 2002.
[3] R. Allen and D. Garlan, “Formalizing Architectural Connection,” Proc. Int'l Conf. Software Eng. (ICSE), 1994.
[4] R.M. Balzer and N.M Goldman, “Mediating Connectors,” Proc. 19th IEEE Int'l Conf. Distributed Computing Systems Workshop Electronic Commerce and Web-Based Applications, 1999.
[5] L. Bass, P. Clements, and R. Kazman, Software Architecture in Practice, second ed. Addison-Wesley, 2003.
[6] Q. Bai, M. Zhang, and K.T. Win, “A Colored Petri Net Based Approach for Multi-Agent Interactions,” Proc. Second Int'l Conf. Autonomous Robots and Agents, Dec. 2004.
[7] P. Clements, R. Kazman, and M. Klein, Evaluating Software Architectures: Methods and Case Studies. Addison-Wesley, 2001.
[8] P. Clements, F. Bachmann, L. Bass, D. Garlan, J. Ivers, R. Little, R. Nord, and J. Stafford, Documenting Software Architectures: Views and Beyond. Addison Wesley, 2002.
[9] M. Dias and D. Richardson, “The Role of Event Description on Architecting Dependable Systems (Extended Version from WADS),” Lecture Notes in Computer Science— Book on Architecting Dependable Systems, Spring-Verlag, 2003.
[10] Sun Microsystems, , 2006.
[11] M.D. Ernst, J. Cockrell, W.G. Griswold, and D. Notkin, “Dynamically Discovering Likely Program Invariants to Support Program Evolution,” IEEE Trans. Software Eng., vol. 27, no. 2, Feb. 2001.
[12] D. Garlan, R.J. Allen, and J. Ockerbloom, “Exploiting Style in Architectural Design,” Proc. ACM SIGSOFT '94 Symp. Foundations of Software Eng., 1994.
[13] D. Garlan, R.T. Monroe, and D. Wile, “Acme: Architectural Description of Component-Based Systems,” Foundations of Component-Based Systems, G. Leavens and M. Sitaraman, eds., Cambridge Univ. Press, 2000.
[14] D. Garlan, A.J. Kompanek, and S.-W. Cheng, “Reconciling the Needs of Architectural Description with Object Modeling Notations,” Science of Computer Programming, vol. 44, no. 1, pp. 23-49, July 2002.
[15] D. Garlan, S.-W. Cheng, and B. Schmerl, “Increasing System Dependability through Architecture-Based Self-Repair,” Architecting Dependable Systems, R. de Lemos, C. Gacek, and A. Romanovsky, eds., Springer-Verlag, 2003.
[16] Sun Microsystems, index.html, 2006.
[17] D. Jackson and A. Waingold, “Lightweight Extraction of Object Models from Bytecode,” Proc. 1999 Int'l Conf. Software Eng., 1999.
[18] Sun Microsystems,, 2006.
[19] K. Jensen, “An Introduction to the Theoretical Aspects of Coloured Petri Nets,” A Decade of Concurrency, J.W. de Bakker, W.-P. de Roever, and G. Rozenberg, eds., pp. 230-272, Springer-Verlag, 1994.
[20] G. Kaiser, J. Parekh, P. Gross, and G. Veletto, “Kinesthetics eXtreme: An External Infrastructure for Monitoring Distributed Legacy Systems,” Proc. Fifth Int'l Active Middleware Workshop, 2003.
[21] R. Kazman and S.J. Carriere, “Playing Detective: Reconstructing Software Architecture from Available Evidence,” J. Automated Software Eng., vol. 6, no. 2, 1999.
[22] R. Kazman, J. Asundi, J.S. Kim, and B. Sethananda, “A Simulation Testbed for Mobile Adaptive Architectures,” Computer Standards and Interfaces, 2003.
[23] G. Kiczales, E. Hilsdale, J. Huginin, M. Kersten, J. Palm, and W. Griswold, “Getting Started with AspectJ,” Comm. ACM, vol. 4, no. 10, Oct. 2001.
[24] P. Kruchten, “The 4+1 View Model of Architecture,” IEEE Software, vol. 12, no. 6, pp. 42-50, 1995.
[25] D.C. Luckham, “Rapide: A Language and Toolset for Simulation of Distributed Systems by Partial Orderings of Events,” Proc. DIMACS Partial Order Methods Workshop, 1996.
[26] N. Madhav, “Testing Ada 95 Programs for Conformance to Rapide Architectures,” Proc. Reliable Software Technologies— Ada Europe '96, 1996.
[27] N. Medvidovic and R.N. Taylor, “A Classification and Comparison Framework for Software Architecture Description Languages,” IEEE Trans. Software Eng., vol. 26, no. 1, pp. 70-93, Jan. 2000.
[28] G.C. Murphy, D. Notkin, and K.J. Sullivan, “Software Reflexion Models: Bridging the Gap between Source and High-Level Models,” Proc. 1995 ACM SIGSOFT Symp. Foundations of Software Eng., 1995.
[29] M. Mansouri-Samani and M. Sloman, “GEM: A Generalized Event Monitoring Language for Distributed Systems,” IEE/IOP/BCS Distributed Systems Eng. J., vol. 4, no. 2, June 1997.
[30] L. O'Brien and C. Stoermer, “Architecture Reconstruction Case Study,” Software Eng. Inst. Technical Note CMU/SEI-2003-TN-008, 2003.
[31] D. Perry and A. Wolf, “Foundations for the Study of Software Architecture,” ACM SIGSOFT Software Eng. Notes, vol. 17, no. 4, 1992.
[32] S. Reiss, “JIVE: Visualizing Java in Action (Demonstration Description),” Proc. 25th Int'l Conf. Software Eng., 2003.
[33] B. Schmerl and D. Garlan, “AcmeStudio: Supporting Style-Centered Architecture Development (Demonstration Description),” Proc. 26th Int'l Conf. Software Eng., May 2004.
[34] M. Shaw, R. Deline, D. Klein, T.L. Ross, D.M. Young, and G. Zelesnik, “Abstractions for Software Architecture and Tools to Support Them,” IEEE Trans. Software Eng., vol. 21, no. 4, Apr. 1995.
[35] M. Shaw and D. Garlan, Software Architecture: Perspectives on an Emerging Discipline. Prentice Hall, 1996.
[36] O. Spinczyk, A. Gal, and W. Schroder-Preikschat, “AspectC++: An Aspect-Oriented Extension to the C++ Programming Language,” Proc. 40th Int'l Conf. Tools Pacific: Objects for Internet, Mobile, and Embedded Applications, vol. 10, 2002.
[37] R.N. Taylor, N. Medvidovic, K.M. Anderson, E.J. Whitehead, J.E. Robbins, K.A. Nies, P. Oriezy, and D. Dubrow, “A Component- and Message-Based Architectural Style for GUI Software,” IEEE Trans. Software Eng., vol. 22, no. 6, June 1996.
[38] S. Vestel, “MetaH Programmer's Manual, Version 1.09,” technical report, Honeywell Technology Center, 1996.
[39] M. Vieira, M. Dias, and D.J. Richardson, “Software Architecture Based on Statechart Semantics,” Proc. 10th Int'l Workshop Component Based Software Eng., 2001.
[40] R.J. Walker, G.C. Murphy, B. Freeman-Benson, D. Wright, D. Swanson, and J. Isaak, “Visualizing Dynamic Software System Information through High-Level Models,” Proc. ACM SIGPLAN Int'l Conf. Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), 1998.
[41] R.J. Walker, G.C. Murphy, J. Steinbok, and M.P. Robillard, “Efficient Mapping of Software System Traces to Architectural Views,” Proc. CASCON, S.A. MacKay and J.H. Johnson, eds., 2000.
[42] W3C Consortium, “XQuery 1.0 and XPath 2.0 Formal Semantics, W3C Working Draft 4 April 2005,” /, Apr. 2005.
[43] D. Wells and P. Pazandak, “Taming Cyber Incognito: Surveying Dynamic/Reconfigurable Software Landscapes,” Proc. First Working Conf. Complex and Dynamic Systems Architectures, 2001.
[44] W3C,, 2006.
[45] W3C, http://www.w3.orgXML/, 2006.
[46] H. Yan, D. Garlan, B. Schmerl, J. Aldrich, and R. Kazman, “DiscoTect: A System for Discovering Architectures from Running Systems,” Proc. 26th Int'l Conf. Software Eng., May 2004.
[47] H. Yan, J. Aldrich, D. Garlan, R. Kazman, and B. Schmerl, “Discovering Architectures from Running Systems: Lessons Learned,” Technical Report CMU/SEI-2004-TR-016, Dec. 2004.
[48] J. Xu and J. Kuusela, “Modeling Execution Architecture of Software System Using Colored Petri Nets,” Proc. First Int'l Workshop Software and Performance (WOSP '98), pp. 70-75, Oct. 1998.
[49] A. Zeller, “Animating Data Structures in DDD,” Proc. SIGCSE/SIGCUE Program Visualization Workshop, 2000.
[50] D. Zhu and A.S. Sethi, “SEL, A New Event Pattern Specification Language for Event Correlation,” Proc. ICCCN-2001, 10th Int'l Conf. Computer Comm. and Networks, Oct. 2001.

Index Terms:
Software architecture discovery, reverse engineering, architecture design tools and analyses.
Bradley Schmerl, Jonathan Aldrich, David Garlan, Rick Kazman, Hong Yan, "Discovering Architectures from Running Systems," IEEE Transactions on Software Engineering, vol. 32, no. 7, pp. 454-466, July 2006, doi:10.1109/TSE.2006.66
Usage of this product signifies your acceptance of the Terms of Use.