Um aplicativo muito extenso começou como um sistema baseado em Access (para armazenamento de banco de dados). Os formulários foram escritos em VB5 e / ou VB6. Como o .Net se tornou um elemento importante na comunidade de desenvolvimento, certos módulos foram reescritos. Isso parece muito complicado e potencialmente caro apenas para manter por causa das tecnologias cruzadas e trabalho extra para manter as duas tecnologias felizes uma com a outra. Obviamente, o aplicativo usa uma mistura de ODBC OleDb e MySql.
Você acha que gastar tempo e recursos para desenvolver completamente o aplicativo em .Net seria mais econômico? Em um esforço para desenvolver um aplicativo mais estável, não faria sentido usar o .Net? Ou continue perseguindo os bugs do Access, adicionando novos recursos no .Net (que podem ou não criar novos bugs entre o .Net e o Access) e reescrevendo os módulos antigos do Access em módulos .Net com restrições de tempo que impedem o design e o desenvolvimento adequados?
Atualização O aplicativo usa OleDb e MySql - corrigi minha declaração anterior.
Além disso, para dar mais suporte à reescrita: desde então, descobri que, quando a "portabilidade" para .Net começou, o código VBA / VB6 existente era basicamente traduzido para o equivalente .Net. Pelo meu entendimento, nada foi feito para melhorar o desempenho ou tirar proveito de novas bibliotecas ou tecnologias.
Na minha opinião, isso cria um aplicativo muito frágil e instável. A cada nova atualização, isso se torna cada vez mais visível. Como técnico de suporte técnico, notei um aumento nos problemas relatados. Os clientes que usam o software notaram um aumento nos problemas e estão comentando.
fonte
Respostas:
Muitas pessoas desencorajam a reescrever um aplicativo do zero e às vezes eu concordo com o raciocínio. Mas, na maioria das vezes, acho que reescrever o aplicativo é a solução menos dolorosa e qualquer coisa escrita no Access precisa ser portada para o .NET - PERIOD. Não me interpretem mal, o Access tem seu lugar e pode fornecer muitas funcionalidades a uma organização, mas se ele se transformar em um aplicativo completo em que as pessoas confiam, o acesso ao Google cresceu.
Provavelmente não levaria muito tempo para portar o VBA existente para o .NET em uma conversão um por um. Mas isso pode não ser uma ótima solução se o VBA não for muito bom para começar. Uma reformulação / reescrita levará mais tempo para ser escrita, mas, a longo prazo, será muito mais fácil de manter.
Estou quase sempre no campo de reescrevê-lo do zero no que diz respeito ao Access e nunca me arrependi disso.
fonte
Eu concordo com a abordagem de refatoração. É bem provável que esse seja um processo lento que pode levar muitos meses para ser concluído, mas a movimentação de um recurso / seção por vez tem grandes vantagens, incluindo:
Boa sorte
fonte
Geralmente, é uma prática desencorajada "reescrever" um aplicativo a partir do zero (que é um desejo normal que muitos programadores sentiram pelo menos algumas vezes na vida), porque você passará de um aplicativo com conjunto de recursos conhecidos (e bugs conhecidos também!) para um aplicativo com provavelmente um conjunto menor de recursos e mais importante - bugs desconhecidos. Os usuários podem ficar frustrados, etc.
Você provavelmente ficaria melhor se refatorasse lentamente seu aplicativo por um período de tempo, evoluindo assim sua arquitetura por um longo período de tempo.
fonte
Um grande desafio que experimentei ao reescrever essa escala é ter que manter duas bases de código ao mesmo tempo. Se você corrigir um erro no sistema legado, verifique se a funcionalidade funciona corretamente no novo sistema e vice-versa. A atualização de um módulo por vez minimiza essa dor de cabeça na manutenção.
Um conjunto completo de testes de regressão executado nos sistemas legados e de substituição também seria útil.
fonte
Eu concordo com Jas, não reescreva aplicativos apenas por reescrever. Talvez eles nunca precisem ser depurados ou aprimorados, então por que perder tempo? No entanto, se você sentir que há uma mudança na experiência dos novos desenvolvedores contratados do Access para .NET, talvez seja necessário migrar antes que seja tarde demais. Parece improvável, mas uma possível consideração.
Embora possa não ser lucrativo do ponto de vista de desenvolvimento, como a difusão de aplicativos diferentes afeta os usuários? Requer mais treinamento do usuário? Eles estão cometendo mais erros. Aumenta o número de chamadas de suporte porque elas não conseguem encontrar algo?
fonte
"Você acha que gastar tempo e recursos para re-desenvolver completamente o aplicativo no .Net seria mais econômico?"
Esta não é uma pergunta que possa ser respondida aqui.
Do topo da pirâmide de requisitos: alguém tomou uma decisão que, esperançosamente, pode justificar com um plano de negócios. Nesse plano de negócios, ele deve declarar quantas horas + custos extras são necessários para converter o aplicativo e, no mesmo plano de negócios, os benefícios são declarados também em termos de dinheiro.
Essa é a maneira de fazer isso. Se não houver plano de negócios para isso. então a resposta é primeiro trabalhar em um plano de negócios rastreável para alguns casos de uso de alto nível para fazer a análise de impacto e verificar o início do projeto.
Se o condutor original da meta de negócios que leva à mudança nem se baseia em dinheiro, provavelmente é essa pessoa que está pagando por tudo, portanto, isso deve ser feito.
Se não houver um plano de negócios, mas "apenas pronto", tente criar um e apresentá-lo à alta gerência. Inclua casos de uso de alto nível, custos, horas para reprojeto, construção, custo extra para operações, novo treinamento para administradores e usuários finais, gerenciamento de projetos e riscos potenciais.
IMHO isso não é uma questão técnica.
fonte