![[photo-1491895200222-0fc4a4c35e18.jpg]]Photo by [JJ Ying](https://unsplash.com/@jjying?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/@jjying?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) There are many patterns identified in technology, business, nature and society with various degrees of application. Patterns are also categorized by pattern types (in dependency of selected domain) such as creational, structural, behavioral, geometrical, situational and many more. Within the technology area we can see an implementation of software design patterns, enterprise integration patterns, SOA patterns, data access patterns (we can go on)... Too many patterns applicable to too many relationships (and their types) results in plethora of options raising the questions related to applicability of patterns to abstracts and abstraction layers usable for ecosystem architecture. > A pattern is a regularity in the world, in human-made design, or in abstract ideas. As such, the elements of a pattern repeat in a predictable manner. [1] In this section, we will dive in into the ecosystem patterns and their usability within the ecosystem architecture to understand applicability of patterns . ## Relationships and Patterns are crucial As we discussed in article "[[Decomposition of System and World Spheres]]", we have to shift focus from persons to relationships and their patterns on macro level with full recognition of relationship type (further described in "[[x2x model or back to basics]]" article) and pattern type. ![[Pasted image 20230708132826.png|Figure 1: Patterns]] Combination of different pattern types (i.e. horizontal . vertical and categorical at the picture above) is making networks and their dependencies complex and brings complexity into our solutions as we know it today. It is not just the complexity inside the layer / tier (network), but complexity crossing boundaries and dimensions and systems. this observation brings us to the conclusion to employ (recognize) behavioral patterns to accommodate cross-dimensional changes and dependencies. #### Pattern History [1] Patterns originated as an [architectural concept](https://en.wikipedia.org/wiki/Pattern_(architecture)) by [Christopher Alexander](https://en.wikipedia.org/wiki/Christopher_Alexander) as early as 1977 (c.f. "The Pattern of Streets," JOURNAL OF THE AIP, September, 1977, Vol. 32, No. 3, pp. 273–278). In 1987, [Kent Beck](https://en.wikipedia.org/wiki/Kent_Beck) and [Ward Cunningham](https://en.wikipedia.org/wiki/Ward_Cunningham) began experimenting with the idea of applying patterns to programming – specifically [pattern languages](https://en.wikipedia.org/wiki/Pattern_language) – and presented their results at the [OOPSLA](https://en.wikipedia.org/wiki/OOPSLA) conference that year. In the following years, Beck, Cunningham and others followed up on this work. [] Design patterns gained popularity in [computer science](https://en.wikipedia.org/wiki/Computer_science) after the book [Design Patterns: Elements of Reusable Object-Oriented Software](https://en.wikipedia.org/wiki/Design_Patterns) was published in 1994 by the so-called "Gang of Four" (Gamma et al.), which is frequently abbreviated as "GoF". That same year, the first [Pattern Languages of Programming](https://en.wikipedia.org/wiki/Pattern_Languages_of_Programming) Conference was held, and the following year the [Portland Pattern Repository](https://en.wikipedia.org/wiki/Portland_Pattern_Repository) was set up for documentation of design patterns. #### Pattern Classification [2] Design patterns had originally been categorized into 3 sub-classifications based on what kind of problem they solve. [Creational patterns](https://en.wikipedia.org/wiki/Creational_pattern) provide the capability to create objects based on a required criterion and in a controlled way. [Structural patterns](https://en.wikipedia.org/wiki/Structural_pattern) are about organizing different classes and objects to form larger structures and provide new functionality. Finally, [behavioral patterns](https://en.wikipedia.org/wiki/Behavioral_pattern) are about identifying common communication patterns between objects and realizing these patterns. #### Pattern language [3] Like all languages, a pattern language has [vocabulary](https://en.wikipedia.org/wiki/Vocabulary), [syntax](https://en.wikipedia.org/wiki/Syntax), and [grammar](https://en.wikipedia.org/wiki/Grammar) – but a pattern language applies to some complex activity other than communication. In pattern languages for design, the parts break down in this way: - The language description – the vocabulary – is a collection of named, described solutions to problems in a field of interest. These are called design patterns. So, for example, the language for architecture describes items like: settlements, buildings, rooms, windows, latches, etc. - Each solution includes syntax, a description that shows where the solution fits in a larger, more comprehensive or more abstract design. This automatically links the solution into a web of other needed solutions. For example, rooms have ways to get light, and ways to get people in and out. - The solution includes grammar that describes how the solution solves a problem or produces a benefit. So, if the benefit is unneeded, the solution is not used. Perhaps that part of the design can be left empty to save money or other resources; if people do not need to wait to enter a room, a simple doorway can replace a waiting room. - In the language description, grammar and syntax cross index (often with a literal alphabetic index of pattern names) to other named solutions, so the designer can quickly think from one solution to related, needed solutions, and document them in a logical way. In Christopher Alexander's book A Pattern Language, the patterns are in decreasing order by size, with a separate alphabetic index. - The web of relationships in the index of the language provides many paths through the design process. ## Ecosystem Patterns **Why do we need them** Ecosystem Patterns (as a whole) are designed to architect, build, operate and maintain complex environments with specific goals in mind, ranging from long term sustainability to effective transitions between ecosystem transformations. Ecosystem Patterns are dynamic change descriptors to enable predictable changes inside and outside of ecosystem. **When do we use them** Architecting of Ecosystem is divided into multiple stages , however application of patterns is done in SYNTHESIS stage, in dependency of selected scenarios, strategies, blueprints (DEFINITION stage) and stakeholders inputs collected during UNDERSTANDING stage. Application of Ecosystem patterns is further revised and observable in multiple artifacts produced as Architecture OUTPUTS. **How do we use them** We collect Patterns as INPUTS from stakeholders and available documentation putting emphasis on long term mission critical component classification. Next, during the SYNTHESIS stage, apply applicable patterns as ecosystem attributes to entities, relationships, ecosystems and selected blueprints. ![[Pasted image 20230708132859.png|Figure 2: Selected Ecosystem Patterns]] Selected Ecosystem Patterns are depicted above, we will explain each pattern in separate article and showcase their usage (behavior) inside the ecosystem. Additionally we will showcase some ecosystems architectures with patterns and their definition inside the MetaX repository. ## References [1] Wikipedia; Definitions [2] Pattern Languages of Programming, Conference proceedings (annual, 1994—) [3] Alexander, C. (1977). *[A Pattern Language: Towns, Buildings, Construction](https://en.wikipedia.org/wiki/A_Pattern_Language:_Towns,_Buildings,_Construction)*. USA: [Oxford University Press](https://en.wikipedia.org/wiki/Oxford_University_Press). [ISBN](https://en.wikipedia.org/wiki/ISBN_(identifier))[978-0-19-501919-3](https://en.wikipedia.org/wiki/Special:BookSources/978-0-19-501919-3). ## Related to [[Ecosystem Architecture - Dimensions]] [[Ecosystem Architecture - Abstracts]] [[Ecosystem Architecture - Perspective vs Perception]] [[Ecosystem Architecture - The Viewpoints]]