In generale, questo è un termine che raramente si applica al software poiché tendiamo a pensare che le nostre linee di prodotto avanzino attraverso versioni e versioni piuttosto che generazioni.
Detto questo, una generazione di software è molto simile a una generazione di hardware, in cui tutte le tecnologie sottostanti hanno un ruolo nella definizione della generazione del software. Per darti un'idea veramente approssimativa di cosa intendo, utilizziamo il sistema operativo Windows come esempio. Si può dire che ogni 2 o 3 versioni di Windows è una generazione basata sulle tecnologie che fanno emergere ciascuna versione dalle versioni di Windows precedenti.
In cima alla mia testa (e forse non ricordo tutto correttamente), Windows Generations potrebbe essere approssimativamente descritto come segue.
- Generazione 1: Windows 1 - 2
- Seconda generazione: Windows 3 - 3.11
- Generazione 3: Windows 95, 98, ME
- Generazione 4: Windows NT, 2000, XP
- Generation 5: Vista, Windows 7
Probabilmente è una semplificazione eccessiva e mancano molte varianti, ma in termini di tecnologie, interfacce, compatibilità hardware e così via, ogni progresso importante (ed efficacemente ogni riscrittura quasi totale) sarebbe una generazione distinta.
Utilizzare il termine "Generazione" può essere utile se si desidera esaminare storicamente le cose o definire quando il proprio sviluppo dovrebbe ignorare tutte le refactoring e altre "misure di longevità e compatibilità" che si potrebbero prendere per estendere la durata della vostra prodotti, tuttavia la realtà è che tenere traccia di queste cose è più utile per gli addetti al marketing rispetto al tuo sviluppatore medio, e anche in questo caso, lo spin del marketing probabilmente non avrà tanto impatto sui tuoi clienti quanto semplicemente il numero di versione principale su + 1 sul tuo prodotto e elenca tutte le nuove funzionalità.