Ingegneria inversa testata
Ci sono due parti.
-
Un linguaggio moderno. C #, Java, Python, Scala. non utilizza un DSL. Qualsiasi DSL scelto diventa semplicemente un altro COBOL.
-
Una suite di casi di test che i programmi originali sembrano trasmettere con successo.
Si noti che la maggior parte dei sistemi COBOL ha un numero enorme di singoli programmi applicativi. Quasi incomprensibile.
Tuttavia, il numero di programmi che creano il database Create-Update-Delete è notevolmente ridotto.
Il passaggio 1 consiste nel suddividere lo spazio dei programmi COBOL in due:
Per l'80%, puoi usare qualunque strumento di segnalazione appaia pertinente. Ipercubi o altro. Non importa, poiché si tratta solo di rapporti e qualsiasi strumento di segnalazione delle merci funzionerà. Investire il minor tempo possibile nel riferire quanto umanamente possibile. Crea estrazione-trasformazione-carico (ETL) che popola un semplice data warehouse; creare metadati per quel magazzino che si adatta a uno strumento di reporting. Fatto.
Per il 20%, hai davanti a te un lavoro serio e difficile per raccogliere una suite di casi di test, conferma che il COBOL originale li elabora effettivamente come previsto e poi scrive un nuovo codice in C #, Java, Python o Scala per implementare quella logica di programmazione.
Troverete che il 20% dei programmi Create-Update-Delete coinvolge semplici regole di business che possono essere facilmente articolate, adattarsi all'ambiente normativo e facili da implementare nel codice Stored Procedures o Java (C # o Python). Evitare procedure memorizzate. (Haterz ti dirà che le stored procedure sono essenziali, ma non possono fornire una ragione.)
Troverete che l'80% dei programmi Crea-Aggiornamento-Elimina comprende eccezioni, casi speciali, sostituzioni e programmazione incompetente troppo terrificante da esaminare attentamente. (È come essere un personaggio di una storia di HP Lovecraft: inizi a dubitare dell'esistenza stessa della logica o della razionalità.)
Fai la migliore ipotesi possibile su questo codice e fidati dei tuoi casi di test. Il tempo speso per creare casi di test e campioni è più prezioso del tempo passato in reverse engineering con il vecchio COBOL.