Magnus Warker <
mag...@mailinator.com> writes:
> Einfach nur "zeitgemäß" bringt in dieser Diskussion nicht
> weiter.
Das würde ich auch so sehen. Ich bin ein Technik-Freak, ich persönlich
würde Systeme einfach nur aus dem Grund neu schreiben, weil ich eine
neue Technologie ausprobieren möchte.
Aber aus wirtschaftlicher Sicht verbietet sich so etwas natürlich
sofort. Und ich denke, dass ist letztlich der entscheidene Punkt:
Welchen wirtschaftlichen Vorteil bringt es, in ein funktionierendes
System viel Geld zu stecken, um es neu zu schreiben. Dabei springt ja
i.d.R. erstmal kein unmittelbarer wirtschaftlicher Nutzen heraus.
Ich arbeite derzeit auch an einem Alt-System (nicht Cobol). Es wird
schon seit ca. 10 Jahren immer mal wieder darüber gesprochen, das
System komplett neu zu schreiben oder zumindest teilweise zu
modernisieren. Warum ist bisher nichts in dieser Richtung passiert:
Mangelnder Leidensdruck (und zu wenig Resourcen).
"Just good enough" und "nichts hält länger als ein Provisorium" sind
Sprüche, die dies unterstreichen: Es braucht wirklich gute Gründe,
etwas Funktionierendes neu zu machen. Und das ist prinzipiell
(zumindest aus wirtschaftlicher Sicht) auch gut.
> Die an dieser Programmiersprache haftenden veralteten
> Entwicklungsmethoden wiegen IMHO schwer. Gibt es auch Gründe, die in
> der Sprache selbst liegen?
Im so gut wie keinem Fall gibt es Gründe, die sich unmittelbar aus der
Programmiersprache herleiten (von dem Problem "es gibt keine Tools und
insbesondere keine Compiler mehr" mal abgesehen).
Was sind überhaupt sinnvolle Gründe dafür, etwas Funktionierendes neu
zu machen? Für Manager muss sich das irgendwie rechnen, d.h. es müssen
dabei Kosteneinsparungen herausspringen oder Risiken gesenkt werden.
Und das wäre mein Ansatzpunkt: Wartbarkeit. Wenn der alte Cobol-Code
sehr gut strukturiert ist, lesbar und verständlich oder zumindest sehr
gut dokumentiert ist und man eh nur selten oder so gut wie nie etwas
daran ändern muss, dann lohnt sich der Aufwand i.d.R. nicht. Nur weil
jemand in den 70er Jahren programmieren gelernt hat, schreibt er ja
nicht automatisch schlechten Code. Alte Programmiersprachen sind nicht
per se schlecht (Lisp ist eine der ältesten Hochsprachen (entstanden
in den 50ern) und macht auch heute noch allen Mainstream-Sprachen
einiges vor). Und man kann auch in modernsten Sprachen, startend mit
hehren Architektur-Plänen, ein grauenvolles Chaos anrichten.
Also immer die Grundregel merken: Neu ist nicht (automatisch) besser!
Bei alten, über Jahrzehnte gewachsene Systeme steht es strukturell oft
eben nicht zum Besten. Es haben sich Altlasten gesammelt, die aktuell
gar nicht mehr benötigt werden. Im Code finden sich viele verschiedene
Architektur-Ansätze, die Teilsysteme sind nicht mehr sauber
gegeneinander abgeschottet, ja selbst die Teilsysteme in sich sind
nicht mehr klar strukturiert.
In so einem Fall kann man eine Neuentwicklung durchaus mit in Zukunft
sinkenden Wartungskosten begründen - sofern man mit einem guten
Konzept und deutlichen strukturellen Verbesserungen aufwarten
kann. Und ein "dieser prozedurale Kram ist dann ganz toll
objektorientiert" ist natürlich keine Verbesserung. Man sollte sich
überlegen, ob man wirklich nennenswerte Vereinfachungen erzielen
kann. Gibt es Synergie-Effekte dadurch, dass man das Gesamtsystem
komplett neu macht. In dieser Richtung sollte man nach Argumenten
suchen.
--
Stefan.