• Januar 07, 2016

Warum ist es so schwer, Software zu schreiben?

In den ersten Jahren meiner Karriere, zu Beginn der Neunzigerjahre, schrieben wir Programme für jeweils einen Zweck. Jeweils eine eigene Software war verantwortlich für die Präsentation der Benutzerschnittstelle, für die Domainproblemlogik und die Datenspeicherung, normalerweise in irgendeine Datei. Wir hatten daher Einzelschichtprogramme.

Programmierer weltweit merkten recht schnell, dass die Repräsentationslogik eventuell von der Domainlogik und der Datenlogik getrennt werden sollte. Und siehe da: Client-Server-Anwendungen tauchten auf. Nun boten einzelne Server Dienstleistungen für mehrere Clients. Wow, jetzt konnten wir Daten über den Server austauschen. Jetzt hatten wir zwei Ebenen.

Fast zur gleichen Zeit haben einige schlaue Leute bemerkt, dass die Datenlogik auch von der Domainlogik getrennt werden sollte. Diese Trennung erzeugte einen mächtigen neuen Sektor in der Informationstechnologiebranche. Man nennt es die Datenbankebene. Und nun hatten wir drei Ebenen.

Die meisten Softwareprojekte waren für mehr als ein Jahrzehnt mit drei Ebenen zufrieden. Es tauchten sogenannte Softwaretools der dritten Generation von kleinen und großen Unternehmen auf. Diese verpackten die gesamte Lösung als ein einziges unternehmensabhängiges Tool zusammen, was diese Software vollständig an den einen Plattformanbieter band.

Und was geschah dann? Naja, der Browser wurde erfunden. Zunächst galt dieser nicht als gangbarer Weg, um die Repräsentationslogik des „Thick client" zu ersetzen (Sie können das als „Apps" bezeichnen). Recht bald erfand jedoch jemand eine Software, die eine Repräsentation auf dem Server erzeugen und den Inhalt an den Browser liefern würde. Diese wird als Framework bezeichnet. Und was entstand Ihrer Meinung nach durch diese Trennung? Ja, eine neue Ebene. Und damit waren es vier Ebenen.

Fast unmittelbar nach dem Auftreten der ersten Frameworks bemerkten die Programmierer, dass es recht schwierig wurde, alle vier Ebenen zu beherrschen. Diese Menschen identifizierten ein neues Problem. Datenbank SQL-Abfragen waren schwierig zu schreiben und vom Standpunkt der Programmierer schwer zu verstehen. Diese Personen beschlossen also, das Dilemma dadurch anzugehen, dass sie eine interne Ebene zwischen Domainlogik und Datenbank erstellten. Diese neue Ebene erhielt den Namen ORM - Object Relation Mapping. Und damit waren es fünf Ebenen.

Zur gleichen Zeit wurden die Softwareelemente immer größer. Aber kein einzelnes noch so extrem umfangreiches Programm (oft als ERP bezeichnet) kann all diese Probleme lösen. Die Programmierer entschieden, dass man etwas brauchte, mit dem man verschiedene kleinere Programme integrieren konnte. Also was ist passiert?  Natürlich haben sie zu diesem Zweck eine neue Ebene erfunden. Diese Integrationsebene wird manchmal als ESB bezeichnet - Enterprise Service Bus. Und damit waren es sechs Ebenen.

Mit der Zeit fügte jemand sehr freundlich Javascript in die Browser ein. JS wurde bald als hervorragendes Tool für dynamische Änderungen an zuvor von Servern erzeugten Präsentationen direkt im Browser erkannt. Ein Teil der Programmierlogik konnte nun auf die Maschine des Benutzers verteilt werden. Das war großartig, da die vom Server bei der Präsentation erzeugte Belastung so wenigstens geringfügig verringert werden konnte. Yep, diese Trennung von Code auf Serverseite und Client-Seite erzeugte logischerweise eine neue Ebene in dem Werkzeugkasten der Programmierer. Und damit waren es sieben Ebenen.

Natürlich war die visuelle Darstellung von einfachem HTML ein Stück weit eingeschränkt. Das mächtige W3C-Konsortium beschloss, etwas Neues gegen dieses Problem in Stellung zu bringen - der Auftritt von CSS. Ein großartiges Tool, aber es fügte noch eine Ebene zu unserer Software hinzu. Und nun sind es acht Ebenen!

In meiner gesamten Karriere ist nie auch nur eine Ebene verschwunden - nichts wurde je einfacher. Kein Programmierer kann heutzutage von sich sagen, dass er alle diese Ebenen auf irgendeiner großen Software noch beherrschen kann. Es entstehen neue Ebenen während neue Tools in unseren Stapel eingefügt werden.

Allein der Gedanke - 8 Ebenen oder mehr erlernen und beherrschen?

Also, viel Spaß beim Hacken aller Ebenen von Liferay; AngularJS; Aurelia.io; Spring - oder jedes anderen gewünschten Frameworks. Lasst euch nicht von der Komplexität abschrecken, nehmt euch eine Zwiebel.

Jukka Keto
Technischer Architekt

Weitere Posts lesen