diff --git a/docs/1-terms/A/term-architecture-pattern.adoc b/docs/1-terms/A/term-architecture-pattern.adoc index 91e5a2c..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 -* Pipes-and-Filter -* Microservices +* <> +* <> +* <> * <> // end::EN[] @@ -27,9 +27,9 @@ ihnen (<>, Seite 12). Vergleichbar mit <> +* <> +* <> * <> // end::DE[] 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}] diff --git a/docs/1-terms/B/term-blackboard.adoc b/docs/1-terms/B/term-blackboard.adoc new file mode 100644 index 0000000..b336c7c --- /dev/null +++ b/docs/1-terms/B/term-blackboard.adoc @@ -0,0 +1,24 @@ +[#term-blackboard] + +// tag::EN[] + +==== Blackboard + +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 + +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 <>) + +// end::DE[] + 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..032b51e --- /dev/null +++ b/docs/1-terms/C/term-combinator.adoc @@ -0,0 +1,25 @@ +[#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. +Also know as _closure of operation_. +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. +Auch bekannt als _closure of operation_. +Siehe <> und <>. + +// end::DE[] + + diff --git a/docs/1-terms/D/term-dependency-injection.adoc b/docs/1-terms/D/term-dependency-injection.adoc index 0982c85..ba98343 100644 --- a/docs/1-terms/D/term-dependency-injection.adoc +++ b/docs/1-terms/D/term-dependency-injection.adoc @@ -6,15 +6,18 @@ 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[] // tag::DE[] ==== Abhängigkeitsinjektion / Dependency Injection (DI) -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 +Objekte erzeugen abhängige Objekte nicht selbst, stattdessen werden +die benötigten Abhängigkeiten an den Konstruktor übergeben oder via +Setter gesetzt. Damit wird die Erzeugung von spezifischen Abhängigkeiten zum _Problem anderer Leute_. +Wird oft benutzt um das +<> sicherzustellen. // end::DE[] 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..e827baf --- /dev/null +++ b/docs/1-terms/E/term-event-sourcing.adoc @@ -0,0 +1,23 @@ +[#term-event-sourcing] + +// tag::EN[] + +==== Event Sourcing + +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 + +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[] diff --git a/docs/1-terms/F/term-filter.adoc b/docs/1-terms/F/term-filter.adoc index d06d617..664364e 100644 --- a/docs/1-terms/F/term-filter.adoc +++ b/docs/1-terms/F/term-filter.adoc @@ -3,19 +3,19 @@ // tag::EN[] ==== Filter -Part of the pipe-and-filter 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 <>. // end::EN[] // 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 <> // end::DE[] 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[] 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[] 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..925a457 --- /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 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). +* 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. + + + +// 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): + +* 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). +* ViewModel 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 ad1d66b..4fccdee 100644 --- a/docs/1-terms/P/0-structure.adoc +++ b/docs/1-terms/P/0-structure.adoc @@ -10,11 +10,15 @@ 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-product.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}] 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-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..63a4893 --- /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 Filter + +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[] diff --git a/docs/1-terms/P/term-plugin.adoc b/docs/1-terms/P/term-plugin.adoc new file mode 100644 index 0000000..996abda --- /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. 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[] 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..49a3dfa --- /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 the outside world, independent from a specific technology. +Different adapters attach 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/1-terms/P/term-presentation-abstraction-control.adoc b/docs/1-terms/P/term-presentation-abstraction-control.adoc new file mode 100644 index 0000000..8ee3b19 --- /dev/null +++ b/docs/1-terms/P/term-presentation-abstraction-control.adoc @@ -0,0 +1,25 @@ +[#term-presentation-abstraction-control] + +// tag::EN[] +==== Presentation-Abstraction-Control (PAC) + +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. +* Control manages interactions between presentation and abstraction. + +// end::EN[] + +// tag::DE[] +==== Presentation-Abstraction-Control (PAC) + +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. +* Abstraction beinhaltet die Domänenlogik und die Daten. +* Control behandelt Interaktionen zwischen Presentation und Abstraction. + +// end::DE[] 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[] + + + diff --git a/docs/1-terms/S/0-structure.adoc b/docs/1-terms/S/0-structure.adoc index e146faa..eb6a2f0 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}] @@ -22,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-sum.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..6635afb --- /dev/null +++ b/docs/1-terms/S/term-service-oriented-architecture.adoc @@ -0,0 +1,22 @@ +[#term-service-oriented-architecture] + +// tag::EN[] +==== Service-Oriented Architecture + +Architectural style that focuses on providing documented interfaces with interchangeable +implementations to users of the system. Services enable reuse across organizational boundaries. +See <>. + +// end::EN[] + +// tag::DE[] +==== Serviceorientierte Architektur + +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/S/term-strategy.adoc b/docs/1-terms/S/term-strategy.adoc new file mode 100644 index 0000000..3578cc8 --- /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 +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/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..9a6290f --- /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 +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 <>.) + +// end::DE[] + + 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..c1832fc --- /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 Operationen 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[] + diff --git a/docs/8-references/references.adoc b/docs/8-references/references.adoc index a859825..057e4b8 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,12 +68,15 @@ 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 **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 @@ -112,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