A Model of Layered Architectures

Architectural styles and patterns play an important role in software engineering. One of the most known ones is the layered architecture style. However, this style is usually only stated informally, which may cause problems such as ambiguity, wrong conclusions, and difficulty when checking the conformance of a system to the style. We address these problems by providing a formal, denotational semantics of the layered architecture style. Mainly, we present a sufficiently abstract and rigorous description of layered architectures. Loosely speaking, a layered architecture consists of a hierarchy of layers, in which services communicate via ports. A layer is modeled as a relation between used and provided services, and layer composition is defined by means of relational composition. Furthermore, we provide a formal definition for the notions of syntactic and semantic dependency between the layers. We show that these dependencies are not comparable in general. Moreover, we identify sufficient conditions under which, in an intuitive sense which we make precise in our treatment, the semantic dependency implies, is implied by, or even coincides with the reflexive-transitive closure of the syntactic dependency. Our results provide a technology-independent characterization of the layered architecture style, which may be used by software architects to ensure that a system is indeed built according to that style.

[1]  Mary Shaw,et al.  The golden age of software architecture , 2006, IEEE Software.

[2]  Manfred Broy Can Practitioners Neglect Theory and Theoreticians Neglect Practice? , 2011, Computer.

[3]  Manfred Broy,et al.  SERVICE-ORIENTED SYSTEMS ENGINEERING: SPECIFICATION AND DESIGN OF SERVICES AND LAYERED ARCHITECTURES , 2005 .

[4]  Robert J. Allen A formal approach to software architecture , 1997 .

[5]  David Garlan,et al.  Formal Specifications as Reusable Frameworks , 1990, VDM Europe.

[6]  Gregory D. Abowd,et al.  Formalizing style to understand descriptions of software architecture , 1995, TSEM.

[7]  David Garlan,et al.  Software architecture: a roadmap , 2000, ICSE '00.

[8]  David Garlan,et al.  Formal Modeling of the Enterprise JavaBeansTM Component Integration Framework , 1999, World Congress on Formal Methods.

[9]  Daniel Jackson,et al.  Software Abstractions - Logic, Language, and Analysis , 2006 .

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

[11]  Pamela Zave,et al.  Compositional Network Mobility , 2013, VSTTE.

[12]  David Garlan,et al.  Formal modeling of the Enterprise JavaBeans(TM) component integration framework , 2001, Inf. Softw. Technol..

[13]  Douglas C. Schmidt,et al.  Pattern Oriented Software Architecture: On Patterns and Pattern Languages (Wiley Software Patterns Series) , 2007 .

[14]  Richard N. Taylor Software architecture: many faces, many places, yet a central discipline , 2009, ESEC/FSE '09.

[15]  Ivar Jacobson,et al.  Where's the Theory for Software Engineering? , 2012, IEEE Software.

[16]  Diego Marmsoler,et al.  Towards a theory of architectural styles , 2014, SIGSOFT FSE.

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

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

[19]  Xiaolei Qian,et al.  Correct Architecture Refinement , 1995, IEEE Trans. Software Eng..

[20]  Paolo Ciancarini,et al.  On the formalization of architectural types with process algebras , 2000, SIGSOFT '00/FSE-8.

[21]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[22]  David Garlan,et al.  A Formal Approach to Software Architectures , 1992, IFIP Congress.

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

[24]  David Garlan,et al.  Formalizing Design Spaces: Implicit Invocation Mechanisms , 1991, VDM Europe.

[25]  Manfred Broy,et al.  Specification and development of interactive systems: focus on streams, interfaces, and refinement , 2001 .