15.11.2011

Die Zukunft der Anwendungsentwicklung

Ich glaube, dass sich die Art wie Computeranwendungen entwickelt werden, in der nahen Zukunft sehr verändern wird. Vor langer Zeit einmal gab es monolitische Anwendungen - vielleicht sogar noch in Assembler geschrieben. Der gesamte Code in einer Datei. Moderne größere Anwendungen sind in voneinander möglichst unabhängige Module unterteilt. Üblich ist eine drei Schichtenarchitektur in der Art:

  • Frontend, GUI
  • Business Layer, Logik
  • Backend, Datenbank

Für die Erstellung eines Frontends und die Verdrahtung von Backend und Business Layer gibt es ausgereifte standard Libraries. Das Frontend folgt dem Model-View-Controller Design Pattern. Und die Datenbank wird über einen Entity-Relationship-Mapper auf Datenobjekte im Business Layer abgebildet. Diese beiden Patterns sind erprobt, ausgereift und funktionieren recht gut. Nur die eigentliche Logik in der Mittelschicht wird nach wie vor noch in "Spagetthi Code" gezwängt. Hier gibt es noch keine allgemein übliche Vorgehensweise.
Meiner Meinung nach sind Rule Engines genau der richtige Lösungsansatz hierfür. Hier betrachtet man die Business Logik nicht mehr als Code, sondern als reine Konfigurations Daten in strukturierter WENN-DANN-Form, z.B. "Wenn der Mietwagen Fahrer älter als 25 ist, dann bekommt er einen Rabatt von 15%." Diese Regeln können sogar toolgestützt von einer Fachabteilung (in Textfiles) verwaltet werden. Diese Textfiles werden dann von einer RuleEngine eingelesen, validiert und können dann auf gegebene Facts (=einen gegebenen Mietwagenfahrer) angwendet werden.

Zur Laufzeit einer Anwendung können diese Regeln dann einfach verändert und neu eingelesen werden, ohne dass die RuleEngine dabei selbst angefasst werden muss. Die Business Logik wird einfach als reine Konfigurationsdaten betrachtet.

Siehe: JBoss Drools Rule Engine

1 Kommentar:

  1. Anonym1.1.13

    Hallo Doogie,

    Deine Utopie erinnert mich an eine Artikelserie bei TheDailyWTF.com.
    Hier schreibt Alex Papadimoulis - der Betreiber der Seite - über die "Enterprise Rule Engine" und den "Mythical Business Layer".

    http://thedailywtf.com/Articles/The_Enterprise_Rules_Engine.aspx
    http://thedailywtf.com/Articles/The-Mythical-Business-Layer.aspx

    Dort verlinkt sind auch noch ein paar andere Artikel, die in die Richtung gehen.
    Obwohl ich nicht alles "unterschreiben" kann, was Papadimoulis gerade über den "Mythical Business Layer" schreibt und warum Software manchmal auch vor dupliziertem Code nicht zurückschrecken darf, so teile ich doch seine Skepsis in Bezug auf solche "Rule Engines", weil sie meiner Ansicht nach unweigerlich zu einem "Inner Platform Effect" führen (http://thedailywtf.com/Articles/The_Inner-Platform_Effect.aspx).

    Das bedeutet:
    Rule Engines sind dazu da, Leuten, die nichts vom Programmieren verstehen, das Programmieren zu ermöglichen (was übrigens auch die Idee hinter COBOL ist!).
    Das kann auf zwei Dinge hinauslaufen:
    1. Entweder, die Rule Engine ist so simpel, dass sie jeder BWLer versteht, und damit in ihren Möglichkeiten stark eingeschränkt.
    2. Oder die Rule Engine ist sehr flexibel und kann jeden fachlichen Fall und Sonderfall, der im "Business" vorkommt, abbilden. Dann wird sie aber unweigerlich so komplex, dass man ein Informatik-Diplom braucht, um sie bedienen zu können. Somit hat man im Endeffekt nur eine neue Programmiersprache geschaffen - wobei die Wahrscheinlichkeit, dass sie besser ist als eine existierende Sprache, eher gering ist.

    Ich denke, solche Versuche von Software-Entwicklern, sich selbst überflüssig zu machen, haben auf lange Sicht keine Aussicht auf Erfolg. Mein Vater hat mir schon vor 20 Jahren abgeraten, Informatik zu studieren, weil Software-Entwicklung durch moderne Ansätze (damals war gerade ein Hype um "4GL" (http://de.wikipedia.org/wiki/4GL)) doch "schon bald" so einfach wäre, dass jeder sie könne, und Informatiker so bald überflüssig wären.

    Ich weiß, das habe ich Dir alles schon mal mündlich gesagt, aber ich wollte das hier einfach nochmal schriftlich festhalten ...

    Viele Grüße & gutes neues Jahr

    Oliver

    AntwortenLöschen

Ich freue mich immer über konstruktive Kommentare, die die angeschnittenen Themen weiterdiskutieren.