Question

Lorsque vous envisagez une mise à niveau dans un outil de développement, quelle importance accordez-vous à la compatibilité en amont? Souhaitez-vous toujours acheter Visual Studio 2010 si des modifications importantes de votre code source étaient nécessaires? Où est le point de basculement pour vous en termes de compatibilité ascendante avec les nouvelles fonctionnalités?

Était-ce utile?

La solution

Bien que vous ayez posé cette question du point de vue du développeur, je pense que ce serait une question plus intéressante en ce qui concerne le logiciel que vous développez. Je vais donc répondre à cette question à la place. :)

Le matériel et les logiciels compatibles avec les versions antérieures (et, plus important encore, compatibles avec les versions futures) offrent un sentiment de sécurité à vos utilisateurs, en particulier lors de l’achat ou de la mise à niveau de plates-formes telles que Windows. Si rien d'autre, Windows est connu pour son attention méticuleuse à la compatibilité ascendante. Vous pouvez exécuter des programmes écrits il y a plus de dix ans sur Windows Vista avec des problèmes mineurs, à condition qu'ils soient "bien écrits". (c’est-à-dire, n'utilisez pas d'API non documentées).

D'un autre côté, une compatibilité stricte avec la compatibilité ascendante peut vous lier les mains lorsque vous essayez d'introduire de nouvelles fonctionnalités ou de révolutionner la plate-forme. Apple savait que son système d’exploitation était en train de mourir et, dans l’une de ses décisions les plus audacieuses, elle a acheté NeXT et a décidé de faire de NeXTSTEP le nouveau MacOS. L'un des éléments clés qui a vendu les gens lors de la transition était la couche rétrocompatible Classic. Encore une fois, lorsque Apple a décidé de passer aux puces Intel, un mécanisme permettant de faire fonctionner des applications PowerPC sur Intel, appelé Rosetta, associé aux fichiers binaires universels, permettait aux utilisateurs de passer librement de PowerPC à Intel sans craindre la perte d’applications.

Ce qui est intéressant, c’est qu’avec la transition vers Intel, l’environnement classique a disparu, mais tout le monde s’en fiche, car ils avaient déjà 5 ans pour s’éloigner de Mac OS 9. Il est donc possible de supprimer à terme le support des systèmes existants aussi longtemps. vous disposez d'un moyen facile de migrer vers le nouveau système et de laisser à vos utilisateurs suffisamment de temps pour le faire.

Autres conseils

Dans un outil de développement, s'il ne fournit pas une compatibilité ascendante totale avec mon code précédent, je ne l'achèterai pas et je doute que quiconque puisse le faire. Franchement, ça ne sert à rien. Si j'ai déjà un compilateur qui fonctionne pour construire mon code source en un code exécutable qui fonctionne pour moi, alors je l'utiliserai. Pourquoi prendre la peine de changer mon code pour se conformer à ce qui est évidemment pour le fabricant d'outils une norme? S'ils imposent des modifications de code source d'une version à l'autre, pourquoi s'embarrasseraient-ils de rendre la version suivante compatible?

Une compatibilité ascendante à 100% avec la source est requise. La seule situation où ce n'est pas une exigence totale est lorsque les bits incompatibles sont des extensions; C'est-à-dire les modifications d'API spécifiques à l'outil, telles que les plug-ins Eclipse, etc. Même dans ce cas, j'aimerais une compatibilité, mais je me rends compte que cela ne peut pas être complètement attendu. Mais si vous fournissez une API pour le développement d'applications / outils de base et que vous ne vous souciez pas de maintenir la compatibilité, Eh bien, dans ce cas, vos outils ne vous intéressent clairement pas et je ne les paierai pas sérieusement.

Pour les projets domestiques, la compatibilité en amont n’est pas vraiment importante. Pour le bureau / l'entreprise, c'est absolument essentiel.

Cela dépend des environnements à prendre en charge et des outils tiers utilisés, compatibles ou non.

Par exemple, là où je travaille, nous avons mis à niveau tout le monde de VS2005 à VS2008, à l'exception de notre groupe BI, car les outils de BI de SQL Server n'étaient pas compatibles avec VS2008. Une fois mises à jour, elles sont passées à VS2008.

Lorsque vous examinez spécifiquement les VS, gardez à l'esprit que VS2008 peut cibler .NET 2.0, .NET 3.0 et .NET 3.5. L'astuce consiste à réaliser qu'il cible réellement .NET 2.0 SP1 et .NET 3.0 SP1. Par conséquent, la mise à niveau de l'EDI ne devrait pas vous obliger à modifier votre code.

En général, si vous développez une plate-forme qui sera constamment utilisée par de nombreux autres utilisateurs pour créer leurs propres produits, et que vous prévoyez de développer l’application pendant longtemps, c’est important. Voir PHP, Python, Eclipse et d'autres projets open source qui accordent beaucoup d'importance à la compatibilité ascendante. Il est également important de développer des services ou d’autres API ouvertes utilisées dans l’architecture à plusieurs niveaux. Vous pouvez faire en sorte que toutes les applications d’une entreprise soient interrompues à tout moment lorsque vous modifiez vos services.

Maintenant, si vous créez une application de film rétractable ou une application commerciale, ce n'est pas si important, car chaque version est distincte de ses prédécesseurs.

Étant donné que de nombreux changements se produisent dans le domaine du logiciel et du matériel, je pense que c'est une bonne idée d'être ouvert à de nouvelles modifications et à de meilleurs outils pendant que vous concevez votre solution. Par exemple, nous n'avions pas de processeurs multicœurs ni de cartes graphiques haut de gamme ou de cartes réseau dans les années 90. Alors, naturellement, les objectifs d'optimisation des compilateurs et des outils étaient différents. Mais en même temps, Visual Studio , les outils similaires font de leur mieux pour prendre en charge les anciens frameworks et applications.

Je pense que si nous aspirons à un monde meilleur, nous devrions être ouverts à un changement constant jusqu'à ce que cette industrie atteigne une maturité optimale. (Peut ne pas arriver dans notre vie si :))

Définissez les "modifications significatives". Je préférerais que les modifications soient apportées avec un outil de recherche soigneusement conçu. remplacer " même s'ils étaient étendus.

Cependant, c’est ce que je ferais. Toute entreprise pour laquelle je travaille craindrait toute modification du code existant.

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