Gibt es Gründe, eine Software, die als virtuelle Maschine geliefert werden kann, nicht zu akzeptieren?

40

Dies ist eine Frage der Logistik, keine technische Frage.

Mein Unternehmen hat einige Arbeiten an eingebetteter Software ausgelagert. Insbesondere haben wir einen Auftragnehmer für die Entwicklung eines eingebetteten Systems für uns bezahlt, da wir nicht über ausreichende interne Kenntnisse verfügen, um dies selbst zu tun (wir haben nur Entwickler von Desktopanwendungen).

Die Auftragnehmer haben die Software fertiggestellt und gefragt, ob sie sie in einer virtuellen Maschine an uns liefern darf. Die VM ist ein Windows 8-Computer, der die vorkonfigurierte CodeWarrior-IDE mit dem Quellcode als CodeWarrior-Projekt enthält. Die Idee ist, dass wir auf diese Weise Codeänderungen in der VM vornehmen können, die bereits für die weitere Entwicklung dieses Projekts konfiguriert ist.

Gibt es Nachteile, die sich daraus ergeben, als dass sie uns durch die Konfiguration unserer eigenen Entwicklungsmaschinen führen, um Codeänderungen am Projekt vorzunehmen? Das einzige Problem, das ich vorhersehen kann, ist, dass die VM langsam läuft und es lange dauert, das Projekt neu zu erstellen, wenn wir Codeänderungen vornehmen. Auf der anderen Seite gefällt mir die Idee, eine vorkonfigurierte Entwicklungsumgebung für eingebettete Systeme zu erhalten, damit ich auf meinem Desktop-Anwendungsentwicklungscomputer keine weitere IDE hinzufügen muss.

Ich kann mir keinen guten Grund vorstellen, ein VM-Ergebnis nicht zu akzeptieren, aber ich wollte es nur von dieser Community ausführen lassen, falls etwas fehlt.

CFL_Jeff
quelle
24
Die Lizenzierung der Windows-Software auf der VM fällt mir ein.
Robert Harvey
6
@RobertHarvey Eine Vollversion von Windows enthält Lizenzrechte für zwei virtuelle Maschinen. Wenn Sie eine Lizenz für Windows Datacenter besitzen, können Sie so viele VMs ausführen, wie dieser Server unterstützen kann. Weitere Informationen finden Sie auf der Website zur Virtualisierungslizenzierung .
Michael Brown
19
Das ist eine Möglichkeit, die "Funktioniert auf meinem Computer" zu umgehen. Problem.
MichaelHouse
2
Ich bin misstrauisch, dass der Code fehlerhaft ist, aber nur auf einer Maschine funktioniert. Die Entwickler wissen nicht, was sie tun, und können das Setup, mit dem es funktioniert, nicht neu erstellen. Sie haben einfach ein Festplatten-Image erstellt und es in eine VM gestellt.
MGOwen
Würde eine Lizenz, die Sie haben, VMs abdecken, die Sie von einer externen Partei erhalten haben (möglicherweise ohne das Recht, Windows-VMs auszuhändigen)?
Burhan Ali

Antworten:

66

Das Problem, das ich sehe, ist, dass die Kenntnisse zum Einrichten und Konfigurieren der virtuellen Maschine nicht intern vorhanden sind. Wenn die Konfiguration nicht trivial ist, verlassen Sie sich auf das andere Unternehmen, wenn die Software für verschiedene Versionen von konfiguriert werden muss das Betriebssystem / Bibliotheken / Hardware / was auch immer. Das Akzeptieren der VM ist in Ordnung, um schneller einsatzbereit zu sein, aber ich würde darauf bestehen, eine Einführung in die Konfiguration Ihres eigenen Systems für zukünftige Wartungsarbeiten zu erhalten.

