Writing Enterprise Architectre Pattern Languages

Taught by one of the founders of the Software Pattern Discipline

Spread a legacy of great architecture knowledge throughout your enterprise — or your industry

Most methodologies and architecture practices are driven not by grounded experience but by hope in the hype from the spokespersons of our era. Patterns represent a strong return to empiricism: they are discovered in working solutions rather than being invented or hoped for. This provides the disciplines of our field with a simple, accessible and informal language the practitioners can understand and actively use to describe their knowledge and experience. Pattern languages are a proven way to capture best practices and expert knowledge and to socialize it inside a group, department, entire company, or entire design discipline.

While we can rely on some patterns repositories for the solution architecture, the use of patterns on the enterprise scope is scarce. Before we can communicate knowledge through our own patterns and contribute to our disciplines' bodies of knowledge, we have to learn the basics.

This seminar teaches attendees how to write patterns by a two-day immersion in the software pattern culture. Each attendee will be asked to write an enterprise architecture pattern. As a practitioner acting within the boundaries of your profession and the role you have in your company, you will learn how to identify and articulate successful practices. Patterns should be part of every architect’s toolbox, and one must learn how to use that tool properly to make the most out of it.

The seminar has been developed by Jim Coplien (assisted by us and with suggestions of several leading architects). Jim is one of the co-founders of the software patterns discipline and we are proud to announce that Jim will also be teaching the seminar.

Why Patterns?

The importance of experience and proven practices is becoming more important as service orientation enters the mainstream. Solutions for business problems can no longer be provided through monolithic ‘grand designs’ and modeling cycles. Solutions to modern complex problems must emerge, based on proven concepts, using concurrent engineering. Patterns provide us with a proven means to articulate proven concepts - the knowledge about the solutions which we know work.

Patterns are not esoteric, reserved for a happy few who have a deep understanding of this world. On the contrary, patterns are down to earth, valuing professional work and experience. A pattern is something we have identified in the real world that works; in this seminar, you will learn how to use the pattern form to effectively capture and communicate empirical knowledge.

Finding an empirically grounded truth isn't enough; the power of knowledge comes in sharing knowledge in community. Just as the Open Source community has demonstrated successes in the realm of programming, the same principles can be used to share other ideas, approaches and architectures. The ‘connected world’ we are living in helps us in that; the experience gained in any part of the world can be easily shared providing we have shared languages in our disciplines.

Participants / Prerequisites

You will get the most from this seminar if you have had experience as a system architect. Since patterns are about "real stuff," hands-on development experience is a plus. Experience with professional writing is also a plus. No other prior knowledge is necessary.

All students should come to the seminar with an idea of an enterprise architecture pattern they want to write, but we ask that the attendee not start actually writing the pattern until during the seminar.

Course Objectives

On completion of this course, students will be able to:

    • Write effective Alexandrian patterns;

    • Master the use of the "pattern form";

    • Recognize and correct weaknesses in draft enterprise architecture patterns;

    • Combine patterns into a pattern language that addresses system problems;

    • Understand and appreciate the value system of the world pattern community

    • Facilitate Writers' Workshops for the review and refinement of patterns and other documents


This is a high-energy, hands-on workshop where participants will work and learn together. The course takes two days and is limited to 20 students.

Day 1

    1. What is a pattern?

      1. The Designer view

      2. The Engineering view

      3. The Sociologist's view

      4. The Theoretician's view

    2. What is a good pattern?

      1. Patterns and quality

      2. The link from patterns to architecture

      3. Empirical grounding

      4. Literary qualities: The Reader's "Aha!"

    1. Pattern Forms

      1. Patlets

      2. Indian Hill Form

      3. Alexandrian Form

    1. Sequences and Pattern Languages

      1. The notion of language and the sequences that generate it

      2. Generative patterns and generative grammars

      3. Using a pattern language

    1. Pattern Mining

    2. Writing Patterns (this afternoon)

      1. Day 2

    1. Writers’ Workshops for each author

      1. Welcoming the Author

      2. Fly on the Wall

      3. Pattern Summary

      4. Pattern Strengths

      5. Suggestions for Improvement

      6. Welcome back the author

      7. Questions of Clarification

      8. Sandwich Comment

      9. Thank the Author

    1. The Pattern Community

      1. The Hillside Group

      2. Pattern Conferences

      3. Sub-communities

    1. Pattern Ethics

      1. Buschmann's Rule

      2. Citation

      3. Intellectual Property

      4. Shaw's Paradox

    1. The Gate


This workshop will be followed by a free, ½ day mini-seminar on the use of patterns in the Enterprise Architecture. The mini-seminar will focus on first steps in establishing the Enterprise Architecture Patterns community. Your presence in this event will be highly appreciated.

Advance Reading

Software Patterns (PDF download — 66 pages)

A Pattern Language for Writers' Workshops (skim online or download -— HTML)

This seminar is based on ideas behind the first pattern book,Pattern Languages of Program Design.