Question

Il est plus d'une question générale sur la direction serait un meilleur investissement pour l'entreprise.

L'application cœur de métier de notre entreprise est écrit dans Visual FoxPro et est d'environ 9+ ans. La base de données est énorme et plus de 15 concerts la logique de base est complexe et de faire empirer les choses le modèle de données est terrible. Les deux gars qui l'a construit et ont conservé toutes ces années sont au moins dans leurs 50, donc inutile de dire la retraite ou peut-être la mort pourrait venir au sein de la prochaine décennie.

Cette application VFP anime toutes nos fonctions commerciales de base et exige que les services terminaux et citrix pour y accéder du monde extérieur. Nos applications web doivent interagir avec ce dernier via ODBC et nous sommes toujours des problèmes de performances avec elle. Les serveurs qui exécutent ce système sont également très vieux, comme serveur Win 2000 et se désagrègent.

Récemment, nous avons eu des réunions sur la mise à niveau des systèmes qui exécutent cette application de base ainsi que d'autres services comme le stockage de courrier électronique et le fichier. La plus grosse dépense mais achète du nouveau matériel de serveur, les licences d'exploitation, les licences de services Terminal Server, les licences Citrix etc pour résoudre certaines performances et les problèmes d'accès à l'extérieur nous ont actuellement aussi bien que juste en général nous apportant à ce jour sur nos systèmes.

Le prix va être dans le 55K $ à une fourchette de prix 65K $. Ainsi, en tant que développeur web mon point de vue est que c'est un énorme gaspillage d'argent! Ma solution serait d'investir cet argent dans la réécriture du système de base pour fonctionner sur la plate-forme .Net basée sur le Web. Cela permettrait d'éliminer la nécessité de Terminal Server et les licences Citrix ainsi que le matériel coûteux et gestion de la configuration pour l'exécuter sur. Je ne vois pas l'intérêt à investir ce genre d'argent dans un système vétuste qui devrait être sur son chemin de toute façon.

Je cherche à obtenir des arguments convaincants pour expliquer pourquoi cela est un gaspillage d'argent. Espérons qu'il y ait quelqu'un ici qui a fait face à ce genre de situation avant que cela puisse me donner quelques points de vue. La mise à niveau du matériel semble être la voie la plus facile à prendre car ils vont tout simplement un expert-conseil a et tout faire. Un projet de développement logiciel prendrait plus de temps, plus besoin de ressources et coûtent peut-être un peu plus d'argent.

Était-ce utile?

La solution

Chaque projet a besoin d'une analyse coûts-avantages. Si un investissement 60 000 $ pour un temps résoudra tous les problèmes pour les 10 prochaines années, il est (probablement) beaucoup plus économique que l'embauche d'une équipe de développeurs pour encore un an pour construire une nouvelle, un meilleur système.

Par contre, si elle est déjà coûte 50 000 $ / an dans l'entretien et ce coût en capital est juste pour maintenir le système en vie, et vous aurez besoin de passer un autre 60k $ en quelques années à partir de maintenant, il mérite une un examen sérieux par rapport à une nouvelle conception.

Ou vous pouvez prendre la route du milieu et commencer l'envelopper dans quelque chose d'opaque comme un service Web, puis progressivement échanger des composants avec de meilleurs composants internes (plus efficaces, plus maintenable, etc.). Beaucoup d'entreprises vont dans cette voie, car elle reporte les coûts initiaux d'une ré-écriture; le cas échéant, vous pouvez reporter les ressources ailleurs.

est juste S. Lott, bien - il est probable que vous ne serez pas en mesure de rivaliser seul sur le coût. Vous devez essayer de quantifier les risques associés à ces systèmes anciens - par exemple, combien cela va coûter à l'entreprise pour trouver et former les développeurs FoxPro qualifiés si les programmeurs d'origine décident de quitter (ou, pour utiliser le langage de tant de gestionnaires I ai rencontré, "courir par un bus") ...