FrustratedWithFormsDesigner
quelle
9
+1, der beängstigende Teil ist das "goldene Bild" -Problem, das Sie in sechs Jahren haben könnten.
Wyatt Barnett
8
Wenn der Auftragnehmer auch eine Installationsanleitung bereitstellen kann (die getestet werden sollte), hätte ich damit kein Problem.
Jamie
2
@Jamie: Aber wenn Sie die Setup - Anleitung testen, gibt es keine Notwendigkeit mehr für die VM,
mattnz
10
Der Begriff ist "Kaltstart", dh wenn Sie von einer Kaltmaschine gestartet sind - was müssen Sie tun, um zu einem laufenden Image zu gelangen? Es stört mich auch, dass sie möglicherweise Änderungen an der Konfiguration vorgenommen haben, Software installiert haben, die nicht dokumentiert ist, oder sogar eine Hintertür eingebaut haben. Ich würde alles wissen wollen, was auf dieser Maschine ist.
Ipaul
Ich stimme auch dieser Antwort zu. Es ist in Ordnung für eine Demonstration dessen, was getan wurde, aber wenn ich dieses Produkt akzeptieren würde, würde ich ein Dokument / Shell-Skript anfordern, das die Einrichtung der Umgebung beschreibt / ausführt.
Tsvetomir Dimitrov
36

Ich sehe keinen massiven Nachteil, aber ich würde sagen, dass das Akzeptieren einer VM mit dem darauf befindlichen Quellcode die gleiche Paranoia mit sich bringen sollte wie das Akzeptieren einer Lieferung einer Maschine mit installierter Software und Entwicklungsumgebung Stellen Sie sicher, dass auf der VM nichts Schlechtes installiert ist, bevor Sie sie in einer Umgebung starten, die Zugriff auf Ihr internes Netzwerk hat.

Wenn / wenn Sie die VM in Betrieb haben, sollten Sie in der Lage sein, den Quellcode in Ihre normalen Code-Repositorys zu falten, wie Sie es (wahrscheinlich) mit nur einem ausgelieferten Quellcode-Archiv getan hätten.

Vatine
quelle
11
Nicht die einzige Antwort, die ich auf diese Frage gegeben habe, aber die einzige Antwort, die erwähnt, dass der Code in die interne Versionskontrolle einbezogen wird. Ich würde hoffen, dass die VM auch ein Repository enthält, aber ich würde nicht darauf wetten, und sie enthält möglicherweise nur die veröffentlichte Version des Codes.
Mike Sherrill 'Cat Recall'
18

Ich würde mir Sorgen machen, dass auf dem Computer etwas konfiguriert ist, das nicht dokumentiert, schwer zu reproduzieren oder in Ihrer Standardkonfiguration nicht akzeptabel ist.

Ymmv, aber ich denke nicht wirklich über die Entwicklung nach, bis demonstriert werden kann, dass das Projekt auf den Standard-Dev-Maschinen aufbaut und auf den Commodity-Servern / -Clients bereitgestellt wird.

Rechnung
quelle
1
+1, wenn Sie sicherstellen möchten, dass die VM nur eine praktische Funktion ist. Andernfalls könnten Sie auf etwas stoßen, das nur auf dieser VM aufbaut, weil es auf einer undokumentierten, gepatchten Compiler- oder Linkerversion oder etwas ähnlich Schrecklichem beruht.
Ptyx
10

In einigen meiner Projekte musste ich hart dafür kämpfen, dass Software auf diese Weise bereitgestellt wurde. Es ist ein ausgezeichnetes Format.

Stell sicher, dass du:

  1. Holen Sie sich den Quellcode jeder Version, die Sie vom Auftragnehmer erhalten, und fügen Sie ihn in Ihr eigenes Versionsverwaltungssystem ein
  2. Erhalten Sie Dokumentation zum Umgebungs-Setup der VM und können Sie diese intern reproduzieren. Fügen Sie die Dokumentation auch Ihrer Quellcodeverwaltung hinzu

