ich stehe momentan vor der Aufgabe in einem Projekt ein Versions-Update einer Framework-Bibliothek (ZendFramework von 1.5.0PR zu 1.9.4) durchzuführen.
Jetzt stellt sich für mich die Frage, wie mache ich das am effizientesten? Wie stelle ich sicher, dass mein eigentliches Programm keine zusätzlichen Fehler durch das Update bekommt? Welche Schritte in welcher Reihenfolge sollte ich durchführen?
Theoretisch müsste ich schauen welche Bibliotheks-Funktionen/Klassen haben sich in ihrer Signatur von Version A zu Version B geändert, welche existieren in der neuen nicht mehr und wie hat sich die Semantik der veränderten Funktionen (auch die, bei denen die Signatur gleich blieb) verändert. Bei letzterem geht's hauptsächlich um die Seiteneffekte in den Funktionen (Veränderung von (globalen) Variablenwerten etc.) und Bug-Using. Theoretisch sollte die Semantik von Funktionen über Versionen hinweg gleich bleiben, solang sie gleich heißt, praktisch wird das allein schon durch das Fixen von Bugs untergraben, wenn auch zum positiven :).
Ich nutze zwar kaum fertige Frameworks, aber dennoch wäre es mal echt gut zu wissen, wie man diese später am besten updated. Da ich sie nutze, habe ich mich bis dato auch noch keine Gedanken dazu gemacht.
Lege das neue Framework parallel zum alten im Dateisystem ab. (z.b. /var/lib/Zend_Framework_1.5.0 ist der alte Pfad, dann /var/lib/Zend_Framework_1.9.4)
Danach mittels einer include-Pfad-Änderung auf das neue ZF verweisen, statt auf das alte.
App laufen lassen und erstmal kucken, was passiert, aber nur wenn keine Daten beschädigt werden können. Vermutlich steigt der Autoloader aus und der Bootstrapper meckert. Beim Autoloader hat sich einiges getan und vieles funktioniert jetzt anders.
Wenn Du die entsprechenden UNIT-Tests geschrieben hast, sollte die Prüfung mit dem neuen Framework kein Problem sein.
Wenn Du keine Unit-Tests hast, dann wird es häßlich und Du musst ALLE Funktionalitäten händisch prüfen. (Ausführung anschubsen und errorlog beobachten und Ergebnis prüfen)