Il suffit d'ajouter un peu plus à cette perspective: Avant .NET (et pendant quelques années après) j'ai mené la plupart de mes projets exclusivement à Delphes. À l'époque, il était vraiment un excellent choix pour le développement des entreprises. J'étais en fait la personne qui ne voulait pas « mise à niveau ». Après un certain temps, cependant, il est devenu évident pour moi et mes-ups plus que cette peur des gens en dehors de la société.

Les investisseurs, les auditeurs, tout le monde - ils ne pas l'idée que notre noyau actif TI a été fait dans une langue « obscure ». Bien sûr, Delphi n'a pas été / n'est pas vraiment obscur; il y a une balise « delphi » ici sur le SO avec un compte de 3340. Mais nous allons utiliser comme exemple SO - voici les comptes courants:

  • c# - 57293
  • .net - 30577
  • asp.net - 26600
  • java - 31023
  • vb.net - 5996
  • delphi - 3340
  • foxpro - 69
  • vfp - 27

Que pendant un certain temps ces chiffres s'enfoncent. Delphi, mon outil de choix à l'époque, a maintenant moins de 10% de la représentation de C #, et cela fait non-technophiles nerveux. Foxpro / VFP est même pas à 1%. Je ne sais même plus combien de fois je devais répondre à des questions comme:

  • Qu'est-ce qui se passe si le développeur principal (me) quitte ou se faire écraser par un bus?
  • Comment sera-il difficile d'embaucher / coûteux programmeurs dans ce domaine?
  • Que faire si le vendeur cesse de le soutenir? (Ce qui est presque arrivé)
  • Que faire si nous voulons obtenir une aide extérieure? Consultants? audits de sécurité?
  • Comment il sera facile de l'obtenir de travailler avec des produits en dehors?

blablabla, l'inquiétude ne vous inquiétez inquiétez pas, comment je me sentais à l'époque, et ce fut un produit qui n'a pas été vraiment que obscure. Dans votre cas, nous parlons FoxPro ici. FoxPro a appris à être presque comme COBOL; Bien sûr, il est toujours là, il y a des gens là-bas qui savent, mais qui commence un nouveau projet dans FoxPro aujourd'hui? Il est ennuyeux, il est carrément ghetto . VB6 commence à devenir ghetto, et VB / accès efficacement remplacé FoxPro il y a tant d'années.

Je suis évidemment être un peu mélodramatique, mais si je vous, c'est l'angle que je prendrais. Oubliez l'économie à court terme, oublier l'âge, et se concentrer sur l'obscurité du produit. Combien de réponses véritables, qualifiés, ils ne pensent qu'ils obtiendront s'ils ont mis un besoin ad pour un développeur FoxPro? Quel genre de salaire auraient-ils à offrir pour une position comme ça? Qu'est-ce que le chiffre d'affaires ressembler? Cela peut sembler toutà distance si ces deux développeurs ont été là depuis des années quelque 20, mais quand vous utilisez une entreprise de plusieurs millions de dollars, vous devez savoir que il est jamais une bonne idée de jalonner votre survie sur un ou deux employés - pas si vous pouvez l'aider .

Autres conseils

La réécriture à court terme par rapport à l'argument nouveau matériel ne peut être gagnée. Matériel et licences sont toujours moins cher qu'une réécriture. Et le matériel ainsi que la licence semble impliquer aucun risque.

Vous ne pouvez pas gagner sur l'argument de retour sur investissement. À moins que le système est trivial et vous êtes un génie, il sera toujours coûté 100K $ ou plus pour réécrire une application qui fait Finalité quelque chose. Pensez plusieurs années personne.

Vous pourriez gagner l'argument « de la dette technique ». Le changement est de plus en plus complexe, risquée et coûteuse. Plus ce code est perpétué, plus le risque et le coût accumule.

