Comment gérez-vous les mises à jour technologiques dans des projets à long course?

StackOverflow https://stackoverflow.com/questions/900634

  •  23-08-2019
  •  | 
  •  

Question

Supposons que vous êtes au milieu d'un long projet en cours d'exécution (course longue = plusieurs années) et, comme prévu, il y aura plusieurs choses à venir avec de toutes nouvelles versions. Il pourrait y avoir un nouveau Framework .Net avec de toutes nouvelles fonctionnalités (par exemple, Linq, Entity Framework, WPF, WF ...), un nouveau Visual Studio ou V.next de votre bibliothèque préférée de contrôle, un nouveau cadre Mock et beaucoup plus de choses . Quelles sont vos lignes directrices pour le traitement de ces mises à jour technologiques? Avez-vous les adoptez instantanément ou vous les ignorez jusqu'à la fin du projet? Avez-vous des lignes directrices différentes pour différentes choses (outils, cadres, soutien des choses)?

Était-ce utile?

La solution

Dans mon expérience, ces décisions sont toujours prises au cas par cas. Plusieurs facteurs sont pris en compte, y compris:

  1. Comment est mature la nouvelle technologie? Est-ce que l'organisation veut être à l'avant-garde travailler avec bleeding edge nouvelles technologies, ou il ne préfère travailler avec des outils éprouvés et des méthodologies?

  2. Qu'est-ce que les ensembles de compétences que vos gens ont? Sont-ils compatibles avec l'utilisation de la nouvelle technologie, ou est plus de formation nécessaire? Est-ce une meilleure productivité l'emportent sur les temps qu'il faut pour arriver à la vitesse?

  3. Quel investissement avez-vous dans la technologie existante? Quel est le coût du passage à la nouvelle technologie? Combien de réusinage et la réécriture de code est impliqué?

  4. Quelle est l'exigence? Est-il soutenu par le techology existant ou sont de nouveaux outils nécessaires pour répondre à l'exigence?

  5. Quelles sont les attentes de rendement? La nouvelle technologie offre une amélioration des performances qui ne peuvent pas être satisfaits avec l'ancienne technologie?

  6. Qu'est-ce que la culture technologique? L'organisation spécifique des fournisseurs (par exemple une boutique Microsoft)? Peut code open source utilisé?

  7. Quelle est la portée du projet? Est-ce un grand projet qui bénéficierait de l'appui des technologies telles que des cadres et des outils, ou est-ce un petit projet qui serait indûment alourdi et compliqué par ces choses?

  8. Comment la nouvelle technologie est prise en charge? Est-ce que le vendeur a une bonne documentation? Y at-il quelqu'un que vous pouvez parler si vous avez des problèmes? Ou êtes-vous une organisation qui a des gens qui savent comment résoudre les problèmes sans contrat de soutien?

  9. La technologie est confortable de travailler avec? Est-ce qu'il semble logique? Est-il propre et élégant? Est-ce que d'autres personnes semblent aimer? Sont d'autres personnes ayant des problèmes avec elle?

  10. La technologie est la dernière saveur de la semaine? At-il fait ses preuves dans le champ de bataille pour produire des résultats tangibles, ou est-ce seulement une religion?

  11. Combien de temps vous devez apprendre la nouvelle technologie et réglons les problèmes? Est-ce que les avantages l'emportent sur les coûts?

Comme un exemple très bref, j'ai choisi Lien vers SQL pour mon projet le plus récent, parce que le projet était suffisamment complexe pour justifier un ORM, L2S fonctionne bien et est léger, nous sommes une boutique Microsoft, et il est mon sens Entity Framework est pas tout à fait prêt pour le prime time (même si Microsoft dit que ce sera le feu à cadre pour l'avenir).

Autres conseils

Stick avec ce que vous avez commencé avec.

Un projet en cours d'exécution longue et large vient souvent avec une base de code énorme et très complexe. Toute modification ou mise à niveau vers une nouvelle version d'une bibliothèque peut ajouter des bugs de façon très subtile et inattendue.

De plus: Pour les grands projets et les outils utilisés bibliothèques devraient avoir été testées et évaluées dans la phase de conception. À moins que vous trouvez un show-bouchon ou un problème de sécurité, il est préférable de ne pas mettre à jour.

Rappelez-vous toujours: Ne pas changer de cheval au milieu d'un cours d'eau. : -)

Je dirais que différents facteurs la hauteur dans, comme -

  1. Dites un logiciel est presque en fin de vie, par exemple dernier Avril, Microsoft a pris sa retraite support principal pour SQL Server 2000, et votre produit utilise alors son plus sage d'aller pour la prochaine version de SQL Server dans votre prochaine version.
  2. Un autre facteur qui entre en jeu est la valeur que fait les nouvelles fonctionnalités de la dernière version d'un logiciel apporterait à votre produit. Il pourrait bien être le cas que la nouvelle version du framework .NET a quelque chose qui n'ajoute une valeur à votre produit, alors qui ne construit pas un dossier solide pour mettre à niveau.
  3. Le budget est également un facteur important. Je pense que vous devez mettre à jour des licences pour l'étape jusqu'à la prochaine version, sauf si vous êtes déjà partie de quelque chose comme l'assurance du logiciel.
  4. Formation à l'équipe est également un facteur. Si la dernière version va ajouter à votre produit, vous devrez former votre équipe ainsi.

Eh bien, il pourrait y avoir d'autres facteurs disent aussi. Ceux-ci étaient ceux du haut de ma tête. J'espère que ça aide.

hourras

Si vous parlez d'un exemple précis-cadre, le plus grand conseil que je vais vous donner est de garder le système et votre application séparée. Voilà pourquoi j'adore les modèles tels que Model-View-Controller -. Il garde votre code modulaire et signifie que vous pouvez mettre à jour les sections sans casser l'application comme un ensemble

Sur un plan plus pratique, si votre cadre a une Git ou dépôt SVN, extraira le répertoire commun « système » de la mise en pension, vous pouvez appeler « svn update » de temps en temps pour suivre les plus récentes et plus construit.

Je suggère que le projet ne dure pas longtemps. Développer l'application en petits morceaux avec des itérations tous les deux mois. De cette façon, comme nouvelle technologie sort, vous pouvez faire les changements nécessaires et mettre en œuvre les mises à jour que vous allez plutôt alors décider de réaménager l'ensemble de l'application. Comme vous le dites, en essayant de développer l'application tout comme les choses changent ne fonctionne tout simplement pas.

Comme autre affiche dit, il est certainement un cas par cas de base chose. Ce que vous pouvez mettre à jour et quand est déterminé principalement par la façon dont il est difficile ou facile à tester la nouvelle version du système. Avoir une suite de test automatisé complet pour votre application aide beaucoup avec cela.

En général, je tente de mettre à jour à la dernière version stable des bibliothèques, etc., aussi souvent que possible, car cela facilite l'entretien. Si vous ne mettez pas à jour, vous pouvez vous trouver rapiéçage ou travaillant autour des bugs dans la version de la bibliothèque que vous utilisez. Si vous mettez à jour moins fréquemment, chaque mise à jour sera plus de travail parce que vous avez plus de changements à traiter, et il a été plus depuis que vous avez touché le système, et donc vous vous souvenez moins à ce sujet.

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