Zusätzliche Vorteile:

  1. Wenn Sie die Veröffentlichungen im VM-Format archivieren (speichern Sie die .vhd-Datei oder etwas anderes), ist es viel einfacher, sie mehrere Jahre später einsatzbereit zu machen, selbst wenn das ursprüngliche Team fragmentiert oder nicht mehr vorhanden ist.
  2. Es ist viel einfacher, verschiedene Versionen nebeneinander auszuführen.
  3. Mit einer gewissen VMWare-Integration (möglicherweise auch mit HyperV) können Sie diese automatisch in einen CI-Build integrieren.
  4. Dies spart dem Entwickler (zu Beginn) Zeit, da die Umgebung kaum oder gar nicht eingerichtet wird.

Ich würde sagen, mach es.

Zachary Yates
quelle
Hmm. Gute Argumente.
MGOwen
1
Die Einrichtungszeit für die Umgebung ist günstig im Vergleich zu einer langsamen Leistung im Laufe der Zeit. Wir haben eine VM wie diese im Haus, auf der wir Release-Builds produzieren, aber für den täglichen Gebrauch ist die VM-Methode einfach zu träge und Sie können nur einen Bildschirm verwenden (in den meisten Fällen). Es ist eher wie der Tod durch 1000 Schnitte gegen eine gute saubere Enthauptung.
Boatcoder
@ Mark0978 Ich denke, # 4 ist eine YMMV-Situation. Wir haben drei Wochen gebraucht, um ein Umgebungssetup anhand der Dokumentation rückgängig zu machen, da wir keinen Zugriff mehr auf das ursprüngliche Server-Setup hatten (IIS 6+, eine Reihe von Bibliotheken / http-Handlern von Drittanbietern). . Mein Punkt ist, dass ein funktionierendes Beispiel nützlich ist. Die meiste Kritik, die ich gehört habe, ist normalerweise, weil der VM-Host nicht gut genug ist. Haha - "Gute saubere Enthauptung."
Zachary Yates
1
Eigentlich habe ich es als eine Entwicklungsumgebungsstrafe angesehen (was möglicherweise nicht das ist, was gefragt wurde). Es lohnt sich einfach nicht, den Entwickler die ganze Zeit zu verlangsamen. Alle unsere Produktionsserver werden auf VMs in einer Hosting-Einrichtung ausgeführt, es handelt sich jedoch ausschließlich um nicht grafische Server.
Boatcoder
1
@ Mark0978 Ich mag die Art und Weise, wie dieser Typ schreibt. Ich glaube, ich habe mit # 4 nicht klargemacht, worum es geht. Ich befürworte nicht das Abarbeiten einer langsamen VM. Wenn Sie ein oder zwei Tage Arbeit haben und die Einrichtung der Umgebung drei Wochen in Anspruch nimmt, verwenden Sie einfach vm. Sie müssen die gesamte Situation kennen.
Zachary Yates
6

Das ist wirklich die Art von Sache, die im ursprünglichen Vertrag hätte ausgearbeitet werden sollen. Sie können bereits darüber hinaus gehen. Ich würde nicht erwarten, Konfigurationsanweisungen zu erhalten, ohne dafür extra zu bezahlen, da dies mehr Arbeit von ihrer Seite erfordert.

Ich war schon einmal in einer ähnlichen Situation wie Sie. Unsere Entwicklungsumgebung ist Windows / Cygwin, und wir hatten eine Woche lang einen Besuch beim Hersteller, um einen Schnittstellencode mit uns zu schreiben. Sie verwenden hauptsächlich Linux, deshalb haben wir uns für die Woche, in der sie hier waren, mit virtuellen Linux-Maschinen eingerichtet. Es hat ganz gut geklappt, als sie hier waren und wir hatten wenig Probleme, nach ihrer Abreise nach Cygwin zu portieren.

