12. September 2017 21:07
Hallo,
ich denke schon, das ich weiß was Spagetticode ist. Ich habe mein erstes Kassenprogramm auf einem C64 vor etwa 35 Jahren geschrieben. Und glaube mir es, ist mir schon einiges an Code untergekommen (dabei war auch eine TurboPascal- Logik- Simulation, die mit einigen Tausend Zeilen, die aber nur aus der Main- Prozedur und diversen Goto's bestand
).
Aber zurück zum Thema: Bevor du anfängst zu Programmieren oder zu dokumentieren, solltest du erst einmal herausfinden was du überhaupt bearbeiten musst.
Für mich ist dazu zunächst eine Analyse der Felder und des Quellcodes wichtig, die herausfindet, was angepasst wurde, und auch ganz wichtig: Was davon auch noch benutzt wird.
Alte Tabellenleichen aus MwSt.- bzw. Euro- Umstellung, oder alte Sicherungskopien von NAV- Updates oder Daten- Korrekturen gehören zu dem ersten, was ich aus einem Objektstand entferne, den ich migrieren oder analysieren will. Der nächste Schritt ist es, herauszufinden, welche anderen Objekte Leichen sind, immer wieder gerne genommen werden Einmal-Reports für Korrekturen und Sicherungskopien von "wichtigen" Reports bevor etwas geändert wird.
Nachdem man nun einen Großteil des Quellcodes entsorgt hat
, ist mein nächster Schritt, herauszufinden welche Felder in der Datenbank zusätzlich enthalten sind, welche vorhandenen geändert wurden, und welche überhaupt benutzt werden.
Welche Felder neu oder geändert sind, kann man relativ leicht mit Excel erledigen und einem Comparetool erledigen. Für das ob und wo verwendet, benötigt ein Crossrefference- Tool (z.B. Object Manager Advanced, GDT Where Used,Statical Prism,...)
Wenn man nun weiß, was geändert wurde, kann man prüfen ob und wie man das noch braucht, und ob und wie man das in welcher Form nach einem Update weiter verwenden will, kann oder muss.
Sind alle überflüssigen Felder entfernt, folgt ein Compile-All, der den zu den entfernten Feldern gehörenden Code aufdeckt. Nachdem man auch diesen Code und die dabei überflüssig werdenden Objekte entsorgt hat, hat man hoffentlich so etwas wie eine saubere Version, mit der man weiter arbeiten kann.
Den Quellcode dieser Version kann man mit einer sauberen NAV- Version vergleichen auf der deine angepasste Version basiert (also z.B. den eigenen Objektstand basierend auf NAV 4.0 mit einer CRONUS NAV4.0- Demo-DB vergleichen), und erhällst die relevanten Anpassungen, die du dann dokumentieren, anpassen und evtl. auch in eine neue NAV- Version übernehmen kannst.
@Jupiter:
Auf den erste Blick hast du recht. Auf den zweiten Blick holt dich diese Taktik irgendwann ein. "Never change a running System" funktioniert, wenn man auf absehbare Zeit nichts daran machen musst. Aber das ist bei NAV nicht so. Es gibt laufend neue gesetzliche Anforderungen, oder MS meint, dass die alte NAV-4.0 Version auf einem neuen Windows 11 nicht mehr funktioniert. Dann bist du gezwungen ein Update zu machen. Und glaube mir, jede Leiche die du dann im Keller hast, feiert ihre Wiederauferstehung, und ärgert dich.
Gruß Fiddi