J'ai un après-midi pour vanter les avantages de .NET sur VB6… que dois-je dire? [fermé]

9

Mon entreprise est une petite entreprise d'ingénierie de vingt personnes. Toute la programmation d'application ici est effectuée en VB6 par deux personnes, qui ont appris elles-mêmes le VB6 à partir d'un arrière-plan d'assemblage tout en travaillant ici depuis plus de 25 ans, et moi-même.

En conséquence, le code VB6 est criblé d'odeurs de code horribles, comme des tonnes de variables typées en chaîne , des fonctions terriblement longues, des centaines de variables globales publiques (dont certaines sont préférées à la transmission d'arguments et au renvoi de valeurs) et pas un seul objet classe. Le refactoring est presque impossible, et tout changement nécessite trop de fouille dans le code, et une fois effectué, semble toujours introduire plus de trous.

Mon patron se rend compte que VB6 est une technologie morte et est prêt à écouter mes appels à passer à .NET pour de nouveaux développements. Nous allons de l'avant vers .NET, mais il le voit comme un moyen de maintenir la compatibilité avec les nouveaux systèmes d'exploitation Windows, et non comme un moyen d'écrire un meilleur code.

Comment puis-je mieux expliquer les avantages du langage .NET sur VB6, au-delà de la simple mise à jour? Que puis-je dire pour souligner au mieux que le passage à .NET est une bonne décision, mais aussi que cela signifie que notre paradigme de programmation actuel devrait également commencer à changer? Dès que mon patron apprend que Visual Basic .NET ressemble à VB6, je sais que son premier réflexe sera de simplement convertir notre ancien désordre de code en .NET.

Je comprends qu'il sera impossible de changer la mentalité de qui que ce soit en un seul après-midi, mais comment puis-je au moins convaincre mon patron de l'assemblage que des choses comme les variables fortement typées, les classes personnalisées et les champs privés ne sont pas un total perte de temps et l'énergie?

dlras2
la source
4
Les développeurs VB6 sont une race mourante? Essayez de recruter des développeurs .NET et des développeurs VB6. Voyez combien de CV vous obtenez pour chacun. Le fait qu'une fois que les 2 anciens chronométreurs prennent leur retraite, il n'y aura pas de remplacement (ou plutôt un remplacement très cher ) devrait suffire.
Odé
3
J'apprécie qu'il puisse essayer , mais la plupart des développeurs qui se respectent resteraient à l'écart d'un langage mort. Je ne sais pas quand MS va arrêter de prendre en charge VB6, mais il devient de plus en plus difficile de trouver des ressources (et la fin de vie du produit est un autre argument contre VB6). Vous ne savez pas combien cela vous aidera, mais étudiez: msdn.microsoft.com/en-us/vstudio/ms788708.aspx - 2008 a été la fin de la vie de l'IDE. Et j'aime les "accords de support personnalisés peuvent être disponibles auprès de Microsoft" - à quel prix, je me demande ...
Oded
1
@Oded Malheureusement, aucun de ces arguments ne touche vraiment au fait que VB.NET est utilisable comme remplaçant pour VB6, les variables publiques globales et tout. Une fois que nous utilisons .NET , comment utilisons-nous réellement tous ses avantages?
dlras2
1
Peut-être expliquer par des exemples. Y a-t-il un problème difficile à résoudre dans VB6 qui serait beaucoup plus facile à résoudre dans VB .NET? Pourriez-vous choisir quelques exemples de votre base de code et montrer comment ils peuvent être nettoyés en un meilleur code dans .NET qui ne serait pas possible avec les fonctionnalités de VB6?
FrustratedWithFormsDesigner
1
@DanRasmussen VB.NET n'a pas pu importer correctement les projets VB6 (fixe encore?). La mise à niveau n'est pas anodine.

Réponses:

16

Réponse courte: Il n'y a rien que vous puissiez faire pour changer d'avis en fonction des critères que vous avez énumérés dans la question qui sont tous techniques . C'est l'équivalent d'un débat religieux . Le chemin le plus rapide vers l'échec est de présenter un argument qui n'est pas du point de vue du public, en l'occurrence les propriétaires d' entreprise .

Réponse plus longue: le changement dans les affaires est motivé par une seule et unique chose. Profitez de la ligne du bas.

... comment puis-je au moins convaincre mon patron de l'assemblage que des choses comme les variables fortement typées, les classes personnalisées et les champs privés ne sont pas une perte totale de temps et d'énergie?

