A design-by-contract approach to recover the architectural style from run-time misbehaviour

We propose to control the reconfigurations of applications leading to an erroneous state by exploiting its architectural model. Our work relies on Architectural Design Rewriting (ADR, for short) which is a rule-based formal framework for modelling (the evolution of) software architectures. We equip the reconfiguration rules of an ADR architecture with pre- and post-conditions expressed in a simple logic; a pre-condition constraints the applicability of a rule while a post-condition specifies the properties expected of the resulting graphs. We give an algorithm to compute the weakest pre-condition out of a rule and its post-condition. On top of this algorithm, we design a simple methodology that allows us to select which rules can be applied at the architectural level to reconfigure a system so to regain its architectural style when it becomes compromised by unexpected run-time reconfigurations. We propose to control the reconfigurations of applications leading to an erroneous state by exploiting its architectural model.Our work relies on ADR which is a rule-based formal framework for evolving software architectures.We add pre- and post-conditions to ADR rules so to constraint their applicability and resulting graphs.We give an algorithm to compute the weakest pre-condition out of a rule and its post-condition.A methodology uses our algorithm to reconfigure systems' architecture and regain its style when compromised at run-time.

[1]  David Garlan,et al.  Specifying and Analyzing Dynamic Software Architectures , 1998, FASE.

[2]  Antonio Bucchiarone,et al.  Graph-Based Design and Analysis of Dynamic Software Architectures , 2008, Concurrency, Graphs and Models.

[3]  Bradley R. Schmerl,et al.  Rainbow: Architecture-Based Self-Adaptation with Reusable Infrastructure , 2004, Computer.

[4]  Nazareno Aguirre,et al.  Hierarchical Temporal Specifications of Dynamically Reconfigurable Component Based Systems , 2004, Electron. Notes Theor. Comput. Sci..

[5]  Daniel Le Métayer Describing Software Architecture Styles Using Graph Grammars , 1998, IEEE Trans. Software Eng..

[6]  Edsger W. Dijkstra Non-determinacy and a calculus for the derivation of programs , 1975 .

[7]  Annegret Habel,et al.  Weakest Preconditions for High-Level Programs , 2006, ICGT.

[8]  Antonio Bucchiarone,et al.  Formal Analysis and Verification of Self-Healing Systems , 2010, FASE.

[9]  Roberto Bruni,et al.  Style-Based Architectural Reconfigurations , 2008, Bull. EATCS.

[10]  Laura Bocchi,et al.  A Formal Approach to Service Component Architecture , 2006, WS-FM.

[11]  Manuel Mazzara,et al.  Toward Design, Modelling and Analysis of Dynamic Workflow Reconfigurations - A Process Algebra Perspective , 2011, WS-FM.

[12]  Roberto Bruni,et al.  Service Oriented Architectural Design , 2007, TGC.

[13]  David Garlan,et al.  Rainbow: architecture-based self-adaptation with reusable infrastructure , 2004 .

[14]  Ivan Lanese,et al.  Synchronised Hyperedge Replacement as a Model for Service Oriented Computing , 2005, FMCO.

[15]  Corina S. Pasareanu,et al.  Learning Assumptions for Compositional Verification , 2003, TACAS.

[16]  Annegret Habel,et al.  Hyperedge Replacement, Graph Grammars , 1997, Handbook of Graph Grammars.

[17]  Jürgen Dingel,et al.  A survey of self-management in dynamic software architecture specifications , 2004, WOSS '04.

[18]  Bertrand Meyer,et al.  Applying 'design by contract' , 1992, Computer.

[19]  Emilio Tuosto,et al.  On Recovering from Run-time Misbehaviour in ADR , 2013, ICE.

[20]  Reiko Heckel,et al.  Graph Grammars with Negative Application Conditions , 1996, Fundam. Informaticae.

[21]  Paola Inverardi,et al.  Modeling Software Architecutes and Styles with Graph Grammars and Constraint Solving , 1999, WICSA.

[22]  Holger Giese,et al.  Symbolic invariant verification for systems with dynamic structural adaptation , 2006, ICSE.

[23]  Roberto Bruni,et al.  A Conceptual Framework for Adaptation , 2012, FASE.

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

[25]  Dániel Varró,et al.  UML Extensions for Service-Oriented Systems , 2011, Results of the SENSORIA Project.

[26]  Roberto Bruni,et al.  Hierarchical Design Rewriting with Maude , 2008, WRLA.

[27]  Carlo Ghezzi,et al.  Self-adaptive software needs quantitative verification at runtime , 2012, CACM.

[28]  Emilio Tuosto,et al.  Enforcing Architectural Styles in Presence of Unexpected Distributed Reconfigurations , 2012, ICE.

[29]  Narciso Martí-Oliet,et al.  All About Maude - A High-Performance Logical Framework, How to Specify, Program and Verify Systems in Rewriting Logic , 2007, All About Maude.

[30]  Robert Eckstein,et al.  Java RMI , 2001 .

[31]  Roberto Bruni,et al.  A Formal Support to Business and Architectural Design for Service-Oriented Systems , 2011, Results of the SENSORIA Project.