Ci sono motivi per non accettare un prodotto software come macchina virtuale?

40

Questa è una domanda sulla logistica, non una domanda tecnica.

La mia azienda ha esternalizzato alcuni lavori di software embedded. In particolare, abbiamo pagato un appaltatore per sviluppare un sistema embedded per noi poiché non disponiamo di adeguate conoscenze interne per farlo da soli (abbiamo solo sviluppatori di applicazioni desktop).

Quindi, gli appaltatori hanno finito il software e hanno chiesto se possono consegnarcelo in una macchina virtuale. La VM è una macchina Windows 8 contenente l'IDE CodeWarrior preconfigurato con il codice sorgente come progetto CodeWarrior. L'idea è che questo ci permetterà di apportare modifiche al codice all'interno della VM già configurata per l'ulteriore sviluppo di questo progetto.

Ci sono degli svantaggi nel fare questo invece di farci guidare attraverso come configurare le nostre macchine di sviluppo per apportare modifiche al codice al progetto? L'unico problema che posso prevedere è che la VM funziona lentamente e ci vuole molto tempo per ricostruire il progetto quando si apportano modifiche al codice. D'altra parte, mi piace l'idea di ottenere un ambiente di sviluppo del sistema embedded preconfigurato, quindi non devo aggiungere un altro IDE sulla mia macchina per l'applicazione desktop.

Non riesco davvero a pensare a una buona ragione per non accettare un deliverable VM, ma volevo semplicemente farlo funzionare da questa community nel caso in cui ci fosse qualcosa che mi mancava.

    
posta CFL_Jeff 18.03.2013 - 16:16
fonte

11 risposte

66

Il problema che vedo è che la conoscenza della configurazione e della configurazione della macchina virtuale non è in-house e, se la configurazione non è banale, ci si affida all'altra società quando è necessario configurare il software per diverse versioni del sistema operativo / librerie / hardware / qualunque. Accettare la VM va bene per iniziare e correre più velocemente, ma vorrei insistere su come configurare il tuo sistema per la manutenzione futura.

    
risposta data 18.03.2013 - 16:20
fonte
36

Non vedo un grosso svantaggio con esso, ma direi che accettare una VM con il codice sorgente su di esso dovrebbe comportare la stessa paranoia di accettare una spedizione di una macchina con installato il software e l'ambiente di sviluppo, quindi assicurati che non vi sia nulla di male installato sulla VM prima di avviarla in un ambiente che ha accesso alla tua rete interna.

Se / quando hai la VM attiva e funzionante, dovresti essere in grado di piegare il codice sorgente nei normali repository di codice, come probabilmente (probabilmente) avresti fatto con un semplice archivio di codice sorgente consegnato.

    
risposta data 18.03.2013 - 16:45
fonte
18

Sarei preoccupato che ci sia qualcosa configurato nella macchina non documentato, difficile da riprodurre o non accettabile nella configurazione standard.

Ymmv, ma in realtà non considero lo sviluppo fatto fino a quando il progetto non può essere dimostrato di costruire fuori dalle macchine dev standard e distribuito sui server / client commodity.

    
risposta data 18.03.2013 - 16:55
fonte
10

In alcuni dei miei progetti, ho dovuto lottare duramente per ottenere il software in questo modo. È un formato eccellente.

Assicurati di:

  1. Ottieni il codice sorgente di ogni versione rilasciata dal contraente e uniscilo nel tuo sistema di controllo del codice sorgente
  2. Ottieni documentazione sulla configurazione dell'ambiente della VM e puoi riprodurla internamente. Aggiungi anche la documentazione al controllo del codice sorgente

