Comment voulez-vous commencer à améliorer sur un système vraiment mauvais? Permettez-moi d'expliquer ce que je veux dire avant de recommander la création de tests unitaires et de refactoring. Je pourrais utiliser ces techniques, mais ce serait inutile dans ce cas.vraiment mauvais
En fait, le système est donc cassé, il ne fait pas ce qu'il doit faire.
Par exemple, le système doit compter le nombre de messages qu'il envoie. Cela fonctionne principalement mais dans certains cas, il "oublie" d'augmenter la valeur du compteur de messages. Le problème est que tant d'autres modules avec leurs propres solutions de contournement s'appuient sur ce compteur que si je corrige le compteur, le système dans son ensemble deviendrait pire qu'il ne l'est actuellement. La solution pourrait être de modifier tous les modules et supprimer leurs propres corrections, mais avec plus de 150 modules qui nécessiteraient tellement de coordination que je ne peux pas me le permettre.
Encore pire, il y a quelques problèmes qui ont des solutions de rechange non pas dans le système lui-même, mais dans la tête des gens. Par exemple, le système ne peut pas représenter plus de quatre messages associés dans un groupe de messages. Certains services nécessiteraient cinq messages groupés ensemble. Le service comptable connaît cette limitation et chaque fois qu'ils comptent les messages pour ces services, ils comptent les groupes de messages et multiplier par 5/4 pour obtenir le nombre exact des messages. Il n'y a absolument aucune documentation sur ces déviations et personne ne sait combien de ces choses sont présentes dans le système maintenant.
Alors, comment voulez-vous commencer à travailler sur l'amélioration de ce système? Quelle stratégie suivriez-vous? Quelques autres choses: Je suis une armée d'un homme qui travaille sur ce point, donc ce n'est pas une réponse acceptable d'embaucher suffisamment d'hommes et de refaire le système. Et dans quelques semaines ou quelques mois, je devrais vraiment montrer une progression visible, donc ce n'est pas une option non plus pour faire le refactoring moi-même dans quelques années.
Quelques détails techniques: le système est écrit en Java et en PHP mais je ne pense pas que ce soit vraiment important. Il y a deux bases de données, Oracle et PostgreSQL. Outre les défauts mentionnés avant que le code lui-même ne soit trop mauvais, il est vraiment mal écrit et documenté.
Informations complémentaires:
La question du compteur est pas un problème de synchronisation. Les instructions counter ++ sont ajoutées à certains modules et ne sont pas ajoutées à d'autres modules. Une solution rapide et sale consiste à les ajouter là où ils sont manquants. La solution longue est de faire en sorte que ce soit un aspect pour les modules qui en ont besoin, ce qui rend impossible de l'oublier plus tard. Je n'ai aucun problème à réparer des choses comme ça, mais si je faisais ce changement, je casserais 10 autres modules.
Mise à jour:
J'ai accepté la réponse de Greg D. Même si j'aime plus Adam Bellaire, cela ne m'aiderait pas à savoir ce qu'il serait idéal de savoir. Merci à tous pour les réponses.
Bonne chance! Il y a une chose que j'aime dans le fait de travailler sur un système brisé. Rien de ce que je fais ne peut le rendre pire qu'avant. :) –
+1 - Cette situation est tellement horrible! ou est-ce horriblement horrible? – Drew