Poco più di 10 anni fa, si avvicinava questa apocalisse. L'anno 2000 era vicino, e c'era tutto questo vecchio software che conservava anni come due cifre e non poteva gestire l'anno 2000. Gli aerei sarebbero caduti dal cielo, le attrezzature ospedaliere stavano per fermarsi e i robot industriali furono andando a ribellarsi contro i loro padroni e sterminare la razza umana.
L'infame bug del millennio. Un non-evento in pratica, ma in gran parte probabilmente perché di tutto il lavoro svolto durante il panico.
Un problema è rappresentato dal fatto che molte banche e altre imprese dipendevano dal software (spesso scritto in COBOL) vecchio di decenni e per il quale il codice sorgente era stato perso da tempo. Avevano rimandato questo problema per molto tempo comprando sempre nuove macchine che erano compatibili con il vecchio, ma non avrebbe funzionato più.
Non so come questi problemi siano stati risolti nella pratica, ma immagino ci fossero tre approcci principali ...
-
Decompilazione e altri approcci di reverse engineering per creare codice "sorgente" che potrebbe essere corretto.
-
In casi molto semplici, analisi diretta e patch dei binari - o almeno disassemblaggio piuttosto che decompilazione.
-
Riqualificazione (di almeno componenti chiave) da zero.
Un caso estremo, ma questo tipo di problema si presenta abbastanza spesso. Fino a poco tempo fa, il controllo di versione del codice sorgente era inusuale e, anche con backup e archiviazione sistematici, a lungo termine ci sono sempre le transizioni da un sistema all'altro dove le cose possono perdere senza che nessuno se ne accorga.
In un certo senso, non è diverso da quella cruciale carta delle polizze assicurative o da qualsiasi altra cosa che non riesci a trovare dall'ultima volta che hai cambiato casa.
Un'altra possibilità è che la decompilazione sia utile per l'apprendimento dei tipi di codice generati dai compilatori esistenti, se stai pensando di scrivere un nuovo compilatore per .NET o una piattaforma simile basata su VM.