A decentralized approach for discovering runtime software architectural models of distributed software systems

Abstract Context: Runtime software architectural models of self-adaptive systems are needed for making adaptation decisions in architecture-based self-adaptive systems. However, when these systems are distributed and highly dynamic, there is an added need to discover the system’s software architecture model at runtime. Current methods of runtime architecture discovery use a centralized approach, in which the process is carried out from a single location. These methods are inadequate for large distributed software systems because they do not scale up well and have a single point of failure. Objective and Method: This paper describes DeSARM (Decentralized Software Architecture discoveRy Mechanism), a completely decentralized and automated approach, based on gossiping and message tracing, for runtime discovery of software architecture models of distributed software systems. DeSARM is able to identify at runtime important architectural characteristics such as components and connectors, in addition to synchronous and asynchronous communication patterns. Furthermore, through its use of gossiping, DeSARM exhibits the properties of scalability, global consistency among participating nodes, and resiliency to failures. This paper demonstrates DeSARM’s properties and answers key research questions through experimentation with software architectures of varying sizes and complexities executing within a computer cluster. Results: DeSARM enables the decentralized discovery of runtime software architectural models of distributed software systems while exhibiting the properties of scalability, global consistency among participating nodes and resiliency to failures. Scalability is achieved through DeSARM’s ability to successfully discover software architectures of increasing sizes and complexities executing across node counts of increasing sizes. Global consistency among participating nodes is achieved by each node within the system discovering the complete software architecture independently but in coordination with each other. Finally, resiliency to failures is achieved by DeSARM successfully discovering the software architecture of the system in the presence of component failures.

[1]  Koji Hashimoto,et al.  Dynamic self-adaptation for distributed service-oriented transactions , 2012, 2012 7th International Symposium on Software Engineering for Adaptive and Self-Managing Systems (SEAMS).

[2]  Harald C. Gall,et al.  Pattern-supported architecture recovery , 2002, Proceedings 10th International Workshop on Program Comprehension.

[3]  Philippe Kruchten Architectural Blueprints: The 4+1 View Model of Software Architecture , 2020, ArXiv.

[4]  Dusan M. Velasevic,et al.  A use-case driven method of architecture recovery for program understanding and reuse reengineering , 2000, Proceedings of the Fourth European Conference on Software Maintenance and Reengineering.

[5]  Philippe Kruchten,et al.  The 4+1 View Model of Architecture , 1995, IEEE Softw..

[6]  Claudio Riva,et al.  Combining static and dynamic views for architecture reconstruction , 2002, Proceedings of the Sixth European Conference on Software Maintenance and Reengineering.

[7]  K. M. Annervaz,et al.  Software Clustering: Unifying Syntactic and Semantic Features , 2012, 2012 19th Working Conference on Reverse Engineering.

[8]  Anne-Marie Kermarrec,et al.  Gossiping in distributed systems , 2007, OPSR.

[9]  Gang Huang,et al.  Runtime recovery and manipulation of software architecture of component-based systems , 2006, Automated Software Engineering.

[10]  Patrick Th. Eugster,et al.  Lightweight message tracing for debugging wireless sensor networks , 2013, 2013 43rd Annual IEEE/IFIP International Conference on Dependable Systems and Networks (DSN).

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

[12]  Andrian Marcus,et al.  An information retrieval approach to concept location in source code , 2004, 11th Working Conference on Reverse Engineering.

[13]  Richard C. Holt,et al.  ACCD: an algorithm for comprehension-driven clustering , 2000, Proceedings Seventh Working Conference on Reverse Engineering.

[14]  Periklis Andritsos,et al.  Information-theoretic software clustering , 2005, IEEE Transactions on Software Engineering.

[15]  Siraj Muhammad,et al.  Improved Similarity Measures for Software Clustering , 2011, 2011 15th European Conference on Software Maintenance and Reengineering.

[16]  Xiaomin Wu,et al.  A reverse engineering approach to support software maintenance: version control knowledge extraction , 2004, 11th Working Conference on Reverse Engineering.

[17]  T. A. Wiggerts,et al.  Using clustering algorithms in legacy systems remodularization , 1997, Proceedings of the Fourth Working Conference on Reverse Engineering.

[18]  Raj Jain,et al.  The art of computer systems performance analysis - techniques for experimental design, measurement, simulation, and modeling , 1991, Wiley professional computing.

[19]  Kamran Sartipi Alborz: a query-based tool for software architecture recovery , 2001, Proceedings 9th International Workshop on Program Comprehension. IWPC 2001.

