Warum so gemustert?

Hallo Spaß-Coder.

Wir haben in unseren Artikeln immer mal wieder von Mustern geschrieben. Zum Beispiel im Zusammenhang mit Refaktorisierungen, wie etwa beim Artikel Eine ganze Fabrik – nur zum Testen. Wo in der Softwareentwicklung gibt es noch nützliche Muster und was ist an Mustern eigentlich grundsätzlich nützlich? Mit diesen Fragen wollen wir uns in diesem und den nächsten Artikel auseinander setzen.

 

Wer sind denn die?

Was sind überhaupt Muster und wo tauchen sie in unserem Leben überall auf – außer auf der Tapete an der Wohnzimmerwand oder Oma’s Tischdecke? Greifen wir an dieser Stelle auf das allwissende Wikipedia zurück, sind Muster „[…] eine gleichbleibende Struktur, die einer sich wiederholenden Sache zugrunde liegt, eine zur gleichförmigen Wiederholung (Reproduktion) bestimmte Denk-, Gestaltungs- oder Verhaltensweise bzw. einen entsprechenden Handlungsablauf.“.

Soso – eine gleichbleibende Struktur also. So neu ist das vermutlich nicht. Wenn wir unseren Alltag gedanklich durchgehen, dann fallen uns vermutlich ganz viele verschiedene Muster auf, die wir – nach einer gewissen Lernphase – automatisch nutzen. Z.B. morgens aufstehen, Zähne putzen, Duschen. Schauen wir noch einmal auf die Definition oben: gleichförmige Verhaltensweise einer sich wiederholenden Sache – passt.

Neben den Verhaltensmustern können Muster auch als Vorlage und Orientierung genutzt werden, so zum Beispiel bei Strickmustern oder Bauplänen von Häusern oder Elektronikteilen. Das Muster zeigt dabei die gleichbleibende Struktur bei der Herstellung (sich wiederholenden Sache).

Gut und schön, aber was hat dies alles mit Softwareentwicklung zu tun? Bevor wir auf diese Frage eingehen, schauen wir uns noch an, warum Muster so nützlich sind.

 

Muster-Nutzen

Christiane Stenger beschreibt in ihrem Buch unter anderem, wie das menschliche Gehirn bezogen auf Verhaltensmuster arbeitet. Wer hat schon einmal am eigenen Leib erlebt, wie schwer es ist, die eigenen Verhaltensmuster umzustellen. Sei es sich bestimmte Dinge abzugewöhnen oder in bestimmten Situationen nun anders als früher zu reagieren? Gar nicht einfach. Denn diese Muster sind in unserem Gehirn „einprogrammiert“ und laufen nach dem Start durch verschiedene Auslöser automatisch ab. Diese zu beeinflussen bzw. zu ändern bedarf eines Verlernens und Neulernens.

Warum macht unser Gehirn das? Solche Muster speichern und nahezu automatisch (unbewusst) abspielen? Wie immer dreht sich alles um Ressourcen. Unser Gehirn möchte effizient arbeiten, da es aus der Vergangenheit mit den Säbelzahntigern gelernt hat, dass die zum Arbeiten benötigten Ressourcen (in Form von Glukose) rar sind. Da kann es geschickt sein, „eine sich wiederholende Sache“ so abzuspeichern und zu organisieren, dass diese möglichst wenig Brennstoff verbraucht. Ganz schön schlau!

Beim Lernen – insbesondere durch Wiederholung – passiert also genau dass, unser Gehirn legt dazu ein Muster (Programm) an. Wie beispielsweise beim Autofahren fällt es uns zunächst noch schwer alles im Griff zu haben: schalten, lenken, in den Spiegel schauen, kuppeln, bremsen, blinken… so viele Dinge auf einmal. Wer mehr als zehn Jahre regelmäßig mit dem Auto fährt bekommt kaum noch mit, welche Handlungsabläufe alle nahezu automatisch erledigt werden. Da bleibt noch Zeit aus dem Fenster zu schauen oder dem Moderator im Radio zu lauschen.

Ja ja ja, aber jetzt noch einmal zu der Frage – was hat das mit Softwareentwicklung zu tun?

 

Muster in der Softwarentwicklung

So unterschiedlich die Anforderungen und Herausforderungen in der Softwareentwicklung auch sein mögen, auch hier gibt es in den Fragestellungen der Umsetzung „gleichbleibende Strukturen“. Häufig werden in Softwareanwendungen Daten verarbeitet, Algorithmen ausgeführt und auf Benutzereingaben reagiert. Um diese Anforderung mit einer guten Struktur abzubilden, haben sich Architekturmuster wie MVC entwickelt und durchgesetzt.

Aber was bedeutet hier „eine gute Struktur“? In diesem Fall ist das Ziel des Muster, eine hohe Wiederverwendbarkeit sowie leichte Änder- und Erweiterbarkeit im Programmcode zu erzielen.

Eine weitere Kategorie von Mustern in der Softwareentwicklung sind Entwurfsmuster. Insbesondere die „Gang of four“ hat dazu beigetragen, dass Entwurfsmuster bekannt werden und als Lösungsschablone für bestimmte Anforderungen genutzt werden können. Damit sind auch diese Entwurfsmuster eine „gleichbleibende Struktur“ für „eine sich wiederholende Sache“. Immer, wenn ich eine ganz bestimmte Fragestellung zu lösen habe, muss ich das Rad nicht neu erfinden, sondern kann ein dazu passendes Muster anwenden.

Aus diesem Grund sind Muster in der Softwareentwicklung als effiziente Lösungsstrategien für wiederkehrende Probleme sinnvoll einsetzbar. Darüber hinaus hat die Anwendung von Mustern den Vorteil, dass sich mehrere Personen sehr effizient über mögliche Lösungen unterhalten können, da sie das Muster beim Namen nennen können, ohne es jedes mal auf’s Neue aufwendig und detailliert beschreiben zu müssen.

Wie sieht es mit der Orientierung aus? Auf unseren Straßen finden wir uns gut zurecht (trotz Schilderwald), da hier gelernte Muster Anwendung finden – es gibt verschiedene Fahrbahnmarkierungen und Schilder. Wie sieht es nun aus, wenn in einem uns fremden Programmcode bekannte Muster implementiert wurden? Dann finden wir uns ebenfalls deutlich schneller zurecht, als wenn wir das Konzept, die Idee der jeweiligen Lösung, erst mühsam verstehen und „erlernen“ müssen.

Daher sind allgemein bekannte Muster hilfreich dafür, effizient Software zu entwickeln.

 

Zusammenfassung

In diesem Artikel haben wir uns angeschaut, was Muster grundsätzlich sind, was der größte Nutzen davon ist und wo wir in der Softwareentwicklung davon profitieren können. Dieser Artikel dient als Einleitung zu einer Serie von Artikeln über Entwurfsmuster, die wir in den nächsten Wochen vorstellen werden.

Grundsätzlich geht es nicht darum, möglichst viele Muster in der Softwareentwicklung anzuwenden, jedoch sollten ebensowenig neue Lösungen für bekannte Problemstellungen geschaffen werden.

Auf welches euch bekannte Muster würdet ihr ungerne verzichten?

 

Eure Spaß-Coder

Dieser Artikel basiert neben unseren Erfahrungen auf den Ausführungen aus:

Posted in Code Qualität and tagged , .

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.