ESIUCLM
CasaOpinioneSoftware anti-fragile

Software anti-fragile

Software antifragile David Vallejo. Professore ESI UCLM

Software anti-fragile

da David Vallejo Fernandez (Professore universitario).

Taleb racconta, nel suo libro Antifragile, che le cose sono classificate in tre colonne: fragili, robuste e antifragili. Le cose fragili amano la tranquillità e sono facili da rompere, come un bel bicchiere di cristallo a una festa di Capodanno. Le cose robuste, o resilienti, resistono agli shock quando sorgono alcune turbolenze e mantengono il loro status, come la piccola impresa che diversifica e mantiene una vasta base di clienti. Le cose anti-fragili vanno oltre le cose robuste e beneficiano persino dell'incertezza, del rischio o della volatilità, proprio come madre natura. Taleb offre un esempio molto visivo, attingendo alla mitologia greca, per capire la differenza tra queste tre qualità. Damocle è un personaggio fragile, poiché è solo questione di tempo prima che il crine di cavallo che tiene la spada sopra la sua testa si spezzi e metta fine alla sua vita. L'uccello della Fenice è una creatura robusta, perché è in grado di rinascere dalle sue ceneri quando muore. L'Idra, un essere mitologico a forma di serpente con molte teste, beneficiava di situazioni negative, poiché ogni volta che una testa veniva mozzata ne nascevano due nuove.

interessante riflettere su questa classificazione nel contesto del software. Lo sviluppo del software è un processo complesso, in cui il numero di interdipendenze esistenti è elevato, a volte persino difficile da rilevare e la comparsa di un errore o di un bug può causare risposte non lineari. Sfortunatamente, noi umani abbiamo difficoltà a comprendere la non linearità, poiché tendiamo a pensare in termini lineari. Se la manifestazione di un bug in un sistema informatico genera una diminuzione del 10% della sua funzionalità, la comparsa di due bug, correlati o meno, potrebbe generare un effetto molto maggiore, o molto inferiore, del doppio dell'effetto iniziale (cioè , il doppio del 10%).

El software fragile, come Damocle, vive in attesa di un fallimento che inevitabilmente apparirà. Il software fragile è il nemico del tempo. Allo stesso modo in cui il debito pubblico di un Paese lo indebolisce quando si tratta di negoziare con i suoi partner, gli interessi derivati ​​da un software con indebitamento tecnico comporteranno, a lungo termine, maggiori costi di manutenzione. L'entropia del software aumenterà man mano che la sua manutenzione diventa più complessa, influenzando un progetto iniziale che dovrà essere modificato alla fine. 

El software robusto, invece, è progettato considerando che deve affrontare il trascorrere del tempo e che, allo stesso tempo, deve rispondere adeguatamente alla presenza di errori. Il test e il debug del codice sono le tecniche di riferimento per aumentare la robustezza del software. Dijkstra ha affermato che se il debug è il processo di rimozione dei bug dal software, la programmazione deve essere il processo di introduzione. Il codice privo di bug non esiste. Non possiamo prevedere quando si manifesteranno con conseguenze indesiderabili. A volte robusto non è abbastanza robusto ed è molto difficile, se non impossibile, stimare la probabilità e l'impatto associati a un possibile errore del software. La gestione del rischio offre un falso senso di sicurezza.


Considerando la natura dell'antifragilità, il creazione di software antifragile trarrebbe vantaggio dall'introduzione di fattori di stress o elementi casuali. La filosofia di rilasciare in anticipo, rilasciare spesso, reso popolare da Eric S. Raymond nel suo saggio La Cattedrale e il Bazar e ispirato al modello di sviluppo del kernel Linux, si adatta a questa idea. Non tutto cattedrali del software deve essere costruito in modo perfettamente orchestrato. Il bazar è dinamico, vivace, in continua evoluzione e pieno di commercianti con approcci e obiettivi individuali diversi. Avere utenti fin dall'inizio aumenta l'avanzamento di uno sviluppo plasmato progressivamente attraverso un uso casuale del software, migliorando la qualità del risultato finale. Questa filosofia, che elimina il rischio di creare software che nessuno finisce per utilizzare, è uno dei principi del Open Source. Software open source si evolve grazie allo sforzo collaborativo dei suoi programmatori e resiste alla prova del tempo finché continua a fornire valore reale ai suoi utenti.

G. Moreau: Ercole e l'Idra di Lerna (1876)
Condividi con:
Valuta questo articolo