Architektur vs Anatomie
Last updated
Last updated
In der Informatik gibt es den Bergiff der Softwarearchitektur. Der Begriff Anatomie ist im Softwarekontext nicht gebräuchlich. Dabei ist die heute verfügbare Software oft schlecht dokumentiert und die ursprünglichen Architekturentscheidungen nicht mehr im Detail nachvollzielbar. Das gilt insbesondere für reifere Open Source-Systeme wie ADempiere. Reifere Systeme sind in einem evolutionären Prozess über mehrere Generationen gewachsen.
Wenn hier die Architektur dokumentiert wird, dann sind es meist nicht Ergebnisse von Entwurfsentscheidungen, sondern die anatomischen Entdeckungen, die bei der Pflege und Weiterentwicklung des Systems angefallen sind.
ADempiere ist als Client-Server-System aufgebaut, bestehend aus zwei bzw. drei Schichten. Siehe auch Schichtenarchitekturen nach Anzahl der Schichten.
Wie viele ERP-Systeme ist ADempiere als verteiltes 3-Schichten System aufgebaut. Bei der klassischen 3-Schichten-Architektur (im Bild oben am Beispiel SAP ERP) gibt es diese Schichten:
Präsentation: auf Client-Seite gibt es mehrere UI Varianten
Applikationsserver
DBMS oder Datenbank-Schicht
Zur 3-tier-Architektur bei ADempiere gab es diese Überlegungen.
http://www.adempiere.com/Table_Prefix, bzw. https://wiki.idempiere.org/en/Table_Prefix
Serverschicht/Base
zwei Clients
Swing
WEB
Im Zuge der Evolution entstehen Fehlentwicklungen. Auch Softwaresysteme sind davon nicht ausgenommen. Hier eine Liste, die meiner Ansicht nach Fehlentwincklungen in Adempiere sind:
Internationalisierung mit Locale führt zur Redundanzen in Übersetzungen: es gibt keine deutsche Übersetzung, sondern eine de_DE und de_AT und de_CH
Postleitzahlen und tel.Vorwahl, postal und areacode als Attribute von City: große Orte mit mehreren PLZ-en lassen sich nicht korrekt abbilden
Umsatzsteuer, Abhängigkeit vom Land des Käufers nicht vorgesehen: Steuersystem der EU nicht abbildbar
adempiere als Ganzes ist ein project, die git-subdirs ebenfalls
keine klare Trennung zwischen base und client project: packege org.compiere.swing in (base) ist deplaziert
zyklische Abhängigkeiten in Unterprojekten siehe Circular Dependencies
Anatomie
Software Architetktur