La vraie question est « commencer à réparer maintenant? » ou « attendre jusqu'à ce qu'il casse et souffrir plus tard? » Et cela n'a pas de réponse définitive -Évaluées $.

Vous ne pouvez pas rivaliser sur l'argent, donc vous devez rivaliser sur le risque, les caractéristiques, la croissance, la maintenabilité, l'adaptabilité, la conformité aux normes, la sécurité, la création de valeur unique pour chaque client, etc., etc.


« Nous cherchons maintenant à une plus grande base de clients et plus de données ». C'est un argument que vous pourriez être en mesure de gagner.

(je suis plus de 50 ans, je ne prévois pas de mourir dans un proche avenir. Cet argument ne gagne pas les cœurs et les esprits. A moins qu'ils ne sont plus de 80, vous ne pouvez pas vraiment utiliser âge sauf dans la façon d'obtenir votre argument ne tenait pas.)

Mise au point sur le coût (et le risque) de faire des changements.

Prouvez que vous avez une solution basée sur le Web qui apporte des changements moins coûteux et moins risqué.

De plus, creuser dans ce qui est là et trouver des pièces qui peuvent être remplacées par un framework web. Code vous n'écrivez pas est moins cher de maintenir le code que vous écrivez.

En général supplémenter un mauvais système ce tonnes de matériel est un mauvais plan, je dirais probablement qu'il vaut mieux # réécrivent, mais il est difficile de dire sans connaître les détails.

Gardez à l'esprit qu'une réécriture décente devrait améliorer les performances, la fiabilité et maintainabilty de sorte que les économies potentielles sont importantes et n'augmentent d'année en année, même si l'investissement inital est un peu plus.

Pour savoir si cela vaut la peine, vous devez calculer, en plus des coûts d'une ré-écriture:

  1. Documenter tout ce que le système fait actuellement, et reverse-engineering des exigences.

  2. unité d'écriture et des tests d'intégration pour tout ce qui existe actuellement. Cela a probablement doensn't existent déjà, mais devrait être.

  3. Le coût de maintien du nouveau système. Le nouveau système ne va pas éliminer les coûts de maintenance, réduire simplement. Combien allez-vous sauver?

  4. Le coût du matériel pour le nouveau système. Le nouveau système va devoir courir sur quelque chose.

  5. coûts de licences pour tout logiciel / etc. qui sont nécessaires pour le nouveau système. Est-ce que tout va être open source? Vous allez avoir besoin de plusieurs Visual Studio Test Editions pour vos développeurs et testeurs?

  6. Le coût de l'embauche de nouveaux employés pour faire le développement. Outre les coûts salariaux droits, il y a des frais de bureau. Le total pourrait être 300 000 $, pour dire 3 développeurs, le salaire de comptage, l'espace de bureau, matériel, licences, prestations de soins de santé.

  7. L'horizon temporel pour l'économie. L'économie ne va pas se produire immédiatement. Il va se produire à l'avenir. En attendant, ils doivent encore payer pour l'octroi de licences pour le système actuel, parce que quelque chose doit faire le travail jusqu'à ce que le nouveau système est mis en place.

  8. Problèmes de flux de trésorerie. En raison de ce qui précède, à court terme, ils vont avoir besoin de plus d'argent pour financer le développement. Les coûts réels sont plus élevés, parce qu'ils ont essentiellement pour obtenir un prêt, lever des fonds propres, ou qui ont un coût d'opportunité (ils aer vont devoir renoncer à une autre opportunité d'investissement pour poursuivre la réécriture).

  9. Le risque d'entreprise. Il peut y avoir un danger que la réécriture pourrait coûter plus cher, travailler pire,

Deux chiffres importants:

  • Nombre d'emplois "FoxPro" figurant dans le Craigslist de San Francisco en ce moment: 2.
  • Nombre d'emplois ".NET" figurant dans le Craigslist de San Francisco en ce moment. 252

