24.10. Design Pattern

Bildung ist das, was übrig bleibt, wenn man alle Details dessen, was man mal gelernt hat, wieder vergessen hat. Z.B. der Umgang mit Feuer - wer kann sich schon noch genau daran erinnern, wie und wann er den Umgang mit Feuer erlernt hat? Dennoch wissen wir scheinbar intuitiv, oder "unbewußt", wie man damit umzugehen hat. Bildung zeichnet sich dadurch aus, daß bewährte, antrainierte Denkmuster, Verfahrensmuster, Handlungsmuster bekannt sind, und angewendet werden. Z.B. wird ein Problem nach bewähtem Muster analysiert, um erkennen zu können, ob man alleine zur Lösung imstande ist, oder es ratsam sein könnte, weitere Experten zu befragen.

Denkmuster finden sich nicht nur in komplexen Handlungsabläufen oder Programmen, sondern man kann sie auch erkennen, z.B. in der Architektur von Häusern, Antroposophie, Philosophie, Soziologie, Gemeinschaften, Musik... Die ersten Anwender von Design Patterns auf Software waren von dem Forscher Christoper Alexander, Universität Berkeley, CA. beeinflußt, welcher Pattern allgemein erforscht hatte. Man kann es bei Kindern gut beobachten, die Häuser oder Autos malen - die teilweise abstraken Linenzeichnungen sind eindeutig als Pattern erkennbar, man erkennt nämlich, was diese Linien bedeuten sollen. Mustererkennung ist uns Menschen angeboren, die Fähigkeit, diese niederzuschreiben, muß erlernt werden.

Software - Entwicklung ist teuer, jedoch steht nach umfangreichen Analysen von unzähligen Projekten (oft auch OpenSource) fest, daß weit über die Hälfte der Kosten nur dadurch entstehen, daß das Rad dauernd wieder neu erfunden wird. Bestehende Konzepte und Komponenten von Programmierern nicht genutzt, weil nicht bekannt, deren Wert nicht erkannt, oder einfach nicht verstanden, sodaß Konzepte schon während der Entwicklung teilweise wieder sich selbst überholt haben. So z.B. finden sich unter den Visual Basic (ACCESS) und PHP - Programmierern ein besonders hoher Anteil von Leuten, die einfach drauflos programmiert haben, relativ konzeptlos und unstrukturiert, mit dem Resultat, daß eine Applikation im Laufe der Entwicklung schon teilweise mehrfach umgeschrieben wurde. Diese Tatsache kann man sehr gut bei Access-Anwendungen und dem oft unverständlichen, kaum dokumentierten Spaghetticode beobachten, aber auch bei komplexeren PHP - Anwendungen der Open - Source - Gemeinde beobachten, wie z.B. PHPNuke, PostNuke, ... Hierbei sind mangels ausgereiften Konzepten riesige Code - Teile immer wieder umgeschrieben worden, von einem modularen Konzept, Wiederverwendung von Code ist hier nur wenig zu sehen. Erst in den neuesten Versionen erkennt man klare Design - Patterns und ein wohldurchdachtes Konzept. JAVA und insbesondere PERL Programmierer z.B. nutzen umfangreiche, komplexe Libraries (CPAN), die wie ein Zahnrad ins andere greifen, und dadurch bewährte Design Patterns schon oft vorgeben. Je mehr man auf ausgereifte Werkzeuge (Frameworks) zurückgreift, umso mehr wirken die bereits darin umgesetzen Design Patterns auf den neuen Code. Was bedeutet - je ausgereifter ein Entwicklungswerkzeug ist, desto mehr Design-Patterns finden darin Anwendung, und umso mehr können Programmierer darauf zurückgreifen. Ein Framework zeichnet sich besonders dadurch aus, daß eine hohe Zahl von bewährten, ausgereiften Design - Pattern enthalten sind, und mächtige Komponenten zur Verfügung stehen, sodaß die Programmierer diese nur noch "arrangieren" müssen, um zu lauffähigen Programmen zu kommen. Beispielsweise benötigt die Programmierung eines Web - Browser nur noch ca. 20-30 Zeilen Code. Dieser jedoch beherrscht dann eine Vielzahl von Protokollen, wie z.B. HTTP, FTP und vor allem WebDAV, sodaß dieser als Dateibrowser und Dokumentenverwaltungssystem direkt nutzbar ist. Hinter wohldurchdachten und leistungsfähigen Programmier - Frameworks stecken eine Unmenge von unentdeckten Features, die trotz der Einfachheit der Programmierung mit genutzt werden können, jedoch nicht müssen. Wer ahnt schon hinter der Benutzeroberfläche GNOME oder KDE ein Komonenten - Modell, oder wer ahnt, daß sich OpenOffice / Staroffice im Server - Modus starten lassen, sodaß man den Arbeitsplatz von einem Server aus (z.B. SAP/R3, Apache,...) aus fernsteuern kann ? Mehr hierzu in den entsprechenden Unter - Kapiteln.

Was ist die Essenz von Design - Patterns ?

Ein Framework, in welchem viele dieser Design - Pattern Anwendung finden, zeichnet sich durch folgende, sichtbare Eigenschaften im Quellcode und der Art der Anwendungen aus: