Che cos’è l’evoluzione del software?

L’evoluzione del software è un processo in base al quale un programma informatico commerciale richiede un aggiornamento, una manutenzione e un miglioramento continui nel tempo affinché rimanga un prodotto valido. A questo proposito, l’evoluzione del software è guidata da esigenze aziendali e dei consumatori esterne che cambiano man mano che altri software e tecnologie avanzano attorno ad esso. Il fattore trainante dietro l’evoluzione del software, tuttavia, è spesso interno focalizzato sul team di ingegneri che ha prodotto il prodotto e sull’azienda che dipende dal suo successo per la redditività. L’Imperial College di Londra, Inghilterra, ha promulgato per la prima volta tre leggi fondamentali dell’evoluzione del software nei primi anni ‘1970, che da allora sono state ampliate fino a un totale di otto leggi a partire dal 2011. Sono stati fatti anche altri tentativi per quantificare il processo utilizzando modelli come il Modello Sequenziale Lineare e il Modello Prototipo, ma il paradigma che sembra adattarsi meglio ai cicli di vita dell’entropia del software è quello di un’evoluzione simile a Darwin degli esseri viventi.

I fattori alla base dei cambiamenti nell’architettura del software assomigliano alle stesse forze che motivano le aziende ad aggiornare i macchinari industriali o le procedure operative standard man mano che cambiano le esigenze della società. Poiché il software viene sempre più utilizzato, diventano evidenti nuove esigenze o funzioni che devono essere elaborate nelle versioni successive del prodotto. Tutti i software vengono rilasciati anche con errori precedentemente sconosciuti, quindi è necessario eseguire patch periodiche e procedure di manutenzione per correggere situazioni come falle di sicurezza che potrebbero rendere un’azienda vulnerabile ad attacchi attraverso il software stesso. Una chiave per l’evoluzione del software è anche il fatto che tali programmi devono essere sempre più adattati per funzionare su diversi tipi di apparecchiature informatiche emergenti e all’interno di varie architetture di sistemi operativi in ​​modo che il programma abbia un appeal più ampio.

Soddisfare tutte queste esigenze è fondamentale per determinare se un programma software rimane praticabile e, poiché le risorse software sono un aspetto così cruciale dell’economia dell’informazione a partire dal 2011, l’evoluzione del software è diventata un aspetto fondamentale dell’adattamento e della crescita aziendale. A Meir Lehman, un informatico dell’Imperial College di Londra, è attribuito il merito di aver creato le leggi di Lehman, che hanno definito succintamente il processo di evoluzione del software e hanno guidato gli sviluppatori nel pensare al futuro della visualizzazione del software. Le leggi di Lehman si basano sulla premessa che il software si evolve con l’aumentare del feedback sulle sue prestazioni e che la sua tendenza inevitabile è di diventare sempre più complessa.

Lehman ha affermato che la natura dell’evoluzione del software rispecchia i cambiamenti naturali come la mutazione nei moscerini della frutta, il modo in cui le città si espandono nel tempo e il modo in cui le strutture militari migliorano in modo incrementale i sistemi di armi. Le prime tre leggi del processo emulano queste tendenze nel descrivere in dettaglio il cambiamento continuo, l’aumento della complessità e ciò che è noto come evoluzione di grandi programmi. Continuing Change si riferisce al fatto che il programma deve essere adattato per soddisfare le attuali condizioni di business del mondo reale, e questo riflette la crescente complessità poiché il programma deve soddisfare una diversità sempre crescente di esigenze impreviste. Large Program Evolution si riferisce alla necessità di correzione degli errori e nuove versioni del programma che sono legate inesorabilmente alle richieste del mercato.

Delle cinque leggi rimanenti nell’evoluzione del software, la numero quattro è la stabilità organizzativa e si riferisce al fatto che la crescita di un programma assume una vita propria indipendentemente dal livello di risorse intenzionalmente dedicate ad esso, e la numero cinque è Conservazione della familiarità che afferma che la crescita incrementale del programma è inevitabile. Il numero sei delle otto leggi di Lehman è la crescita continua, necessaria per soddisfare la domanda dei consumatori, e il numero sette è la qualità in declino, che sottolinea il fatto che tutti i software alla fine devono affrontare limiti di funzionalità che non possono soddisfare. L’ultima legge di Lehman per l’evoluzione del software è il sistema di feedback stesso, che unisce tutte le forze che influenzano la fattibilità di un programma software per guidarlo rapidamente verso un maggiore successo o verso l’inevitabile obsolescenza e morte.