Ils peuvent non seulement être une perte de temps et d'énergie, mais surtout ils vous coûtent de l' argent ! Vous devez être en mesure de montrer quantitativement que vos suggestions conduiront à un profit substantiel au fil du temps. Il ne suffit pas de prétendre que le code propre est «meilleur» , car le code propre coûte beaucoup plus cher à produire.

Si vous pouvez expliquer comment entraînera le coût d'utilisation de la technologie moderne ($COST + X) * TIME = $PROFIT, où se Xtrouve un nombre positif non trivial et TIMErelativement court, vous pouvez créer un scénario convaincant.

Une autre façon de calculer le ROI (Return On Investment)

Formule ROI

Si ce ROI / ROR est un nombre trivial, en particulier sur une longue période de temps, vous n'avez pas non plus beaucoup de business case.

Comment votre entreprise gagne-t-elle réellement son argent?

combien de lignes de code? combien de clients? combien de revenus par an ce logiciel génère-t-il? les revenus sont-ils principalement des contrats de support? ou de nouvelles licences? le marché cible est-il stable? expansion? contracter? le logiciel est-il un chef de file pour un autre produit beaucoup plus rentable?

Il est difficile pour un bon homme d'affaires d'ignorer l'argent déposé sur la table.

Bien sûr, vous devez être en mesure de sauvegarder vos déclarations avec des faits concrets. Cela signifie que vous devez être en mesure de fournir des chiffres réels qui montrent que vous comprenez vraiment l'entreprise réelle et pas seulement les détails techniques académiques.

Pas seulement les pros

Fournir également une analyse détaillée des risques et ce que ces risques feraient $COSTs'ils se produisaient, les convaincrait que vous avez un cas réaliste et ne vous contentez pas de pleurnicher que vous ne voulez plus faire de VB6.

Enseigner de nouveaux trucs aux vieux chiens

... Que puis-je dire pour souligner au mieux que le passage à .NET est une bonne décision si et seulement si notre paradigme de programmation actuel commence également à changer? ...

Changer ou ne pas changer le paradigme de programmation pour être aussi idiomatique que possible de la nouvelle technologie fait partie de l'analyse des risques. Mais il s'agit d'un argument distinct uniquement après avoir prouvé qu'il y a beaucoup d' argent à faire en effectuant un changement en premier lieu.

Les gens d'affaires ont tendance à écouter les analyses de rentabilisation tout comme les techniciens ont tendance à écouter les études de cas techniques. Tous vos cas dans votre question épousent des mérites techniques qui sont au mieux académiques dans votre situation.

Prédiction

Je fais quelques hypothèses ici.Application VB6, petite boutique, peu de développeurs, 2 développeurs / propriétaires d'entreprise plus âgés pointent vers une application de niche qui est probablement mature (les bogues et les solutions sont connus), assez complet et relativement stable, peu importe du "gâchis" la base de code est. Cela m'amène à croire que la petite base d'utilisateurs ne croît pas non plus de façon spectaculaire d'une année à l'autre, ce qui m'amène à la conclusion suivante.

Qu'il n'y aura vraiment aucune raison commerciale impérieuse de changer la direction technique avec cette application. Et le portage vers VB.Net est également une perte de temps parce que vous aurez juste le bordel mais maintenant avec plus de lui, et 2/3 de l'équipe de développement ne se consacre pas à l'apprentissage de quelque chose de nouveau. Bonne chance.

