Y a-t-il des raisons de ne pas accepter un logiciel livrable en tant que machine virtuelle?

40

C'est une question de logistique, pas une question technique.

Mon entreprise a sous-traité certains logiciels intégrés. Plus précisément, nous avons engagé un fournisseur pour développer un système intégré, car nous ne disposons pas des connaissances internes suffisantes pour le faire nous-mêmes (nous ne disposons que de développeurs d'applications de bureau).

Les sous-traitants ont donc terminé le logiciel et ils ont demandé s’ils pouvaient nous le livrer sur une machine virtuelle. La machine virtuelle est une machine Windows 8 contenant l'EDI CodeWarrior préconfiguré avec le code source sous forme de projet CodeWarrior. L'idée est que cela nous permettra d'apporter des modifications de code au sein de la machine virtuelle déjà configurée pour le développement ultérieur de ce projet.

Y a-t-il des inconvénients à le faire, par opposition à leur demander de nous expliquer comment configurer nos propres machines de développement pour apporter des modifications de code au projet? Le seul problème que je peux prévoir est le ralentissement de la machine virtuelle et le temps nécessaire pour reconstruire le projet lorsque nous apportons des modifications de code. Par contre, j'aime bien l'idée de créer un environnement de développement de système intégré préconfiguré pour ne pas avoir à ajouter un autre IDE sur la machine de développement de mon application de bureau.

Je ne peux pas vraiment penser à une bonne raison de ne pas accepter un produit livrable de machine virtuelle, mais je voulais simplement le faire fonctionner par cette communauté au cas où quelque chose me manquerait.

CFL_Jeff
la source
24
La licence du logiciel Windows sur la VM vient à l’esprit.
Robert Harvey
6
@RobertHarvey Une version complète de Windows inclut des droits de licence pour deux machines virtuelles. Et si vous avez une licence pour Windows Datacenter, vous pouvez exécuter autant de machines virtuelles que ce serveur peut prendre en charge, consultez le site Web d'attribution de licence de virtualisation pour plus d'informations.
Michael Brown
19
C'est un moyen de contourner le "Fonctionne sur ma machine". problème.
MichaelHouse
2
Je soupçonne que le code est bogué, mais ne fonctionne que sur une machine. Les développeurs ne savent pas ce qu'ils font et ne peuvent pas recréer la configuration qui la fait fonctionner. Ils ont donc créé une image disque et l'ont placée dans une machine virtuelle.
MGOwen
Est-ce que votre licence couvrirait les VM qui vous ont été attribuées par une partie externe (éventuellement sans le droit de distribuer des VM Windows)?
Burhan Ali

Réponses:

66

Le problème que je vois est que la connaissance de la configuration et de la configuration de la machine virtuelle n’est pas interne, et si la configuration n’est pas triviale, vous ferez confiance à l’autre société lorsque le logiciel doit être configuré pour différentes versions de le système d'exploitation / bibliothèques / matériel / peu importe. Accepter la machine virtuelle est très bien pour être opérationnel plus rapidement, mais je voudrais insister sur la procédure à suivre pour configurer votre propre système pour une maintenance future.

FrustratedWithFormsDesigner
la source
9
+1, la partie effrayante est le problème de "l'image dorée" que vous pourriez avoir dans six ans.
Wyatt Barnett
8
Si l'entrepreneur peut également fournir un guide d'installation (qui devrait être testé), cela ne me poserait aucun problème.
Jamie
2
@Jamie: Mais si vous testez le guide d'installation, la machine virtuelle n'est plus nécessaire,
mattnz
10
Le terme est "procédures de démarrage à froid", ce qui signifie que si vous êtes parti d'une machine froide, que devez-vous faire pour obtenir une image en cours d'exécution? Je suis aussi dérangé par le fait qu'ils ont peut-être modifié la configuration, installé des logiciels non documentés ou même inclus une porte dérobée. Je voudrais savoir tout ce qui est sur cette machine.
ipaul
Je suis d'accord avec cette réponse aussi. Cela convient pour une démonstration de ce qui a été fait, mais si j'étais sur le point d'accepter ce produit, je demanderais un script document / shell décrivant / effectuant la configuration de l'environnement.
Tsvetomir Dimitrov
36

Je ne vois pas d'inconvénient majeur à cela, mais je dirais qu'accepter une VM avec le code source dessus devrait impliquer la même paranoïa que d'accepter une expédition d'une machine avec le logiciel et l'environnement de développement installé. Assurez-vous qu'il n'y a rien de mal installé sur la VM avant de la lancer dans un environnement ayant accès à votre réseau interne.

Si / quand vous avez la VM en marche, vous devriez être capable de plier le code source dans vos référentiels de code normaux, comme vous (probablement) l'auriez fait avec juste une archive de code source livrée.

Vatine
la source
11
Ce n'est pas le seul +1 que j'ai donné aux réponses à cette question, mais la seule réponse qui mentionne l'introduction du code dans le contrôle de version interne. J'espère que la machine virtuelle comprend un dépôt aussi bien, mais je ne parierais pas là - dessus, et il pourrait avoir que la version publiée du code.
Mike Sherrill 'Cat Recall'
18

Je serais inquiet qu'il y ait quelque chose configuré dans la machine qui est non documenté, difficile à reproduire ou pas acceptable dans votre configuration standard.

Euh, mais je ne considère pas vraiment le développement effectué jusqu'à ce que le projet puisse être démontré pour construire à partir des machines de développement standard et déployé sur les serveurs / clients de base.

Facture
la source
1
+1 sur s'assurer que la VM est juste une fonctionnalité de commodité. Sinon, vous pourriez vous retrouver avec quelque chose qui ne repose que sur cette machine virtuelle, car elle repose sur une version non documentée du compilateur ou de l'éditeur de liens, ou quelque chose d'aussi horrible.
ptyx
10

Dans certains de mes projets, j'ai dû me battre pour que les logiciels soient livrés de cette façon. C'est un excellent format.

Assurez-vous:

  1. Obtenez le code source de chaque version fournie par l'entrepreneur et fusionnez-le dans votre propre système de contrôle de source
  2. Obtenez de la documentation sur la configuration de l'environnement de la machine virtuelle et pouvez la reproduire en interne. Ajoutez également la documentation à votre contrôle de code source

Bénéfices supplémentaires:

  1. Si vous archivez les versions au format VM (enregistrez le fichier .vhd ou quelque chose du genre), il est beaucoup plus facile de les installer plusieurs années après, même si l'équipe d'origine est fragmentée ou partie.
  2. Il est beaucoup plus facile de faire fonctionner différentes versions côte à côte.
  3. Avec certaines intégrations VMWare (cela peut aussi être possible avec HyperV), vous pouvez les intégrer automatiquement dans une version de CI.
  4. Cela permet au développeur de gagner du temps (au début), car la configuration de l'environnement est faible, voire nulle.

Je dirais y aller.

Zachary Yates
la source
Hmm. Bons points.
MGOwen
1
Le temps de configuration de l’environnement est peu coûteux par rapport à la lenteur des performances dans le temps. Nous avons une machine virtuelle comme celle-ci sur laquelle nous produisons des versions, mais pour une utilisation quotidienne, la méthode de la machine virtuelle est trop lente et vous ne pouvez utiliser qu'un seul écran (dans la plupart des cas). Cela ressemble plus à la mort par 1 000 coupes par rapport à une bonne décapitation propre.
boatcoder
@ Mark0978 Je pense que le n ° 4 est une situation de YMMV, il nous a fallu trois semaines pour procéder à l'ingénierie inverse d'une configuration d'environnement à partir de la documentation, car nous n'avions plus accès à la configuration du serveur d'origine (IIS 6+, un ensemble de bibliothèques tierces / gestionnaires http). . Mon point est qu’avoir un exemple de travail est utile. La plupart des critiques que j'ai entendues sont généralement dues au fait que l'hôte VM n'est pas assez bon. Haha- 'bonne décapitation propre.'
Zachary Yates
1
J'y pensais en fait comme une pénalité pour l'environnement de développement (ce qui pourrait ne pas être ce qui était demandé), ralentir le développeur tout le temps n'en vaut tout simplement pas la peine. Tous nos serveurs de production fonctionnent sur des ordinateurs virtuels hébergés dans un hébergement, mais ce sont tous des serveurs non graphiques.
boatcoder
1
@ Mark0978 J'aime la façon dont ce gars écrit. Je suppose que je n’ai pas bien expliqué mon point de vue. Je ne préconise pas de travailler sur une VM lente. Lorsque vous avez un jour ou deux de travail à faire et qu'il vous faut trois semaines pour configurer l'environnement, utilisez simplement la machine virtuelle. Vous devez être conscient de toute la situation.
Zachary Yates
6

C'est vraiment le genre de chose qui aurait dû être réglée dans le contrat initial. Ils peuvent déjà aller au-dessus et au-delà. Je ne m'attendrais pas à recevoir des instructions de configuration sans payer un supplément, car cela demande plus de travail de leur part.

J'ai été dans une situation similaire à la vôtre avant. Notre environnement de développement est Windows / Cygwin et nous avons passé une semaine chez le fournisseur pour écrire du code d’interface avec nous. Ils utilisent principalement Linux, nous nous sommes donc organisés avec des machines virtuelles Linux pour la semaine où ils étaient ici. Cela a très bien fonctionné pendant leur séjour et nous n’avons eu que peu de difficultés à nous transférer sur Cygwin après leur départ.

Il me semble que vous sous-estimez vos propres capacités. Configurer un IDE n’est pas si difficile, même sans exemple de travail. Je serais plus préoccupé par la violation des contrats de licence Windows et CodeWarrior. Si vous possédez une licence appropriée, vous devriez pouvoir obtenir une assistance de Freescale pour tout problème d’installation.

Karl Bielefeldt
la source
4

Comme FrustratedWithFormsDesigner l'a dit , vous devez savoir comment configurer la machine pour vous-même. Cependant, j'aimerais ajouter que vous pourriez éventuellement leur demander de fournir un script qui configure la machine pour vous, plutôt que la totalité d'une machine virtuelle. Si le script est suffisamment bien écrit, vous aurez une documentation exacte et à jour sur la configuration de la machine (en lisant le code source). Le script le fera pour vous, ce qui vous fera gagner du temps chaque fois que vous avez besoin d'un ordinateur. nouvelle machine.

Chocolatey est un outil que je teste pour aider à normaliser / automatiser la configuration d’une nouvelle machine Windows .

Chocolatey NuGet est un gestionnaire de paquetages, un peu comme apt-get, mais conçu pour Windows.

Vous pouvez potentiellement créer vos propres packages Chocolatey assez facilement, puis créer un script PowerShell qui installera et configurera pratiquement tout.

Phil
la source
Si je comprends bien, il existe un outil appelé Vagrant spécialement conçu pour cette tâche.
M. Dudley
3

Un environnement fonctionnant lentement ne devrait pas être un problème, il suffit de lui envoyer de la mémoire et du processeur. La surcharge de la VM moderne pour le type de bureau, comme la plupart des logiciels, est très petite, elle est économisée à de nombreuses reprises car elle n’a besoin d’aucune configuration lors du changement de matériel.

Hyde
la source
3

J'aurais pensé que le contrat de développement stipulerait les livrables et les obligations de l'entrepreneur envers vous.

Au minimum, je demanderais une explication et une documentation de la manière dont la configuration fonctionne et de ce qui est vital au point que vous pouvez recréer le projet, le construire et le déployer vous-même.

Pour ce qui est d'avoir quelque chose de prêt, je pense que le VM est parfaitement acceptable.

Je voudrais certainement pousser pour la documentation si. Je n’en hésiterais pas car, à moins que vous ne compreniez parfaitement le fonctionnement de ce système, vous risqueriez de tomber dans un baril à l’avenir, en particulier si vous devez appuyer vous-même la demande.

Sam
la source
Malheureusement, je n'étais pas dans cette entreprise lorsque le contrat a été passé. Je n'y ai pas accès parce que je ne suis pas membre de la direction, alors je ne suis pas sûr de ce que cela stipule.
CFL_Jeff
2

Même pour les systèmes embarqués développés en interne, il est important de disposer d’un document décrivant la procédure de configuration de l’environnement de compilation. Vous devez également archiver tous les fichiers binaires / installer les outils et les bibliothèques nécessaires à la configuration de l'environnement de construction.

Keith Nicholas
la source
1

Je n'accepterais pas VM comme livrable de code car cela rend difficile la mise à jour. Vous devez avoir cette machine virtuelle comme une image en or pour effectuer le travail de développement. Cela rend plus difficile de faire des mods. Un développeur doit reformater ou obtenir une nouvelle machine, il doit installer une machine virtuelle et extraire la machine virtuelle.

Lorsque vous apportez des modifications, vous devez valider une nouvelle "copie d’or" de la machine virtuelle. Pourquoi voudriez-vous gérer un gros fichier binaire comme celui-ci dans le contrôle de code source? Il n'est pas possible de se différencier, et dans mon expérience d'essayer de contrôler le code source, une copie dorée de tout élément binaire ne se termine pas bien. À moins que vous ne puissiez contrôler strictement qui édite la copie d’or, vous obtiendrez des éléments non documentés dont personne ne sait rien.

Si un développeur souhaitait me livrer un logiciel sous cette forme, je trouverais un autre développeur. Cela me dit qu'ils ne sont pas assez professionnels pour écrire leurs dépendances ou tout au moins les documenter.

Je les aurais soit:

  1. Créez un fichier texte qui sera archivé dans le contrôle de source avec le code. Il répertorie toutes les dépendances dont vous avez besoin pour que le projet soit opérationnel et qui ne font pas partie du référentiel de contrôle de code source (par exemple, CodeWarrior, quels que soient les outils de ligne de commande ou les autres applications externes dont vous dépendez).

  2. Un script pour installer les dépendances. Puisque vous êtes sous Windows, il ne devrait pas être trop difficile de créer un script Chocolatey pour automatiser la configuration de l’environnement de développement. Toutes les dépendances que vous avez qui ne sont pas déjà des paquets chocolatés, vous pouvez les créer. Par exemple, vous pouvez installer des outils commerciaux lourds tels que Visual Studio et SQL Server via Chocolatey. Ces packages installent les versions d'évaluation complètes qui peuvent être déverrouillées en saisissant une clé de licence. Il est donc possible que la même chose soit faite avec CodeWarrior et toutes les autres dépendances dont vous disposez pour votre environnement de développement.

Peut-être que votre développeur est vraiment assez bon pour que vous souhaitiez toujours travailler avec lui / elle, mais n'est pas bon dans ce domaine d'automatisation. C'est bien aussi, si c'était le cas, je ferais moi-même la partie automatisation, en travaillant avec lui / elle pour identifier les dépendances et faire fonctionner le script, ou bien je chercherais un autre développeur doué pour l'automatisation. . Cela devrait être fait au début du projet. Une copie vierge et nue d'une machine virtuelle Win8 serait tout de même utile car vous pouvez l'utiliser pour tester votre script Chocolatey.

Giscard Biamby
la source
0

Je ne pense pas que cela pose un problème, j'ai vu des systèmes de gestion de contenu s'installer en tant que machines virtuelles et, d'après ce que vous dites, les sous-traitants vous ont donné la possibilité de gérer et d'étendre l'application vous-même.

Cependant, comme d'autres afficheurs l'ont noté, je voudrais faire deux choses. Tout d'abord, assurez-vous que lorsque vous installez la machine virtuelle, placez-la sur une machine distincte de votre réseau. Vous ne voudriez pas télécharger un fichier EXE inconnu d’Internet et l’installer sur votre ordinateur.

Deuxièmement, si possible, conservez cette copie isolée comme référence pour définir la version interne. Je dis si possible parce que je ne connais pas les pressions commerciales que vous subissez. En fin de compte, ce sont les départements informatiques et les programmeurs de votre entreprise qui seront responsables de cette application. Donc, plus vous en savez, mieux c'est.

Daniel Hollinrake
la source