Ce choix "feuille blanche" vs "refonte" n'est pas du tout anodin. Je sors juste d'un projet qui a pris beaucoup de retard parce qu'on est partis sur une idée de "feuille blanche", sans bien se rendre compte de ce que cela impliquait...
A mon avis, la difficulté est la suivante...
Une application vieillissante est souvent bâtie autour d'une architecture ancienne, selon des principes qui sont de plus en plus difficiles à respecter, en imposant des limites qu'on voudrait dépasser. De ce point de vue, une réécriture complète s'impose.
Mais, et on l'oublie presque toujours, ladite application comporte souvent un très grand nombre de petits modules, qui marchent très bien (c'est pour cela qu'on n'en parle pas), et qui ont parfois été très durs à mettre au point. S'il faut les refaire, sans régression, cela risque de prendre beaucoup de temps. Dans ce contexte, on préfèrerait refondre, en conservant ces modules.
En général, la réécriture totale gagne, parce qu'on pense la réécriture en termes de fonctionnalité manquantes, et pas de fonctionnalités présentes (cela participe du même raisonnement que le développement de ses propres classes String et Vector), et le début du projet (tant qu'on reste dans les grands principes) donne raison à ce choix.
C'est après, quand les utilisateurs commencent à râler parce que les exports, les sauvegardes, la compatibilité, les petits machins qui gagnaient un temps précieux, manquent, qu'on regrette parfois ce choix... On s'aperçoit alors que la mise au point prend un temps bien plus grand que prévu. Et c'est là qu'on entre dans le dialogue de sourd : "c'est plus lent/moins pratique qu'avant", "oui mais les limites sur le nombre de lignes/colonnes/fichiers de l'application précédente ont disparu", "oui mais j'aimais mieux avant..."
Personnellement, je pense qu'à l'avenir, je privilégierai toujours la refonte profonde du code existant. C'est beaucoup plus exigeant (même sur un code qu'on a écrit soi même), mais je pense que c'est également plus efficace.
Et c'est là qu'une vraie méthodologie de redéveloppement fait cruellement défaut.
Francois
Partager