Die Geschichte der Patterns in der Softwareentwicklung

Der Begriff Design Patterns wurde bereits im Jahr 1977 von Christopher Alexander geprägt und später von Größen wie Ward Cunningham und Kent Beck ausgebaut.

Lesezeit: 6 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 44 Beiträge

(Bild: Black Jack/Shutterstock.com)

Von
  • Rainer Grimm

Die meisten Softwareentwickler gehen davon aus, dass das Buch "Design Patterns: Elements of Reusable Object-Oriented Software", das 1994 veröffentlicht wurde, die Geburtsstunde der Patterns ist. Nein. Der Begriff wurde bereits im Jahr 1977 von Christopher Alexander geprägt.

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++.

Ich beginne meinen geschichtlichen Abstecher mit wichtigen Personen und deren Büchern beginnen. Dieser Umweg ist aber keineswegs vollständig.

(Bild: Michaelmehaffy, CC BY-SA 4.0, via Wikimedia Commons)

Die Idee der Muster geht auf Christopher Alexander zurück. Er prägte in seinen Büchern "Notes on the Synthesis of Form, A City is Not a Tree", "The Timeless Way of Building", "The Oregon Experiment", "The Nature of Order" und vor allem in seinem Buch "A Pattern Language: Town, Buildings, Construction" Begriffe wie Pattern, Forces oder Pattern Languages. Christopher Alexander war ein Architekt, der sich auf die Innenarchitektur, aber auch auf Stadtplanung konzentrierte. Sein Hauptanliegen war es, eine Architektur zu schaffen, die sich an den Bedürfnissen der Menschen orientiert. Er entwickelte mit seinen Kollegen im Center for Environmental Structure in Berkley mehr als 250 Muster für Entwurfsprobleme. Jedes bestand aus einem Problem, einer Diskussion des Problems mit einer Illustration und einer Lösung. Ich schätze, das kommt den meisten bekannt vor.

Ward Cunningham und Kent Beck haben sich von den Ideen von Christoph Alexander inspirieren lassen und diese auf die Softwareentwicklung übertragen. Im Jahr 1987 veröffentlichten sie ihr Buch "Using Pattern Languages for Object-Oriented Programs", eine Pattern-Sprache, die die Entwicklung von Benutzeroberflächen in Smalltalk vereinfachen sollte. Sie schufen das erste Mustersystem für die Gestaltung von Benutzeroberflächen. Hier sind vier ihrer Muster:

  • Window-per-Task: Ein separates Fenster für jede Aufgabe
  • Few-Panes: Entwicklung eines separaten Bereichs im Fenster für jede Ansicht der Aufgabe
  • Standard-Panes: Gestaltung der Funktionsbereiche nach den gleichen Prinzipien
  • Nouns and Verbs: Handlungsanweisungen (Verben) gehören ins Menü

Ich möchte betonen, dass Ward Cunningham und Kent Beck zwei der einflussreichsten Köpfe der Softwareentwicklung sind.

(Bild: By Carrigg Photography for the Wikimedia Foundation - Own work, CC BY-SA 3.0)

  • Pionier der Software-Entwurfsmuster
  • Erfinder des Wiki
  • hat zusammen mit Kent Beck CRC-Karten populär gemacht; CRC steht für Class Resonsibility Card

(Bild: By Improve It - Flickr: Kent Beck no Workshop Mapping XP., CC BY-SA 2.0)

  • Pionier der Software-Entwurfsmuster
  • schrieb das Unit-Test-Framework sUnit für Smalltalk
  • entwickelte zusammen mit Erich Gamma das Junit-Unit-Test-Framework für Java
  • machte CRC Karten zusammen mit Ward Cunningham bekannt
  • entwickelte Extreme Programming (XP)

