Tout d'abord, je dois dire que je travaille pour ArtinSoft, donc mon opinion ici est basée sur ce que j'ai vu chez nos clients. Cependant, mes expériences de développement de logiciels avant ArtinSoft remontent à plus d'une décennie et sont tout à fait pertinentes pour le sujet qui nous occupe.
Ai-je été dans cette position ?
Oui, absolument et en de nombreuses occasions. Il est très rare que j'aie vu une entreprise aborder cet obstacle de manière proactive. Le plus souvent, j'ai vu des entreprises et leurs applications logicielles dépérir avec des technologies non prises en charge qui ont attendu trop tard, jusqu'à ce que les sables rapides de l'obsolescence technique ne leur laissent que peu ou pas de choix. Et dans plus d'un cas, certaines se sont même retrouvées dans une situation où seule une réécriture complète pouvait les sauver. Ce n'est pas l'endroit où vous voulez être.
Comment le vendre à vos clients ?
Je serais honnête avec vos clients... vous voulez continuer à offrir un produit supérieur et être capable de répondre rapidement à leurs besoins au fur et à mesure que le produit évolue. L'environnement actuel de Visual Basic 6.0 rend cela de plus en plus difficile. Il est de plus en plus difficile de trouver des développeurs Visual Basic 6.0 talentueux ou des développeurs .NET talentueux qui tolèrent Visual Basic 6.0. Et même si vous y parvenez, ce talent va devenir de plus en plus cher à mesure que la réserve de talents diminue et que la satisfaction professionnelle s'amenuise.
Vos clients utilisent d'autres applications dans le cours normal de leur vie, et ils finiront par remarquer que votre application vieillit, qu'elle est dépassée et qu'elle ne répond plus aux mêmes attentes que cette autre application au jour le jour.
Comment allez-vous vendre ça à votre patron ?
Comme je ne suis pas sûr de la situation exacte dans laquelle vous vous trouvez, voici les possibilités que j'ai le plus envisagées lorsque j'ai envisagé de faire de telles transitions dans le passé. Et vous voudrez peut-être trouver des leaders commerciaux et techniques au sein de votre entreprise pour vous aider à défendre cet effort et à déterminer la manière la plus appropriée de vendre ce produit dans votre organisation.
1. Avantages concurrentiels / perception du client
Je suppose que votre application n'est pas la seule dans l'univers des logiciels pour concessionnaires automobiles. Si la vôtre est la première à faire le grand saut vers .NET, c'est formidable. Mais si c'est la dernière... est-ce vraiment là où votre entreprise veut être ? Est-ce quelque chose qui pourrait empêcher un client de renouveler son contrat de maintenance - en supposant que vous génériez des revenus de cette manière ? Si c'est le cas, quel meilleur moyen de prouver la valeur d'un contrat de maintenance que de mettre l'application à niveau ?
2. Réserve de talents et rétention
Je ne sais pas si vous avez déjà été confronté à ce phénomène ou comment votre personnel technique est structuré, mais les technologies plus anciennes deviennent de plus en plus coûteuses, produisent de moins en moins d'innovation et rendent de plus en plus difficile d'attirer et de retenir les talents, au point que le moral peut être sérieusement affecté. À l'heure actuelle, le talent .NET est très abordable et disponible. Il est toujours amusant, toujours à la mode et offre un potentiel de carrière long et précieux pour ceux qui travaillent avec lui.
3. Nouvelles fonctionnalités et composants tiers
Je suppose que vous continuez à déployer de nouvelles fonctionnalités ? Et je suppose que vous avez peut-être remarqué qu'il y a de moins en moins d'échantillons de code disponibles en ligne dans Visual Basic 6.0. Il y a moins de personnes qui répondent aux forums de Visual Basic 6.0... sauf bien sûr si c'est en relation avec .NET. Il y a moins de support pour les composants tiers de Visual Basic 6.0 et les projets open-source. Visual Studio pour .NET est une amélioration considérable par rapport aux versions de Visual Basic 6.0. Et le langage .NET et les bibliothèques natives peuvent rendre inutiles certains des composants tiers de votre application.
4. Correction de bogues et amélioration des performances
Les outils de profilage des performances dans .NET sont à couper le souffle par rapport à ce qui était disponible auparavant avec Visual Basic 6.0. Il est tout simplement plus facile de travailler avec du code géré. Le débogage dans Visual Studio pour .NET est incroyablement efficace. Et bien sûr, de nombreuses améliorations ont été apportées à la connectivité, au traitement des exceptions et à la gestion de la mémoire, pour n'en citer que quelques-unes.
5. Crée une nouvelle valeur.
Au bout du compte, pensez-vous que le fait d'avoir une application .NET plutôt qu'une application Visual Basic 6.0 augmentera la valeur de votre entreprise ? Qu'elle soit privée ou publique, peu importe - la valeur de votre application devient un actif important. S'ils sont comptabilisés correctement, tous les coûts de développement peuvent être amortis au fil du temps comme un investissement en capital. Je ne suis pas fiscaliste, mais je sais que cela peut vraiment changer l'équation.
6. Feuille de route
Le passage à .NET est un endroit fantastique où se trouver, car les étapes en direction de Silverlight et/ou le passage au Cloud sont tellement plus proches de la réalité que cela ouvre vraiment des possibilités. En fait, avez-vous envisagé une telle évolution ? Les cas d'affaires pour cela peuvent être époustouflants. Il s'agit d'un véritable changement de paradigme qui peut réduire considérablement les coûts et amener votre logiciel à des endroits dont vos concurrents ne peuvent que rêver. En tout cas... Je m'éloigne du sujet sans en savoir plus sur votre logiciel et votre modèle économique.
Parmi les outils disponibles pour faciliter la transition, quels sont ceux qui fonctionnent et ceux qu'il faut éviter ?
Sauf pour les petites applications, je déconseille fortement une réécriture. Bien sûr, qui n'aimerait pas avoir l'opportunité de refactorer. Mais l'objectif qui peut souvent se perdre dans une telle migration est juste cela... migrer. Le remaniement et les modifications de l'architecture peuvent toujours intervenir plus tard. Ces obstacles sont beaucoup plus petits et devraient vraiment être évités pour minimiser les risques.
Comme L'utilisateur RS Conley déclare dans une autre réponse S'il est essentiel de préserver le comportement de votre application ou s'il s'agit d'une mission critique, la conversion est la seule solution".
Un autre utilisateur, MarkJ, nous a fourni un lien vers un message d'Eric Nelson, de Microsoft, http://msdn.microsoft.com/en-gb/dd408373.aspx#migrate où il est dit que de nombreuses réécritures ont été abandonnées en raison de la complexité inattendue et écrasante. Nous avons entendu parler de nombreuses tentatives de réécriture qui ont échoué ; certains d'entre eux nous ont contactés en tant que clients après avoir décidé de procéder d'abord à une réécriture.
Voici un livre blanc rédigé par un de mes collègues sur ce sujet précis : http://www.artinsoft.com/5-myth-busting-reasons-for-choosing-automatic-migration-vs-manual-rewrite.aspx
N'essayez pas d'améliorer la fonctionnalité de l'application tant que le passage à .NET n'est pas terminé. Il est facile de laisser l'étendue du projet vous échapper. Il est tentant, alors que vous avez le patient sur la table, de faire d'autres soins préventifs en retard, mais résistez à la tentation. Une migration vers .NET n'est pas pour les âmes sensibles.
Vous devez rechercher un outil qui préservera votre logique d'entreprise. Il convertira autant de composants tiers en leur équivalent .NET que possible. En fonction des normes de codage en vigueur lorsque votre application a été écrite à l'origine et du respect de ces normes par la suite, il est préférable de trouver un outil qui maintiendra la structure des classes de votre application afin que vos développeurs actuels n'aient pas besoin de réapprendre à naviguer dans le code. Cela peut vous faire gagner beaucoup de temps pour revenir à vos activités. N'oubliez pas non plus que si l'application d'origine est mal écrite, le code qui résulte d'une migration automatique peut ne pas être une idée. Quelle est l'expression "garbage in, garbage out" ?
Dans tous les cas, faites-moi savoir si je peux vous être utile. J'espère que mes commentaires ont apporté un éclairage utile.
Bonne chance !