Begriffsdefinition
Aus AKAEM
Diese Seite und die dazu gehörende Diskussionsseite (siehe Reiter oben neben "bearbeiten") dient der Definition der verwendeten Begriffe im AK Architektur- und Entwurfsmuster. Das Ziel ist die Begriffsklärung und -abgrenzung.
Definition von Mustern
Neben den eigentlichen Architektur- und Entwurfsmuster sowie den Templates zur Beschreibung von Mustern sind auch Definitionen der verschiedenen Konzepte rund um Architektur- und Entwurfsmuster ein Kernthema im Arbeitskreis. Die Definition dieser Konzepte sollte dabei einigen Qualitätskriterien unterliegen.
Offene Fragen
- Wofuer waere eine Unterscheidung in Architekturmuster und Entscheidungsmuster relevant?
- Wie unterscheiden sich Architekturmuster und Entwurfsmuster?
- Wie unterscheiden sich Muster auf Ebene des Grob- und Feinentwurfs?
- Wie unterscheiden sich Muster auf der PSM-, PIM-, und CIM-Ebene bei der modell-getriebenen Softwareentwicklung?
- Welche unterschiedlichen Arten von Mustern gibt es
- in der komponenten-basierten Entwicklung?
- in der service-orientierten Entwicklung?
- in der produktlinien-orientierten Entwicklung?
Architekturmuster (engl. "architecture pattern" oder "architectural pattern")
Definitionen (Architekturmuster)
Im Bereich der Softwareentwicklung sind Architekturmuster in den Entwurfsmustern auf oberster Ebene einzuordnen. Im Gegensatz zu Idiomen oder Entwurfmustern bestimmen sie nicht ein konkretes (meist kleines oder lokales) Teilproblem, sondern den Grundaufbau, also das Fundament der Anwendung. Wikipedia.de, 2006
Eine vorgefertigte, parametrierbare Schablone für die Gestaltung der Architektur eines Systems oder einer Komponente. Martin Glinz (Universität Zürich), 2006
An Architectural Pattern expresses a fundamental structural organization schema for software systems. It provides a set of predefined subsystems, specifies their responsibilities, and includes rules and guidelines for organizing the relationships between them. POSA1, 1996
Architekturmuster - je nach Quelle auch synonym für Architekturstil verwendet - sind Muster auf oberster Entwurfsebene. Sie beschreiben grundsätzliche Organisationsprinzipien für die Architektur einer Software MDA-Buch, 2007
Entwurfsmuster können als „Mikro-Architekturen“ betrachtet werden. ... Architekturmuster hingegen beschreiben den Stil der Gesamtarchitektur eines Systems. Informatiklexikon der GI (Hasselbring06)
A description of element and relation types together with a set of constraints on how they are used. The term architectural style has also been widely used to describe it. Software Architecture Glossary der SEI
Als Architekturmuster bezeichnet man Vorgehensweisen bzw. Regeln, die einen bestimmten Aspekt der Systemfunktionalität adressieren. Im Gegensatz zu Entwurfsmustern wirken sich die Architekturmuster auf das gesamte System aus, nicht nur auf einzelne Bausteine. VSEK
Nach Meinung von Posch, Birken und Gerdom betreffen Architekturmuster weniger die fachliche Domäne, sondern eher technische Aspekte der Softwaresysteme, wie z.B. Verteilung, Nebenläufigkeit oder Echtzeitverhalten. aus VSEK (Posch06)
Architekturmuster (auch: architektonische Stile) drücken generelle Organisationsschemata für Software-Systeme aus. Sie definieren Subsysteme mit dedizierten Verantwortlichkeiten und Regeln, nach denen Subsysteme zueinander in Beziehung stehen. Ein Architekturmuster definiert eine Familie von Architekturen mit dediziertem Vokabular für Komponenten und Verbindungselementen, einer spezifischen Topologie und semantischen Beschränkungen. Etwa in einer Schichtenarchitektur werden die Module eines System grob in mehreren Schichten angeordnet und die wesentliche Beschränkung ist, dass jedes Modul nur Funktionen eines darunter befindlichen Moduls nutzen darf. VSEK
Abgrenzung von Architekturmustern und Entwurfsmustern
Um eine Unterscheidung von Architektur- und Entwurfsmustern zu finden bzw. zu definieren sollten zuerst die Begriffe Architektur und Entwurf geklärt werden. Dazu findet man auf der Seite Architektur und Entwurf - Begriffe einige Informationen, die später in das (oder aus dem) gemeinsame Fachgruppen-Wiki übernommen werden können.
- Unterscheidungsmerkmal: Ein Entwurfsmuster beschreibt Zusammenhänge oder "Best Practices" mittels Klassen und Objekten. Architekturmuster beschreiben Zusammenhänge mittels Subsystemen oder Ebenen. (Hypothese von Jörg Rech)
- Konsequenzen: Singleton oder Abstract Factory wären Entwurfsmuster aber keine Architekturmuster. Model-View-Controller oder Client-Server wären Architekturmuster aber keine Entwurfsmuster.
- Ausnahmen: Pipes and Filter könnte man zu beiden rechnen
- Probleme:
- Alternativen:
Zu obigem Unterscheidungsmerkmal siehe auch Diskussionsseite!
Architekturmuster stellen ebenfalls Lösungen typischer Problemstellungen dar. Sie beziehen sich im Gegensatz zu Entwurfsmustern auf mittlere Verfeinerungsebenen oberhalb des Quellcodes. [Reussner2006, Seite 87]
Gegensätzlich dazu ist der Einfluss von Entwurfsmustern eher lokal begrenzt, d.h. innerhalb von einzelnen Bausteinen. Die Entwurfsmuster können angewendet werden, ohne dass die Gesamtarchitektur davon betroffen ist. Entwurfsmuster eignen sich deshalb im Gegensatz zu Architekturstilen und –mustern für den Einsatz durch einzelne Entwickler bzw. Architekten einzelner Bausteine. VSEK
Abgrenzung von Plattform-Unabhängigen (PIM) und Plattform-Spezifischen (PSM) Mustern
- Unterscheidungsmerkmal: Ein PSM-Muster beinhaltet Informationen die sehr spezifisch zu einer Ausführungsumgebung gehören. PIM-Muster können bei mindestens zwei unterschiedlichen Ausführungsumgebung umgesetzt werden. (Hypothese von Jörg Rech)
- Konsequenzen: Business Delegate oder Session Facade wären PIM-Muster.
- Ausnahmen:
- Probleme: Die Core J2EE Muster wären alle PIM-Muster
- Alternativen: Die Sprache wird als Unterscheidungsmerkmal verwendet (dies Betrifft aber auch nicht die Core J2EE-Patterns; Könnte aber Idiome betreffen)
Abgrenzung von Architekturmustern und Architekturstilen
- Unterscheidungsmerkmal: Ein Muster kann in einem Softwaresystem beliebig oft vorkommen. Ein Stil kommt nur einmal im System vor. (Hypothese von Jörg Rech)
- Konsequenzen: Model-View-Controller wäre dann ein Stil und Singleton ein Muster
- Ausnahmen: Ein System welches aus mehreren großen Subsystemen besteht (z.B. Client-Broker-Server) könnte MVC auch mehrmals enthalten.
- Probleme: Model-View-Controller wird als Architekturmuster aufgeführt.
- Alternativen: Vielleicht ist das auch eine Unterscheidungsmöglichkeit für Entwurfs- und Architekturmustern
Sowohl die Architekturstile als auch die Architekturmuster wirken sich auf einer relativ globalen Ebene der Software-Architektur aus. Betroffen sind jeweils mehrere, wenn nicht alle Bausteine der Architektur. Die Auswirkungen erstrecken sich entweder auf die Struktur und das Zusammenspiel von Bausteinen (bei Architekturstilen) bzw. auf einen übergreifenden Aspekt, der alle Bausteine betrifft (bei Architekturmustern). VSEK
Definitionen (Entwurfsmuster)
A pattern is an idea that has been useful in one practical context and will probably be useful in others. Fowler 1997
Design patterns capture solutions that have developed and evolved over time ... to specific problems GOF 1995
A pattern addresses a recuring design problem that arises in specific design solutions, and presents a solution to it. Patterns document existing, well-proven design experience Buschmann 1996
A Design Pattern provides a scheme for refining the subsystems or components of a software system, or the relationships between them. It describes commonly recurring structure of communicating components that solves a general design problem within a particular context. POSA1, 1996
Definitionen (Antipatterns)
An AntiPattern is generally a commonly repeated practice in industry that is flawed in some manner and that causes symptoms that are more undesirable than whatever positive results were sought APSCM, 1999
An AntiPattern is a repeated application of code or design that leads to a bad outcome. The outcome can be poor performance or hard-to-maintain code or even a complete failure of the project. AntiPatterns are a detailed or specific way to capture the code errors. "J2EE AntiPatterns"
Architekturstil (engl. "architectural style")
Architekturstile sind prinzipielle Lösungsstrukturen, die für ein Element einer Architektur durchgängig und mit weitgehendem Verzicht auf Ausnahmen angewandt werden. Reussner2006
An architectural style is a description of component types and a pattern of their runtime control and/or data transfer. Bass98
An architectural style is a coordinated set of architectural constraints that restricts the roles/features of architectural elements and the allowed relationships among those elements within any architecture that conforms to that style. Fielding2000
A specialization of element and relation types, together with a set of constraints on how they can be used. Software Architecture Glossary der SEI
Analog zur den Baustilen wie Gotik oder Romanik definiert ein Softwarearchitekturstil eine Familie strukturell ähnlicher Software-Architekturen. ... Ein Stil ist eine generische Beschreibung, mehrere Entwürfe können dem Stil über ihre charakteristischen Eigenschaften zugeordnet werden. VSEK
An architectural style characterizes a family of systems that are related by shared structural and semantic properties MKMG97
Architekturparadigma (engl. "architecture paradigm")
Architekturmetapher (engl. "architecture metaphor")
Architekturleitlinie (engl. "architectural principle")
Architektureinschränkung (engl. "architectural constraint")
Architekturregel (engl. "architectural rule")
Referenzarchitekturen (engl. reference architectures)
Referenzarchitekturen kombinieren allgemeines Architektur-Wissen und allgemeine -Erfahrung mit spezifischen Anforderungen zu einer architektonischen Gesamtlösung für einen bestimmten Problembereich. Sie dokumentieren die Strukturen des Systems, die wesentlichen Sytembausteine, deren Verantwortlichkeiten und deren Zusammenspiel. Vogel05
A reference architecture is a reference model mapped onto software components (that will implement the functionality defined in the reference model) and the data flow between the components Bass98
A reference architecture provides a proven template solution for an architecture for a particular domain. It also provide a common vocabulary with which to discuss implementations, often with the aim to stress commonality. Wikipedia.org
Weitere Konzepte
Mustersprachen (engl. "pattern languages")
- http://c2.com/cgi/wiki?PatternLanguage
- http://en.wikipedia.org/wiki/Pattern_languages
- http://www.c2.com/cgi/wiki?TipsForWritingPatternLanguages
Musterfamilien (engl. "pattern families")
Mustersysteme (engl. "pattern systems")
Musterkataloge (engl. "pattern catalogs")
Entwurfs-heuristiken (engl. "design heuristics")
Entwurfs-prinzipien (engl. "design principles")
Idiome
An Idiom is a low-level pattern specific to a programming language. An idiom describes how to implement particular aspects of components or the relationships between them using the features of the given language. POSA1, 1996
