Hallo D*B,
vielen Dank für deine Ausführungen. Auch wenn ich nicht immer bei allem deiner Meinung bin: Dein Schreibstil ist jedesmal unterhaltsam ("Geschmackssache ... Affe ... Seife") :-)

Nochmal für mich zur Klarstellung bei Serviceprogrammen / Modulen, damit ich das auch richtig verstehe:

Du / ihr seht das so:
Ein Sourcemember beinhaltet immer den Code für ein Modul. In einem Modul können mehrere exportierte Procedures sein. Mehrere Module können zu einem Serviceprogramm zusammengebunden werden.
Habe ich das richtig verstanden? (Da bei uns ein Sourcemember (fast) immer zu nur einem Serviceprogramm führt, haben wir mit Modulen zur Zeit nichts am Hut.)

Bei Parameteränderungen gebe ich dir Recht. Wenn man breaking changes macht, sollte man eine neue Version erzeugen. Solange wir mit zusätzlichen optionalen Parametern hinkommen, ist das aber nicht unbedingt nötig, finde ich.

Dein Konzept mit den Datenstrukturen, die immer auf Views basieren, habe ich schon vor Jahren bei dir gelesen und finde es immer noch interessant. Allerdings haben wir es nie umgesetzt. Es gab Bedenken bei uns, dass wir dann mit einer Vielzahl von unterschiedlichen Datensätzen (Datenstrukturen) hantieren müssen. Es würde in deinem Konzept doch so sein, dass die Datenstrukturen versioniert werden, oder? Also zunächst heißt die Struktur "KUNDE_Datensatz", nach einer Felderweiterung dann "KUNDE_DatensatzV2" usw. Richtig?
Falls ja, hat man dann nicht immer noch die gleichen Probleme wie bisher? Ich kann an ein Programm ja nicht die erste Struktur übergeben, wenn Sie die V2-Version erwartet.

Aber wahrscheinlich habe ich nur noch nicht lange genug darüber nachgedacht.