On the Precise Semantics of the Software Layering Design Pattern

By: Bran Bran Selić


Layering and layered system architectures are among the most common architectural styles in software engineering. Despite its near ubiquity, it turns out that there has been very little theoretical work on a more precise definition of what constitutes and what characterizes layering. This has had the unfortunate consequence that the layering style has been left open to frequent misinterpretation and misuse. To gain a clearer understanding of the semantics of layering, this article first delves into the origins of the concept, including a review of several key publications that popularized its application in the software domain. Through focused analysis of these foundations, the characteristics that make layering unique are derived and then used to provide a more precise definition of the semantics of layers and layer relationships. Along the way, some of the most common misconceptions associated with layered software architectures are identified and reviewed. Finally, some high-level guidance is provided to software architects and designers on when it is appropriate to use layering and how it should be applied.


Layering patter, layering relationships, software architecture, virtual machines.

Cite as:

Bran Bran Selić, “On the Precise Semantics of the Software Layering Design Pattern”, Journal of Object Technology, Volume 20, no. 2 ( 2021), pp. 2:1-13, doi:10.5381/jot.2021.20.2.a6.

PDF | DOI | BiBTeX | Tweet this | Post to CiteULike | Share on LinkedIn

The JOT Journal   |   ISSN 1660-1769   |   DOI 10.5381/jot   |   AITO   |   Open Access   |    Contact