Qual è la differenza tra build, versione, revisione e rilascio in termini di ingegneria del software?

Considera un numero di versione completo come 8.3.2.37.

Il primo gruppo (prima del primo periodo) è il numero di rilascio. Una release introduce nuove caratteristiche importanti, può comportare una significativa rielaborazione/riarchitettura interna, e può rompere la compatibilità con le release precedenti o con le piattaforme precedentemente supportate.

Il secondo gruppo è il numero di versione. Questo è un aggiornamento più piccolo all'interno di un aggiornamento. Potrebbe aggiungere alcune nuove caratteristiche e correggere bug assortiti. Generalmente non include grandi modifiche interne al design o all'architettura e dovrebbe essere (per lo più) retrocompatibile con altre versioni della stessa release.

Il terzo gruppo è il numero di revisione. Una revisione di solito contiene correzioni di bug e piccoli miglioramenti.

Il numero di build è un numero di build sequenziale all'interno di una release. Nel mio esempio sopra, questa è la 37esima build della revisione 8.3.2. Il numero di build è generalmente incrementato automaticamente da un processo di build di Continuous Integration (CI). Solo una build sarà la build ufficiale per una data revisione. Se la mia 8.3.2.37 viene rilasciata e poi viene trovato un bug critico, la correzione sarebbe nella 8.3.3.x.

Non tutti i progetti usano questo schema ma è abbastanza comune.