Architectural patterns are a fundamental aspect of the architecting process and subsequently the architectural documentation. Unfortunately, there is only poor support for modeling architectural patterns for two reasons. First, patterns describe recurring design solutions and hence do not directly match the elements in modeling languages. Second, they support an inherent variability in the solution space that is hard to model using a single modeling solution. This paper proposes to address this problem by finding and representing architectural primitives
MotivationThe software architecture of a system needs to be rigorously documented in order to profit from the advantages of architecture-centric development and evolution. One of the most significant aspects of documenting software architectures is the representation of architectural patterns (also known as architectural styles 1 ). In general, a pattern is a problem-solution pair in a given context. A pattern does not only document 'how' a solution solves a problem but also 'why' it is solved, i.e., the rationale behind this particular solution. Architectural patterns help to document architectural design decisions, facilitate communication between stakeholders through a common vocabulary, and assist in analyzing 1 In this paper we do not distinguish between the terms 'architectural pattern' (used e.g. in [6, 39, 44]) and 'architectural style' (used e.g. in [42]). For the sake of simplicity, we shall use only the term 'architectural pattern' for the rest of this paper. Their commonalities and differences are elaborated in [2]. 1 the quality attributes of a software system. There are three major approaches, that have been used so far for modeling architectural patterns:1. Architecture Description Languages (ADLs), which aim at representing software architectures in general [27]; 2. the Unified Modeling Language which is a generic modeling language but can also be used to describe software architectures [37,26,4]; 3. some formal or semi-formal approaches for the formalization of pattern specifications [8,29,43,25].Unfortunately, none of these approaches succeeds in effectively modeling architectural patterns for the following reasons:• The approaches are too limited in the abstractions they propose to grasp the rich concepts found in patterns.UML, to start with, falls short in offering certain standard concepts of architectural patterns [1,26,20] • The approaches do not deal with the inherent variability of architectural patterns. This is not restricted to architectural patterns but it is a general problem of specifying patterns because each pattern covers not only one (parametric) solution, but informally describes a whole solution space for a recurring design problem. It is obvious in UML and ADLs, and even more so in the third aforementioned approach that deals with the formal specification of design patterns [8,29,43,25]: such methods are capable of specifying one particular solution in the solution space of the pattern, but fail to specify the who...