Es klingt für mich so, als würdest du deine eigenen Fähigkeiten unterschätzen. Das Einrichten einer IDE ist gar nicht so schwierig, auch ohne ein funktionierendes Beispiel, mit dem man es vergleichen kann. Ich würde mir mehr Sorgen machen, wenn ich gegen Windows- und CodeWarrior-Lizenzvereinbarungen verstoßen würde. Wenn Sie ordnungsgemäß lizenziert sind, sollten Sie in der Lage sein, bei Setup-Problemen Unterstützung von Freescale zu erhalten.

Karl Bielefeldt
quelle
4

Wie FrustratedWithFormsDesigner sagte , müssen Sie wissen, wie Sie die Maschine selbst einrichten. Ich möchte jedoch hinzufügen, dass Sie sie möglicherweise bitten könnten, ein Skript bereitzustellen, das den Computer für Sie konfiguriert, und nicht eine gesamte VM. Wenn das Skript gut genug geschrieben ist, verfügen Sie über eine genaue und aktuelle Dokumentation zum Einrichten des Computers (durch Lesen des Quellcodes), und das Skript erledigt dies für Sie. So sparen Sie jedes Mal Zeit, wenn Sie eine benötigen neue Maschine.

Ein Tool, mit dem ich experimentiere, um das Einrichten eines neuen Windows-Computers zu standardisieren / zu automatisieren, ist Chocolatey .

Chocolatey NuGet ist ein Machine Package Manager, der apt-get ähnelt, jedoch auf Windows ausgelegt ist.

Sie können möglicherweise ganz einfach Ihre eigenen Chocolatey-Pakete erstellen und dann ein PowerShell-Skript erstellen, das praktisch alles installiert und konfiguriert.

Phil
quelle
Soweit ich weiß, gibt es ein Tool namens Vagrant, das speziell für diese Aufgabe entwickelt wurde.
M. Dudley
3

Langsam laufende Umgebungen sollten kein Problem sein, werfen Sie einfach Speicher und CPU drauf. Der Aufwand für moderne VMs für Desktop-Anwendungen ist wie bei den meisten SW-Entwicklungen sehr gering. Er wird um ein Vielfaches gespart, da beim Austausch der Hardware keine Einrichtung erforderlich ist.

hyde
quelle
3

Ich hätte gedacht, dass der Entwicklungsvertrag die Leistungen und Verpflichtungen des Auftragnehmers für Sie vorsieht.

Zumindest würde ich einen Rundgang und eine Dokumentation darüber anfordern, wie die Konfiguration funktioniert und was so wichtig ist, dass Sie das Projekt selbst neu erstellen, erstellen und bereitstellen können.

Ich halte die VM für absolut akzeptabel, wenn es darum geht, etwas einsatzbereit zu haben.

Ich würde aber definitiv auf Dokumentation drängen. Ohne das würde ich zögern, denn wenn Sie nicht genau wissen, wie es funktioniert, könnten Sie in Zukunft überfordert sein, insbesondere wenn Sie die Anwendung selbst unterstützen müssen.

Sam
quelle
Leider war ich nicht bei dieser Firma, als der Vertrag geschlossen wurde. Ich habe keinen Zugriff darauf, da ich kein Mitglied der Geschäftsleitung bin und daher nicht sicher bin, was darin festgelegt ist.
CFL_Jeff
2

Selbst für intern entwickelte eingebettete Systeme ist es wichtig, ein Dokument zu haben, das beschreibt, wie die Build-Umgebung eingerichtet wird. Sie müssen auch alle Binärdateien / Installationsdateien von Tools und Bibliotheken archivieren, die zum Einrichten der Build-Umgebung erforderlich sind.

Keith Nicholas
quelle
1

Ich würde VM nicht als zu liefernden Code akzeptieren, da es schwierig ist, Aktualisierungen vorzunehmen. Sie müssen diese VM als goldenes Image haben, um Entwicklungsarbeit zu leisten. Das macht es schwieriger, Mods zu machen. Ein Entwickler muss eine VM neu formatieren oder bekommt eine neue Maschine, er muss eine VM installieren und die VM ziehen.

