Può sembrare che "ci dovrebbe essere un modello di business per un'azienda di supporto IT che si concentra su piattaforme legacy come questa", ma personalmente penso che sia solo un pio desiderio da parte tua in quanto "risolverebbe" le sfide che devi affrontare in una colpo solo.
Rimanere bloccati nei vecchi ambienti non è il modo di andare avanti. E io per primo non scommetterei la vita di nessuna compagnia nel cercare di rimanere bloccato trovando una ditta che, per ora, sarebbe disposta a fare ciò che apparentemente non puoi.
Quindi non una risposta all'attuale domanda che hai chiesto, ma un consiglio sincero su come potresti andare avanti mantenendo al minimo i rischi di una migrazione.
Leggi "Come sopravvivere a una riscrittura radicale senza perdere la sanità mentale"
Non commettere l'errore di un lungo progetto di migrazione senza risultati reali per lungo tempo. Leggi "Come sopravvivere a una riscrittura radicale senza perdere la sanità mentale"
Non posso sottolineare abbastanza come il consiglio di quell'articolo mi abbia aiutato ad affrontare / affrontare problemi simili dopo avermi bruciato facendo quel tipo di progetti alla "vecchia maniera".
Imposta test automatici
Se non lo hai già installato (perché mai no?), Chiedi ai tuoi attuali programmatori di creare un cablaggio di test automatizzato per le tue applicazioni.
La suite di test automatizzati dovrebbe coprire tutte le aree funzionali delle applicazioni. Dovrebbe documentare le attuali specifiche di lavoro nelle regole "when_X_then_Y" dei singoli casi di test. Questo aiuterà sia a mantenere le modifiche nel codice corrente da interrompere le funzionalità esistenti sia a supportare qualsiasi migrazione verso un nuovo ambiente.
Dato che hai a che fare con COBOL e BASIC, la suite di test dovrebbe probabilmente essere al livello dei test di integrazione: lavorare su un set "fisso" di file / database di input e controllare i file di output / modificare il contenuto del database di programmi specifici (COBOL) e / o applicazioni. Per le parti BASIC del software ciò può significare l'aggiunta di parametri della riga di comando per farli esercitare determinate funzioni senza l'intervento dell'interfaccia utente (G) o ottenere uno strumento di test automatizzato basato sull'interfaccia utente (G).
Isolare i calcoli e altri algoritmi
Anche Cobol supporta l'idea di sottoprogrammi richiamabili da un programma principale. Isolare tutti i calcoli di importazione e altri algoritmi in programmi o moduli separati. L'obiettivo è quello di creare una libreria di programmi / moduli / qualunque cosa faccia il lavoro grugnito isolata da tutto ciò che raccoglie input e crea output.
Adatta il cablaggio di prova per testarli sia attraverso le tue vecchie applicazioni che in isolamento. Ciò garantirà che il lavoro svolto sul "vecchio" codice per facilitare la migrazione verso un ambiente più recente introdurrà il minor numero di errori possibile.
Avvia un nuovo set di applicazioni in un ambiente "attuale"
Non convertire il tuo codice attuale. Convertire una lingua in un'altra significa imporre i vincoli del vecchio ambiente al nuovo. Il risultato è spesso meno desiderabile (leggi: il risultato sarà terribile e doloroso da mantenere). Migrare. Prenditi il tempo necessario per configurare le tue applicazioni nel nuovo ambiente in un modo che è considerato la migliore pratica per quell'ambiente.
Ottieni nuovi programmatori, esperti nel tuo ambiente prescelto, per farlo. Rendi prioritario fin dal primo giorno isolare tutti i calcoli e gli algoritmi importanti in classi e / o pacchetti separati e nasconderli dietro le interfacce. Usa l'iniezione di dipendenza (farà il tipo più economico di iniezione di dipendenza fai-da-te) per dire alla tua nuova applicazione quali classi istanziare / usare per fare i calcoli.
Questo è comunque un buon modo di fare le cose e nel tuo caso ti permetterà di migrare quelle parti importanti in base al caso. Nasconderà anche la complessità di chiamare i programmi di base e / o cobol dalle funzioni di chiamata nel nuovo ambiente.
Non andare oltre la configurazione delle applicazioni e forse l'impostazione della singola funzione di input / output più importante che utilizza un calcolo dalla tua "libreria" COBOL / BASIC.
Integra la tua "libreria" COBOL / BASIC
Scopri come chiamare la tua "libreria" COBOL / BASIC dal tuo nuovo ambiente. Ciò può comportare l'impostazione di file di parametri o tabelle di database, l'esecuzione di un programma COBOL / BASIC che avvolge la libreria COBOL / BASIC impostata in precedenza. Se sei fortunato, la tua versione di BASIC potrebbe consentire la creazione di DLL che possono essere chiamate direttamente.
Implementa la classe nel tuo nuovo ambiente che chiamerà la "libreria" COBOL / BASIC e testerà il diavolo usando gli stessi test che si trovano nel cablaggio di test del vecchio ambiente, ma ora sotto forma di test unitari nel nuovo ambiente .
Sì, questo significa "duplicare" i test, ma è una rete di sicurezza di cui non vuoi fare a meno. Se non altro perché questi test unitari serviranno in seguito come test per verificare l'implementazione dei calcoli e degli algoritmi quando vengono migrati nel nuovo ambiente.
Ma ancora: non andare oltre l'aggiunta dei test unitari per i calcoli utilizzati dal singolo più importante del passaggio precedente.
Rafforzare le nuove applicazioni nelle iterazioni
Completa le nuove applicazioni ripetendo i due passaggi precedenti per tutte le funzioni delle tue vecchie applicazioni. Continuare ad aggiungere quei test unitari che controllano i calcoli sul cablaggio di test delle nuove applicazioni. Utilizzare la suite di test di integrazione per verificare che le funzioni migrate funzionino come le vecchie applicazioni.
Migrare la libreria principale nelle iterazioni
E infine migra i calcoli e gli algoritmi nella tua "libreria" COBOL / BASIC, implementandoli nuovamente nel tuo nuovo ambiente. Ancora una volta, fai questo in modo iterativo usando i test (unit) come un modo per mantenere la sanità mentale.