MENTAL
 Main Menu
 Properties
 MENTAL, a Language of Patterns


MENTAL, a Pattern Language
 MENTAL, A
LANGUAGE
OF PATTERNS

"The universe is not made of 'things,' but of patterns of complex interacting geometries" (Christopher Alexander).

"A pattern carries the essence of a proven solution to a recurring problem in a certain context."(Brad Appleton)



The Language of Patterns, by Christopher Alexander

The concept of "pattern language" was introduced in 1977 by architect Christopher Alexander in his book "A Pattern Language". Aiming to reduce the complexity of architecture and make it more human, he set out to identify and solve the essential problems encountered in architectural design, creating a new paradigm based on a set of fundamental patterns or solutions and a way to combine them to generate useful and effective designs. His practical and structured method put architecture within the reach of non-specialists, so that they could design their own homes, without the need for architects.

Alexander was inspired by the designs of ancient cultures and the attractive and harmonious medieval cities. His method is based on classic, real-world-tested, practical and beautiful patterns. He identified 15 recurring geometric or structural characteristics which he made the foundation of his method: 1) Levels of scale; 2) Strong centers; 3) Borders; 4) Alternating repetition; 5) Positive space; 6) Good form; 7) Local symmetries; 8) Deep interlocking and ambiguity; 9) Contrast; 10) Gradients; 11) Roughness; 12) Echoes; 13) Emptiness; 14) Simplicity and inner calm; 15) Non-separability.

These 15 properties are not independent. They overlap.

From these 15 geometrical characteristics he constructed 253 patterns, which he described in that book, also called "AIS book", after the initials of its authors: Alexander, Ishikawa and Silverstein (see Bibliography). Examples of architectural patterns used by Alexander are: promenade, gallery, shared patio, parking, etc. The book had a great impact in its time, and has been one of the best-selling books on architecture. In fact, it has become something of a bible for architects. Another later book by Alexander that delves into the subject of patterns is "The Timeless Way of Building", in which he advocates an architecture in intimate fusion with nature. In later books (Nature of Order series), Alexander delved deeper into the philosophical aspects of pattern. His central concept is that of "creative unfolding," a metaphor for the growth of the human embryo, a process of increasing complexity: Some reflections by Alexander: Alexander established a new theory of the nature of space and matter and their relationship to our consciousness, to our view of the world. His theory attempts to avoid the schism between the objective and the subjective.

The 253 patterns proposed by Alexander are just one example. Each particular community or group must design its own set of patterns. Although there are also archetypal or essential patterns, which are patterns common to all human beings.

With architectural patterns, a structural view is available, a high-level abstraction, which facilitates the work of designers. It would even allow users to make their own designs, the ones suited to their needs.

Alexander was also a pioneer of CAD (computer-aided design) methodology. His book "Notes on the Synthesis of Form" is a classic in the field. He was also part of the group of scientists who developed Systems Theory (along with Herbert Simon).

Although Alexander applied the pattern language to architectural design, his system has transcended the discipline of architecture, having had a major influence in different domains, where this generic philosophy can also be applied. The idea of pattern language is universal, it is applicable to any domain that requires design engineering. In fact, its way of presenting patterns has inspired computer scientists, who have applied its creative ideas to software design. In this sense we speak of "software architecture" instead of "software engineering". Alexander was as influential in his time as Edsger Dijkstra's structured programming. He has also influenced the modern movement called "Extreme Programming", XP.


The concept of pattern

A pattern can be defined as a unit of information that captures the essence of a family of solutions relative to a problem (or set of problems) within a certain domain or context.

A well-structured system can be systematized by patterns. Patterns can be defined at different levels of abstraction. They have the following characteristics: The design of a system is related to the function it has to perform. This is why similar functions share a common design, with similar design patterns, allowing to establish analogies between systems. It is the old principle of "function creates form".


Pattern language

Just as patterns have semantics and syntax, design patterns must be related to each other through a pattern language. A pattern language can be defined as a system for describing a series of elements (patterns) and their relationships, so that good solutions to the different problems that appear in a specific context can be constructed.

A pattern language is composed of a set of basic patterns and a set of combinatorial rules of those patterns (its grammar).

A pattern language must have the following characteristics: A pattern language provides a common formal language between specialists of a domain, a conceptual reference of the domain. It is really a metalanguage.


Software patterns

Software patterns have been applied to many areas of computer science, although mainly in object-oriented software design. The goal is the same as in architecture: to reduce complexity, formalize knowledge of good solutions and even make program development easier for users.

In 1987 Ward Cunningham and Kent Beck developed 5 patterns of human-computer interaction (see Bibliography).

The most famous catalog of software patterns is included in the book by Gamma et al. [2002], also called "GoF book" (Gang of Four), after its four authors. This book had a great impact on the computer world. They started collecting patterns in 1990 and published it in 1994. It includes 23 patterns divided into 3 categories: object creation, structural (adapter, bridge, proxy, etc.) and behavioral (observer, visitor, mediator, interpreter, etc.). An example of a text editor design is presented in chapter 2.

Ward Cunningham has created the "Portland Pattern Repository" on the Internet, with hundreds of patterns in different fields, including many on Extreme Programming (eXtreme Programming).

Other well-known pattern systems are POSA [Buschmann et al., 1996] and PEAA [Fowler, 2003]. In POSA, three categories of systems are considered: distributed, interactive and adaptive. In PEAA the following categories are considered: layers, logic, databases, web presentation, concurrency, session states and distribution.


Critique of software patterns

There has been much criticism of the use of software patterns. In fact, the GoF was subjected to a show-trial in which they were accused of "crimes" against computer science. Some of the criticisms are:
MENTAL as Universal Pattern Language

MENTAL can be used as a universal pattern language for the following reasons:

Addenda

Antipatrones

Just as patterns are good solutions to problems, antipatterns are bad solutions to problems. Anti-patterns are also documented, as they alert designers not to choose wrong paths. The book "AntiPatterns" [Brown et al., 1998] describes many software antipatterns.


Bibliography

Patterns in architecture Software patterns Software Pattern Websites