Wenn Sie Änderungen vornehmen, müssen Sie eine neue "goldene Kopie" der VM festschreiben. Warum sollten Sie eine große Binärdatei wie diese in der Quellcodeverwaltung verwalten? Es ist nicht möglich zu unterscheiden, und meiner Erfahrung nach endet der Versuch, eine goldene Kopie von etwas Binärem als Quellcode zu kontrollieren, nicht gut. Wenn Sie nicht streng kontrollieren können, wer die goldene Kopie bearbeitet, werden Sie Dinge finden, die nicht dokumentiert sind und von denen niemand etwas weiß.

Wenn ein Entwickler mir Software in dieser Form liefern wollte, würde ich einen anderen Entwickler finden. Dies sagt mir, dass sie nicht professionell genug sind, um ihre Abhängigkeiten auszudrucken oder zumindest zu dokumentieren.

Ich hätte sie auch:

  1. Erstellen Sie eine Textdatei, die mit dem Code in die Quellcodeverwaltung eingecheckt wird. Es listet alle Abhängigkeiten auf, die Sie benötigen, um das Projekt zum Laufen zu bringen, die nicht Teil des Quellcodeverwaltungs-Repos sind (z. B. CodeWarrior, beliebige Befehlszeilentools oder andere externe Apps, von denen Sie abhängig sind).

  2. Ein Skript zum Installieren der Abhängigkeiten. Da Sie unter Windows arbeiten, sollte es nicht allzu schwierig sein, ein Chocolatey-Skript zu erstellen, um das Setup der Entwicklungsumgebung zu automatisieren. Abhängigkeiten, die Sie haben und die noch keine Schokoladenpakete sind, können Sie machen. Sie können beispielsweise umfangreiche kommerzielle Tools wie Visual Studio und SQL Server über Chocolatey installieren. Diese Pakete installieren die voll funktionsfähigen Testversionen und können durch Eingabe eines Lizenzschlüssels entsperrt werden. So ist es möglich, dass das Gleiche mit CodeWarrior und allen anderen Abhängigkeiten, die Sie für Ihre Entwicklungsumgebung haben, getan werden kann.

Möglicherweise ist Ihr Entwickler wirklich gut genug, um mit ihm / ihr zusammenzuarbeiten, aber er beherrscht diese Automatisierungsaufgaben nicht. Das ist auch in Ordnung, wenn das der Fall wäre, würde ich entweder den Automatisierungsteil selbst durchführen und mit ihm / ihr zusammenarbeiten, um die Abhängigkeiten zu identifizieren und das Skript zum Laufen zu bringen, oder ich würde einen anderen Entwickler beauftragen, der sich mit der Automatisierung auskennt . Dies sollte zu Beginn des Projekts erfolgen. Eine saubere Barebones-Kopie einer Win8-VM wäre immer noch nützlich, da Sie damit Ihr Schokoladenskript testen können.

Giscard Biamby
quelle
0

Ich glaube, es gibt kein Problem damit. Ich habe Content-Management-Systeme gesehen, die als VMs installiert werden, und nach Ihren Angaben haben Ihnen die Auftragnehmer die Möglichkeit gegeben, die Anwendung selbst zu warten und zu erweitern.

Wie andere Poster bereits angemerkt haben, gibt es zwei Dinge, die ich tun würde. Stellen Sie zunächst sicher, dass Sie die VM bei der Installation auf einem Computer installieren, der von Ihrem Netzwerk getrennt ist. Sie würden keine unbekannte EXE-Datei aus dem Internet herunterladen und auf Ihrem Computer installieren.

Zweitens, wenn möglich, bewahren Sie diese Kopie als Referenz für die Einstellung der internen Version auf. Ich sage, wenn möglich, weil ich den geschäftlichen Druck nicht kenne, unter dem Sie stehen. Letztendlich sind die IT-Abteilungen / Programmierer Ihres Unternehmens für diese Anwendung verantwortlich. Je mehr Sie darüber wissen, desto besser.

Daniel Hollinrake
quelle