James Coplien veröffentlichte 1991 das Buch "Advanced C++ Programming Styles and Idioms". Sein Buch ist ein Katalog von C++-Idiomen wie

  • Handle/Body: Trennung von Schnittstelle und Implementierung
  • Envelope/Letter: bindet die gemeinsame Semantik von Schnittstelle und Implementierung zusammen
  • Virtual Constructor: Aufbau einer Hierarchie eines bekannten abstrakten Typs, aber eines unbekannten konkreten Typs
  • Konkreter Datentyp: bestimmt, ob ein Objekt auf dem Heap oder im aktuellen Scope erzeugt werden soll
  • Algebraische Hierarchie: strukturiert die Klasse nach algebraischen Typen
  • Nicht-hierarchische Addition: behandelt arithmetische Operationen zwischen Typen, die nicht in den jeweils anderen Typ überführt werden können

Erich Gamma promovierte 1991 in Zürich über den Einsatz von Mustern in der Softwareentwicklung: "Objektorientierte Software-Entwicklung am Beispiel von ET++". ET++ ist eine portable C++-Klassenbibliothek für die Entwicklung interaktiver grafischer Anwendungen. Gammas Dissertation wurde zur Grundlage seines gemeinsam mit drei Koautoren verfassten Buches "Design Patterns: Elements of Reusable Object-Oriented Software". Die drei Koautoren sind Richard Helm, Ralph Johnson und John Vlissides. Alle Vier bilden zusammen die bekannte Gang of Four (GoF).

Erich Gamma ist auch dafür bekannt, dass er zusammen mit Kent Beck das Junit Unit Test Framework für Java entwickelt hat und federführend an der Entwicklung des Eclipse Frameworks beteiligt war.

1993 luden Grady Booch und Kent Beck mehrere Protagonisten aus der objektorientierten Szene in eine Berghütte in Colorado ein. Eines der Themen war die Verschmelzung der Ideen von Christopher Alexander mit den neueren Arbeiten von Erich Gamma als Grundlage für Design Patterns. Die Gründung einer gemeinnützigen Organisation, die sich mit Software Patterns beschäftigt, erhielt den Namen Hillside Group. Bis heute spielt diese Gruppe eine zentrale Rolle in der Pattern-Community. Aus ihr sind zahlreiche Konferenzen zum Thema hervorgegangen, die sogenannten PLoPs (Pattern Languages of Programming). Wer nach weiteren Informationen zu Patterns, Büchern oder Konferenzen zum Thema suchst, sollte sie bei der Hillside Group suchen.

Im Jahr 1994 veröffentlichten Erich Gamma, Richard Helm, Ralph Johnson und John Vlissides. ihr bahnbrechendes Buch "Design Patterns: Elements of Reusable Object-Oriented Software". Es enthält 23 objektorientierte Muster, die in Erzeugungs- , Struktur- und Verhaltensmuster unterteilt sind. Dieses Buch markiert den Beginn der weltweiten Verbreitung von Mustern und gilt als das wichtigste Buch zu Softwaredesign. Bis heute wurden mehr als 500.000 Exemplare verkauft.

Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad und mein Heise-Blog-Kollege Michael Stal von der Siemens AG veröffentlichten 1996 das Buch "Pattern-Oriented Software Architecture, Volume 1". Ihr sehr einflussreiches Buch stellt die Weiterentwicklung des Pattern-Ansatzes zu einem System von Patterns dar, mit dem große Anwendungen beschrieben und dokumentiert werden können. Pattern-Oriented Software Architecture (POSA) besteht aus 17 Architekturmustern, Entwurfsmustern und Idiomen. Die gesamte POSA-Reihe, die von 1996 bis 2007 veröffentlicht wurde, umfasst fünf Bände.

In meinem nächsten Artikel stelle ich die unterschiedlichen Klassifizierungen von Mustern in den Büchern "Design Patterns: Elements of Reusable Object-Oriented Software" und "Pattern-Oriented Software Architecture, Volume 1" vor.

In den nächsten zwei Wochen lege ich eine kleine Urlaubspause ein. Mein nächster Beitrag wird daher am 1. August 2022 erscheinen. (rme)