Glorfindel
la source
2
malheureusement, le coût de la réécriture (plus la formation, plus l'acquisition d'expertise) l'emporte généralement sur le coût de maintien de l'application en cours, au moins à court et moyen termes. À long terme cependant, vous courez le risque que votre réécriture elle-même doive être réécrite dans $ next_new_technology.
gbjbaanb
4
+1 débat religieux. Si OP veut travailler dans .NET, il devrait trouver un emploi dans une boutique .NET; Je dirais que passer de VB6 à .NET dans cette entreprise est un risque majeur avec des avantages discutables.
Kirk Broadhurst
Excellente réponse, sauf que vous avez survolé sa partie sur "La refactorisation est presque impossible, et tout changement nécessite trop de fouille dans le code, et une fois effectué, semble toujours introduire plus de trous." C'est la dernière déclaration qui a de la valeur pour l'entreprise. Démontrer qu'ils sont incapables de modifier la base de code sans coûter beaucoup d'argent à l'entreprise est un argument très valable conforme à votre réponse. Bien sûr, les mesures doivent être là pour sauvegarder cette déclaration.
@ GlenH7 personnellement, je pense que ce que vous citez est une opinion personnelle dramatique et une rhétorique parce que le PO ne montre aucune préoccupation autre que de pousser son opinion personnelle et son agenda. Ma réponse est de proposer qu'ils ne considèrent pas ce que serait le véritable moteur du changement et ce n'est pas ce qu'ils pensent ou ont considéré. Mon point est que les changements progressifs à long terme qui sont «coûteux» seront toujours moins chers que ce qu'ils proposent sur la même période de temps. Faire ce qu'ils ont dit et ce que vous citez est un argument commercial intenable.
A convenu qu'il y avait un certain degré de rhétorique dans la déclaration. Certaines boutiques (et non, ce ne sont généralement pas les petites) suivent les échecs / échappements, il est donc possible de générer des mesures précises sur les bogues. OTOH, la plupart des magasins ne conservent pas ces informations et ce n'est rien de plus qu'une "intuition" qui ne compte pas beaucoup dans une présentation commerciale.
11

J'ai un client dont le produit phare est écrit en VB6 et maintenu par 3 personnes. Je suis venu les aider car ils avaient un partenaire qui voulait qu'ils appellent un service web. C'est très difficile à faire à partir de VB6, mais facile à partir de VB.NET ou C #, et je leur ai écrit un assemblage .NET qui ressemblait à VB6 comme un composant COM pour qu'ils puissent l'appeler. Ils devaient ensuite offrir un service Web à quelqu'un. Ensuite, ils voulaient écrire un petit utilitaire autonome et il allait devoir crypter et décrypter certaines informations, et analyser du XML. Je leur ai appris à écrire cela en .NET. Au cours des 5 dernières années environ, de plus en plus de leur code est en .NET même si le produit phare n'a pas du tout diminué. Ils détestent certaines parties - chaque application en a - et où ils peuvent les retirer (maintenant la réduction commence) et les mettre dans des services ou des utilitaires séparés. Le reste sera converti en holus-bolus en .NET. Oui, mauvais noms de variables et tout - à mon avis, il y a beaucoup d'avantages à passer à .NET même s'ils ne changent pas leur paradigme de programmation actuel. Ceux-ci inclus:

  • vous pouvez utiliser la dernière version de Visual Studio avec une meilleure recherche, une meilleure Intellisense, des builds plus rapides, etc.
  • vous pouvez intégrer un système de contrôle de source décent (c'est-à-dire pas VSS)
  • il existe des bibliothèques fournies avec .NET gratuitement qui permettent de faire court de choses comme le cryptage, l'analyse XML, le traitement d'image, etc.
  • l'internationalisation et la localisation sont beaucoup plus faciles sur un projet .NET (cela, avec une demande d'un énorme client canadien qui aurait besoin des versions française et anglaise, peut avoir fait pencher la balance pour mon client)
  • les bibliothèques de contrôle peu coûteuses (Telerik, Infragistics, ComponentOne, etc.) vous offrent des capacités incroyables pour presque aucun coût
  • il sera beaucoup plus facile de trouver une aide temporaire, comme un étudiant d'été, dans des circonstances où le temps passé à leur enseigner le VB6 n'en vaut pas la peine (ne discutez pas de ce que vous pensez de l'enseigner à une nouvelle embauche à temps plein)
  • votre application sera compatible UAC, elle fonctionnera donc mieux sur Vista, 7 et 8. Elle n'aura pas besoin d'être exécutée en mode de compatibilité XP

Il y a plus, mais ça suffit sûrement?

La question des paradigmes de programmation, de la frappe forte, le compilateur est votre ami, l'encapsulation est votre ami et ainsi de suite (et je suis payé pour avoir ces opinions) entièrement séparé. Si vous voulez mourir sur cette colline, allez-y, mais vous allez mourir avec une copie de VB6 ouverte.

Kate Gregory
la source
Que voulez-vous dire par votre dernier paragraphe?
dlras2
6
Que «passer à .NET» et «programmons tous d'une manière différente» sont différents, et que si vous choisissez de combattre le deuxième, non seulement vous avez peu de chances de réussir, mais vous n'allez certainement pas les déplacer. NET avec cette approche. Je veux dire que je suis d'accord qu'ils devraient programmer d'une manière différente. Mais le meilleur chemin vers .NET est "comme ce que vous avez maintenant, mais avec de la sauce au chocolat et des paillettes!"
Kate Gregory
Je comprends l'avantage de les aborder comme des problèmes différents, mais le problème est que les aborder comme des problèmes distincts garantit simplement des programmes tout aussi ingérables, uniquement dans .NET.
dlras2
1
Vous aurez de meilleures applications (de meilleurs contrôles, plus de fonctionnalités) et de meilleurs processus (introduisez un contrôle de source et peut-être même un suivi des éléments de travail) avec des développeurs qui voient maintenant que cela peut être fait différemment et que la peine de changer vaut la peine à cause de ces grands avantages. Ils seront bien plus réceptifs à la prochaine chose que vous leur demanderez. Et "incontrôlable" n'est pas binaire. Le code ne sera pas génial, mais la situation sera toujours meilleure qu'elle ne l'était. Vous aurez également une crédibilité prouvée.
Kate Gregory
8

J'ai commencé avec un projet VB6 il y a quelques années (le système ERP personnalisé de l'entreprise) et je l'ai lentement migré vers .NET. C'est quelque part à moitié fait.

