Pode parecer que "deve haver um modelo de negócios para uma empresa de suporte de TI que se concentre em plataformas herdadas como esta", mas pessoalmente acho que isso é apenas um desejo de sua parte, pois "resolveria" os desafios que você enfrenta em um caiu rapidamente.
Ficar preso em ambientes antigos não é o caminho a seguir. E eu, pelo menos, não apostaria a vida de nenhuma empresa tentando ficar presa ao encontrar uma empresa que, por enquanto, estaria disposta a fazer o que você aparentemente não pode.
Portanto, não é uma resposta para a pergunta real que você pediu, mas conselhos sinceros sobre como você pode avançar enquanto mantém os riscos de uma migração no mínimo.
Leia "Como sobreviver a uma reescrita básica, sem perder a sanidade"
Não cometa o erro de um projeto de migração longo sem resultados reais por muito tempo. Leia "Como sobreviver a uma reescrita básica, sem perder a sanidade"
Não posso enfatizar o suficiente como os conselhos desse artigo me ajudaram a resolver / abordar problemas semelhantes depois de me queimar fazendo esses tipos de projetos da maneira "antiga".
Configurar testes automatizados
Se você ainda não o instalou (por que não?), Peça aos programadores atuais que criem um equipamento de teste automatizado para seus aplicativos.
O conjunto de testes automatizados deve cobrir todas as áreas funcionais dos seus aplicativos. Deverá documentar as especificações de trabalho atuais nas regras "quando_X_depois_Y" dos casos de teste individuais. Isso ajudará a impedir que as alterações em seu código atual quebrem a funcionalidade existente, além de oferecer suporte a qualquer migração para um novo ambiente.
Como você está lidando com o COBOL e o BASIC, o conjunto de testes provavelmente deve estar no nível dos testes de integração: trabalhando em um conjunto "fixo" de arquivos / bancos de dados de entrada e verificando os arquivos de saída / conteúdo alterado do banco de dados de programas específicos (COBOL) e / ou aplicações. Para as partes BASIC do seu software, isso pode significar adicionar parâmetros de linha de comando para fazê-los exercer certas funções sem a intervenção (G) da interface do usuário ou obter uma ferramenta de teste automatizada (G) da interface do usuário.
Isolar cálculos e outros algoritmos
Até o Cobol suporta a noção de subprogramas que podem ser chamados de um programa principal. Isole todos os cálculos de importação e outros algoritmos em programas ou módulos separados. O objetivo é criar uma biblioteca de programas / módulos / o que quer que o trabalho pesado resulte isolado de tudo o que reúne informações e cria resultados.
Adapte o equipamento de teste para testá-los tanto em seus aplicativos antigos quanto em isolamento. Isso garantirá que o trabalho que você está fazendo no código "antigo" para facilitar a migração para um ambiente mais novo introduza o menor número possível de erros.
Inicie um novo conjunto de aplicativos em um ambiente "atual"
Não converta seu código atual. Converter um idioma para outro significa impor as restrições do ambiente antigo ao novo. O resultado é muitas vezes inferior ao desejável (leia-se: o resultado será terrível e difícil de manter). Migrar. Reserve um tempo para configurar seus aplicativos no novo ambiente de uma maneira que seja considerada a melhor prática para esse ambiente.
Obtenha novos programadores, bem versados no ambiente escolhido, para fazer isso. Torne uma prioridade desde o primeiro dia isolar todos os cálculos e algoritmos importantes em classes e / ou pacotes separados e ocultá-los atrás de interfaces. Use injeção de dependência (o tipo mais barato de injeção de dependência de bricolage fará) para informar ao seu novo aplicativo quais classes instanciar / usar para fazer os cálculos.
Essa é uma boa maneira de fazer as coisas de qualquer maneira e, no seu caso, permitirá que você migre essas partes importantes em uma base por caso. Ele também ocultará os meandros da chamada de programas básicos e / ou cobol das funções de chamada no novo ambiente.
Não vá além: configure os aplicativos e, talvez, configure a função de entrada / saída mais importante que usa um cálculo da sua "biblioteca" COBOL / BASIC.
Integre sua "biblioteca" COBOL / BASIC
Descubra como chamar sua "biblioteca" COBOL / BASIC a partir do seu novo ambiente. Isso pode envolver a configuração de arquivos de parâmetros ou tabelas de banco de dados, a execução de um programa COBOL / BASIC que envolve a biblioteca COBOL / BASIC que você configurou anteriormente. Se você tiver sorte, sua versão do BASIC poderá permitir a criação de DLLs que podem ser chamadas diretamente.
Implemente a classe em seu novo ambiente que chamará a "biblioteca" de COBOL / BASIC e testará o problema usando os mesmos testes que estão no chicote de teste do ambiente antigo, mas agora na forma de testes de unidade no novo ambiente .
Sim, isso significa "duplicar" os testes, mas é uma rede de segurança que você não quer prescindir. Apenas porque esses testes de unidade servirão posteriormente como testes para verificar a implementação de seus cálculos e algoritmos quando eles forem migrados para o seu novo ambiente.
Mais uma vez: não vá além de adicionar os testes de unidade para o (s) cálculo (s) usado (s) pelo mais importante da etapa anterior.
Conheça os novos aplicativos em iterações
Abra os novos aplicativos repetindo as duas etapas anteriores para todas as funções em seus aplicativos antigos. Continue adicionando os testes de unidade que verificam os cálculos no chicote de teste dos novos aplicativos. Use o conjunto de testes de integração para verificar se as funções migradas funcionam da mesma forma que seus aplicativos antigos.
Migrar a biblioteca principal em iterações
E, finalmente, migre os cálculos e algoritmos na sua "biblioteca" COBOL / BASIC, reimplementando-os em seu novo ambiente. Novamente, faça isso de forma iterativa, usando os testes (unitários) como uma maneira de manter sua sanidade.