Planning large and complex software systems is an important task of a system architect. It includes communicating with the customer, planning the overall system structure as well as preparing the division of labor among software engineers. What´s more, a system architect benefits from other professionals´ experiences concerning system architecture.
Patterns provide a common form for the transfer of experiences. A pattern describes a widely used and proven solution to a problem that occurs in a certain context. Concerning software, categories of patterns are Idioms for programming-language-dependent solutions, Design Patterns for small parts of software and Architectural Patterns which have influence on larger parts or even on the whole progam. Pattern Systems group patterns for a specific problem domain. If they are supported by a guideline telling which sequence of patterns one should choose for which criteria, these systems are called Pattern Languages.
Most architectural patterns propose how to structure the code. From the system architect´s point of view, this task usually comes after the definition of the functional components of the system. Furthermore, architectural patterns describe two different things: A basic structure for an application as well as the required infrastructure.
The graphical representations of architectural patterns usually focus on the software structures resulting from the solution in terms of classes and their relationships. This can be a problem if the solution doesn´t imply one specific software structure but rather describes a concept which may be even independent from an implementation via software at all.
By separating system from software structures, one can now present the concepts of a pattern regarding its system structure without having to propose a software structure as the solution. For that reason, Conceptual Patterns are introduced. A pattern can be called conceptual if both problem and solution concern system structures. Here, the functional aspects and structures of the system are relevant while code structures or even the use of software for implementation are not. To support the focus on system structures, terminology and notation of conceptual patterns should use an adequate means such as provided by the Fundamental Modeling Concepts (FMC).
Many existing patterns provide concepts that fit into the conceptual pattern category. Transforming such a pattern into a conceptual pattern makes it necessary to adapt the pattern description to focus on the system structures. As an example for conceptual patterns, a pattern language for multi-tasking servers is presented which is one result of a deep analysis of different server systems.
Conceptual patterns are useful for system architects for finding and evaluating system architectures as well as for analysing existing systems, as they are a means to capture and transport experience concerning their system structure. Pattern languages of related conceptual patterns can transport experience of a specific problem domain and offer alternative solutions and criteria for their selection.
downloadable thesis (pdf format)