Hallo
bei meiner Bekannten geistert im Management eine Idee herum, J2EE Anwendungen + mehrere dazugehörige GUI's als Plugins zu realisieren, die der Kunde sich dann selbst anpassen kann. In ersten Ideen soll der Applikationsserver einen Core bieten, in dem mehrere Grundfunktionalitäten enthalten sind. U.a. werden dann Plugins (Java-Sourcecode) aus einem bestimmten Verzeichnis nachgeladen, zur Laufzeit übersetzt und aktiviert usw. Fast alles soll selbst entwickelt werden, außer die Persistenz, bei der wohl JPA benutzt wird.
Später (nach Erweiterungen und so weiter) sollen sich aus den Plugins dann auch dynamisch GUI's aufbauen können. Der Kunde soll ab einem bestimmten Level alles dynamisch selbst ändern können oder für die Änderungen (die ja laut Management dann rasend schnell gehen werden) teuer bezahlen. Der Kunde soll die Möglichkeit haben, in den Plugins eigene Datenstrukturen aufzubauen und bestehende erweitern zu können. Die Plugin-Kommunikation soll durch Ereignisse asynchron laufen.
Die Entwickler vor Ort haben schwere Bauchweh mit dieser Idee, es soll aber wohl durchgeboxt werden. Der Kunde soll bei Modifikationen, die er selbst durchführt, auch selbst haften.
Ich habe ihr einige Punkte gegeben, die aus meiner Sicht gegen so ein System sprechen:
* Da Plugins direkt zur Laufzeit kompiliert und geändert werden können, kann es schnell zu Fehlern kommen (Logik, Syntax sowieso, Schadcode mit Absicht oder ohne) --> nicht EJB-konform (eigener Classloader, defining von classes zur Laufzeit und co.)
* Schwierige pluginübergreifende Transaktionen, da alles aynchron abläuft und man auch aufpassen muß, das keine Zyklen entstehen. Das wurde vor Ort schon erkannt und das Management beschloß daraufhin auf den völligen Verzicht von Transaktionen und UseCases.
* keine definierten Workflows mehr, da alles geändert werden kann und später keiner mehr richtig sagen kann, wie eine Funktionalität funktionieren sollte (kann ja bei jedem Kunden anders sein...)
* schlechte Testbarkeit, wie testet man Plugins, die überall anders sein können? Fehlersuche wird den Core-Systementwicklern so gut wie unmöglich gemacht, da sie ja womöglich gar nicht über die Kunden Plugins verfügen...
* wenn jeder der Entwickler vor Projektstart schon Bauchweh bei drei- bis vier verschiedenen Punkten hat, ist es ein schlechter Start und ein Indiz, das man vielleicht einen anderen Weg gehen sollte.
* Update-Trouble: Was darf bei Updates überschrieben werden und was nicht?
* mein Vorschlag war ein Standard-System mit Injektionspunkten in bestimmten Workflows, in denen der Kunde dann seinen Code/Klasse einfügen kann, ähnlich SAP. Alles sauber untergebracht in Packages/Projekten usw. und Kunden, die den Workflow direkt ändern möchten (und dafür extra blechen), könnten Zugriff auf das jeweilige Package/Projekt bekommen um da Ihre Modifikationen machen und anschließend neu bauen oder so.
Was haltet Ihr davon?
Gruß Fastjack.
P.S.: Es ist kein Witz Leute, sondern wirklich real und wie es sich anhörte auch sehr dringend, da schon entwickelt werden soll.
bei meiner Bekannten geistert im Management eine Idee herum, J2EE Anwendungen + mehrere dazugehörige GUI's als Plugins zu realisieren, die der Kunde sich dann selbst anpassen kann. In ersten Ideen soll der Applikationsserver einen Core bieten, in dem mehrere Grundfunktionalitäten enthalten sind. U.a. werden dann Plugins (Java-Sourcecode) aus einem bestimmten Verzeichnis nachgeladen, zur Laufzeit übersetzt und aktiviert usw. Fast alles soll selbst entwickelt werden, außer die Persistenz, bei der wohl JPA benutzt wird.
Später (nach Erweiterungen und so weiter) sollen sich aus den Plugins dann auch dynamisch GUI's aufbauen können. Der Kunde soll ab einem bestimmten Level alles dynamisch selbst ändern können oder für die Änderungen (die ja laut Management dann rasend schnell gehen werden) teuer bezahlen. Der Kunde soll die Möglichkeit haben, in den Plugins eigene Datenstrukturen aufzubauen und bestehende erweitern zu können. Die Plugin-Kommunikation soll durch Ereignisse asynchron laufen.
Die Entwickler vor Ort haben schwere Bauchweh mit dieser Idee, es soll aber wohl durchgeboxt werden. Der Kunde soll bei Modifikationen, die er selbst durchführt, auch selbst haften.
Ich habe ihr einige Punkte gegeben, die aus meiner Sicht gegen so ein System sprechen:
* Da Plugins direkt zur Laufzeit kompiliert und geändert werden können, kann es schnell zu Fehlern kommen (Logik, Syntax sowieso, Schadcode mit Absicht oder ohne) --> nicht EJB-konform (eigener Classloader, defining von classes zur Laufzeit und co.)
* Schwierige pluginübergreifende Transaktionen, da alles aynchron abläuft und man auch aufpassen muß, das keine Zyklen entstehen. Das wurde vor Ort schon erkannt und das Management beschloß daraufhin auf den völligen Verzicht von Transaktionen und UseCases.
* keine definierten Workflows mehr, da alles geändert werden kann und später keiner mehr richtig sagen kann, wie eine Funktionalität funktionieren sollte (kann ja bei jedem Kunden anders sein...)
* schlechte Testbarkeit, wie testet man Plugins, die überall anders sein können? Fehlersuche wird den Core-Systementwicklern so gut wie unmöglich gemacht, da sie ja womöglich gar nicht über die Kunden Plugins verfügen...
* wenn jeder der Entwickler vor Projektstart schon Bauchweh bei drei- bis vier verschiedenen Punkten hat, ist es ein schlechter Start und ein Indiz, das man vielleicht einen anderen Weg gehen sollte.
* Update-Trouble: Was darf bei Updates überschrieben werden und was nicht?
* mein Vorschlag war ein Standard-System mit Injektionspunkten in bestimmten Workflows, in denen der Kunde dann seinen Code/Klasse einfügen kann, ähnlich SAP. Alles sauber untergebracht in Packages/Projekten usw. und Kunden, die den Workflow direkt ändern möchten (und dafür extra blechen), könnten Zugriff auf das jeweilige Package/Projekt bekommen um da Ihre Modifikationen machen und anschließend neu bauen oder so.
Was haltet Ihr davon?
Gruß Fastjack.
P.S.: Es ist kein Witz Leute, sondern wirklich real und wie es sich anhörte auch sehr dringend, da schon entwickelt werden soll.