Ulteriori vantaggi:

  1. Se archivi i rilasci in formato VM (salva il .vhd o qualcosa del genere) è molto più facile metterli su e in esecuzione per diversi anni lungo la linea, anche se il team originale è frammentato o sparito.
  2. È molto più semplice eseguire versioni diverse affiancate.
  3. Con l'integrazione di VMWare (potrebbe essere possibile anche con HyperV), è possibile integrarli automaticamente in una build di CI.
  4. Risparmia tempo per gli sviluppatori (all'inizio), perché l'installazione dell'ambiente è scarsa o inesistente.

Direi di provarci.

    
risposta data 18.03.2013 - 16:23
fonte
6

Questo è davvero il genere di cosa che avrebbe dovuto essere elaborato nel contratto originale. Potrebbero già andare oltre. Non mi aspetto di ricevere istruzioni di configurazione senza pagare extra, perché richiede più lavoro da parte loro.

Sono stato in una situazione simile alla tua prima. Il nostro ambiente di sviluppo è Windows / Cygwin e abbiamo avuto una visita del venditore per una settimana per scriverne alcuni con il codice di interfaccia. Principalmente usano Linux, quindi ci siamo messi a punto con macchine virtuali Linux per la settimana in cui erano qui. Ha funzionato abbastanza bene mentre erano qui e abbiamo avuto pochi problemi nel porting su Cygwin dopo che se ne sono andati.

Mi sembra che tu stia sottovalutando le tue capacità. L'impostazione di un IDE non è difficile, anche senza un esempio funzionante per il confronto. Sarei più preoccupato di violare gli accordi di licenza di Windows e CodeWarrior. Se hai una licenza adeguata, dovresti essere in grado di ottenere supporto da Freescale per qualsiasi problema di impostazione.

    
risposta data 18.03.2013 - 18:31
fonte
4

Poiché ha dichiarato FrustratedWithFormsDesigner , devi sapere come configurare la macchina per te. Tuttavia, vorrei aggiungere che potresti potenzialmente chiedere loro di fornire uno script che configura la macchina per te, piuttosto che un'intera VM. Se lo script è scritto abbastanza bene, avrai una documentazione aggiornata esatta su come configurare la macchina (leggendo il codice sorgente), più lo script lo farà per te, risparmiando il tuo tempo ogni volta che ne hai bisogno nuova macchina.

Uno strumento che sto sperimentando per aiutare a standardizzare / automatizzare la configurazione di un nuovo computer Windows è Chocolatey .

Chocolatey NuGet is a Machine Package Manager, somewhat like apt-get, but built with Windows in mind.

È possibile creare facilmente i propri pacchetti Chocolatey in modo semplice, quindi creare uno script PowerShell che installerà e configurerà praticamente tutto.

    
risposta data 18.03.2013 - 17:30
fonte
3

L'ambiente in esecuzione lentamente non dovrebbe essere un problema, basta lanciare memoria e CPU. Il sovraccarico della moderna VM per il tipo di desktop funziona come la maggior parte dello sviluppo di SW è molto piccolo, viene salvato molte volte non avendo bisogno di eseguire alcuna configurazione quando si cambia l'hardware.

    
risposta data 18.03.2013 - 16:33
fonte
3

Avrei pensato che il contratto di sviluppo avrebbe stipulato i risultati e gli obblighi del contraente nei tuoi confronti.

Al minimo richiederei un passaggio e una documentazione su come funziona la configurazione e su ciò che è vitale al punto da poter ricreare il progetto, costruirlo e distribuirlo da solo.

In termini di avere qualcosa pronto, penso che la VM sia perfettamente accettabile.

Tuttavia, spenderei sicuramente per la documentazione. Sarei esitante senza di esso perché, a meno che tu non abbia una comprensione di alto livello di come funziona, potresti trovarti di fronte a un barile in futuro, soprattutto se hai bisogno di supportare l'applicazione da solo.

    
risposta data 18.03.2013 - 23:19
fonte
2

Anche per i sistemi embedded sviluppati internamente è importante avere un documento che descriva come configurare l'ambiente di costruzione. È inoltre necessario archiviare tutti i file binari / installare gli strumenti e le librerie necessarie per configurare l'ambiente di generazione.

    
risposta data 18.03.2013 - 23:01
fonte
1

Non accetterei VM come un codice consegnabile perché rende difficile fare aggiornamenti. Devi avere quella VM come immagine d'oro per fare il lavoro di sviluppo. Ciò rende più difficile creare mod. Uno sviluppatore deve riformattare o ottenere una nuova macchina, devono installare una VM e tirare la VM.

Quando apporti delle modifiche, devi impegnare una nuova "copia dorata" della VM. Perché dovresti gestire un grande file binario come quello nel controllo del codice sorgente? Non è possibile diff, e nella mia esperienza cercando di controllare il codice sorgente una copia d'oro di qualsiasi cosa binaria non finisce bene. A meno che tu non possa mantenere uno stretto controllo su chi modifica la copia d'oro, finirai con cose che non sono documentate e che nessuno conosce.

Se uno sviluppatore volesse consegnarmi software in quella forma, troverei un altro sviluppatore. Questo mi dice che non sono abbastanza professionali per codificare le loro dipendenze o per lo meno documentarle.

Li avrei anche io:

  1. Crea un file di testo che viene controllato nel codice sorgente con il codice sorgente. Elenca tutte le dipendenze necessarie per far funzionare il progetto, che non fanno parte del repository di controllo del codice sorgente (ad es. CodeWarrior, qualunque strumento della riga di comando o altre app esterne da cui si dipende).

  2. Uno script per installare le dipendenze. Dato che sei su Windows, non dovrebbe essere troppo difficile creare uno script Chocolatey per automatizzare la configurazione dell'ambiente di sviluppo. Qualunque dipendenza tu abbia che non siano già pacchetti cioccolati, puoi fare. Ad esempio, è possibile installare pesanti strumenti commerciali come Visual Studio e SQL Server tramite Chocolatey. Questi pacchetti installano le versioni di prova, che sono complete e possono essere sbloccate inserendo un codice di licenza. Quindi è possibile che la stessa cosa possa essere fatta con CodeWarrior e qualsiasi altra dipendenza che hai per il tuo ambiente di sviluppo.

Forse il tuo sviluppatore è davvero bravo che vuoi ancora lavorare con lui / lei, ma non è bravo in questo settore dell'automazione. Anche quello va bene, se così fosse, farei anch'io la parte dell'automazione, lavorando con lui / lei per identificare le dipendenze e far funzionare lo script, altrimenti otterrei un altro sviluppatore che è bravo nell'automazione per farlo . Dovrebbe essere fatto all'inizio del progetto. Una copia pulita e barebone di una macchina virtuale Win8 sarebbe comunque utile perché puoi usarla per testare la tua sceneggiatura cioccolata.

    
risposta data 22.03.2013 - 19:19
fonte
0

Non penso che ci sia un problema con questo, ho visto sistemi di gestione dei contenuti che si installano come macchine virtuali e da quello che dici che gli appaltatori ti hanno dato la possibilità di mantenere ed estendere la tua applicazione.

Tuttavia, come hanno notato altri poster, ci sono due cose che vorrei fare. Innanzitutto, assicurati che durante l'installazione della VM, mettila su una macchina separata dalla tua rete. Non devi scaricare un EXE sconosciuto da Internet e installarlo sul tuo computer.

In secondo luogo, se possibile, conservare questa copia isolata come riferimento per l'impostazione della versione interna. Dico, se possibile, perché non conosco le pressioni commerciali a cui sei sottoposto. In definitiva, saranno i dipartimenti IT / programmatori della tua azienda che saranno responsabili di questa applicazione. Quindi, più ne sai meglio è.

    
risposta data 19.03.2013 - 22:41
fonte

Leggi altre domande sui tag