Wir haben ein CRM für einen Kunden erstellt. Nachdem die erste große Phase abgeschlossen und eine zweite vereinbart wurde, möchte der Kunde einen Teil der Arbeit übernehmen und in der ersten Phase geringfügige Änderungen am Datenbankschema und den Geschäftsprozessen vornehmen, während wir die zweite Phase erstellen .
Ich bin unschlüssig, ob dies überhaupt praktikabel ist, aber wenn es so ist, möchte ich einige Hinweise, welche Maßnahmen ergriffen werden können, um dies überhaupt umsetzbar zu machen. Folgendes habe ich bisher:
Bisher hat der Kunde das Projekt hauptsächlich aus der Sicht eines Benutzers gesehen. Es ist klar, dass ein zweiteiliges Seminar stattfinden sollte, in dem wir ihn in das Innenleben einführen:
- Zunächst wird das vorhandene Datenbankschema angezeigt und beispielhaft erweitert.
- Zeigen Sie dann Beispielcode an und schreiben Sie einen neuen Geschäftsprozess für die Schemaerweiterung.
- Der Code befindet sich derzeit in einem internen Subversion-Repository. Wir könnten zwar ein öffentliches oder ein öffentliches in seinem Netzwerk einrichten (mit dem wir VPN-Verbindungen herstellen können), aber ich bin der Meinung, dass ein verteiltes System besser funktionieren würde. Ich scheine der einzige zu sein, der so denkt, also könnte ich einige überzeugende Argumente verwenden.
Ich bin nicht sicher, wie ich festlegen soll / sicherstellen soll, dass Code, der in der Produktion ausgeführt wird, festgeschrieben wird. Es scheint, als hätte "x kurz vor Urlaubsantritt eine kritische, undokumentierte Änderung vorgenommen; jetzt versucht y, diesen Bug herauszufinden, der seitdem aufgetreten ist". Katastrophen sind unvermeidlich. Im Idealfall würden alle Änderungen vor der Bereitstellung:
- in einem Issue-Tracking-System dokumentiert sein,
- zuerst in einer separaten Testumgebung auftreten und
- müssen automatisierte Tests bestehen.
Leider bezweifle ich, dass sich die Disziplin für einen von denen durchsetzen wird.
Angenommen, eine Plug-in-Architektur oder ein separates Projekt sind keine realisierbaren Optionen, da 1) die erste nicht existiert und 2) die zweite dem Client verbietet, vorhandenen Code zu betrachten und möglicherweise zu ändern auf etwas bestehen.