Wie würden Sie ein wirklich schlechtes System verbessern?
Lassen Sie mich erklären, was ich meine, bevor Sie die Erstellung von Unit-Tests und Refactoring empfehlen. Ich könnte diese Techniken anwenden, aber das wäre in diesem Fall sinnlos.
Eigentlich ist das System so kaputt, dass es nicht das tut, was es tun muss.
Zum Beispiel sollte das System zählen, wie viele Nachrichten es versendet. Meistens funktioniert das, aber in manchen Fällen "vergisst" es, den Wert des Nachrichtenzählers zu erhöhen. Das Problem ist, dass so viele andere Module mit ihren eigenen Workarounds auf diesem Zähler aufbauen, dass, wenn ich den Zähler korrigiere, das System als Ganzes schlechter werden würde, als es derzeit ist. Die Lösung könnte darin bestehen, alle Module zu modifizieren und ihre eigenen Korrekturen zu entfernen, aber bei über 150 Modulen würde das so viel Koordination erfordern, dass ich mir das nicht leisten kann.
Schlimmer noch, es gibt einige Probleme, die nicht im System selbst, sondern in den Köpfen der Menschen gelöst werden. Zum Beispiel kann das System nicht mehr als vier zusammenhängende Nachrichten in einer Nachrichtengruppe darstellen. Bei einigen Diensten sind fünf zusammenhängende Meldungen erforderlich. Die Buchhaltungsabteilung weiß um diese Einschränkung und zählt jedes Mal, wenn sie die Nachrichten für diese Dienste zählt, die Nachrichtengruppen und multipliziert sie mit 5/4, um die korrekte Anzahl der Nachrichten zu erhalten. Es gibt absolut keine Dokumentation über diese Abweichungen, und niemand weiß, wie viele solcher Dinge jetzt im System vorhanden sind.
Wie würden Sie also an der Verbesserung dieses Systems arbeiten? Welche Strategie würden Sie verfolgen?
Ein paar zusätzliche Dinge: Ich bin eine Ein-Mann-Armee, die daran arbeitet, so dass es keine akzeptable Antwort ist, genügend Leute einzustellen und das System neu zu entwerfen/umzugestalten. Und in ein paar Wochen oder Monaten sollte ich wirklich sichtbare Fortschritte machen, so dass es auch keine Option ist, das Refactoring in ein paar Jahren selbst durchzuführen.
Einige technische Details: Das System ist in Java und PHP geschrieben, aber ich glaube nicht, dass das wirklich wichtig ist. Es gibt zwei Datenbanken, eine Oracle- und eine PostgreSQL-Datenbank. Neben den bereits erwähnten Mängeln stinkt auch der Code selbst, er ist wirklich schlecht geschrieben und dokumentiert.
Zusätzliche Informationen:
Das Zählerproblem ist kein Synchronisationsproblem. Die Anweisungen counter++ werden in einigen Modulen hinzugefügt, in anderen Modulen jedoch nicht. Eine schnelle und schmutzige Lösung besteht darin, sie dort hinzuzufügen, wo sie fehlen. Die langfristige Lösung besteht darin, sie zu einer Art Aspekt für die Module zu machen, die sie benötigen, so dass es unmöglich ist, sie später zu vergessen. Ich habe keine Probleme damit, solche Dinge zu beheben, aber wenn ich diese Änderung vornehmen würde, würde ich über 10 andere Module zerstören.
Aktualisierung:
Ich habe die Antwort von Greg D. akzeptiert. Auch wenn mir die von Adam Bellaire besser gefällt, würde es mir nicht helfen, zu wissen, was ideal wäre zu wissen. Vielen Dank an alle für die Antworten.
0 Stimmen
Viel Glück! Eines mag ich an der Arbeit an einem kaputten System - nichts, was ich daran mache, kann es schlimmer machen, als es war, bevor ich angefangen habe :)
0 Stimmen
+1 - Diese Situation ist so furchtbar geil! oder ist sie furchtbar schrecklich?