From 7d1b03b62da270fa03abe431b83fb9ff10975791 Mon Sep 17 00:00:00 2001 From: Stefan Wehr Date: Thu, 25 Jul 2024 12:55:50 +0200 Subject: [PATCH 01/22] Pipes and filters --- docs/1-terms/A/term-architecture-pattern.adoc | 4 ++-- docs/1-terms/F/term-filter.adoc | 6 ++--- docs/1-terms/P/0-structure.adoc | 1 + docs/1-terms/P/term-pipe.adoc | 2 ++ docs/1-terms/P/term-pipes-and-filters.adoc | 23 +++++++++++++++++++ 5 files changed, 31 insertions(+), 5 deletions(-) create mode 100644 docs/1-terms/P/term-pipes-and-filters.adoc diff --git a/docs/1-terms/A/term-architecture-pattern.adoc b/docs/1-terms/A/term-architecture-pattern.adoc index 91e5a2c..da65d87 100644 --- a/docs/1-terms/A/term-architecture-pattern.adoc +++ b/docs/1-terms/A/term-architecture-pattern.adoc @@ -9,7 +9,7 @@ Examples include: * Layers -* Pipes-and-Filter +* <> * Microservices * <> @@ -28,7 +28,7 @@ ihnen (<>, Seite 12). Vergleichbar mit <> * Pipes und Filter * <> diff --git a/docs/1-terms/F/term-filter.adoc b/docs/1-terms/F/term-filter.adoc index d06d617..7188bb3 100644 --- a/docs/1-terms/F/term-filter.adoc +++ b/docs/1-terms/F/term-filter.adoc @@ -3,9 +3,9 @@ // tag::EN[] ==== Filter -Part of the pipe-and-filter architectural style that creates or transforms data. +Part of the pipes and filters architectural style that creates or transforms data. Filters are typically executed independently of other filters. - +See <>. // end::EN[] @@ -15,7 +15,7 @@ Filters are typically executed independently of other filters. Teil des "Pipes und Filter"-Architekturstils, der Daten erzeugt oder transformiert. Filter werden üblicherweise unabhängig von anderen Filtern ausgeführt. - +Siehe <> // end::DE[] diff --git a/docs/1-terms/P/0-structure.adoc b/docs/1-terms/P/0-structure.adoc index 4f4daaf..0494b5a 100644 --- a/docs/1-terms/P/0-structure.adoc +++ b/docs/1-terms/P/0-structure.adoc @@ -10,6 +10,7 @@ include::term-performance-efficiency-quality-attribute.adoc[{include_configurati include::term-perspective.adoc[{include_configuration}] include::term-pikachu.adoc[{include_configuration}] include::term-pipe.adoc[{include_configuration}] +include::term-pipes-and-filters.adoc[{include_configuration}] include::term-pki.adoc[{include_configuration}] include::term-port.adoc[{include_configuration}] include::term-portability-quality-attribute.adoc[{include_configuration}] diff --git a/docs/1-terms/P/term-pipe.adoc b/docs/1-terms/P/term-pipe.adoc index a534012..81e8f1e 100644 --- a/docs/1-terms/P/term-pipe.adoc +++ b/docs/1-terms/P/term-pipe.adoc @@ -6,6 +6,7 @@ Connector in the pipes-and-filters architectural style that transfers streams or chunks of data from the output of one filter to the input of another filter without modifying values or order of data. +See <>. // end::EN[] @@ -17,6 +18,7 @@ Verbindung im "Pipes und Filter"-Architekturstil, die Datenströme oder -blöcke von der Ausgabe eines Filters zur Eingabe eines anderen Filters überträgt, ohne Werte oder die Datenreihenfolge zu verändern. +Siehe <> diff --git a/docs/1-terms/P/term-pipes-and-filters.adoc b/docs/1-terms/P/term-pipes-and-filters.adoc new file mode 100644 index 0000000..4d474c5 --- /dev/null +++ b/docs/1-terms/P/term-pipes-and-filters.adoc @@ -0,0 +1,23 @@ +[#term-pipes-and-filters] + +// tag::EN[] +==== Pipes and Filters + +The Pipes and Filters architectural pattern provides a structure for systems that process +a stream of data. Each processing step is encapsulated in a filter component. Data is +passed through pipes between adjacent filters. Recombining filters allows you to +build families of related systems. (Quoted from <>, also see <> and +<>.) + +// end::EN[] + +// tag::DE[] +==== Pipes und Filters + +Das Architekturmuster "Pipes und Filter" bietet eine Struktur für Systeme, die Datenströme +verarbeiten. Jeder Verarbeitungsschritt wird als eine Filterkomponente gekapselt, dabei werden +die Daten zwischen benachbarten Filtern durch Pipes geleitet. Andere Kombinationen +der Filter führt zu einer Variente des Systems. (Zitiert aus <>, +siehe auch <> und <>.) + +// end::DE[] From eaa2448650a2166b4318c8f07302debd84f8a9e0 Mon Sep 17 00:00:00 2001 From: Stefan Wehr Date: Thu, 25 Jul 2024 13:04:05 +0200 Subject: [PATCH 02/22] layers --- docs/1-terms/L/term-layer.adoc | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/docs/1-terms/L/term-layer.adoc b/docs/1-terms/L/term-layer.adoc index 28877ef..c8b3d1e 100644 --- a/docs/1-terms/L/term-layer.adoc +++ b/docs/1-terms/L/term-layer.adoc @@ -6,14 +6,25 @@ Grouping of building blocks or components that (together) offer a cohesive set of services to other layers. Layers are related to each other by the ordered relation _allowed to use_. +Two common kinds of layers are _abstraction layers_ to hide details +(example: ISO/OSI network layers, or "hardware abstraction layer", +see https://en.wikipedia.org/wiki/Hardware_abstraction) and layers that +(physically) separate functionality or responsibility +(see https://en.wikipedia.org/wiki/Multitier_architecture). // end::EN[] // tag::DE[] ==== Schicht -Zusammenstellung von Bausteinen oder Komponenten die (zusammen) anderen Schichten einen kohärenten Satz an Services bieten. Die Beziehung zwischen Schichten wird durch die geordnete Beziehung _erlaubt zu nutzen_ geregelt. - +Zusammenstellung von Bausteinen oder Komponenten die (zusammen) anderen Schichten +einen kohärenten Satz an Services bieten. Die Beziehung zwischen Schichten wird +durch die geordnete Beziehung _erlaubt zu nutzen_ geregelt. +Zwei häufigen Arten von Schichten sind _Abstraktionschichten_ zum Verstecken von Details +(Beispiel: ISO/OSI-Netzwerkschichten oder „Hardware-Abstraktionsschicht“, +siehe https://en.wikipedia.org/wiki/Hardware_abstraction) und Schichten, die +(physikalisch) Funktionen oder Verantwortlichkeiten trennen +(siehe https://de.wikipedia.org/wiki/Schichtenarchitektur). // end::DE[] From 360fe382d2b3688ae503ab80146ff8b649e08a8c Mon Sep 17 00:00:00 2001 From: Stefan Wehr Date: Thu, 25 Jul 2024 13:11:00 +0200 Subject: [PATCH 03/22] update dependency injection --- docs/1-terms/D/term-dependency-injection.adoc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/1-terms/D/term-dependency-injection.adoc b/docs/1-terms/D/term-dependency-injection.adoc index 0982c85..f91fa54 100644 --- a/docs/1-terms/D/term-dependency-injection.adoc +++ b/docs/1-terms/D/term-dependency-injection.adoc @@ -6,6 +6,7 @@ Instead of having your objects or a factory creating a dependency, you pass the needed dependencies to the constructor or via property setters. You therefore make the creation of specific dependencies _somebody else's problem_. +Often used to ensure the <>. // end::EN[] @@ -16,5 +17,7 @@ Statt dass Ihre Objekte oder eine Fabrik eine Abhängigkeit erzeugen, übergeben Sie die benötigten Abhängigkeiten an den Konstruktor oder über Eigenschaft-Setter. Damit machen Sie die Erzeugung von spezifischen Abhängigkeiten zum _Problem anderer Leute_. +Wird oft benutzt um das +<> sicherzustellen. // end::DE[] From 79e3014a4d7673bd6a80dfc6dd26e34bb70f0075 Mon Sep 17 00:00:00 2001 From: Stefan Wehr Date: Thu, 25 Jul 2024 13:17:37 +0200 Subject: [PATCH 04/22] blackboard --- docs/1-terms/B/term-blackboard.adoc | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 docs/1-terms/B/term-blackboard.adoc diff --git a/docs/1-terms/B/term-blackboard.adoc b/docs/1-terms/B/term-blackboard.adoc new file mode 100644 index 0000000..4ccf0e8 --- /dev/null +++ b/docs/1-terms/B/term-blackboard.adoc @@ -0,0 +1,24 @@ +[#term-blackboard] + +// tag::EN[] + +==== Blackboard + +The blackboard architectural pattern is useful for problems for which no +deterministic solution strategies are known. In blackboard several specialized subsystems +assemble their knowledge to bulld a possibly partial or approximate solution. +(Quoted from <>.) + +// end::EN[] + +// tag::DE[] +==== Blackboard + +Das Architekturmuster blackboard wird oft für Probleme benutzt, die keine +deterministische Lösungsstrategien erlauben. Mehrere spezialisierte Teilsysteme +fügen im Blackboard +ihr Wissen zusammen, um eine möglicherweise partielle oder ungefähre Lösung zu erarbeiten. +(Zitiert aus <>.) + +// end::DE[] + From 6e9c26e7777fa02c97d475cd64bc1924d7965f18 Mon Sep 17 00:00:00 2001 From: Stefan Wehr Date: Thu, 25 Jul 2024 13:17:49 +0200 Subject: [PATCH 05/22] add links, fix german translation --- docs/1-terms/A/term-architecture-pattern.adoc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/1-terms/A/term-architecture-pattern.adoc b/docs/1-terms/A/term-architecture-pattern.adoc index da65d87..a65dae7 100644 --- a/docs/1-terms/A/term-architecture-pattern.adoc +++ b/docs/1-terms/A/term-architecture-pattern.adoc @@ -8,9 +8,9 @@ Examples include: -* Layers +* <> * <> -* Microservices +* <> * <> // end::EN[] @@ -27,9 +27,9 @@ ihnen (<>, Seite 12). Vergleichbar mit <> * <> -* Pipes und Filter +* <> * <> // end::DE[] From 963bf51aa9521ac887ac97e489a9fd817ab1ebc2 Mon Sep 17 00:00:00 2001 From: Stefan Wehr Date: Thu, 25 Jul 2024 13:21:25 +0200 Subject: [PATCH 06/22] add link to blackboard --- docs/1-terms/B/0-structure.adoc | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/1-terms/B/0-structure.adoc b/docs/1-terms/B/0-structure.adoc index d2d65b3..499026e 100644 --- a/docs/1-terms/B/0-structure.adoc +++ b/docs/1-terms/B/0-structure.adoc @@ -1,6 +1,7 @@ === B +include::term-blackboard.adoc[{include_configuration}] include::term-blackbox.adoc[{include_configuration}] include::term-bottom-up.adoc[{include_configuration}] include::term-bounded-context.adoc[{include_configuration}] From 26b8cc04cb0e350e0c78a5837941ee7143434550 Mon Sep 17 00:00:00 2001 From: Stefan Wehr Date: Thu, 25 Jul 2024 13:28:47 +0200 Subject: [PATCH 07/22] event sourcing --- docs/1-terms/E/0-structure.adoc | 1 + docs/1-terms/E/term-event-sourcing.adoc | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 docs/1-terms/E/term-event-sourcing.adoc diff --git a/docs/1-terms/E/0-structure.adoc b/docs/1-terms/E/0-structure.adoc index 9366dc1..dd146e5 100644 --- a/docs/1-terms/E/0-structure.adoc +++ b/docs/1-terms/E/0-structure.adoc @@ -10,3 +10,4 @@ include::term-enterprise-it-architecture.adoc[{include_configuration}] include::term-entity.adoc[{include_configuration}] include::term-entropy.adoc[{include_configuration}] include::term-environment.adoc[{include_configuration}] +include::term-event-sourcing.adoc[{include_configuration}] diff --git a/docs/1-terms/E/term-event-sourcing.adoc b/docs/1-terms/E/term-event-sourcing.adoc new file mode 100644 index 0000000..b4b7270 --- /dev/null +++ b/docs/1-terms/E/term-event-sourcing.adoc @@ -0,0 +1,23 @@ +[#term-event-sourcing] + +// tag::EN[] + +==== Event Sourcing + +Event sourcing is a software architecture pattern where changes to the application's state are +captured as a series of immutable events. Instead of storing just the current state of the +application, every state change is recorded as an event in an append-only log. + +// end::EN[] + +// tag::DE[] + +==== Event Sourcing + +Event Sourcing ist ein Architekturmuster, bei dem Änderungen am Zustand der Anwendung +als eine Serie von unveränderlichen Ereignissen erfasst werden. Anstatt nur den aktuellen +Zustand der Anwendung zu speichern, wird jede Zustandsänderung als Ereignis +in einem "append-only"-Log festgehalten. + + +// end::DE[] From a4fd8249757e47aa98548f3f3612d2b8dbfcb489 Mon Sep 17 00:00:00 2001 From: Stefan Wehr Date: Thu, 25 Jul 2024 14:40:53 +0200 Subject: [PATCH 08/22] MVVM, MVU, PAC --- docs/1-terms/M/0-structure.adoc | 2 ++ .../1-terms/M/term-model-view-controller.adoc | 16 +++++---- docs/1-terms/M/term-model-view-update.adoc | 26 +++++++++++++++ docs/1-terms/M/term-model-view-viewmodel.adoc | 33 +++++++++++++++++++ docs/1-terms/P/0-structure.adoc | 1 + ...term-presentation-abstraction-control.adoc | 25 ++++++++++++++ 6 files changed, 97 insertions(+), 6 deletions(-) create mode 100644 docs/1-terms/M/term-model-view-update.adoc create mode 100644 docs/1-terms/M/term-model-view-viewmodel.adoc create mode 100644 docs/1-terms/P/term-presentation-abstraction-control.adoc diff --git a/docs/1-terms/M/0-structure.adoc b/docs/1-terms/M/0-structure.adoc index 49df247..a5f9ea7 100644 --- a/docs/1-terms/M/0-structure.adoc +++ b/docs/1-terms/M/0-structure.adoc @@ -11,6 +11,8 @@ include::term-model-driven-architecture.adoc[{include_configuration}] include::term-model-driven-software-development.adoc[{include_configuration}] include::term-model-kind.adoc[{include_configuration}] include::term-model-view-controller.adoc[{include_configuration}] +include::term-model-view-update.adoc[{include_configuration}] +include::term-model-view-viewmodel.adoc[{include_configuration}] include::term-modeling-tool.adoc[{include_configuration}] include::term-modifiability-quality-attribute.adoc[{include_configuration}] include::term-modular-programming.adoc[{include_configuration}] diff --git a/docs/1-terms/M/term-model-view-controller.adoc b/docs/1-terms/M/term-model-view-controller.adoc index 8b238d2..48a282f 100644 --- a/docs/1-terms/M/term-model-view-controller.adoc +++ b/docs/1-terms/M/term-model-view-controller.adoc @@ -1,10 +1,10 @@ [#term-model-view-controller] // tag::EN[] -==== Model-View-Controller +==== Model-View-Controller (MVC) Architecture pattern, often used to implement user interfaces. It divides a -system into three interconnected parts (model, view and controller) to separate +system into three interconnected parts (model, view, and controller) to separate the following responsibilities: * Model manages data and logic of the system. The "truth" that will be shown or @@ -17,7 +17,7 @@ the following responsibilities: // end::EN[] // tag::DE[] -==== Model-View-Controller +==== Model-View-Controller (MVC) Architekturmuster, das häufig zur Implementierung von Benutzeroberflächen verwendet wird. Unterteilt ein System in drei @@ -25,8 +25,12 @@ miteinander verbundene Teile (Modell / model, Präsentation / view und Steuerung / controller), um die folgenden Verantwortlichkeiten zu trennen: -* Das Modell verwaltet Daten und Logik des Systems. Die "Wahrheit", die von einer oder vielen Präsentationen gezeigt oder angezeigt wird. Das Modell kennt seine Präsentationen nicht (und ist nicht von ihnen abhängig). -* Die Präsentation kann eine Reihe von (beliebigen) Output-Darstellungen der (Modell-)Informationen sein. Mehrere Präsentationen desselben Modells sind möglich. -* Die Steuerung akzeptiert (Benutzer-)Eingaben und wandelt diese in Befehle für das Modell oder die Präsentation um. +* Das Modell verwaltet Daten und Logik des Systems. Die "Wahrheit", die von einer oder vielen +Präsentationen gezeigt oder angezeigt wird. Das Modell kennt seine Präsentationen nicht +(und ist nicht von ihnen abhängig). +* Die Präsentation kann eine Reihe von (beliebigen) Output-Darstellungen der +(Modell-)Informationen sein. Mehrere Präsentationen desselben Modells sind möglich. +* Die Steuerung akzeptiert (Benutzer-)Eingaben und wandelt diese in Befehle für das +Modell oder die Präsentation um. // end::DE[] diff --git a/docs/1-terms/M/term-model-view-update.adoc b/docs/1-terms/M/term-model-view-update.adoc new file mode 100644 index 0000000..fd678d7 --- /dev/null +++ b/docs/1-terms/M/term-model-view-update.adoc @@ -0,0 +1,26 @@ +[#term-model-view-update] + +// tag::EN[] +==== Model-View-Update (MVU) + +Architecture pattern, often used to implement user interfaces. It emphasizes immutability +and unidirectional data flow. It consists of three parts: + +* Model represents the application's state as an immutable data structure. +* View is a function without side effects for rendering the model in the UI. +* Update is a function that handles updates on the model by producing a new model instance. + +// end::EN[] + +// tag::DE[] +==== Model-View-Update (MVU) + +Architekturmuster, das häufig zur Implementierung von Benutzeroberflächen verwendet wird. +Es beruht auf unveränderbaren Daten und unidirektionalem Datenfluss. Es besteht aus drei Teilen: + +* Model repräsentiert den Zustand der Anwendung als unveränderbare Datenstruktur. +* View ist eine Funktion ohne Seiteneffekte, die das Model in der UI darstellt. +* Update ist eine Funktion, die Aktualisierungen des Models verarbeitet, +indem sie eine neue Instanz des Models erzeugt. + +// end::DE[] diff --git a/docs/1-terms/M/term-model-view-viewmodel.adoc b/docs/1-terms/M/term-model-view-viewmodel.adoc new file mode 100644 index 0000000..c29cfae --- /dev/null +++ b/docs/1-terms/M/term-model-view-viewmodel.adoc @@ -0,0 +1,33 @@ +[#term-model-view-viewmodel] + +// tag::EN[] +==== Model-View-ViewModel (MVVM) + +Architecture pattern, often used to implement user interfaces. It divides a +system into three interconnected parts (model, view, and view model) to separate +the following responsibilities: + +* Model manages data and business logic of the system. Does not depend on the view +and the view model. +* View is the visible user interface of the application (or parts thereof). +* View Model serves as an intermediary between the View and the Model and holds the UI logic. +May depend on the model but not on the view. + + + +// end::EN[] + +// tag::DE[] +==== Model-View-ViewModel (MVVM) + +Architekturmuster, das häufig zur Implementierung von Benutzeroberflächen verwendet wird. +Es unterteilt eine Anwendung in drei Teile (Model, View, und ViewModel): + +* Das Modell verwaltet die Daten und die Geschäftslogik des Systems. Hängt nicht von View +und View-Model ab. +* View ist die sichtbare Benutzeroberfläche der Anwendung (oder Teilen davon). +* View-Model dient als Vermittler zwischen View und Model und enthält die UI-Logik. +Kann vom Model abhängen, aber nicht vom View. + + +// end::DE[] diff --git a/docs/1-terms/P/0-structure.adoc b/docs/1-terms/P/0-structure.adoc index 0494b5a..49813fc 100644 --- a/docs/1-terms/P/0-structure.adoc +++ b/docs/1-terms/P/0-structure.adoc @@ -15,6 +15,7 @@ include::term-pki.adoc[{include_configuration}] include::term-port.adoc[{include_configuration}] include::term-portability-quality-attribute.adoc[{include_configuration}] include::term-posa.adoc[{include_configuration}] +include::term-presentation-abstraction-control.adoc[{include_configuration}] include::term-principal.adoc[{include_configuration}] include::term-proxy.adoc[{include_configuration}] include::term-pseudo-randomness.adoc[{include_configuration}] diff --git a/docs/1-terms/P/term-presentation-abstraction-control.adoc b/docs/1-terms/P/term-presentation-abstraction-control.adoc new file mode 100644 index 0000000..94647dc --- /dev/null +++ b/docs/1-terms/P/term-presentation-abstraction-control.adoc @@ -0,0 +1,25 @@ +[#term-presentation-abstraction-control] + +// tag::EN[] +==== Presentation-Abstraction-Constrol (PAC) + +Architecture pattern used for structuring software systems into a hierarchy of cooperating +agents. Each agent is divided into three distinct components: + +* Presentation is the user interface part of the agent. +* Abstraction handles business logic and data. +* Control manages interactions between presentation and abstraction. + +// end::EN[] + +// tag::DE[] +==== Presentation-Abstraction-Constrol (PAC) + +Architekturmuster, welches ein Softwaresystemen in eine Hierarchie von kooperierenden +Agenten aufteilt. Jeder Agent besteht aus drei verschiedene Komponenten: + +* Presentation ist die Benutzeroberfläche des Agenten. +* Abstraction beinhaltet die Geschäftslogik und die Daten. +* Control behandelt Interaktionen zwischen Presentation und Abstraction. + +// end::DE[] From 59c6b4cda9db4427df7e333c9995aece16c1f621 Mon Sep 17 00:00:00 2001 From: Stefan Wehr Date: Thu, 25 Jul 2024 15:09:21 +0200 Subject: [PATCH 09/22] ports and adapters --- docs/1-terms/P/0-structure.adoc | 1 + docs/1-terms/P/term-ports-and-adapters.adoc | 32 +++++++++++++++++++++ docs/8-references/references.adoc | 3 ++ 3 files changed, 36 insertions(+) create mode 100644 docs/1-terms/P/term-ports-and-adapters.adoc diff --git a/docs/1-terms/P/0-structure.adoc b/docs/1-terms/P/0-structure.adoc index 49813fc..a410c94 100644 --- a/docs/1-terms/P/0-structure.adoc +++ b/docs/1-terms/P/0-structure.adoc @@ -14,6 +14,7 @@ include::term-pipes-and-filters.adoc[{include_configuration}] include::term-pki.adoc[{include_configuration}] include::term-port.adoc[{include_configuration}] include::term-portability-quality-attribute.adoc[{include_configuration}] +include::term-ports-and-adapters.adoc[{include_configuration}] include::term-posa.adoc[{include_configuration}] include::term-presentation-abstraction-control.adoc[{include_configuration}] include::term-principal.adoc[{include_configuration}] diff --git a/docs/1-terms/P/term-ports-and-adapters.adoc b/docs/1-terms/P/term-ports-and-adapters.adoc new file mode 100644 index 0000000..94404e8 --- /dev/null +++ b/docs/1-terms/P/term-ports-and-adapters.adoc @@ -0,0 +1,32 @@ +[#term-ports-and-adapters] + +// tag::EN[] +==== Ports and Adapters + +Architecture pattern that concentrates the domain logic in the center of the system. +Ports connect the domain logic with to the outside world, independent from a specific technology. +Different adapters may be attached to ports to translate requests and responses for a certain technology. +This approach allows an application to be driven by different agents +(e.g. users, programs, automated tests), and to be developed and tested in isolation from its +production environment. See <>, <>, <>. + +Also known as Onion-Architecture, Hexagonal-Architecture, Clean-Architecture. + +// end::EN[] + +// tag::DE[] + +==== Ports und Adapter (PAC) + +Architekturmuster, das die Domänenlogik im Zentrum des Systems hält und Verbindungen +zur Außenwelt nur über Ports herstellt. Ports sind unabhängig von einer bestimmten Technologie. +An die Ports können verschiedene Adapter angeschlossen werden, um Anfragen und Antworten für +eine bestimmte Technologie bereitzustellen. +Dieser Ansatz ermöglicht es, eine Anwendung von verschiedenen Agenten +(z. B. Benutzer, Programme, automatisierte Tests) steuern zu lassen +und isoliert von ihrer Produktionsumgebung zu entwickeln und testen. +Siehe <>, <>, <>. + +Auch bekannt als Onion-Architecture, Hexagonale Architektur, Clean-Architecture. + +// end::DE[] diff --git a/docs/8-references/references.adoc b/docs/8-references/references.adoc index a859825..34c6b6d 100644 --- a/docs/8-references/references.adoc +++ b/docs/8-references/references.adoc @@ -30,6 +30,7 @@ Also known as POSA-1. Most likely the most famous and groundbreaking book on arc **C** - [[[clements,Clements et al. 2003]]] Clements, P., F. Bachmann, L. Bass, D. Garlan, J. Ivers et al.: Documenting Software Architectures – Views and Beyond. Addison Wesley, 2003. +- [[[cockburn,Cockburn 2005]]] Cockburn, Alistair (2005-04-01): Hexagonal architecture, online (retrieved 2024-07-25) **E** @@ -53,6 +54,7 @@ A classic on design patterns. - [[[hargis,Hargis 2004]]] Hargis, Gretchen et al.: Quality Technical Information: A Handbook for Writers and Editors. Prentice Hall, IBM Press, 2004. - [[[hofmeister, Hofmeister+2000]]] Hofmeister, Christine/Nord, Robert/Soni, Dilip]]]: _Applied Software Architecture,_ 1st edition, Addison-Wesley, 1999 +- [[[hombergs,Hombergs 2024]]] Hombergs, Tom: Get Your Hands Dirty on Clean Architecture, Packt, 2nd edition 2024. **I** @@ -66,6 +68,7 @@ A classic on design patterns. **L** +- [[[lange21,Lange 2021]]] Kenneth Lange: The Functional Core, Imperative Shell Pattern, online: - [[[ref-lilienthal-2019, Lilienthal-2019]]] Lilienthal, Carola: _Langlebige Software-Architekturen: Technische Schulden analysieren, begrenzen und abbauen_ 3rd edition, dpunkt.verlag, 2019 From b6f0f17235b0646123fd4199f0c52c0157c2d017 Mon Sep 17 00:00:00 2001 From: Stefan Wehr Date: Thu, 25 Jul 2024 15:10:07 +0200 Subject: [PATCH 10/22] business logic -> domain logic --- docs/1-terms/M/term-model-view-viewmodel.adoc | 4 ++-- docs/1-terms/P/term-presentation-abstraction-control.adoc | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/1-terms/M/term-model-view-viewmodel.adoc b/docs/1-terms/M/term-model-view-viewmodel.adoc index c29cfae..bef847f 100644 --- a/docs/1-terms/M/term-model-view-viewmodel.adoc +++ b/docs/1-terms/M/term-model-view-viewmodel.adoc @@ -7,7 +7,7 @@ Architecture pattern, often used to implement user interfaces. It divides a system into three interconnected parts (model, view, and view model) to separate the following responsibilities: -* Model manages data and business logic of the system. Does not depend on the view +* Model manages data and domain logic of the system. Does not depend on the view and the view model. * View is the visible user interface of the application (or parts thereof). * View Model serves as an intermediary between the View and the Model and holds the UI logic. @@ -23,7 +23,7 @@ May depend on the model but not on the view. Architekturmuster, das häufig zur Implementierung von Benutzeroberflächen verwendet wird. Es unterteilt eine Anwendung in drei Teile (Model, View, und ViewModel): -* Das Modell verwaltet die Daten und die Geschäftslogik des Systems. Hängt nicht von View +* Das Modell verwaltet die Daten und die Domänenlogik des Systems. Hängt nicht von View und View-Model ab. * View ist die sichtbare Benutzeroberfläche der Anwendung (oder Teilen davon). * View-Model dient als Vermittler zwischen View und Model und enthält die UI-Logik. diff --git a/docs/1-terms/P/term-presentation-abstraction-control.adoc b/docs/1-terms/P/term-presentation-abstraction-control.adoc index 94647dc..ab8f72c 100644 --- a/docs/1-terms/P/term-presentation-abstraction-control.adoc +++ b/docs/1-terms/P/term-presentation-abstraction-control.adoc @@ -7,7 +7,7 @@ Architecture pattern used for structuring software systems into a hierarchy of c agents. Each agent is divided into three distinct components: * Presentation is the user interface part of the agent. -* Abstraction handles business logic and data. +* Abstraction handles domain logic and data. * Control manages interactions between presentation and abstraction. // end::EN[] @@ -19,7 +19,7 @@ Architekturmuster, welches ein Softwaresystemen in eine Hierarchie von kooperier Agenten aufteilt. Jeder Agent besteht aus drei verschiedene Komponenten: * Presentation ist die Benutzeroberfläche des Agenten. -* Abstraction beinhaltet die Geschäftslogik und die Daten. +* Abstraction beinhaltet die Domänenlogik und die Daten. * Control behandelt Interaktionen zwischen Presentation und Abstraction. // end::DE[] From 84fa33b9a03a4dfd6e6d7c8a57335ab221ea8ca6 Mon Sep 17 00:00:00 2001 From: Stefan Wehr Date: Thu, 25 Jul 2024 15:14:22 +0200 Subject: [PATCH 11/22] plugin --- docs/1-terms/P/0-structure.adoc | 1 + docs/1-terms/P/term-plugin.adoc | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 docs/1-terms/P/term-plugin.adoc diff --git a/docs/1-terms/P/0-structure.adoc b/docs/1-terms/P/0-structure.adoc index a410c94..447ed23 100644 --- a/docs/1-terms/P/0-structure.adoc +++ b/docs/1-terms/P/0-structure.adoc @@ -12,6 +12,7 @@ include::term-pikachu.adoc[{include_configuration}] include::term-pipe.adoc[{include_configuration}] include::term-pipes-and-filters.adoc[{include_configuration}] include::term-pki.adoc[{include_configuration}] +include::term-plugin.adoc[{include_configuration}] include::term-port.adoc[{include_configuration}] include::term-portability-quality-attribute.adoc[{include_configuration}] include::term-ports-and-adapters.adoc[{include_configuration}] diff --git a/docs/1-terms/P/term-plugin.adoc b/docs/1-terms/P/term-plugin.adoc new file mode 100644 index 0000000..0076b9c --- /dev/null +++ b/docs/1-terms/P/term-plugin.adoc @@ -0,0 +1,19 @@ +[#term-plugin] + +// tag::EN[] +==== Plugin + +Architecture pattern that allows the extension of an application's functionality without +modifying its core codebase. This is achieved by enabling external modules, known as plugins, +to add features or interact with the core application. + +// end::EN[] + +// tag::DE[] +==== Plugin + +Architekturmuster, das die Erweiterung der Funktionalität einer Anwendung ermöglicht, ohne +den Kern der Anwendung zu verändern. Dies wird durch externe Module, sogenannte Plugins, +erreicht, welche Funktionen hinzuzufügen oder mit der Kernanwendung interagieren. + +// end::DE[] From 8074013499fbc4c1f2c7ff2b0e981a66448ea950 Mon Sep 17 00:00:00 2001 From: Stefan Wehr Date: Thu, 25 Jul 2024 15:30:41 +0200 Subject: [PATCH 12/22] SOA --- docs/1-terms/S/0-structure.adoc | 1 + .../S/term-service-oriented-architecture.adoc | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 docs/1-terms/S/term-service-oriented-architecture.adoc diff --git a/docs/1-terms/S/0-structure.adoc b/docs/1-terms/S/0-structure.adoc index 5c5b5df..78ede73 100644 --- a/docs/1-terms/S/0-structure.adoc +++ b/docs/1-terms/S/0-structure.adoc @@ -13,6 +13,7 @@ include::term-separation-of-concern.adoc[{include_configuration}] include::term-sequence-diagram.adoc[{include_configuration}] include::term-service-ddd.adoc[{include_configuration}] include::term-service.adoc[{include_configuration}] +include::term-service-oriented-architecture.adoc[{include_configuration}] include::term-signature.adoc[{include_configuration}] include::term-single-responsibility-principle.adoc[{include_configuration}] include::term-singleton.adoc[{include_configuration}] diff --git a/docs/1-terms/S/term-service-oriented-architecture.adoc b/docs/1-terms/S/term-service-oriented-architecture.adoc new file mode 100644 index 0000000..354f14f --- /dev/null +++ b/docs/1-terms/S/term-service-oriented-architecture.adoc @@ -0,0 +1,21 @@ +[#term-service-oriented-architecture] + +// tag::EN[] +==== Service-Oriented Architecture + +Architectural style that focuses on providing abstract services rather than concrete +implementations to users of the system. Services enable reuse across organizational boundaries. +See <>. + +// end::EN[] + +// tag::DE[] +==== Plugin + +Architekturparadigma, das sich auf die Bereitstellung abstrakter Services anstatt konkreter +Implementierungen fokusiert. Services ermöglichen Wiederverwendung über +Organisationsgrenzen hinweg. Siehe <>. + +// end::DE[] + + From 438fbdb14816481995701bfba0c34ea926abc675 Mon Sep 17 00:00:00 2001 From: Stefan Wehr Date: Thu, 25 Jul 2024 15:37:57 +0200 Subject: [PATCH 13/22] combinator --- docs/1-terms/C/0-structure.adoc | 1 + docs/1-terms/C/term-combinator.adoc | 23 +++++++++++++++++++++++ docs/8-references/references.adoc | 6 ++++++ 3 files changed, 30 insertions(+) create mode 100644 docs/1-terms/C/term-combinator.adoc diff --git a/docs/1-terms/C/0-structure.adoc b/docs/1-terms/C/0-structure.adoc index 8f09ada..2ff6535 100644 --- a/docs/1-terms/C/0-structure.adoc +++ b/docs/1-terms/C/0-structure.adoc @@ -13,6 +13,7 @@ include::term-cia-triad.adoc[{include_configuration}] include::term-cloud.adoc[{include_configuration}] include::term-co-existence-quality-attribute.adoc[{include_configuration}] include::term-cohesion.adoc[{include_configuration}] +include::term-combinator.adoc[{include_configuration}] include::term-command.adoc[{include_configuration}] include::term-common-closure-principle.adoc[{include_configuration}] include::term-common-reuse-principle.adoc[{include_configuration}] diff --git a/docs/1-terms/C/term-combinator.adoc b/docs/1-terms/C/term-combinator.adoc new file mode 100644 index 0000000..9a0ddd4 --- /dev/null +++ b/docs/1-terms/C/term-combinator.adoc @@ -0,0 +1,23 @@ +[#term-combinator] + +// tag::EN[] +==== Combinator + +Design pattern to build complex functions or objects by combining simpler ones. +For some domain object of type T, look for operations with both input and output type T. +See <> and <>. + +// end::EN[] + +// tag::DE[] +==== Kombinator + +Entwurfsmuster zum Aufbau komplexer Funktionen oder Objekte durch die Kombination +einfacherer Funktionen oder Objekte. +Gegeben ein Domänenobjekt vom Typ T, suche nach Operationen, +die als Ein- und Ausgabe ebenfalls den Typ T haben. +Siehe <> and <>. + +// end::DE[] + + diff --git a/docs/8-references/references.adoc b/docs/8-references/references.adoc index 34c6b6d..057e4b8 100644 --- a/docs/8-references/references.adoc +++ b/docs/8-references/references.adoc @@ -75,6 +75,8 @@ A classic on design patterns. **M** +- [[[maguire, Maguire 2019]]] Sandy Maguire: Algebra-Driven Design: Elegant Solutions from Simple Building Blocks. Leanpub, 2019. + - [[[martin-2003, Martin-2003]]] Martin, Robert C.: _Agile Software Development: Principles, Patterns and Practices_, Prentice Hall, 2003 @@ -115,3 +117,7 @@ Conference Paper of Yulia Cherdantseva and Jeremy Hilton describing the RMIAS. - [[[tornhill-2015, Tornhill-2015]]] Adam Tornhill: Your Code as a Crime Scene. Use Forensic Techniques to Arrest Defects, Bottlenecks, and Bad Design in Your Programs. Pragmatic Programmers, 2015. + +**Y** + +- [[[yorgey,Yorgey 2012]]] Brent A. Yorgey, Monoids: Theme and Variations. Proceedings of the 2012 Haskell Symposium, September 2012 From ece28ccc92ee3c4f1eb76938021f4797e1ee696c Mon Sep 17 00:00:00 2001 From: Stefan Wehr Date: Thu, 25 Jul 2024 15:42:29 +0200 Subject: [PATCH 14/22] interpreter --- docs/1-terms/I/0-structure.adoc | 1 + docs/1-terms/I/term-interpreter.adoc | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 docs/1-terms/I/term-interpreter.adoc diff --git a/docs/1-terms/I/0-structure.adoc b/docs/1-terms/I/0-structure.adoc index a98902a..f49b1bc 100644 --- a/docs/1-terms/I/0-structure.adoc +++ b/docs/1-terms/I/0-structure.adoc @@ -12,6 +12,7 @@ include::term-integrity.adoc[{include_configuration}] include::term-interface-segregation-principle.adoc[{include_configuration}] include::term-interface.adoc[{include_configuration}] include::term-interoperability-quality-attribute.adoc[{include_configuration}] +include::term-interpreter.adoc[{include_configuration}] include::term-isaqb.adoc[{include_configuration}] include::term-iso-25010.adoc[{include_configuration}] include::term-iso-9126.adoc[{include_configuration}] diff --git a/docs/1-terms/I/term-interpreter.adoc b/docs/1-terms/I/term-interpreter.adoc new file mode 100644 index 0000000..c715423 --- /dev/null +++ b/docs/1-terms/I/term-interpreter.adoc @@ -0,0 +1,20 @@ +[#term-interpreter] + +// tag::EN[] +==== Interpreter + +Design pattern that represents domain objects or domain-specific languages as syntax. +An interpreter function then provides a semantic interpretation of domain objects separately +from the objects. + +// end::EN[] + +// tag::DE[] + +==== Interpreter + +Entwurfsmuster, das Domänenobjekte oder domänenspezifische Sprachen als Syntax darstellt. +Eine Interpreterfunktion liefert dann eine semantische Interpretation der Domänenobjekte getrennt +von den Objekten. + +// end::DE[] From 787dd3dc12b0ba85f3434b55b80265a1792bf290 Mon Sep 17 00:00:00 2001 From: Stefan Wehr Date: Thu, 25 Jul 2024 15:46:30 +0200 Subject: [PATCH 15/22] template method --- docs/1-terms/T/0-structure.adoc | 1 + docs/1-terms/T/term-template-method.adoc | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 docs/1-terms/T/term-template-method.adoc diff --git a/docs/1-terms/T/0-structure.adoc b/docs/1-terms/T/0-structure.adoc index 048e206..ec51fa6 100644 --- a/docs/1-terms/T/0-structure.adoc +++ b/docs/1-terms/T/0-structure.adoc @@ -5,6 +5,7 @@ include::term-technical-context.adoc[{include_configuration}] include::term-template.adoc[{include_configuration}] +include::term-template-method.adoc[{include_configuration}] include::term-temporal-coupling.adoc[{include_configuration}] include::term-testability-quality-attribute.adoc[{include_configuration}] include::term-time-behaviour-quality-attribute.adoc[{include_configuration}] diff --git a/docs/1-terms/T/term-template-method.adoc b/docs/1-terms/T/term-template-method.adoc new file mode 100644 index 0000000..b283e1a --- /dev/null +++ b/docs/1-terms/T/term-template-method.adoc @@ -0,0 +1,23 @@ +[#term-template-method] + +// tag::EN[] +==== Template Method + +Design pattern that defines the skeleton of an algorithm in an operation, deferring some steps +to subclasses. Template Method lets subclasses redefine certain steps of +an algorithm without changing the algorithm's structure. (Quoted from <>.) + +// end::EN[] + +// tag::DE[] + +==== Template Method + +Entwurfsmuster, das das Skelett eines Algorithmus in einer Operation definiert, wobei einige Schritte +an Unterklassen verschoben werden. Mit Template Method können Unterklassen bestimmte Schritte +eines Algorithmus neu definieren, ohne die Struktur des Algorithmus zu verändern. +(Zitiert aus <>.) + +// end::DE[] + + From ed59005c3905c8279cb8684026ccc1181c3e7407 Mon Sep 17 00:00:00 2001 From: Stefan Wehr Date: Thu, 25 Jul 2024 15:51:24 +0200 Subject: [PATCH 16/22] strategy --- docs/1-terms/S/0-structure.adoc | 1 + docs/1-terms/S/term-strategy.adoc | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 docs/1-terms/S/term-strategy.adoc diff --git a/docs/1-terms/S/0-structure.adoc b/docs/1-terms/S/0-structure.adoc index 78ede73..a72e95c 100644 --- a/docs/1-terms/S/0-structure.adoc +++ b/docs/1-terms/S/0-structure.adoc @@ -23,6 +23,7 @@ include::term-solid-principles.adoc[{include_configuration}] include::term-stable-abstractions-principle.adoc[{include_configuration}] include::term-stable-dependencies-principle.adoc[{include_configuration}] include::term-stakeholder.adoc[{include_configuration}] +include::term-strategy.adoc[{include_configuration}] include::term-structural-element.adoc[{include_configuration}] include::term-structure.adoc[{include_configuration}] include::term-symmetric-cryptography.adoc[{include_configuration}] diff --git a/docs/1-terms/S/term-strategy.adoc b/docs/1-terms/S/term-strategy.adoc new file mode 100644 index 0000000..db8fb05 --- /dev/null +++ b/docs/1-terms/S/term-strategy.adoc @@ -0,0 +1,25 @@ +[#term-strategy] + +// tag::EN[] +==== Strategy + +Design pattern for defining a family of algorithms, encapsulate each one, and make them +interchangeable. Strategy lets the algorithm vary independently from +clients that use it. +(Quoted from <>.) + +// end::EN[] + +// tag::DE[] + +==== Strategy + +Entwurfsmuster für die Definition einer Familie von Algorithmen, wobei jeder einzelne gekapselt und +austauschbar ist. Mit Strategy können wir eine konkreten Algorithmus unabhängig vom Nutzer +ändern. +(Zitiert aus <>.) + +// end::DE[] + + + From 6ef4a1d644dd1dd05d9e2ba74545874ad5b9628b Mon Sep 17 00:00:00 2001 From: Stefan Wehr Date: Thu, 25 Jul 2024 15:55:33 +0200 Subject: [PATCH 17/22] visitor --- docs/1-terms/V/0-structure.adoc | 1 + docs/1-terms/V/term-visitor.adoc | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 docs/1-terms/V/term-visitor.adoc diff --git a/docs/1-terms/V/0-structure.adoc b/docs/1-terms/V/0-structure.adoc index d53d37f..f1352e8 100644 --- a/docs/1-terms/V/0-structure.adoc +++ b/docs/1-terms/V/0-structure.adoc @@ -5,5 +5,6 @@ include::term-value-object.adoc[{include_configuration}] include::term-view.adoc[{include_configuration}] +include::term-visitor.adoc[{include_configuration}] diff --git a/docs/1-terms/V/term-visitor.adoc b/docs/1-terms/V/term-visitor.adoc new file mode 100644 index 0000000..e7e1d54 --- /dev/null +++ b/docs/1-terms/V/term-visitor.adoc @@ -0,0 +1,25 @@ +[#term-visitor] + +// tag::EN[] +==== Visitor + +Design pattern for representing operations to be performed on the elements of an object +structure. Visitor lets you define a new operation without changing the +classes of the elements on which it operates. +(Quoted from <>.) + +// end::EN[] + +// tag::DE[] + +==== Visitor + +Entwurfsmuster, um Operation zu modellieren, die auf den Elementen einer Objektstruktur +durchgeführt werden. Visitor erlaubt die Definitione neuer Operation, ohne bestehende +Klassen zu ändern. +(Nach <>.) + + + +// end::DE[] + From 59acf6e5cf72c66e6259afe3f51059fa313e7c32 Mon Sep 17 00:00:00 2001 From: Stefan Wehr Date: Thu, 25 Jul 2024 16:02:47 +0200 Subject: [PATCH 18/22] RPC --- docs/1-terms/R/0-structure.adoc | 1 + .../1-terms/R/term-remote-procedure-call.adoc | 28 +++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 docs/1-terms/R/term-remote-procedure-call.adoc diff --git a/docs/1-terms/R/0-structure.adoc b/docs/1-terms/R/0-structure.adoc index bd2e9ec..d661496 100644 --- a/docs/1-terms/R/0-structure.adoc +++ b/docs/1-terms/R/0-structure.adoc @@ -12,6 +12,7 @@ include::term-refactoring.adoc[{include_configuration}] include::term-registry.adoc[{include_configuration}] include::term-relationship.adoc[{include_configuration}] include::term-reliability-quality-attribute.adoc[{include_configuration}] +include::term-remote-procedure-call.adoc[{include_configuration}] include::term-replaceability-quality-attribute.adoc[{include_configuration}] include::term-repository.adoc[{include_configuration}] include::term-resource-utilization-quality-attribute.adoc[{include_configuration}] diff --git a/docs/1-terms/R/term-remote-procedure-call.adoc b/docs/1-terms/R/term-remote-procedure-call.adoc new file mode 100644 index 0000000..679ed1d --- /dev/null +++ b/docs/1-terms/R/term-remote-procedure-call.adoc @@ -0,0 +1,28 @@ +[#term-remote-procedure-call] + +// tag::EN[] +==== Remote Procedure Call (RPC) + +Mechanism for implementing communication between two systems, allowing a program to execute +a procedure in another address space, commonly on another physical machine. +This communication happens as if it were a local procedure call, abstracting away the +complexities of the network communication. RPC is widely used in distributed systems +and network applications. + +// end::EN[] + +// tag::DE[] + +==== Remote Procedure Call (RPC) + +Mechanismus zur Kommunikation zwischen zwei Systemen, der es einem Programm ermöglicht, +eine Prozedur in einem anderen Adressraum auszuführen +(in der Regel auf einer anderen Maschine). +Die Kommunikation erfolgt dabei so, also ob es sich um einen lokalen Prozeduraufruf handelt. +Dabei wird die Komplexität der Netzwerkkommunikation versteckt. +RPC wird häufig in verteilten Systemen und Netzwerkanwendungen eingesetzt. + +// end::DE[] + + + From 25b61cfa373bc2e75dd435698f1c88b9c00837e2 Mon Sep 17 00:00:00 2001 From: Stefan Wehr Date: Thu, 25 Jul 2024 16:42:55 +0200 Subject: [PATCH 19/22] fixes --- docs/1-terms/B/term-blackboard.adoc | 12 ++++++------ docs/1-terms/D/term-dependency-injection.adoc | 6 +++--- docs/1-terms/E/term-event-sourcing.adoc | 4 ++-- docs/1-terms/M/term-model-view-viewmodel.adoc | 8 ++++---- docs/1-terms/P/term-pipes-and-filters.adoc | 2 +- docs/1-terms/P/term-plugin.adoc | 2 +- docs/1-terms/P/term-ports-and-adapters.adoc | 4 ++-- .../P/term-presentation-abstraction-control.adoc | 10 +++++----- .../S/term-service-oriented-architecture.adoc | 2 +- docs/1-terms/S/term-strategy.adoc | 6 +++--- docs/1-terms/T/term-template-method.adoc | 2 +- 11 files changed, 29 insertions(+), 29 deletions(-) diff --git a/docs/1-terms/B/term-blackboard.adoc b/docs/1-terms/B/term-blackboard.adoc index 4ccf0e8..b336c7c 100644 --- a/docs/1-terms/B/term-blackboard.adoc +++ b/docs/1-terms/B/term-blackboard.adoc @@ -4,21 +4,21 @@ ==== Blackboard -The blackboard architectural pattern is useful for problems for which no -deterministic solution strategies are known. In blackboard several specialized subsystems -assemble their knowledge to bulld a possibly partial or approximate solution. -(Quoted from <>.) +Architectural pattern that is useful for problems for which no +deterministic solution strategies are known. In blackboard, several specialized subsystems +assemble their knowledge to build a possibly partial or approximate solution. +(Quoted from <>) // end::EN[] // tag::DE[] ==== Blackboard -Das Architekturmuster blackboard wird oft für Probleme benutzt, die keine +Architekturmuster, welches oft für Probleme benutzt wird, die keine deterministische Lösungsstrategien erlauben. Mehrere spezialisierte Teilsysteme fügen im Blackboard ihr Wissen zusammen, um eine möglicherweise partielle oder ungefähre Lösung zu erarbeiten. -(Zitiert aus <>.) +(Zitiert aus <>) // end::DE[] diff --git a/docs/1-terms/D/term-dependency-injection.adoc b/docs/1-terms/D/term-dependency-injection.adoc index f91fa54..ba98343 100644 --- a/docs/1-terms/D/term-dependency-injection.adoc +++ b/docs/1-terms/D/term-dependency-injection.adoc @@ -13,9 +13,9 @@ Often used to ensure the <> sicherzustellen. diff --git a/docs/1-terms/E/term-event-sourcing.adoc b/docs/1-terms/E/term-event-sourcing.adoc index b4b7270..e827baf 100644 --- a/docs/1-terms/E/term-event-sourcing.adoc +++ b/docs/1-terms/E/term-event-sourcing.adoc @@ -4,7 +4,7 @@ ==== Event Sourcing -Event sourcing is a software architecture pattern where changes to the application's state are +Architecture pattern where changes to the application's state are captured as a series of immutable events. Instead of storing just the current state of the application, every state change is recorded as an event in an append-only log. @@ -14,7 +14,7 @@ application, every state change is recorded as an event in an append-only log. ==== Event Sourcing -Event Sourcing ist ein Architekturmuster, bei dem Änderungen am Zustand der Anwendung +Architekturmuster, bei dem Änderungen am Zustand der Anwendung als eine Serie von unveränderlichen Ereignissen erfasst werden. Anstatt nur den aktuellen Zustand der Anwendung zu speichern, wird jede Zustandsänderung als Ereignis in einem "append-only"-Log festgehalten. diff --git a/docs/1-terms/M/term-model-view-viewmodel.adoc b/docs/1-terms/M/term-model-view-viewmodel.adoc index bef847f..925a457 100644 --- a/docs/1-terms/M/term-model-view-viewmodel.adoc +++ b/docs/1-terms/M/term-model-view-viewmodel.adoc @@ -10,7 +10,7 @@ the following responsibilities: * Model manages data and domain logic of the system. Does not depend on the view and the view model. * View is the visible user interface of the application (or parts thereof). -* View Model serves as an intermediary between the View and the Model and holds the UI logic. +* ViewModel serves as an intermediary between the View and the Model and holds the UI logic. May depend on the model but not on the view. @@ -23,10 +23,10 @@ May depend on the model but not on the view. Architekturmuster, das häufig zur Implementierung von Benutzeroberflächen verwendet wird. Es unterteilt eine Anwendung in drei Teile (Model, View, und ViewModel): -* Das Modell verwaltet die Daten und die Domänenlogik des Systems. Hängt nicht von View -und View-Model ab. +* Model verwaltet die Daten und die Domänenlogik des Systems. Hängt nicht von View +und ViewModel ab. * View ist die sichtbare Benutzeroberfläche der Anwendung (oder Teilen davon). -* View-Model dient als Vermittler zwischen View und Model und enthält die UI-Logik. +* ViewModel dient als Vermittler zwischen View und Model und enthält die UI-Logik. Kann vom Model abhängen, aber nicht vom View. diff --git a/docs/1-terms/P/term-pipes-and-filters.adoc b/docs/1-terms/P/term-pipes-and-filters.adoc index 4d474c5..63a4893 100644 --- a/docs/1-terms/P/term-pipes-and-filters.adoc +++ b/docs/1-terms/P/term-pipes-and-filters.adoc @@ -12,7 +12,7 @@ build families of related systems. (Quoted from <>, also see <>, <>, <>. diff --git a/docs/1-terms/P/term-presentation-abstraction-control.adoc b/docs/1-terms/P/term-presentation-abstraction-control.adoc index ab8f72c..8ee3b19 100644 --- a/docs/1-terms/P/term-presentation-abstraction-control.adoc +++ b/docs/1-terms/P/term-presentation-abstraction-control.adoc @@ -1,10 +1,10 @@ [#term-presentation-abstraction-control] // tag::EN[] -==== Presentation-Abstraction-Constrol (PAC) +==== Presentation-Abstraction-Control (PAC) -Architecture pattern used for structuring software systems into a hierarchy of cooperating -agents. Each agent is divided into three distinct components: +Architecture pattern used for structuring interactive software systems into a hierarchy of +cooperating agents. Each agent is divided into three distinct components: * Presentation is the user interface part of the agent. * Abstraction handles domain logic and data. @@ -13,9 +13,9 @@ agents. Each agent is divided into three distinct components: // end::EN[] // tag::DE[] -==== Presentation-Abstraction-Constrol (PAC) +==== Presentation-Abstraction-Control (PAC) -Architekturmuster, welches ein Softwaresystemen in eine Hierarchie von kooperierenden +Architekturmuster, welches ein interaktives Softwaresystemen in eine Hierarchie von kooperierenden Agenten aufteilt. Jeder Agent besteht aus drei verschiedene Komponenten: * Presentation ist die Benutzeroberfläche des Agenten. diff --git a/docs/1-terms/S/term-service-oriented-architecture.adoc b/docs/1-terms/S/term-service-oriented-architecture.adoc index 354f14f..16823be 100644 --- a/docs/1-terms/S/term-service-oriented-architecture.adoc +++ b/docs/1-terms/S/term-service-oriented-architecture.adoc @@ -10,7 +10,7 @@ See <>. // end::EN[] // tag::DE[] -==== Plugin +==== Serviceorientierte Architektur Architekturparadigma, das sich auf die Bereitstellung abstrakter Services anstatt konkreter Implementierungen fokusiert. Services ermöglichen Wiederverwendung über diff --git a/docs/1-terms/S/term-strategy.adoc b/docs/1-terms/S/term-strategy.adoc index db8fb05..3578cc8 100644 --- a/docs/1-terms/S/term-strategy.adoc +++ b/docs/1-terms/S/term-strategy.adoc @@ -14,9 +14,9 @@ clients that use it. ==== Strategy -Entwurfsmuster für die Definition einer Familie von Algorithmen, wobei jeder einzelne gekapselt und -austauschbar ist. Mit Strategy können wir eine konkreten Algorithmus unabhängig vom Nutzer -ändern. +Entwurfsmuster für die Definition einer Familie von Algorithmen, wobei jeder einzelne +Algorithmus gekapselt und austauschbar ist. Mit Strategy kann ein konkreter +Algorithmus unabhängig vom Nutzer geändert werden. (Zitiert aus <>.) // end::DE[] diff --git a/docs/1-terms/T/term-template-method.adoc b/docs/1-terms/T/term-template-method.adoc index b283e1a..9a6290f 100644 --- a/docs/1-terms/T/term-template-method.adoc +++ b/docs/1-terms/T/term-template-method.adoc @@ -14,7 +14,7 @@ an algorithm without changing the algorithm's structure. (Quoted from <>.) ==== Template Method Entwurfsmuster, das das Skelett eines Algorithmus in einer Operation definiert, wobei einige Schritte -an Unterklassen verschoben werden. Mit Template Method können Unterklassen bestimmte Schritte +in Unterklassen verschoben werden. Mit Template Method können Unterklassen bestimmte Schritte eines Algorithmus neu definieren, ohne die Struktur des Algorithmus zu verändern. (Zitiert aus <>.) From a3915c51aea890b1a2d2317526c159574392b02b Mon Sep 17 00:00:00 2001 From: Stefan Wehr Date: Thu, 25 Jul 2024 17:23:03 +0200 Subject: [PATCH 20/22] add synonym for combinator --- docs/1-terms/C/term-combinator.adoc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/1-terms/C/term-combinator.adoc b/docs/1-terms/C/term-combinator.adoc index 9a0ddd4..faedc80 100644 --- a/docs/1-terms/C/term-combinator.adoc +++ b/docs/1-terms/C/term-combinator.adoc @@ -5,6 +5,7 @@ Design pattern to build complex functions or objects by combining simpler ones. For some domain object of type T, look for operations with both input and output type T. +Also know as _closure of operation_. See <> and <>. // end::EN[] @@ -16,6 +17,7 @@ Entwurfsmuster zum Aufbau komplexer Funktionen oder Objekte durch die Kombinatio einfacherer Funktionen oder Objekte. Gegeben ein Domänenobjekt vom Typ T, suche nach Operationen, die als Ein- und Ausgabe ebenfalls den Typ T haben. +Auch bekannt als _closure of operation_. Siehe <> and <>. // end::DE[] From 26d104b1ed6c5ffbbf5285010aa123043a2d6081 Mon Sep 17 00:00:00 2001 From: Stefan Wehr Date: Thu, 25 Jul 2024 17:25:43 +0200 Subject: [PATCH 21/22] fix typo --- docs/1-terms/C/term-combinator.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/1-terms/C/term-combinator.adoc b/docs/1-terms/C/term-combinator.adoc index faedc80..032b51e 100644 --- a/docs/1-terms/C/term-combinator.adoc +++ b/docs/1-terms/C/term-combinator.adoc @@ -18,7 +18,7 @@ einfacherer Funktionen oder Objekte. Gegeben ein Domänenobjekt vom Typ T, suche nach Operationen, die als Ein- und Ausgabe ebenfalls den Typ T haben. Auch bekannt als _closure of operation_. -Siehe <> and <>. +Siehe <> und <>. // end::DE[] From 34b4a6746edc079b4f6ddeda5058f5f42490532e Mon Sep 17 00:00:00 2001 From: Stefan Wehr Date: Fri, 26 Jul 2024 09:55:58 +0200 Subject: [PATCH 22/22] fixes after review --- docs/1-terms/F/term-filter.adoc | 6 +++--- docs/1-terms/P/term-ports-and-adapters.adoc | 4 ++-- docs/1-terms/S/term-service-oriented-architecture.adoc | 7 ++++--- docs/1-terms/V/term-visitor.adoc | 2 +- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/docs/1-terms/F/term-filter.adoc b/docs/1-terms/F/term-filter.adoc index 7188bb3..664364e 100644 --- a/docs/1-terms/F/term-filter.adoc +++ b/docs/1-terms/F/term-filter.adoc @@ -3,7 +3,7 @@ // tag::EN[] ==== Filter -Part of the pipes and filters architectural style that creates or transforms data. +Part of the pipes and filters architectural pattern used to create or transform data. Filters are typically executed independently of other filters. See <>. @@ -12,8 +12,8 @@ See <>. // tag::DE[] ==== Filter -Teil des "Pipes und Filter"-Architekturstils, der Daten erzeugt oder -transformiert. Filter werden üblicherweise unabhängig von anderen +Teil des "Pipes und Filter"-Architekturpatterns, welches genutzt wird, um Daten zu erzeugen oder +transformieren. Filter werden üblicherweise unabhängig von anderen Filtern ausgeführt. Siehe <> diff --git a/docs/1-terms/P/term-ports-and-adapters.adoc b/docs/1-terms/P/term-ports-and-adapters.adoc index 520cf3d..49a3dfa 100644 --- a/docs/1-terms/P/term-ports-and-adapters.adoc +++ b/docs/1-terms/P/term-ports-and-adapters.adoc @@ -10,7 +10,7 @@ This approach allows an application to be driven by different agents (e.g. users, programs, automated tests), and to be developed and tested in isolation from its production environment. See <>, <>, <>. -Also known as Onion-Architecture, Hexagonal-Architecture, Clean-Architecture. +Also known as Onion Architecture, Hexagonal Architecture, Clean Architecture. // end::EN[] @@ -27,6 +27,6 @@ Dieser Ansatz ermöglicht es, eine Anwendung von verschiedenen Agenten und isoliert von ihrer Produktionsumgebung zu entwickeln und testen. Siehe <>, <>, <>. -Auch bekannt als Onion-Architecture, Hexagonale Architektur, Clean-Architecture. +Auch bekannt als Onion Architecture, Hexagonale Architektur, Clean Architecture. // end::DE[] diff --git a/docs/1-terms/S/term-service-oriented-architecture.adoc b/docs/1-terms/S/term-service-oriented-architecture.adoc index 16823be..6635afb 100644 --- a/docs/1-terms/S/term-service-oriented-architecture.adoc +++ b/docs/1-terms/S/term-service-oriented-architecture.adoc @@ -3,7 +3,7 @@ // tag::EN[] ==== Service-Oriented Architecture -Architectural style that focuses on providing abstract services rather than concrete +Architectural style that focuses on providing documented interfaces with interchangeable implementations to users of the system. Services enable reuse across organizational boundaries. See <>. @@ -12,8 +12,9 @@ See <>. // tag::DE[] ==== Serviceorientierte Architektur -Architekturparadigma, das sich auf die Bereitstellung abstrakter Services anstatt konkreter -Implementierungen fokusiert. Services ermöglichen Wiederverwendung über +Architekturparadigma, das sich auf die Bereitstellung dokumentierter Schnittstellen mit +austauschbaren Implementierungen konzentriert. +Services ermöglichen Wiederverwendung über Organisationsgrenzen hinweg. Siehe <>. // end::DE[] diff --git a/docs/1-terms/V/term-visitor.adoc b/docs/1-terms/V/term-visitor.adoc index e7e1d54..c1832fc 100644 --- a/docs/1-terms/V/term-visitor.adoc +++ b/docs/1-terms/V/term-visitor.adoc @@ -14,7 +14,7 @@ classes of the elements on which it operates. ==== Visitor -Entwurfsmuster, um Operation zu modellieren, die auf den Elementen einer Objektstruktur +Entwurfsmuster, um Operationen zu modellieren, die auf den Elementen einer Objektstruktur durchgeführt werden. Visitor erlaubt die Definitione neuer Operation, ohne bestehende Klassen zu ändern. (Nach <>.)