Abstract
Architectural design patterns (ADPs) are architectural solutions to common architectural design problems. They are an important concept in software architectures used for the design and analysis of architectures. An ADP usually constrains the design of an architecture and, in turn, guarantees some desired properties for architectures implementing it. Sometimes, however, the constraints imposed by an ADP do not lead to the claimed guarantee. Thus, applying such patterns for the design of architectures might result in architectures which do not fulfill their intended requirements. To address this problem, we propose an approach for the verification of ADPs, based on interactive theorem proving. To this end, we introduce a model for dynamic architectures and a language for the specification of ADPs over this model. Moreover, we propose a framework for the interactive verification of such specifications based on Isabelle/HOL. In addition we describe an algorithm to map a specifi cation to a corresponding Isabelle/HOL theory over our framework. To evaluate the approach, we implement it in Eclipse/EMF and use it for the verification of four ADPs: variants of the Singleton, the Publisher-Subscriber, the Blackboard pattern, and a pattern for Blockchain architectures. With our approach we complement traditional approaches for the verification of architectures, which are usually based on automatic verification techniques such as model checking.
Similar content being viewed by others
References
Allen, R., Douence, R., Garlan, D.: Specifying and analyzing dynamic software architectures. In: Egidio, A. (ed.) Fundamental approaches to software engineering. Lecture notes in computer science, vol. 1382, pp. 21–37. Springer, Berlin (1998)
Allen, R.J.: A formal approach to software architecture. Technical report, DTIC Document (1997)
Aguirre N, Maibaum T (2002) Reasoning about reconfigurable object-based systems in a temporal logic setting. In: Proceedings of IDPT
Aguirre N, Maibaum T (2002) A temporal logic approach to the specification of reconfigurable component-based systems. In: Automated software engineering. IEEE, pp 271–274
Arbab, F.: Reo: a channel-based coordination model for component composition. Math Struct Comput Sci 14(03), 329–366 (2004)
Ballarin, C.: Locales and locale expressions in isabelle/isar. Lect Notes Comput Sci 3085, 34–50 (2004)
Bertot, Y., Castéran, P.: Interactive theorem proving and program development: Coq'Art: the calculus of inductive constructions. Springer, Berlin (2013)
Bass, L., Clements, P., Kazman, R.: Software architecture in practice. Addison-Wesley, Boston (2007)
Bergner K (1996) Spezifikation großer Objektgeflechte mit Komponentendiagrammen. Ph.D. thesis, Technische Universität München
Bettini, L.: Implementing domain-specific languages with Xtext and Xtend. Packt Publishing Ltd, Birmingham (2016)
Broy M, Facchi C, Grosu R et al (1993) The requirement and design specification language spectrum – an informal introduction. Technical report, Technische Universität München
Blanchette JC, Hölzl J, Lochbihler A, Panny L, Popescu A, Traytel D (2014) Truly modular (co) datatypes for isabelle/hol. In: International conference on interactive theorem proving. Springer, pp 93–110
Bergstra, J.A., Klop, J.W.: Algebra of communicating processes. CWI Monograph Ser 3, 89–138 (1986)
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., Stal, M.: Pattern-oriented software architecture: a system of patterns. Wiley, West Sussex (1996)
Broy, M.: Algebraic specification of reactive systems. Algebraic methodology and software technology, pp. 487–503. Springer, Berlin (1996)
Broy, M.: A logical basis for component-oriented software and systems engineering. Comput J 53(10), 1758–1782 (2010)
Broy M (2014) A model of dynamic systems. In: Saddek B, Yassine L, Axel L (eds) From programs to systems. The systems perspective in computing, volume 8415 of Lecture notes in computer science, pp 39–53. Springer, Berlin
Broy, M., Stolen, K.: Specification and development of interactive systems: focus on streams, interfaces, and refinement. Springer, Berlin (2001)
Baier, C., Sirjani, M., Arbab, F., Rutten, J.: Modeling component connectors in reo by constraint automata. Sci Comput Program 61(2), 75–113 (2006)
Castro PF, Aguirre NM, Pombo CGL, Maibaum TSE (2010) Towards managing dynamic reconfiguration of software systems in a categorical setting. In: Lecture notes in computer science. Springer, pp 306–321
Cimatti, A., Clarke, E., Giunchiglia, F., Roveri, M.: Nusmv: a new symbolic model checker. Int J Softw Tools Technol Trans 2(4), 410–425 (2000)
Canal C, Cámara J, Salaün G (2012) Structural reconfiguration of systems under behavioral adaptation. Sci Comput Program 78(1):46–64. Special Section: Formal Aspects of Component Software (FACS'09)
Chandy, K.M.: Parallel program design. Springer, Berlin (1989)
Dashofy EM, Van der Hoek A, Taylor RN (2001) A highly-extensible, xml-based architecture description language. In: Working IEEE/IFIP conference on software architecture, 2001. Proceedings, pp 103–112. IEEE
Feiler PH, Lewis BA, Vestal S (2006) The sae architecture analysis & design language (aadl) a standard for engineering performance critical systems. In: Computer aided control system design, control applications, intelligent control. IEEE, pp 1206–1211
Fiadeiro, J.L., Maibaum, T.: Categorical semantics of parallel program design. Sci Comput Program 28(2–3), 111–138 (1997)
Fensel D, Schnogge A (November 1997) Using kiv to specify and verify architectures of knowledge-based systems. In: Automated software engineering, pp 71–80
Garlan D (2003) Formal modeling and analysis of software architecture: components, connectors, and events. In: Formal methods for software architectures, pp 1–24. Springer
Gibbons, J., Hutton, G.: Proof methods for corecursive programs. Fundam Inf 66, 353–366 (2005)
Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design patterns: elements of reusable object-oriented software. Addison-Wesley, New York (1994)
Göthel T, Jähnig N, Seif S (2017) Refinement-based modelling and verification of design patterns for self-adaptive systems. In: International conference on formal engineering methods. Springer, pp 157–173
Gidey HK, Marmsoler D (2018) FACTum studio. https://habtom.github.io/factum/. Accessed 19 July 2019
Gidey HK, Marmsoler D, Eckhardt J (April 2017) Grounded architectures: using grounded theory for the design of software architectures. In: 2017 IEEE international conference on software architecture workshops (ICSAW), pp 141–148
Garlan, D., Monroe, R.T., Wile, D.: ACME: architectural description of component-based systems. Found Component Based Syst 68, 47–68 (2000)
Gorlick MM, Razouk RR (1991) Using weaves for software construction and analysis. In: Les B, David RB, Koji T (eds) Proceedings of the 13th international conference on software engineering, Austin, TX, USA, 13-17 May 1991. IEEE Computer Society, pp 23–34
Gibson-Robinson T, Armstrong P, Boulgakov A, Roscoe AW (2014) Fdr3—a modern refinement checker for csp. In: International conference on tools and algorithms for the construction and analysis of systems. Springer, pp 187–201
Hölzl F, Feilkas M (2010) Autofocus 3: a scientific tool prototype for model-based development of component-based, reactive, distributed systems. In: Proceedings of the 2007 international Dagstuhl conference on model-based engineering of embedded real-time systems, MBEERTS'07, Berlin, Heidelberg. Springer, pp 317–322
Hoare, C.A.R.: Communicating sequential processes. Commun ACM 21(8), 666–677 (1978)
Jackson, D.: Alloy: a lightweight object modelling notation. ACM Trans Softw Eng Methodol (TOSEM) 11(2), 256–290 (2002)
Jacobs, B., Rutten, J.: A tutorial on (co)algebras and (co)induction. EATCS Bull 62, 62–222 (1997)
Kim JS, Garlan D (2006) Analyzing architectural styles with alloy. In: Proceedings of the ISSTA 2006 workshop on Role of software architecture for testing and analysis. ACM, pp 70–80
Klein MH, Kazman R, Bass L, Carriere J, Barbacci M, Lipson H (1999) Attribute-based architecture styles. In: Software architecture. Springer, pp 225–243
Krause C, Maraikar Z, Lazovik A, Arbab F (2011) Modeling dynamic reconfigurations in reo using high-level replacement systems. Sci Comput Program 76(1):23–36. Selected papers from the 6th international workshop on the foundations of coordination languages and software architectures
Kiayias A, Russell A, David B, Oliynykov R (2017) Ouroboros: a provably secure proof-of-stake blockchain protocol. In: Annual international cryptology conference. Springer, pp 357–388
Luckham, D.C., Kenney, J.J., Augustin, L.M., Vera, J., Bryan, D., Mann, W.: Specification and analysis of system architecture using rapide. IEEE Trans Softw Eng 21(4), 336–354 (1995)
Laroussinie F, Meyer A, Petonnet E (2010) Counting LTL. In: 2010 17th international symposium on temporal representation and reasoning. IEEE
Lochbihler A (2010) Coinduction. The archive of formal proofs. http://afp.sourceforge.net/entries/Coinductive.shtml.Accessed 19 July 2019
Li, Y., Sun, M.: Modeling and analysis of component connectors in coq. In: Fiadeiro, J.L., Liu, Z., Xue, J. (eds.) Formal aspects of component software–10th international symposium, FACS 2013, Nanchang, China, 27–29 Oct 2013, Revised selected papers. Lecture notes in computer science, vol. 8348, pp. 273–290. Springer (2013)
Marmsoler D (2010) Applying the scientific method in the definition and analysis of a new architectural style. Master's thesis, Free University of Bolzano-Bozen
Marmsoler D (2017) Dynamic architectures. Archive of formal proofs. http://isa-afp.org/entries/DynamicArchitectures.html. Formal proof development. Accessed 19 July 2019
Marmsoler, D.: Towards a calculus for dynamic architectures. In: Van Hung, D., Kapur, D. (eds.) Theoretical aspects of computing–ICTAC 2017–14th international colloquium, Hanoi, Vietnam, 23–27 Oct 2017, Proceedings. Lecture notes in computer science, vol. 10580, pp. 79–99. Springer (2017)
Marmsoler D (2018) A framework for interactive verification of architectural design patterns in isabelle/hol. In: The 20th international conference on formal engineering methods, ICFEM 2018, Proceedings
Marmsoler D (2018) A theory of architectural design patterns. Archive of formal proofs. http://isa-afp.org/entries/Architectural_Design_Patterns.html. Formal proof development
Mak JKH, Choy CST, Lun DPK (2004) Precise modeling of design patterns in uml. In: Software engineering. IEEE, pp 252–261
Marmsoler D, Degenhardt S (2017) Verifying patterns of dynamic architectures using model checking. In: Proceedings international workshop on formal engineering approaches to software components and architectures, FESCA@ETAPS 2017, Uppsala, Sweden, 22nd April 2017, pp 16–30
Marmsoler, D., Gleirscher, M.: On activation, connection, and behavior in dynamic architectures. Sci Ann Comput Sci 26(2), 187–248 (2016)
Marmsoler D, Gleirscher M (2016) Specifying properties of dynamic architectures using configuration traces. In: International colloquium on theoretical aspects of computing. Springer, pp 235–254
Marmsoler D, Gidey HK (2018) FACTum Studio: a tool for the axiomatic specification and verification of architectural design patterns. In: Formal aspects of component software—FACS 2018—15th international conference, Proceedings
Milner, R.: Communicating and mobile systems: the \(\pi \)-calculus. Cambridge University Press, Cambridge (1999)
Magee J, Kramer J (1996) Dynamic structure in software architectures. In: Garlan D (ed) SIGSOFT'96, Proceedings of the fourth ACM SIGSOFT symposium on foundations of software engineering, San Francisco, California, USA, 16–18 Oct 1996. ACM, pp 3–14
Manna, Z., Pnueli, A.: The temporal logic of reactive and concurrent systems. Springer, New York (1992)
Nakamoto S (2008) Bitcoin: a peer-to-peer electronic cash system
Nipkow, T., Paulson, L.C., Wenzel, M.: Isabelle/HOL: a proof assistant for higher-order logic, vol. 2283. Springer, Berlin (2002)
Oquendo, F.: \(\pi \)-adl: an architecture description language based on the higher-order typed \(\pi \)-calculus for specifying dynamic and mobile software architectures. ACM SIGSOFT Softw Eng Notes 29(3), 1–14 (2004)
Rausch A (2001) Componentware. Dissertation, Technische Universität München, München
Reif W (1995) The kiv-approach to software verification. In: KORSO: methods, languages, and tools for the construction of correct software, pp 339–368
Rumbaugh, J., Jacobson, I., Booch, G.: The unified modeling language reference manual. Pearson Higher Education, New York (2004)
Sanchez, A., Barbosa, L.S., Riesco, D.: Bigraphical modelling of architectural patterns. In: Arbab, F., Ölveczky, P.C. (eds.) Formal aspects of component software, Berlin, Heidelberg, pp. 313–330. Springer, Berlin (2012)
Shaw, M., Garlan, D.: Software architecture: perspectives on an emerging discipline, vol. 1. Prentice Hall, Englewood Cliffs (1996)
Soundarajan N, Hallstrom JO (2004) Responsibilities and rewards: specifying design patterns. In: Software engineering. IEEE, pp 666–675
Sanchez, A., Madeira, A., Barbosa, L.S.: On the verification of architectural reconfigurations. Comput Lang Syst Struct 44, 218–237 (2015)
Spichkova M (2007) Specification and seamless verification of embedded real-time systems: FOCUS on Isabelle. Ph.D. thesis, Technical University Munich, Germany
Taylor, R.N., Medvidovic, N., Dashofy, E.M.: Software architecture: foundations, theory, and practice. Wiley, Hoboken (2009)
TypeFox and Obeo (2017) Xtext/sirius—integration the main use-cases. https://goo.gl/8bcWJc
van Ommering, R.C., van der Linden, F., Kramer, J., Magee, J.: The koala component model for consumer electronics software. IEEE Comput 33(3), 78–85 (2000)
Wenzel M et al (2004) The isabelle/isar reference manual
Wenzel, M.: Isabelle/isar–a generic framework for human-readable proof documents. From Insight to Proof-Festschrift in Honour of Andrzej Trybulec 10(23), 277–298 (2007)
Wermelinger M, Fiadeiro JL (2002) A graph transformation approach to software architecture reconfiguration. Sci Comput Program 44(2):133 – 155. Special Issue on Applications of Graph Transformations (GRATRA 2000)
Wirsing, M.: Algebraic specification. In: van Leeuwen, J. (ed.) Handbook of theoretical computer science, vol. B, pp. 675–788. MIT Press, Cambridge (1990)
Wermelinger M, Lopes A, Fiadeiro JL (2001) A graph based architectural (re)configuration language. In: Software engineering notes, vol 26. ACM, pp 21–32
Wong S, Sun J, Warren I, Sun J (2008) A scalable approach to multi-style architectural modeling and verification. In: Engineering of complex computer systems. IEEE, pp 25–34
Zdun U, Avgeriou P (2005) Modeling architectural patterns using architectural primitives. In: Johnson RE, Gabriel RP (eds) Proceedings of the 20th annual ACM SIGPLAN conference on object-oriented programming, systems, languages, and applications, OOPSLA 2005, 16–20 Oct 2005, San Diego, CA, USA, pp 133–146. ACM
Zhang J, Liu Y, Sun J, Dong JS, Sun J (2012) Model checking software architecture design. In: High-assurance systems engineering. IEEE, pp 193–200
Acknowledgements
We would like to thank Manfred Broy and the anonymous reviewers of FASE 2018 and Formal Aspects of Computing for their comments and helpful suggestions on earlier versions of this paper. Moreover, we would like to thank Dominik Ascher and Sebastian Wilzbach for their valuable support on Eclipse/EMF. The work was partially funded by the German Federal Ministry of Education and Research (BMBF) under grant number “01Is16043A” and the German Federal Ministry of Economics and Technology (BMWi) under grant number “0325811A”.
Author information
Authors and Affiliations
Corresponding author
Additional information
Alessandra Russo, Andy Schuerr, and Heike Wehrheim
Publisher’s Note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
Rights and permissions
About this article
Cite this article
Marmsoler, D., Gidey, H.K. Interactive verification of architectural design patterns in FACTum. Form Asp Comp 31, 541–610 (2019). https://doi.org/10.1007/s00165-019-00488-x
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s00165-019-00488-x