Beaucoup d'autres points qui ont été mentionnés sont valables. Cependant, vous pouvez dépenser autant que vous voulez sur le matériel, mais le fait est que si quelque chose se brise et vous avez besoin d'aide, vous allez avoir un mal fou à trouver plus de gens à aider.

Sons comme un bon moment pour commencer à parler d'un migration¹ à des technologies plus récentes mieux prises en charge. (Et en 10 ans quand .NET est vieux chapeau, vous pouvez le faire tout recommencer:)

[1] et de faire évoluer le système, ne pas réécrire. Je suppose que votre système actuel Grew très organique en fonction des besoins du moment. Il n'y a aucun moyen que vous serez en mesure de remplacer complètement tout cela (au moins, non sans quelques années et quelques miillion dollars).

En tant que devloper VFP historique (plus de 20ans avec Foxpro / VFP, et ont encore des gens qui me demandent d'écrire / mettre à jour leurs systèmes avec VFP, pour diverses raisons), il est encore très puissant. Cependant, alors que la recherche et prendre beaucoup de mon POO et de l'expérience du développement et de travailler avec .Net, je trouve des choses en .Net beaucoup plus facile, en particulier le fort de type coulée. Cependant, faire un rapport de base exige que tous les transtypage forts à la base de données / tables structures / objets, et dans de nombreux cas jusqu'ici, un PITA faire.

L'étiquette de prix pour une ré-écriture est toujours considération importante, mais il est tout aussi l'effondrement de tout système ... quel que soit VFP, VB, Access ou autre. Je suggère fortement d'obtenir une société de conseil pour aider à la re-modélisation de votre système et agir peut-être en tant que chef de projet / mentor à votre personnel interne de programmeurs qui peuvent être en mesure d'offrir leurs talents même si elle peut nécessiter un certain formation dans le nouvel environnement de développement. De cette façon, vous pouvez obtenir une bonne base d'un talent fort dans la langue, mais garder certains coûts en utilisant votre propre personnel de programmation - mais vous pouvez avoir besoin d'embaucher du personnel de programmation supplémentaire. La courbe d'apprentissage de VFP à Net est là, et peut encore être une tête grattoir.

Il existe une variété d'entreprises là-bas qui étaient des spécialistes VFP qui ont ensuite migré leurs services au monde .Net et peut offrir un match parfait pour votre organisation ayant la connaissance historique et l'expérience professionnelle des deux mondes. Je sais qu'ils peuvent agir comme mentors aussi pour le développement de ces travaux.

Vous ne pouvez dire que c'est un gaspillage d'argent après avoir analysé le retour sur investissement - il dépendra en grande partie de combien coûte de réécrire le système

.

erreur classique sur JOS - « système est un gâchis, nous allons réécrire ».

Il sera comme regarder ce vieux bâtiment et voir un cure-dent et de se demander pourquoi il est là. Vous figurez n'est pas nécessaire, et retirez-le.

Soudain, le bâtiment s'effondre autour de votre tête:)

Il est peut-être une meilleure idée à

  1. Pensez à réécrire certaines parties du système pour une meilleure maintenabilité.

  2. L'optimisation du système pour une meilleure performance.

  3. les parties spécifiques Abstracting Foxpro, il pourrait être plus facilement converti en une autre technologie.

Cette approche progressive réduirait le risque, et apporter des améliorations à court terme.

Il n'y a pas de solution miracle ici pour la compagnie. La seule façon d'être sûr est de prendre l'avantage sur un nouveau serveur pour obtenir la stabilité et les avantages vitesse qui apporte au logiciel critiques pour l'entreprise existante. Puis, une fois stationné pendant quelques années réfaisez ingénierie de la chose sur une autre plate-forme .NET comme si c'est ce que vous voulez faire. Ayant à l'esprit que vous devrez migrer les données VFP dans la nouvelle structure de base de données à un moment donné.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top