[20]  Ping Chen,et al.  Architecture recovery and abstraction from the perspective of processes , 2005, 12th Working Conference on Reverse Engineering (WCRE'05).

[21]  Giuseppe Scanniello,et al.  A Probabilistic Based Approach towards Software System Clustering , 2010, 2010 14th European Conference on Software Maintenance and Reengineering.

[22]  Daniel A. Menascé,et al.  DARE: A Distributed Adaptation and Failure Recovery Framework for Software Systems , 2017, 2017 IEEE International Conference on Autonomic Computing (ICAC).

[23]  Giuseppe Scanniello,et al.  Investigating the use of lexical information for software system clustering , 2011, 2011 15th European Conference on Software Maintenance and Reengineering.

[24]  Giuliano Antoniol,et al.  Understanding Web applications through dynamic analysis , 2004, Proceedings. 12th IEEE International Workshop on Program Comprehension, 2004..

[25]  Stéphane Ducasse,et al.  Semantic clustering: Identifying topics in source code , 2007, Inf. Softw. Technol..

[26]  Thomas W. Reps,et al.  Identifying Modules via Concept Analysis , 1999, IEEE Trans. Software Eng..

[27]  Sooyong Park,et al.  Service robot for the elderly , 2009, IEEE Robotics & Automation Magazine.

[28]  Sam Malek,et al.  Software adaptation patterns for service-oriented architectures , 2010, SAC '10.

[29]  Daniel A. Menascé,et al.  TESS: Automated Performance Evaluation of Self-Healing and Self-Adaptive Distributed Software Systems , 2018, ICPE.

[30]  Rainer Koschke,et al.  Architecture Reconstruction , 2009, ISSSE.

[31]  Richard N. Taylor,et al.  Software architecture: foundations, theory, and practice , 2009, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[32]  Kamran Sartipi,et al.  An Amalgamated Dynamic and Static Architecture Reconstruction Framework to Control Component Interactions 259 , 2007, 14th Working Conference on Reverse Engineering (WCRE 2007).

[33]  Andy Schürr,et al.  GXL: A graph-based standard exchange format for reengineering , 2006, Sci. Comput. Program..

[34]  Nenad Medvidovic,et al.  Enhancing architectural recovery using concerns , 2011, 2011 26th IEEE/ACM International Conference on Automated Software Engineering (ASE 2011).

[35]  Pierre Poulin,et al.  Visualization-based analysis of quality for large-scale software systems , 2005, ASE.

[36]  Hassan Gomaa,et al.  Software Modeling and Design: UML, Use Cases, Patterns, and Software Architectures , 2011 .

[37]  Harald C. Gall,et al.  Revealer: a lexical pattern matcher for architecture recovery , 2002, Ninth Working Conference on Reverse Engineering, 2002. Proceedings..

[38]  Nabor C. Mendonça Architecture Recovery for Distributed Systems , 2001 .

[39]  Alexander S. Yeh,et al.  Reverse Engineering to the Architectural Level , 1995, 1995 17th International Conference on Software Engineering.

[40]  Kamran Sartipi,et al.  Software architecture recovery based on pattern matching , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

[41]  Onaiza Maqbool,et al.  Hierarchical Clustering for Software Architecture Recovery , 2007, IEEE Transactions on Software Engineering.

[42]  Yaojin Yang,et al.  Generation of architectural documentation using XML , 2002, Ninth Working Conference on Reverse Engineering, 2002. Proceedings..

[43]  Hong Yan,et al.  Discovering Architectures from Running Systems , 2006, IEEE Transactions on Software Engineering.

[44]  Anas N. Al-Rabadi,et al.  A comparison of modified reconstructability analysis and Ashenhurst‐Curtis decomposition of Boolean functions , 2004 .

[45]  Timothy C. Lethbridge,et al.  Recovering software architecture from the names of source files , 1999 .

[46]  Ankur P. Parikh,et al.  Algorithms for Graph Similarity and Subgraph Matching , 2011 .

[47]  Timothy Lethbridge,et al.  The Dagstuhl Middle Metamodel: A Schema For Reverse Engineering , 2004, ateM.

[48]  Harald C. Gall,et al.  Towards an Integrated View on Architecture and its Evolution , 2005, Electron. Notes Theor. Comput. Sci..

[49]  Bradley R. Schmerl,et al.  On Patterns for Decentralized Control in Self-Adaptive Systems , 2010, Software Engineering for Self-Adaptive Systems.

[50]  C. Murray Woodside,et al.  Interaction tree algorithms to extract effective architecture and layered performance models from traces , 2007, J. Syst. Softw..

[51]  Michele Lanza,et al.  Package patterns for visual architecture recovery , 2006, Conference on Software Maintenance and Reengineering (CSMR'06).

[52]  Cláudia Werner,et al.  Software Architecture Recovery based on Dynamic Analysis , 2004 .

[53]  Sam Malek,et al.  Inferring Software Component Interaction Dependencies for Adaptation Support , 2016, ACM Trans. Auton. Adapt. Syst..

[54]  Daniel A. Menascé,et al.  DeSARM: A Decentralized Mechanism for Discovering Software Architecture Models at Runtime in Distributed Systems , 2016, MoDELS@Run.time.

[55]  Danny Weyns,et al.  Claims and Evidence for Architecture-Based Self-adaptation: A Systematic Literature Review , 2013, ECSA.

[56]  Jeffrey O. Kephart,et al.  The Vision of Autonomic Computing , 2003, Computer.