Che cos'è l'ingegneria delle versioni?
L'ingegneria di rilascio, o rilascio, è il processo di preparazione del software per la distribuzione completato. Ciò può comportare molte discipline di programmazione e ingegneria separate e non tutte le definizioni di ingegneria di rilascio sono le stesse in diverse società. Alcune delle attività che possono essere coinvolte nell'ingegneria delle versioni includono la compilazione di codice sorgente, il monitoraggio e la manutenzione di strumenti e ambienti di sviluppo, la gestione di una libreria di versioni per tutta la durata di un programma e talvolta l'implementazione di software su un server o sistema attivo. Alcuni dei vantaggi di avere un ingegnere del rilascio dedicato nel ciclo di sviluppo del software sono un'esperienza migliore per gli utenti finali, poiché i metodi di rilascio vengono prima testati, una migliore documentazione generale del programma durante gli aggiornamenti e una sorta di controllo di qualità in situazioni in cui diversi parti di un programma provengono da fonti separate.
Durante lo sviluppo del software, arriva il momento in cui l'applicazione viene completata e deve essere distribuita ai clienti o installata su un server live per poter essere utilizzata. Senza un ingegnere del rilascio, questo processo potrebbe comportare la compilazione di un programma da parte degli sviluppatori tramite strumenti di sviluppo e quindi il trasferimento dei file binari sul supporto o sul server di destinazione. Alcuni dei problemi che si possono incontrare con questo processo sono che il programma potrebbe avere dipendenze che non sono quantificate, che alcune modifiche potrebbero essere dimenticate o, in definitiva, il processo potrebbe non essere necessariamente riproducibile in futuro.
Una delle parti più importanti dell'ingegneria dei rilasci è tenere traccia dell'avanzamento dello sviluppo di un programma. Ciò potrebbe significare l'utilizzo di un sistema di controllo delle versioni o l'utilizzo di altri software non solo per tracciare ed etichettare ogni fase di un programma durante il suo sviluppo, ma anche per memorizzare le istantanee del programma in modo che possano essere richiamate in un secondo momento. Oltre a gestire semplicemente il codice sorgente, la creazione corretta di un programma richiede la memorizzazione delle informazioni sugli strumenti utilizzati e delle diverse librerie o altre risorse utilizzate. L'obiettivo finale è quello di essere in grado di ricompilare un programma in qualsiasi fase durante il suo sviluppo, indipendentemente dai sistemi di sviluppo utilizzati per crearlo.
Un'altra possibile parte dell'ingegneria delle versioni sta preparando un'applicazione per la distribuzione ai clienti. Una volta che il programma è stato compilato in file binari, vengono sviluppati ed esplorati i metodi per installare il programma sul computer di un utente finale. Ciò potrebbe comportare la scrittura di un programma di installazione o il test del programma in diverse situazioni se è attivo per assicurarsi che funzioni secondo le specifiche. L'ingegnerizzazione delle versioni comporta talvolta l'installazione di un programma più volte su più sistemi per garantire che diverse configurazioni o errori vengano gestiti nel modo corretto.