A Framework for Creating Pattern Languages for
Enterprise Architecture
Paula Kotzé1, Motse Tsogang2 and Alta van der Merwe3
1
CSIR Meraka Institute, PO Box 395, Pretoria, 0001, South Africa; and School of ICT Nelson
Mandela Metropolitan University, Port Elizabeth, South Africa
2
School of Computing, University of South Africa, Pretoria, 0003, South Africa
3
Department of Informatics, University of Pretoria, Private Bag X20, Hatfield, 0028, South
Africa.
paula.kotze@meraka.org.za, mtsogang@gmail.com, alta@up.ac.za
Abstract. The use of patterns and pattern languages in enterprise architecture
(EA) is a relatively novel concept. Although both the concepts of patterns and
EA are over 30 years old, the notion of design patterns is hardly applied to EA.
There is a lack of pattern collections specifically devoted to EA: only a small
number of patterns and pattern collections specifically aimed at enterprise architecture can be found in the public domain. Furthermore no framework or
method exist that would assist enterprise architects in creating patterns and pattern languages for EA. This paper aims to bridge this gap by proposing a pattern framework for enterprise architecture (PF4EA), which can guide the development of well-grounded patterns and pattern languages for the EA domain.
The components of the frameworks are described as well as a method for its
use.
Keywords: Enterprise architecture, design patterns, pattern languages, pattern
collections.
1
Introduction
Patterns are an attempt to describe solutions to problems or practices in a specific
context, and which are harvested from ‘best practices’ and working solutions [18]. A
design pattern is an approach to abstracting and capturing the knowledge for reuse on
what made a solution, or paradigm, successful in relation to the problems identified in
a particular context [35]. A design pattern can be thus be seen as “a piece of literature
that describes a design problem and a general solution for the problem in a particular
context” [14:2]. Design patterns originated in the field of building architecture, when
Christopher Alexander invented the idea of capturing design guidelines in the form of
design patterns [2]. Although the basic design pattern concept spans domains, the
purpose, presentation and level of abstraction vary according to the domain and even
within the domain [22]. Patterns are usually grouped into a pattern collection, either
into a pattern catalogue or pattern language [6, 32, 35, 54]. This paper primarily focuses on pattern languages. A pattern language “is a collection of patterns that build
on each other to generate a system” [14:17]. A pattern on its own solves a disjoint
design problem, while a pattern language builds a ‘system’.
The idea expressed in a pattern should be general enough to be applied in to a variety of systems within its context, but still specific enough to give constructive guidance. Design patterns are therefore often put forward as a way to assist novices in
mastering a new domain [5, 12]. Patterns could likewise thus be put forward as a way
to assist novice enterprise architects (and provide support for experienced enterprise
architects) in the task of doing enterprise architecture.
An enterprise is a socio-technical organization or entity that functions on a relatively continuous basis to achieve a common set of goals and objectives, and has a mission and vision that guides how it should operate at all times [29, 37, 47]. An understanding of an enterprise’s components and how they are related to one another can be
obtained from its underlying architecture. Enterprise architecture (EA) “is the continuous practice of describing the essential elements of a socio-technical organization,
their relationships to each other and to the environment, in order to understand complexity and manage change” [19].
Patterns and pattern languages for EA is a fairly novel domain. Although both the
concepts of patterns and EA are over 30 years old, the notion of design patterns is
hardly applied to EA and there is a lack of pattern collections specifically devoted to
EA. To assist in bridging this gap, the aim of this paper is to propose a framework
that can be followed to guide the development of well-grounded pattern languages for
the EA domain. Although the framework is EA specific, the arguments on which the
framework is based are fairly generic and can equally be applied to other domains
(i.e. by replacing the EA-prefixed steps with a generic <topic>-prefix).
Section 2 provides the theoretical background for the paper by introducing the concept of patterns and pattern languages in more detail. Section 3 presents the Pattern
Framework for Enterprise Architecture (PF4EA), whilst section 4 describes the method for using PF4EA. Section 5 provides examples of the use of PF4EA, whilst section
6 concludes.
2
Background
2.1
Patterns and Pattern Languages
Patterns are harvested from best practices on what has worked well in the past for a
particular problem in a particular context, and is an attempt towards a description of
successful implementation of a solution for that problem in the specific context [2,
32]. A pattern context is the preconditions under which a pattern is applicable, or a
description of the initial state, before the pattern is applied to its intended problem
[46]. From a usage perspective, patterns provide the guidelines for the description of
solutions to analysis, design and architecture related problems [14, 18, 26]. In a practical sense, each pattern describes a problem that occurs repeatedly in a particular
context, and then describes the core solution underpinning the problem, in such a way
that one can use the solution many times over, without ever having exactly the same
end result [2].
For any pattern to be legitimate, it must adhere to several general pattern characteristics [6, 14, 17, 54]:
─ A pattern is grounded in a domain by being associated to a context as well as other
patterns, and has no meaning outside the design domain or the pattern language it
forms part of.
─ A pattern implies an artefact.
─ A pattern bridges many levels of abstraction.
─ A pattern is both functional and non-functional, and should include the reason(s)
and rationale why the solution is recommended, and what trade-offs are involved
when such a pattern is used.
─ A pattern is both a process and a thing, relating the design process and structure of
the end product.
─ A pattern is validated by use and cannot be verified or validated from a purely
theoretical framework, without its practical application in its relevant context.
─ A pattern captures a big idea and is meant to focus on key problems within a context and implies maximum reusability (whenever the problem emerges again, the
pattern gets reapplied).
─ A pattern conforms to a particular template.
─ A pattern should be part of a pattern language where different patterns work together to solve a recurring complex problem in a particular context.
The next two sections discuss the pattern templates and pattern collections in more
detail.
2.2
Pattern Forms and Templates
All patterns in the same language should have the same format [2]. A pattern form or
template is a structure describing the essential elements and format of a pattern. Pattern templates vary between and even within application domains. For example, templates for building architecture (e.g. the Alexandrian Form for building architecture
[41]), would differ from those for software engineering (e.g. the Portland Pattern
Form (PF) [16], the canonical / Coplien form [3], the compact form (CF) [50], the
Gang of Four Form (GoFF) [25], the Beck Form (BF) [44], etc.). In the EA domain
the Enterprise Architecture Management (EAM) Pattern Catalog [21] supports a lightweight, organization-specific approach to EA management based on best practices,
and distinguishes between three types of patterns: methodology (EA management)
patterns, viewpoint patterns and information patterns. The pattern form are similar to
the Buschmann’s [9] software engineering form and includes the following elements:
name, short description, example, context, problem, solution, implementation, variants, known uses, consequences, ‘see also’ (reference to associated patterns) and credits.
2.3
Pattern Collections
Patterns are usually grouped into a pattern collection, either into a pattern catalogue
or a pattern language [6, 32, 35, 54]. A catalogue is a list or a collection of items
usually organized in alphabetical order [48], where the patterns do not necessarily
have to be related. When several related patterns are combined to solve a recurring
complex problem in a specified context, the grouping of associated patterns is referred
to as a pattern language [2, 7, 14, 18, 20, 35]. A pattern language is a structured
method of describing good design practices within a particular domain. A pattern
language is characterized by noting the common problems in a field of interest, describing the most effective solutions for meeting some stated goal, helping the designer move from problem to problem in a logical way, and allowing for many different paths through the design process.
2.4
Searching and Creating Individual Patterns
Patterns are discovered and not invented. There are basically two ways in which pattern collections can be discovered or formed [24]: through crafting/creating new patterns and through searching/harvesting patterns from existing pattern libraries or
through automated processes (e.g. [45]). Patterns are discovered through observation
and discrimination [24]. Observation reveals the underlying pattern and discrimination allows for selecting beneficial patterns that would advantage the specific domain.
To craft a pattern, the problem to be solved must identified and the forces in tension
discovered and documented. This is followed by a resolution of the forces, where the
practitioner observes what solutions have been fashioned by other practitioners, and
what is the best practice solution matching the forces that lead to the problem. The
discovered solution is expressed as a pattern of action, which substantiates the solution in a general.
2.5
Creating Pattern Languages
Although patterns and pattern language collections abound, literature on the actual
process of creating pattern languages are sparse. Cunningham [15], for example, suggested a few steps to get a pattern language writer going:
─ Pick a whole area of focus, not just one idea. The area must practical and linked to
the task that needs to be completed.
─ Make a list of all the little things you have learned through the years about the area
or document someone’s experience in solving a particular problem.
─ Cast each item on your list as a solution, and include the reasons for doing so (i.e.
record the forces that bear on a solution).
─ Write each item as a pattern making use of a pattern form (template).
─ Organize the patterns into sections. Write an introductory paragraph to each section
listing the patterns by name. Study the higher level structure of the patterns and
write linking paragraphs when associations exist.
─ Write an introduction to the patterns language, including the forces addressed.
In another example, Meszaros and Doble [40] defined a pattern language for writing patterns consisting of: context-setting patterns, pattern structuring patterns, pattern
naming and referencing patterns, patterns for making patterns understandable and
pattern language structuring patterns. The latter sets out a few guidelines for creating
pattern languages:
─ Identifying a set of patterns as a pattern language and writing a summary to introduce the larger problem and the patterns which contribute to solving it.
─ Describe the overall context.
─ Use a running example throughout.
─ Highlight common problems, i.e. the common threads found in more than one
pattern, and how the patterns can be used together to do something useful.
─ Use distinctive headings to convey structure.
─ Provide a problem/solution summary to help the reader find the pattern(s) that
solve their specific problems
─ Provide a glossary.
2.6
Patterns and Pattern Languages for Enterprise Architecture
Using the TOGAF architecture development process [47] as an example (but with no
claim to representing the entire EA domain as such), the scope of the enterprise architecture development process is said to involve architecture vision development, business architecture development, information systems architecture development, technology architecture development, opportunity and solutions, migration planning, implementation governance, as well as the architecture change management. Enterprise
architecture patterns should therefore include ‘organizational’ patterns that involve
the full scope of enterprise architecture concerns, including people, processes, technology and facilities.
There are only a small number of pattern collections specifically focused on aspects of the EA development process, or claiming to focus on EA. Two existing examples, with individual patterns that are closely related to enterprise architecture from
a primarily architecture management perspective, include:
─ The EAM Pattern Catalog [21, 43] focusing on EA management to complement
existing EA frameworks to provide a holistic and generic view on the problem of
EA management, and to provide additional detail and guidance needed to systematically establish EA management in a step-wise fashion within an enterprise.
─ A pattern catalogue for multichannel management described by Lankhorst and
Oude Luttighuis [38], which they consider as a constituent of EA, to assist organisations to manage and align the various information channels they use in communicating with their customers.
Although limited specific EA patterns can be found, individual patterns can be
found in disjoint pattern collections for other domains, which could be used in various
enterprise architecture domains (but not specifically identified as such), for example
organizational architecture [13], business modelling patterns [52], workflow patterns
[51], software development patterns [25], etc. We also analysed a representative set of
EA frameworks and none supports the concept of design patterns in any substantive
way. Design patterns are, however, briefly mentioned in TOGAF V8 [46], FEAF [11],
The Zachman Framework for Enterprise Architecture [55] and GERAM [30]. There is
therefore a lack of recorded research and guidelines on developing patterns for EA,
and specifically pattern languages. In the case of pattern languages this is not the case
for only the EA domain, but also in general. This paper attempts to address this gap in
research by proposing a pattern framework for the development of patterns and pattern languages for EA, but which could also be used as guide to pattern language
development in other domains.
3
The Pattern Framework for Enterprise Architecture
(PF4EA)
Following an intensive literature study on the aspects that influence the development
and maintenance of EA (combined with practical experience in these aspects), as well
as an in-depth study and experience with the practices of patterns and pattern languages over an extended period of time, the Pattern Framework for Enterprise Architecture (PF4EA) was developed. PF4EA integrates the fundamental aspects related to
patterns and pattern languages, as well as their associated processes and procedures,
with the fundamental aspects related to enterprise architecture and its associated processes and procedures. Error! Reference source not found. Fig. 1 presents PF4EA
graphically.
The components of PF4EA are organized into five construct layers, each addressing a specific aspect related to patterns and pattern languages and/or enterprise architecture:
1. Theoretical context: The theoretical context and best practices of both patterns and
pattern languages and enterprise architecture, providing the theoretical foundation
for PF4EA.
2. Context specific rules and properties: Determining and specifying the specific best
practices, rules and properties related to patterns and pattern languages, which will
be used in the patterns and pattern language to be developed, the specific enterprise
architecture aspects for which the patterns and pattern language is to be developed,
and the specific enterprise architecture framework(s) that will be supported by the
patterns and pattern language to be developed in PF4EA.
3. Context specific pattern relationships: Specifying the context specific pattern relationships that will apply to the pattern language under development, including the
generic pattern relationships, the EA specific pattern relationships and the related
EA framework specific pattern relationships.
4. Pattern search / creation: Searching/creating individual patterns to support the aspects identified in the pattern context specific rules and properties making use of
the EA processes and methodologies and EA framework rules and properties.
5. Pattern language creation: Applying the context specific pattern relationships to
the set of standalone patterns created to develop a pattern language based on coherent principles. The output is the target pattern language for the specific enter-
prise architecture aspect under consideration. Each construct layer has an associated action that describes the action of use applicable to the construct layer, namely
contextualize, consider, conform, create, and connect, respectively. These actions
are described in more detail in section 4.
As indicated in Fig. 1, PF4EA comprises of 11 different components, which present the framework with various functionalities:
1. Patterns, pattern languages and best practices (Component 1): This component
represents the theoretical foundation and the best practices related to patterns and
pattern languages in general. It represents the generic pattern concepts to be con-
Fig. 1. The Pattern Framework for Enterprise Architecture (PF4EA)
sidered for the composition of patterns for EA and the pattern languages for EA.
2. EA Processes, methodologies, frameworks and best practices (Component 2):
This component represents the theoretical foundation and the best practices related to EA covering the generic concepts of EA processes, methodologies, frameworks and related best practices. It represents the generic EA concepts to be considered for the composition of patterns for EA and the pattern languages for EA.
Both general EA concepts and EA framework detail are incorporated in this component, since the EA framework in use often ‘prescribes’ the process or methods
to be followed in developing and EA or maintaining it.
3. Pattern and pattern language rules and properties (Component 3): This component provides the framework with selected context specific pattern rules and properties to govern the creation of patterns and their relationships in the pattern language to be developed. These rules and properties provide PF4EA with functionality to formalize the creation of patterns in a consistent manner through enforcement of specific rules, characteristic and properties of patterns and pattern relationships.
4. EA processes and methodologies (Component 4): This entails the detailed specification of the specific aspect of EA to be covered by the resulting pattern language.
It specifies the conceptual foundation and specific methodologies related to the
selected EA aspect to be considered.
5. EA framework rules and properties (Component 5): This component provides for
all the rules and properties of the relevant EA framework(s) that will be supported
by the resulting pattern language. EA frameworks provide the ground rules on the
validity of connecting any two patterns in a pattern language.
6. Generic pattern relationships (Component 6): This component provides the valid
generic pattern relationships by which one pattern can be associated to another in
the resulting pattern language and what the nature of such a connection is. These
pattern relationships are the essential aspects of producing pattern language constructs.
7. EA specific pattern relationships (Component 7): This component defines EA, or
domain specific, pattern relationships. It specifies how a particular EA pattern
may be linked to another through valid context specific pattern relationships.
8. EA framework relationships (Component 8): This component defines specific relationship semantics to support the selected EA framework(s). It thus provides for
framework specific context relationships in the resulting the pattern language.
9. Patterns for EA processes and methodologies (Component 9): This component
involves the creation of, or searching for, relevant individual patterns to support
the EA concept under consideration.
10. Pattern language constructs (Component 10): This component involves identifying the relationships that exists between the individual patterns (identified in
Component 9), using the generic pattern relationships (Component 6), the EA
specific pattern relationships (Component 7), and the EA framework relationships
(Component 8). This creates the individual pattern language pieces that when
combined forms the pattern language for EA.
11. Pattern language for EA processes and methodologies (Component 11): This component integrates all of the patterns and the relationships that exists between them
into a pattern language, and identifies any orphan patterns and gaps that may require the development of additional patterns or pattern relationships. In also includes a description of the overall context of the pattern language and provide a
problem/solution summary and glossary.
4
Method to use PF4EA
For any framework to be complete, a method must be provided outlining the process
to use the framework for its intended purpose. The use of PF4EA is categorized into
five action stages, as indicated in Fig. 1:
1. Contextualize: Establishing the theoretical foundations and best practices supporting PF4EA.
2. Consider: Establishing and specifying the relevant pattern and EA aspects supporting, or to be supported by, the resulting pattern language.
3. Conform: Specifying how individual pattern components are allowed to relate to
each other.
4. Create: Creating patterns for the EA concepts under consideration.
5. Connect: Connecting individual patterns into a pattern language.
Fig. 2 depicts the flow between these five actions and the steps through the related
components when applying PF4EA to create a pattern language for the selected EA
aspects. Each step is described briefly below.
1. Contextualise:
Step 1: Study fundamental patterns and pattern language theoretical concepts
and best practices (if not familiar with this theoretical context already).
Step 2: Study the fundamental EA theoretical concepts (if not familiar with it already).
2. Consider:
Step 3: Use the knowledge obtained in Step 2 to determine the EA aspects for
which a pattern language are to be created.
Step 4: Use the outcome of Step 3 to decide on the EA concept for which to create a pattern language. If the concept is not fully developed / specified generically, develop / refine the concept.
Step 5: Use the knowledge obtained in Steps 3 and 4 to decide on the EA
framework that will be supported by the pattern language under development. If
the EA framework rules and properties are not fully developed / specified generically, develop/refine the rules and properties.
Step 6: Use the knowledge obtained in Step 1 to decide on the general pattern
rules and properties that must be adhered to by the pattern language to be developed, and which would be appropriate for the EA concepts identified in Steps 3
to 5.
Fig. 2. Method to apply PF4EA
3. Conform:
Step 7: Use the outcome of Step 6 to specify the conditions for the generic pattern specific relationships that are to be used to connect individual patterns into
a pattern language.
Step 8: Use the outcome of Step 4 and Step 6 to establish the EA specific pattern relationships matching the EA concept for which to create a pattern language.
Step 9: Use the outcome of Step 5 and Step 6 to establish the pattern relationships for the specific EA framework that will be supported.
4. Create:
Step 10: Search for existing patterns that support the EA concept identified in
Step 4 and the EA framework identified in Step 5. If the patterns do not exist,
develop/derive the patterns using the outcome of Steps 4, 5 and 6 using a pattern
development method, such as the one described by Cunningham [15].
5. Connect:
Step 11: Using the outcome of Steps 7, 8 and 9 to establish relationships between the patterns identified or developed in Step 10.
Step 12: Use the outcome of Step 11 to combine all the patterns and graphically
represent the resulting pattern language adhering to both pattern and EA fundamentals. If any orphan patterns exist, use steps 4 to 11 above to develop additional patterns enabling connections between all the patterns in the pattern language. Add a preamble to the resulting pattern language, describing the overall
context of the pattern language, a problem/solution summary and a glossary.
5
Example – Towards a Pattern Language for Enterprise
Architecture Development and Maintenance
To illustrate the components and use of PF4EA we present a number of examples.
These examples, however, do not present the components of a complete pattern language, but are merely for illustrative purposes.
5.1
Contextualise
Steps 1 and 2
We have studied patterns and pattern languages in various domains in the past and are
familiar with the basic concepts related to these aspects (see for example [33-35]). We
are all experienced in EA and all have multiple of EA certifications and have published various papers on the topic (see for example [31, 39]). If this was not the case
we would have had to study the basic concepts related to both the domains of EA and
patterns and pattern languages in detail, prior to embarking on the pattern building
exercise.
5.2
Consider
Step 3: Step 3 uses the knowledge obtained in Step 2 to determine the EA aspects for
which a pattern language are to be created. Our aim was to develop a pattern language
that could assist novice enterprise architects in the development and maintenance of
enterprise architecture. We briefly introduce some of the concepts used in the remaining sections.
EA development focuses on establishing and specifying an understanding all of the
socio-technical elements in an enterprise, including people, processes, business, organization and technology and how these elements interrelate [19, 53]. EA maintenance is a process of managing change to existing architecture models to accommodate changes that might have emerged due to change in process, technology, people
and business [47].
Architectures have a cycle through which they evolve. According to Lankhorst
[37], the architecture design process life cycle plays in important role in the evolution
of any type of architecture. The architecture process consists of the steps that take an
original idea through to the design and implementation phases, and eventually the
management of architecture [4, 10, 27, 28, 37].
A baseline architecture is part of overall enterprise architecture and is an as-is
overall architecture prior to entering a cycle of architecture review, redesign, development and maintenance [TOGAF, 2009]. A target architecture defines the to-bebuilt enterprise architecture and comprises of a complete description of the vision,
scope, and partial high-level descriptions of the business’s information systems models and design architectures reflecting the future view of aspects relating to business
processes, data, applications, information systems and the technical infrastructure
within an enterprise [11, 42, 49].
Zachman [55] defines EA as the total set of descriptive representations (models)
relevant for describing an enterprise, that is, the descriptive representations required
to create (a coherent, optimal) enterprise and to serve as a baseline for changing the
enterprise once it is created. The total set of relevant descriptive representations
would necessarily have to include all the intersections between the abstractions and
perspectives. The Zachman Framework for Enterprise Architecture [56] do not formally define a process to use the Framework, but its use is implicated by the process
to compile the descriptive representations mentioned.
Step 4: Step 4 uses the outcome of Step 3 to decide on the EA concept for which to
create a pattern language. If the concept is not fully developed / specified generically,
develop / refine the concept. An in depth study of EA concepts revealed that when
referring to EA development and maintenance most authors refer to the TOGAF
ADM [47], but that no generic set of steps for the development and maintenance of
enterprise architecture exists. We therefore, as a first step, studied various publications and best practices to develop a set of generic steps for EA development and
maintenance. An extract of these steps is presented in Fig. 3.
Step 5: Step 5 uses the knowledge obtained in Steps 3 and 4 to decide on the EA
framework that will be supported by the pattern language under development. If the
EA framework rules and properties are not fully developed / specified generically,
develop/refine the rules and properties. The Zachman Framework for Enterprise Architecture [56] was, due to its ontological nature and its ability to guide the development of applicable models, selected as an example to illustrate the concepts. The decision was made to use this framework for the first version of the pattern language. As a
future endeavour a more comprehensive example using TOGAF is envisaged.
S#
Step Dom ain
Brief rule description
Architecture Vision And Planning
STP01
Architecture vision
Establish the architecture target vision for the current development.
STP02
Architecture vision
Establish resource plan for accomplishment of the vision.
STP03
Architecture vision
Select an appropriate enterprise architecture framework.
STP04
Baseline Architecture
Create inventory for current IT infrastructure.
STP05
Baseline Architecture
Create inventory of current business processes.
STP06
Baseline Architecture
Create inventory of people, roles and responsibilities.
STP07
Baseline Architecture
Create inventory of current business objectives.
STP08
Target Architecture
Craft IT infrastructure target models.
Baseline Architectures
Target Architectures
STP09
Target Architecture
Craft business process target models.
STP10
Target Architecture
Craft people resource target models.
STP11
Target Architecture
Craft business objective target models.
STP12
Transition and Integration
Assess the gap between target and baseline architectures.
STP13
Transition and Integration
Ensure every architecture artefact contributes target architecture.
STP14
Transition and Integration
Ensure alignment of the enterprise architecture to business objectives.
STP15
Architecture Maintenance
Every architectural change is documented and updating of baseline architecture.
STP16
Architecture Maintenance
Ensure a periodical update of the architecture models
STP17
Architecture reviews
Ensure effective communication channels about the enterprise architecture.
STP18
Architecture reviews
Ensure the reviews of architecture by relevant committees.
Architecture Transition and Integration
Architecture Maintenance
Architecture Reviews
Fig. 3. Extracts from EA development and maintenance process steps example
Step 6: Step 6 uses the knowledge obtained in Step 1 to decide on the general pattern
rules and properties that must be adhered to by the pattern language to be developed
and which would be appropriate for the EA concepts identified in Steps 3 to 5.
Amongst other rules and properties, we decided on the use of the following pattern
(expandable) template, derived from studying several other pattern templates:
─
─
─
─
─
Pattern Name: A unique name to identify a pattern.
Problem: The design problem which is addressed the creation of a pattern.
Context: In which circumstances and domain is this pattern applicable?
Forces: The various forces that impact the creation or existence of a pattern.
Solution: Describe what needs to be done as a solution that resolves forces from
strongest in this context in relation to addressing the recurring problem.
─ Related Patterns: What enterprise architecture patterns are closely related to this
one?
─ Rationale: Is a description of why the solution is an appropriate one and not another.
─ Example: An artefact (e.g. a graphical model, an algorithm, a formula, a structured
rule (text), etc.), which illustrates how the pattern operates.
5.3
Conform
Step 7: Step 7 uses the outcome of Step 6 to specify the conditions for generic pattern
specific relationships that are to be used to connect individual patterns into a pattern
language. We specified a number of generic pattern relationships using a semi-formal
notation. These relationships include the is made of relationship, is equivalent of relationship, is alternative of relationship and is variant of relationship [1, 8, 36].
For example, the is equivalent of relationship was specified using the following
statements:
x:1..n, Patternx: PATTERN Patternx Problemx Solutionx Contextx
(Given any pattern Patternx, there exist a problem Problemx, being addressed by
that pattern, and a solution Solutionx, produced by that pattern, and a context Contextx, in which such a pattern is applicable. The set PATTERN to represents the set
of all valid patterns.)
i,j:1..n, Patterni, Patternj : PATTERN
if ((Problemi Problemj) (Solutioni Solutionj ) (Contextx Contextx))
then Patterni Patternj
Patterni is-equivalent-of Patternj
(If the problems associated with Patterni and Patternj are equivalent, their solutions are and their contexts are also equivalent, then Patterni and Patternj are
equivalent and said to be equivalent patterns of each other.)
Step 8: Step 8 uses the outcome of Step 4 and Step 6 to establish EA specific pattern
relationships for the EA concept for which to create a pattern language.
We specified several EA specific relationships, one of which is the is baseline2target of pattern relationship. In this relationship, one pattern is used to produce a
solution to a problem in the baseline architecture, whilst the second pattern is used to
advance the baseline architecture into a target architecture solution.
i,j:1..n, Patterni, Patternj : PATTERN
if ((Patterni SolutionbaselineArchitecture ) (Patternj SolutiontargetArchitecture))
(( Contexti ≡ Contextj ) (Problemi ≡ Problemj ))
((Solutioni « Solutionj ) ˅ ( Solutioni » Solutioni ) ˅ ( Solutioni ≡ Solutionj ))
then Patterni = is-baseline2target-of(Patternj)
if Patterni = is-baseline2target-of (Patternj)
then Solutioni = is-baseline2target-of (Solutionj)
(« means the baseline architecture pattern solution remain unchanged whilst target
architecture solution changes; » means the baseline architecture pattern solution
changes into target with additional alterations, whilst ≡ means the baseline architecture pattern remains the same in the target architecture pattern solutions)
Step 9: Step 9 uses the outcome of Step 5 and Step 6 to establish pattern relationships
for the specific EA framework that will be supported. We specified relationships for
all the framework rules of The Zachman Framework for Enterprise Architecture [56].
These relationships include, amongst others: diagonal, non-diagonal, is transformation of, is identification of, is definition of, is representation of, is specification of,
is configuration of.
For example, in The Zachman Framework for Enterprise Architecture, moving
from one perspective to another in a vertical manner is referred to as transformation.
The two patterns involved in an is transformation of type of relationship are associated with two adjacent perspectives (‘rows’ and abstractions (columns) in The Zachman
Framework for Enterprise Architecture.
i,j:1..n, Patterni, Patternj : PATTERN
if ((Problemi ≠ Problemj ) ( Abstractioni ≡ Abstractionj))
((Perspectivei ≠ Perspectivej ) (Solutioni ≠ Solutionj))
((Perspectivei Perspectivej ) = adjacent )
then Patterni = is-transformation-of(Patternj)
if Patterni = is-transformation-of (Patternj)
then : Solutioni = is-transformation-of (Solutionj)
Although this approach is appropriate to The Zachman Framework for Enterprise
Architecture, the approach of specifying the pattern relationships will have to be
adapted for other frameworks, according to the rules of such frameworks.
5.4
Create:
Step 10: Step 10 searches for existing patterns that support the EA concept identified
in Step 4 and the EA framework identified in Step 5. If the patterns do not exist, develop/derive the patterns using the outcome of Steps 4, 5 and 6. We created a (incomplete) set of patterns for the set of EA development and maintenance steps in Fig. 3.
The set of patterns is indicated in Fig. 4. Fig. 5 illustrates an example of such a pattern.
EAP {Pattern language for enterprise architecture}
EAP1=Architecture Vision Statement
EAP2=Expert Resource Acquisition
EAP3=Enterprise Architecture Framework Selection
EAP4=Baseline Business Objectives Inventory
EAP5=Baseline Business Process Inventory
EAP6=Baseline Enterprise Information Inventory
EAP7=Baseline Human Capital
EAP8=Baseline Enterprise Data
EAP9=Baseline Information Systems Inventory
EAP10=Baseline Technology Architecture Inventory
EAP11=Target Business Objectives
EAP12=Target Business Process
EAP13=Target Enterprise Information
EAP14=Target Human Capital
EAP15=Target Enterprise Data
EAP16=Target Information Systems Architecture
EAP17=Target Technology Architecture
EAP18=Architecture Gap Examination
EAP19=Architecture Solution
EAP20=Integration Implementation
EAP21=Post Integration Architecture Examination
EAP22=Architecture Change Management
EAP23=Architecture Periodic Maintenance
EAP24=Architecture Communication Glossary
EAP25=Architecture Communication Channel
EAP26=Architecture Committee Formation
EAP27=Architecture Review Time Table
Fig. 4. Patterns for EA development and maintenance
Pattern EAP4
Pattern Name: Enterprise Architecture Framework Selection
Problem: How do you ensure that an appropriate enterprise architecture framework is selected for enterprise
architecture development?
Context: you are doing enterprise architecture in which case you have to choose an appropriate and effective framework to
use in the development of enterprise architecture.
Forces:
The selection of a framework can be very challenging due to many existing and competing frameworks.
The selection of a framework is dependent on its effectiveness in doing enterprise architecture and the experience of
using such a framework.
Select a good framework that is understood by all participants.
Framework selection can be biased due to favouritism of one framework over another.
Solution:
Select an appropriate enterprise architecture framework that your expects have used and have experience in it. The framework
will be used to create necessary enterprise architecture artefacts in accordance with desired architecture futuristic state.
Related patterns: In this pattern language, there is no specific related enterprise architecture framework selection.
Rationale:
It is crucial to have an inventory of where an enterprise is, in relation to available business objectives implementing any
business objective to establish where the new objectives are going to fit in the baseline business objectives.
Fig. 5. EA Framework selection pattern
5.5
Connect:
Step 11: Step 11 uses the outcome of Steps 7, 8 and 9 to establish relationships between the patterns identified or developed in Step 10. Each individual pattern is compared to each of the other patterns to determine whether any relationship exists between the patterns. All the relationships are recorded. Although this may become a
cumbersome process as the pattern language grows, the step is essential in establishing a valid pattern language. Further research would be required to streamline the
process.
Step 12: Step 12 uses the outcome of Step 11 to combine all the patterns and graphically represent the resulting pattern language adhering to both pattern and EA fundamentals. The various perspective of The Zachman Framework for Enterprise Architecture [56] are used to guide the representation, e.g. the business architecture patterns
are mapped to the business perspective, etc. The pattern relationships are then applied
to all the patterns across all the perspectives to create meaningful associations be-
tween patterns mapped on the same perspective, and those with valid relationships in
adjacent perspectives.
The process of connecting patterns to form the language involves the application of
context pattern relationships, which associate one pattern to another via the type of
relationship they share. If any orphan patterns exist, use steps 4 to 11 above to develop additional patterns enabling connections between all the patterns in the pattern
language. Fig. 6 provides an example of how such a graphical representation of a
pattern language for EA could be presented. The colour and shape of the connecting
lines represent the various types of relationships that exist (e.g. ═ represents is transformation of). In addition to this representation a preamble to the resulting pattern
language must be compiled (not shown here), describing the overall context of the
pattern language, and provide problem/solution summary and glossary.
Fig. 6. Example of mapping a set of patterns for EA into a pattern language and graphically
presenting the language using the abstractions and perspective of the Zachman Framework for
Enterprise Architecture as canvas.
6
Conclusion
The rapid growth of the field of information and communications technology imposes
change as the only constant faced by most enterprises. The biggest challenge that
enterprises are facing currently is how to keep track of their internal and environmental changes as and when such occur. When an enterprise explicitly keep track of
changes in its internal components and how these components interrelate to one another, as well as environmental change, it is said to have done its EA explicitly [23].
There are many approaches towards implementation of EA to assist enterprises to
overcome their challenges relating to managing change and complexity. However the
existing approaches do not explicitly include patterns as an approach to EA development and maintenance. The use of patterns and pattern languages in enterprise architecture is a relatively novel concept and only a small number of patterns and pattern
collection specifically aimed at enterprise architecture can be found in the public domain. In this paper we presented a pattern framework for enterprise architecture
(PF4EA), making use of, and augmenting some of the existing approaches to developing patterns and pattern languages (e.g. the work of Cunningham [15] and Meszaros
and Doble [40] on creating patterns and pattern languages, respectively).
The purpose of PF4EA is to fill the gap in research for a baseline method that can
be used in the development of patterns and pattern languages for EA. Using an example we illustrated how the use of the proposed framework can assist as a tool to understand the process of development and maintenance of patterns and pattern languages supporting the EA process. In future research a more comprehensive example,
such as using TOGAF as selected framework, could complement this research and
give more insight into the use of the framework.
References
1. Abel, A.: Design pattern relationships and classifications.: Computer and Information
Science (2001)
2. Alexander, C., Ishikawa, S., Silverstein, M., Jacobson, M., Fiksdahl-King, I., Angel, S.: A
Pattern Language: Towns, Buildings, Construction Oxford University Press New York
(1977)
3. Appleton, B.: Cononical Form. (2010)
4. Armour, F.J., Kaisler, S.H., Liu, S.Y.: Building an Enterprise Architecture Step by Step.
IEEE Computer Society 1520-9202 (1999) pp. 31-38
5. Bergin, J.: A pattern language for initial course design. ACM SIGCSE Bulletin 31 (2001)
282 - 286
6. Bottomley, M.: A Pattern Language for Simple Embedded Systems.: Proceedings of PLOP
1999 - Pattern Languages of Programs'99. Hillside (1999)
7. Buschmann, F., Henney, K., Schamidt, D.: Past, Present, and Future Trends in Software
Patterns. IEEE Software 24 (2007) 31 - 37
8. Buschmann, F., Henney, K., Schamidt, D.C.: Past, Present, and Future Trends in Software
Patterns. IEEE Digital library. (2007)
9. Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., Stal, M.: Pattern-Oriented
Software Architecture : a system of patterns, Vol. 1. John Wiley & Sons, Chichester, New
York (1996)
10. Callas, G.: Process Based Enterprise Architecture Building. IEEE Xplore Digital Library 1
(2006) pp. 239 - 244
11. CIO-Council: Federal Enterprise Architecture Framework Version 1.1. (1999)
12. Clancy, M.J., Linn, M.C.: Patterns and pedagogy. ACM SIGCSE Bulletin 31 (1999) 37 - 42
13. Coplien, J.: A generative development-process pattern language. Pattern Languages of
Program Design. Addison-Wesley Publishing Co, New York (1994) 183 - 237
14. Coplien, J.: Software Patterns. SIGS Books & Multimedia, New York (1996)
15. Cunningham, W.: Tips for writing pattern languages. (1994)
16. Cunningham, W.: About the Portland Form. (2011)
17. Dearden, A., Finlay, J.: Pattern Languages in HCI: A Critical Review. Lawrence Erlbaum
Associates, Inc. 21 (2006) 49–102
18. Devedzic, V.: Software Patterns. Handbook of Software Engineering and Knowledge
Engineering. (2004)
19. EARF: Definition for enterprise architecture as defined by the Enterprise Architecture
Research Forum. (2009)
20. Ellison, M.: A Pattern Language for Information Architecture. (2009)
21. Ernst, A.: Enterprise Architecture Management Patterns. PLoP '08: Proceedings of the 15th
Conference on Pattern Languages of Programs ACM, New York (2008)
22. Faridul, I.: Investigating XML as Language for HCI Patterns Representation. Secondary
Investigating XML as Language for HCI Patterns Representation. Vol. Master Thesis.
Concordia University (2003)
23. Finkelstein, C.: Enterprise Architecture for Integration: Rapid Delivery Methods and
Technologies Artech House (2006)
24. Fortino, A.: A Pattern Language for Innovation Management. Proceedings of PICMET
2008. IEEE, Cape Town, South Africa (2008) 415-419
25. Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns, Elements of Reusable
Object-oriented Software. Addison Wesley Professional, Boston (1995)
26. Griffiths, R.N., Pemberton, L.: Don’t write guidelines write patterns! : (2005)
27. Gur,
N.:
Steps
to
create
enterprise
/
system
Architecture
http://weblogs.asp.net/ngur/articles/194704.aspx (2004)
28. Harmon, P.: Developing enterprise architecture, white paper, business trends.: (2003)
29. Hoogervorst, J.A.P.: Enterprise Architecture : Enabling Integration, Agility and Change.
(2003)
30. IFIP–IFAC Task Force on Architectures for Enterprise Integration: GERAM: Generalised
Enterprise Reference Architecture and Methodology, Version 1.6.3. (1999)
31. Jacobs, D., Kotzé, P., van der Merwe, A., Gerber, A.: Enterprise Architecture for Small and
Medium Enterprise Growth. In: Albani, A., Dietz, J.L.G., Verelst, J. (eds.): Advances in
Enterprise Engineering V - First Enterprise Engineering Working Conference (EEWC
2011). Springer-Verlag, Berlin (2011) 61 -75
32. Kerievsky, J.: Refactoring To Patterns. Addison-Wesley, Boston (2005)
33. Kotzé, P., Renaud, K.: Do We Practise What We Preach in Formulating Our Design and
Development Methods? In: van der Veer, G. (ed.): Lecture Notes in Computer Science,
LNCS 4940. Springer, Berlin (2008) 566 - 585
34. Kotzé, P., Renaud, K., Koukouletsos, K., Khazaei, B., Dearden, A.: Patterns, anti-patterns
and guidelines – effective aids to teaching HCI principles? In: Hvannberg, E.T., Read, J.C.,
Bannon, L., Kotzé, P., W, W. (eds.): Inventivity: Teaching theory, design and innovation in
HCI. University of Limerick (2006) 115 - 120
35. Kotzé, P., Renaud, K., Van Biljon, J.: Don’t do this – Pitfalls in using anti-patterns in
teaching human–computer interaction principles. Computers & Education 50 (2008) 979–
1008
36. Kumar, K., Prabhakar, T.V.: Design Decision Topology Model for Pattern Relationship
Analysis. (2008)
37. Lankhorst, M. (ed.): Enterprise Architecture at Work: Modelling, Communication, and
Analysis. Springer-Verlag, New York (2005)
38. Lankhorst, M., Oude Luttighuis, P.: Enterprise Architecture Patterns for Multichannel
Management. Lecture Notes in Informatics (Software Engineering 2009) P-150 (2009) 1-17
39. Mentz, J., Kotzé, P., van der Merwe, A.: A Comparison of Practitioner and Researcher
Definitions of Enterprise Architecture using an Interpretation Method. In: Advances in
Enterprise Information Systems. In: Moller, C., Chaudhry, S. (eds.), CRC Press/Balkema
(2011)
40. Meszaros, G., Doble, J.: A pattern language for pattern writing. Pattern Languages of
Program Design 3 Addison-Wesley Longman Publishing Co, Boston (1997) 529 - 574
41. Noyes, D.: Alexandrian Form. (2007)
42. Pavlak, A.: ENTERPRISE ARCHITECTURE : Lessons from Classical Architecture.
(2006)
43. Sabine, Matthes, F., Schweda, C.M.: EAM Pattern Catalog Software Engineering for
Business Information Systems, Faculty for Informatics,TU München (2010)
44. Silver, S.: Beck Form. (2007)
45. Spinellis, D., Raptis, K.: Component mining: A process and its pattern language.
Information and Software Technology 42 (2000) 609-617
46. The Open Group: TOGAF 8.1.1 Online: Architecture Patterns. The Open Group (2006)
47. The Open Group: TOGAF Version 9. Van Haren Publishing, United States (2009)
48. Thompson, D.: The Concise Oxford Dictionary of current English. In: Flowler, H.W.,
Flowler, F.G. (eds.): The Concise Oxford Dictionary Clarendon Press, Oxford (1995)
49. TOGAF: Definitions. (2009)
50. Tremblay, B.: Compact Form. (2003)
51. van der Aalst, W., ter Hofstede, A., Kiepuszewski, B., Barros, A.: Workflow Patterns.
(2003)
52. Veryard, R.: Component-Based Business Background Material, Business Patterns. (2000)
53. Wang, X., Zhao, Y.: An Enterprise Architecture Development Method in Chinese
Manufacturing Industry. Ninth International Conference on Hybrid Intelligent Systems.
IEEE Computer Society (2009) 226 - 230
54. Winn, T., Calder, P.: Is this a pattern? IEEE Software 19 (2002) 59-66
55. Zachman, J.A.: Z101 MasterClass: Framework Foundations (Presented as part of Zachman
Certification training at CSIR's Meraka Intitute, 15 February 2010). Zachman International,
, Pretoria (2010) 151
56. Zachman, J.A.: The Zachman Framework for Enterprise Architecture - The Enterprise
Ontology Version 3.0. (2011)