Tout d'abord, la conversion de VB6 en VB.Net est presque toujours une mauvaise idée (et j'ai fait beaucoup de recherches à ce sujet). Il y a trop de différences. De plus, si votre patron pense que VB.Net est "tout comme VB6", il se trompe complètement et vous devez changer rapidement ses perspectives.

Ma stratégie consistait à garder les deux bases de code séparées et à les maintenir séparément, puis à déplacer lentement des modules entiers de VB6 vers .NET, mais uniquement lorsqu'il y avait un changement important sur le point d'arriver à ce module, afin que nous puissions amortir une partie du coût. Même ainsi, la réécriture est une grosse tâche coûteuse et risquée.

Il y a deux façons d'intégrer le VB6 existant avec le nouveau code .NET (et vous le ferez probablement pendant très longtemps, donc vous feriez mieux de vous habituer à l'idée). La première façon d'y arriver a été de commencer à écrire de petits modules en .NET, puis de faire lancer l'application exécutable .NET par l'application principale VB6 en transmettant certains paramètres de ligne de commande. Cela a fonctionné, mais sachez que .NET a un temps de démarrage de 4 à 10 secondes, vous êtes donc limité dans ce que vous pouvez faire de cette façon.

Une fois que cela a commencé à devenir vraiment douloureux, j'ai inversé la stratégie et utilisé la méthode de cet article CodeProject pour afficher les formulaires VB6 existants dans mon application .NET principale. Une fois que j'ai emprunté cette voie, je n'ai pu subir qu'un seul coup de démarrage .NET et utiliser ClickOnce pour le déploiement, ce qui était une aubaine par rapport à la façon dont l'application VB6 était précédemment déployée.

