3.2 Categorisation
3.2.2 Methods of patterns categorisation
Literature presents several different methods of pattern categorisations [8][38] which are meant to underline specific aspects of patterns like their structure, properties or applications. The reason why particular aspects are underlined may also vary in addition, may include for instance justification for architec- ture selection e.g. highly adaptive architectures adaptation. Source literature for architectural pattern section provides several different ways of pattern categori- sation. Buschmann [21] presents following approaches:
1. Domain –This categorisation groups all patterns that are often used in a specific domain. An example domain can be for instance: scientific ap- plication. Most of those scientific applications need a lot of disc space to share common data and a high performance algorithm to do calculations. In many cases, algorithms are distributed over many computers that have to work together. This set of requirements and constrains can impose a set of most adequate patterns.
2. Partition –Groups all the patterns that present a system as a stack of tiers. For instance, there can be a business tier and an integration tier. Integra- tion tier contains all patterns that enable easy integration and adaptation. Business tier groups patterns that improve maintainability and extendabil- ity.
3. Intent –This category groups patterns in very narrow and high–specialized groups. Each group consists of patterns that solve the same problem or help to reduce it. For instance Intent may enclose a group of patterns that solve a problem of system distribution or a group that collects only patterns that enables easy exchange of data.
Presented categorisations of patterns start from very general idea of a domain and go deeper through grouping of pattern having structure presented as a stack of tiers. Finally, patterns having the same application are put together.
The second source [38] provides only one categorisation, namely categorisation by domain of application. This approach is in fact a clarification of the domain
category presented by F. Bushamnn. Author distinguishes seven main domains and allocates patterns to each of them. If allocation fails then pattern is treated as ’Other’. The domains are following:
1. Embedded Systems –Systems dedicated for special machines. The machines may have also a dedicated hardware what may set additional limitations. 2. Dataflow and Production –This category enclose systems designed for pro-
cess monitoring and logistic.
3. Information and Enterprise Systems –Enterprise systems that have to man- age and present data.
4. Web–based Systems –This category includes all the systems that are de- signed for web interaction.
5. Case and Related Developer Tools –This category contains all the applica- tions that help developers.
6. Games –The category contains patterns applied in computer games. 7. Scientific Approaches –Include all the patterns that do support calculations
for scientific purpose.
However the descriptions are not to detailed, the names of domains explain little bit more. An interesting fact is that there is no category that in opposite to “Others” could group solutions that do not match to only one category. Those patterns could be assigned to category “MIXED”. The categorisation by domains assumes that each pattern can belong to only one domain. An example of mix between domains can be a mix of Web based and Enterprise system because such systems are not unusual.
The last literature source presents different perception of pattern categori- sation. Author presents categorisation by View, which in fact is a mixture of concept of Intent presented by F.Bushman[21] and an approach based on struc- ture of patterns. P. Avgeriou and U. Zdun distinguish following categories [8]:
1. Layered View – In this approach architecture is presented as a complex entity that can be decomposed into interacting parts. A special empha- sis is laid on description of particular parts and their mutual interaction. The view also requires strong decoupling of parts of pattern and takes into account attributes of the pattern like scalability and modifiability.
2. Data Flow View – The next view gathers data flow related patterns. The patterns are composed from elements performing transformations, carry- ing data streams and connections between them. Essential attributes are modifiability and integrity.
3. Data–Centered View – presents system as a data store. The store con- tains one or more independent components to store data and one or more components that request data. Description of patterns has to provide infor- mation about a method of data storage, access, update and distribution as well as a method of communication with and among data storing elements. The patterns have also to point out whether they are active or passive. The description of a pattern belonging to Data-Centered View includes its scalability, modifiability, reusability and integrability.
4. Adaptation View – presents a system from adaptivity point of view. Sys- tem must have two main parts: static and dynamic. The static part is a core of the system. Dynamic parts can be added or removed from the system in runtime. Patterns introduced in this category have to enable architecture to evolve and keep communication between particular elements when a system evolves.
5. Language Extension View – divides system into two parts. The first part is native for environment in opposite to the second, which is not. Patterns underline how non–native parts of the system are integrated and translated into environment.
6. User Interaction View – underlines perspective of users. Patterns that be- long to this category have presentation that is strongly separated from the rest of the system. Those patterns take special care about data, applica- tion logic and their associations with presentation, therefore an impact on usability, modifiability and reusability is also considered.
7. Component Interaction View – underlines communication between partic- ular components of a system and presents the system itself as a set of inde- pendent components. The communication technique can be synchronous as well as asynchronous. The important fact is that whichever communication type is chosen it has to be indirect. Important aspects are modifiability and integrability.
8. Distribution View – lays a special emphasis on physical localisation and relations of components over network. A special emphasis is laid on de- coupling of distributed components. Important aspects are performance, modifiability, location and transparency.
Categorisation by View presented by P. Avgeriou and U. Zdun provides method covering not only elements of architecture and connection between those elements but also other properties like usability of application are considered This way of categorisation of patterns will be further used as a selected to categorisation.