zurück zum Artikel

Klassifikation von Mustern in der Softwareentwicklung

Rainer Grimm

(Bild: Kenneth Summers / shutterstock.com)

Muster lassen sich ebenso klassifizieren wie Entwurfsmuster, und das Buch "Pattern-Oriented Software Architecture" bietet eine gute Grundlage.

In meinem letzten Artikel habe ich die Klassifizierung von Entwurfsmustern vorgestellt, die auf dem wegweisenden Buch "Design Patterns: Elements of Reusable Object-Oriented Software [1]" basieren. Heute stelle ich eine allgemeinere Klassifizierung von Mustern vor, die auf dem zweiten wegweisenden Buch "Pattern-Oriented Software Architecture, Volume 1 [2]" beruhen.

Die Klassifizierung in meinem letzten Artikel "Klassifizierung von Design Patterns in der Softwareentwicklung [3]" bezog sich auf Entwurfsmuster, aber in diesem Artikel "Klassifizierung von Mustern" geht es um Muster. Das ist Absicht, denn die Klassifizierung von "Pattern-Oriented Software Architecture, Volume 1 [4]" (kurz POSA 1) ist allgemeiner als die von "Design Patterns: Elements of Reusable Object-Oriented Software [5]". Um es kurz zu machen, enthält die heutige Klassifizierung die letzte.

Hier ist das große Bild der Muster, die in POSA 1 vorgestellt werden.

POSA 1 verwendet zwei Arten der Klassifizierung. Es klassifiziert die Muster nach ihrer strukturellen Kategorie und nach ihrer Problemkategorie. Bevor ich auf die beiden Klassifizierungen eingehe, möchte ich ein paar Worte zu den fettgedruckten Mustern in der Tabelle schreiben, auf die ich allesamt eingehen werde.

Modernes C++ – Rainer Grimm

Rainer Grimm ist seit vielen Jahren als Softwarearchitekt, Team- und Schulungsleiter tätig. Er schreibt gerne Artikel zu den Programmiersprachen C++, Python und Haskell, spricht aber auch gerne und häufig auf Fachkonferenzen. Auf seinem Blog Modernes C++ beschäftigt er sich intensiv mit seiner Leidenschaft C++.

Die Entwurfsmuster Proxy, Publish-Subscriber und Counted Pointer sind besonders. Proxy ist bereits Bestandteil des Buches "Design Patterns: Elements of Reusable Object-Oriented Software [6]" und Publish-Subscriber ist dem Observer-Muster sehr ähnlich, das ebenfalls in dem bereits erwähnten Buch enthalten ist. Außerdem sollte man das Counter Pointer Idiom kennen und verwenden. In C++11 nennen wir es std::shared_ptr [7].

Die strukturelle Kategorisierung ist eine Kategorisierung nach ihrem Umfang und ihrer Abstraktion:

Ich möchte meine Gedanken über Architekturmuster, Entwurfsmuster und Idiome gerne nochmals auf den Punkt bringen:

Schauen wir uns die verschiedenen Problemkategorien an.

In "Pattern-Oriented Software Architecture, Volume 1 [8]" gibt es zehn verschiedene Problemkategorien. Ich werde sie und ihre Muster in kompakter Form vorstellen, bevor ich in den nächsten Artikeln in einige von ihnen tiefer eintauche.

arbeitet mit mehreren Komponenten zusammen, um einen komplexen Dienst anzubieten.

Resource Managment

hilft bei der Verwaltung gemeinsam genutzter Komponenten und Objekte.

Mit diesem Artikel beende ich meine Einführung in Patterns. In meinem nächsten Artikel stelle ich die Struktur eines Design Patterns auf der Grundlage des Buches "Design Patterns: Elements of Reusable Object-Oriented Software [17]" vor. (rme [18])


URL dieses Artikels:
https://www.heise.de/-7203402

Links in diesem Artikel:
[1] https://en.wikipedia.org/wiki/Design_Patterns
[2] https://en.wikipedia.org/wiki/Pattern-Oriented_Software_Architecture
[3] https://www.heise.de/blog/Klassifizierung-von-Design-Patterns-in-der-Softwareentwicklung-7194039.html
[4] https://en.wikipedia.org/wiki/Pattern-Oriented_Software_Architecture
[5] https://en.wikipedia.org/wiki/Design_Patterns
[6] https://en.wikipedia.org/wiki/Design_Patterns
[7] https://en.cppreference.com/w/cpp/memory/shared_ptr
[8] https://en.wikipedia.org/wiki/Pattern-Oriented_Software_Architecture
[9] https://en.wikipedia.org/wiki/Composite_pattern
[10] https://en.wikipedia.org/wiki/Design_Patterns
[11] https://en.wikipedia.org/wiki/Pattern-Oriented_Software_Architecture
[12] https://en.wikipedia.org/wiki/Pattern-Oriented_Software_Architecture
[13] https://en.wikipedia.org/wiki/Pattern-Oriented_Software_Architecture
[14] https://refactoring.guru/design-patterns/observer
[15] https://en.wikipedia.org/wiki/Design_Patterns
[16] https://en.cppreference.com/w/cpp/memory/shared_ptr
[17] https://en.wikipedia.org/wiki/Design_Patterns
[18] mailto:rme@ix.de