Cela dit, voici les avantages que je trouve dans .NET par rapport à VB6:

  • Meilleurs cadres de persistance (NHibernate, EntityFramework, Linq2Sql etc.)
  • LINQ (je ne saurais trop insister sur son importance)
  • Génériques!
  • Syntaxe lambda (résout avec élégance toute une classe de problèmes comme le "trou au milieu")
  • De même Actionet Functypes
  • Réflexion (quelque chose que vous utilisez rarement, mais quand vous le faites, c'est énorme)
  • Un bien meilleur support pour les tests unitaires (bien sûr, je doute que vous convaincrez vos autres employés de faire des tests unitaires, mais vous devriez)
  • ReSharper (et autres outils de refactoring / profilage) (10 fois mieux que MZ-Tools)
  • Projets ClickOnce et / ou Setup / Installer
  • Projets de service Windows
  • Véritable prise en charge orientée objet (VB6 est basé sur COM et est vraiment mauvais dans ce département.)
  • Typage statique
  • Prise en charge de XML
  • WPF et Windows Forms (les contrôles de VB6 sont très limitatifs)
  • WCF
  • Beaucoup plus d'exemples de code en ligne
  • Exceptions (la gestion des erreurs du VB6 est absolument terrible en comparaison)
  • Intégration du contrôle de code source de Visual Studio
  • Decimal type (VB6 n'a jamais eu de type décimal de première classe, même s'il a CDec)
  • Support de première classe pour Guid
  • Prise en charge de première classe pour les entiers 64 bits
  • Meilleures bibliothèques de collections
  • ReportViewer
  • Bibliothèque parallèle de tâches multithread

Inconvénients du VB6:

  • Vous remarquerez une performance. Ce n'est peut-être pas suffisant de s'inquiéter, mais croyez-moi, vous le remarquerez. VB6 compile après tout en code natif.

Pour être honnête, voici quelques inconvénients à maintenir une solution combinée VB6 / .NET:

  • Maintenir deux couches d'accès aux données (en supposant que votre application VB6 en possède une)
  • Câblage supplémentaire pour exposer les services / formulaires / etc. d'un côté à l'autre
  • Deux fois plus de complexité / architecture à garder en tête

Maintenant, comme vous l'avez laissé entendre, vous devez vraiment reconstruire votre architecture à partir de zéro si vous commencez à écrire du code dans .NET. Cependant, il semble qu'aucune personne de votre entreprise ne soit familiarisée avec le monde de la programmation .NET et / ou Java, d'où proviennent de nombreux modèles et pratiques communs aux cadres des grandes entreprises.

Si vous prenez quelqu'un qui a l'habitude de faire glisser un bouton sur un formulaire, de double-cliquer dessus et d'écrire des chaînes SQL directement dans le gestionnaire d'événements click, et cela fonctionne pour eux, il est vraiment difficile de leur faire voir un avantage à suivre SOLID principes de conception. D'un autre côté, si vous mordez la balle et décidez que tout le nouveau code sera couvert à 90% ou plus par des tests unitaires automatisés, alors vous vous rendrez rapidement compte que c'est vraiment difficile à faire à moins d'adopter les principes de conception SOLIDE.

Il faut donc regarder de très près la réalité de la situation. Dans mon cas, j'étais le seul programmeur et j'étais déterminé à faire tester tout le nouveau code unitaire, même si je n'avais aucune expérience avec celui-ci. Je ne saurais trop insister sur la façon dont cela a eu un impact négatif sur ce que je pouvais faire pendant la première semaine, même les premiers mois. Pourtant, j'étais déterminé à le faire, et j'avais l'adhésion de la direction. La plupart des gens n'ont pas ce luxe. Maintenant, j'ai beaucoup de code et je viens de terminer une refactorisation majeure avec presque aucun problème.

En réalité, vous n'allez pas faire de tests unitaires, ce qui signifie qu'il est plus difficile de justifier des principes tels que l'injection de dépendance à vos coéquipiers. Vous allez devoir vendre .NET sur les mérites autres que les avantages architecturaux. Vous devez vous concentrer sur un meilleur support de bibliothèque et de meilleurs outils. C'est la seule chose qui résonnera. Je suggérerais ce qui suit dans votre démo:

  • Créez un projet Windows Forms (éloignez-vous de WPF et de xaml - c'est trop surprenant)
  • Se connecter à une base de données SQL (une base de données de test)
  • Utilisez Linq2Sql ou EntityFramework pour générer un modèle de données pour celui-ci
  • Créer une classe de référentiel qui a une méthode pour renvoyer une liste d'entités
  • Écrivez une requête dans cette méthode en utilisant linq, montrez l'intellisense
  • Faites remarquer que linq fonctionne sur tous les objets, pas seulement sur les entités
  • Montrez que si vous modifiez la base de données et régénérez le modèle, vous obtenez une erreur de compilation
  • Déposer un DataGridViewsur la fenêtre principale
  • Démontrer la liaison de données en remplissant la grille avec les entités du référentiel
  • Soulignez tous les trucs sympas de la grille qui sont tellement meilleurs que VB6
  • Créer un fichier .rdlc (rapport)
  • Créer un rapport simple dans Visual Studio
  • Déposez une visionneuse de rapports sur la fenêtre et rendez le rapport dans la visionneuse de rapports
  • (De toute évidence, vous devez installer ReportViewer et vous avez tout d'abord pratiqué)
  • Trouvez un problème de "trou au milieu", puis démontrez-le en créant une méthode qui prend Actionun paramètre. Faites-le d'abord en passant une autre méthode comme paramètre, puis soufflez leur esprit en passant un délégué anonyme en utilisant la syntaxe lambda
  • Démontrez les génériques en utilisant les classes List<T>et Dictionary<T1,T2>collection et montrez comment il crée du code fortement typé (VB6 a des choses similaires, mais il est typé dynamiquement)
  • Écrivez une foreachboucle qui est embarrassamment parallèle, utilisez System.Diagnostics.Stopwatchpour mesurer le temps qu'il faut pour exécuter, puis utilisez la bibliothèque parallèle de tâches pour changer la boucle en une Parallel.Foreachboucle et démontrer l'accélération, en supposant que vous êtes sur une machine multicœur.
  • Démontrer la possibilité d'ajouter un gestionnaire d'exceptions global (c'est quelque chose que VB6 ne peut pas faire)

Voilà ce que je ferais.

Scott Whitlock
la source
1

Il me semble que c'est une situation où vous devrez mettre votre chapeau de politicien au lieu de celui de programmation. Vous devez être très attentif à la façon dont vous présentez votre argument et à ce que vous ne contrariez pas votre public. Assurez-vous que vous montrez les avantages de .Net au lieu de montrer les inconvénients de VB. Faire valoir les inconvénients de VB mettra vos collègues dans une position où ils doivent défendre leurs décisions et les forcer à admettre qu'une langue dans laquelle ils investissent beaucoup est une mauvaise langue. Au lieu de cela, montrez-leur comment le passage à .NET augmentera les outils dont ils disposent et leur facilitera la vie.

Ma façon idéale de présenter cet argument serait de trouver une tâche ou un morceau de code dont tout le monde se plaint constamment et de le corriger à l'aide de .NET. Je ne suis pas particulièrement familier avec VB, mais voici une courte liste de tâches ennuyeuses qui seraient probablement rendues plus faciles en utilisant .NET au lieu de VB.

  • Manipulation de chaînes
  • Analyse XML
  • Recherche / Correspondance / Regex
  • Math (les nouvelles langues ont généralement des bibliothèques mathématiques plus rapides et plus complètes)
  • Construction / conception d'interface graphique

Choisissez l'une des tâches ci-dessus, ou une autre tâche spécifique aux projets sur lesquels vous travaillez habituellement, et asseyez-vous avec eux et écrivez en fait du code, à partir de zéro, qui gère le problème rapidement et facilement. En fait, montrer le processus d'écriture du code montrera les outils que les nouvelles versions de VS apportent à la table et prouvera que le passage à .NET ne rendra la vie de personne plus difficile.

Pour cela, vous devez absolument et positivement faire vos devoirs. Si vous ne savez pas comment fonctionnent les outils ou si le code ne fonctionne pas correctement, vous ne pourrez jamais les gagner à vos côtés.

TwentyMiles
la source
0

La première chose que vous dites est que VB6 n'est plus pris en charge par Microsoft. Bien que vous puissiez le faire fonctionner, vous devez comprendre que ses options à long terme sont nulles. Je ne sais même pas si les applications VB6 fonctionneront sur Windows8 ou si l'IDE lui-même fonctionnera sur Win8.

Donc, vous devez finalement faire une réécriture, et si c'est le cas, vous pourriez aussi bien commencer maintenant plutôt que plus tard, ce qui vous donne beaucoup de temps pour déterminer quelle nouvelle technologie vous souhaitez utiliser (alors que VB.NET semble idéal, c'est l'occasion d'essayer quelque chose de plus avant-gardiste, comme faire fonctionner l'application sur iPad).

À court terme, vous pouvez atténuer un peu le problème en introduisant de nouvelles sections en tant que composants COM pour l'application existante à utiliser, espérons que ces composants resteront lorsque l'inévitable réécriture se produira.

Je ne m'embêterais pas avec des arguments techniques sur pourquoi .NET est meilleur que VB6. Vous serez sur un argument perdant là-bas, la technologie en soi ne résout jamais les problèmes. C'est à vous de décider comment appliquer cette technologie, et si l'application VB6 résout des problèmes pour vous, il n'y a pas d'argument pour répondre. Vous pouvez parler de facilité de maintenance ou de disponibilité de personnel expérimenté, mais une fois que vous avez fait cela, vous admettez que votre personnel actuel n'a aucune expertise dans la nouvelle technologie et devra être formé, puis prendre un certain temps pour se mettre à niveau. avec ça. Vous devrez également répondre aux questions sur la façon dont un grand nombre de réécritures finissent pire que le projet d'origine (parfois en raison du manque d'expertise, parfois en raison de conceptions trop grandes).

gbjbaanb
la source
MS prendra en charge VB6 sur les PC Intel / AMD exécutant Windows 8. Vous ne pouvez pas écrire d'applications Metro dans VB6, mais vous ne pouvez pas non plus écrire d'applications Metro dans .NET. Les deux sont construits sur Win32. Au moins, le code écrit en C # pour .NET est censé être plus facile à porter sur WinRT pour fonctionner sur Metro, mais ne comptez pas sur le fait qu'il s'agit d'une simple reconstruction.
Scott Whitlock
0

Donnez-lui l'analogie "vieille voiture nouvelle vs voiture":

Oui, les deux vous amèneront probablement à votre destination. Cependant, la nouvelle voiture n'a pas besoin d'une manivelle , elle n'a pas besoin d'un starter , elle n'a pas besoin de cartes , ses roues ne se bloquent pas lorsque vous freinez brusquement, et enfin vous êtes beaucoup plus susceptible de vous éloigner d'un accident de voiture .

  • Le VB6 est hérité, c'est le nouveau COBOL
  • .NET a de meilleurs cadres
  • .NET a un meilleur outillage
  • .NET a de meilleures performances
  • .NET a un meilleur IDE
  • .NET a une meilleure prise en charge des langues
  • .NET a de meilleures fonctionnalités
  • .NET a un meilleur support communautaire
Nuit noire
la source
7
Les analogies avec les voitures échouent généralement, et la vôtre n'est pas différente. Une chose qu'une vieille voiture n'a pas une nouvelle voiture, c'est que c'est payé! Si vous possédiez un taxi et qu'il était payé et qu'il vous faisait plus d'argent qu'il n'en coûtait pour entretenir, et qu'une nouvelle voiture vous coûterait plus cher à payer qu'elle n'en a fait, que préféreriez-vous avoir en tant qu'homme d'affaires?
2
@JarrodRoberson C'est payé, mais ils ont tendance à freiner plus souvent, et après un certain temps ne fonctionneront plus. Les analogies avec les voitures sont excellentes. :)
Steven Jeuris
1
En fait, cette analogie avec la voiture est bonne. Le patron de l'OP a ce taxi en cours et l'OP devrait considérer cela en s'approchant de lui. Un changement complet ne peut pas se produire sur une journée, mais commençons à déplacer les bits, à changer les morceaux, l'un après l'autre.
ZJR
1
Le propriétaire de l'entreprise a conçu et construit lui-même ce produit. Il a très probablement payé plusieurs fois, et la maintenance est gratuite à toutes fins utiles car il n'y a que 3 développeurs et il est l'un d'entre eux. Comme je l'ai dit, les analogies avec les voitures sont terribles, celle-ci en particulier, et vous me faites valoir vos arguments qui sont complètement hors de propos. Au mieux, un nouveau logiciel lui fera au mieux un bénéfice d'année en année beaucoup plus faible et lui fera perdre de l'argent pour une période indéterminée au pire.
2
Les applications n'ont aucune entropie d'usure comme les articles physiques, elles ne s'atrophient pas non plus, donc elles ne s'usent pas et ne se décomposent pas quelle que soit leur utilisation, donc les analogies avec les articles physiques, en particulier les voitures, ne s'appliquent pas. Une application s'exécutera pour toujours tant qu'elle remplit sa fonction. Une entreprise dans laquelle j'ai travaillé il y a quelques années avait une vieille machine MS-DOS qui contrôlait les lecteurs de cartes sur les portes. L'idée que le logiciel s'use est stupide. Cela dit, un bon plan de fin de vie devrait toujours être en place. Même si ce plan est de ne jamais réécrire le logiciel.
0

Tout d'abord, je pense que vous devriez changer la question (pas sur stackexchange mais au sein de votre entreprise). Ce n'est pas tellement pourquoi .Net est meilleur que VB6, mais plus comme VB6 n'est plus supporté, il est temps de passer à autre chose. Demandez aux parties prenantes quelle devrait être cette «nouvelle» technologie? Ce n'est peut-être pas .Net.

Mais il semble que vous ayez besoin de passer à une nouvelle technologie ET de mettre en place de bons modèles et pratiques de programmation. La réponse à la deuxième partie est beaucoup plus difficile. Vous devez probablement le faire dans une petite section de l'application et prouver qu'elle en vaut la peine, c'est-à-dire qu'elle est plus stable, plus facile à entretenir, etc.

fader sombre
la source
-1

Dites à vos patrons d'écrire deux petites annonces. Un pour les développeurs C #. Un pour les experts VB6. Mettez-les là-bas. Comparez les résultats.

Erik Reppen
la source