- 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
Hallo Doogie,
AntwortenLöschenDeine 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