Senhores, bom dia!
Preciso resolver um problema de um cliente e gostaria de contar com a opinião de vocês antes de decidir o que fazer. Então, senta que lá vem a história! (Lembram disso? )
Resumidamente, esse cliente possui várias lojas e um sistema de informação que está funcionando bem. No entanto, o fornecedor desse sistema não dá suporte algum. E é preciso adicionar novas funcionalidades ao software, mas o fornecedor também não é capaz disso (não me perguntem o porquê).
Esse software não é ultra-gigante e complexo, mas também não é apenas um front-end para CRUD. Não foi escrito em Java e mesmo que fosse não iria adiantar nada, pois o código-fonte não está disponível. É claro que também não há nenhuma documentação sobre o banco de dados, etc.
-
Já passaram por algo do tipo?
-
Será que não existe outro meio além de começar um novo sistema do zero?
-
Vocês vêem alguma outra forma viável de resolver esse problema?
-
Ou o melhor mesmo é entregar um software novinho em folha?
T+!
Desde já agradeço a atenção.
Cara… depende das mundaças. Embora usar 2 sistemas pra fazer a mesma coisa é uma gambiarra fenomenal, vc (e o cliente) precisa avaliar quanto trabalho a mais (e consequentemente dinheiro a mais) terá que ser empregado para a migração por completo.
Aí é com vc msm…
Sem gambiarras. Se for pra fazer um novo, só um estará em operação. A outra opção é integração, onde supõe-se que uma parte complementa a outra.
Começar do zero já diz tudo: muito trabalho. A questão é: O que dá menos trabalho (e sai mais barato)?
É impossível passar todos os detalhes, daí nenhuma opinião poderá ser exata, claro. Mas, alguém já passou por algo assim? Algo parecido?
Depende de vários fatores, mas na minha opinião é melhor você começar o sistema do zero. Pelo que você comentou nem o antigo fornecedor sabe direito como o sistema foi feito, e se você se arriscar a fazer alterações sobre o que está pronto pode ser que chegue uma hora em que dê algum pau insolúvel, e não tenha ninguém a quem recorrer. Daí seu cliente vai falar que a culpa foi sua, que antes de você mexer funcionava, etc.
Criando o sistema desde o início você vai ter domínio de tudo que está sendo feito, porém vai ter a inconveniência de que vai demorar mais.
Como o sistema do seu cliente não é nada complexo eu sugiro que começe outro do zero, afinal você perderia muito tempo analisando o sistema atual e só depois para implementar novas funcionalidades. Além disso, se sugir falhas por causa das implementações você corre um risco de ser colocado como o culpado , e se decidir reaproveitar o atual cuidado para não corromper a base de dados :shock: …
Tente ver se a funcionalidade que vai desenvolver é totalmente aclopada ao sistema já existente, senão vc pode começar com um modulo apenas seu novo sistema e começar uma migração sua do antigo para o novo. Cada vez agregando mais funcionalidades no seu novo sistema e desativando do sistema antigo.
Você pode até continuar o anterior, mas considere que:
-
estender as funcionalidades de um sistema sem ter acesso aos fontes dele pode ser problemático se o sistema não oferece uma boa API para você “plugar” os novos componentes nele.
-
uma hora esse sistema terá de ser substituído. Aí será preciso criar uma nova gambiarra pra ficar no lugar do sistema e acoplar com a primeira gambiarra criada.
Se possível, converse com o cliente e faça do zero. Trabalhe com open source. Faça contrato de manutenção e treinamento. Assim você ganha seu dinheiro, presta um serviço de qualidade e o cliente fica feliz por ter o código e alguém na empresa que foi treinado pelo desenvolvedor e será capaz de manter o software caso o desenvolvedor desapareça! (Sem falar que pode ajudar a diminuir muito a demanda por manutenção, resolvendo problemas bobos no sistema)
Negocie certinho com ele e faz um do zero cara, isso ai vai te dar dor de cabeça ainda… rs
Eu já tentei fazer isso… E é uma droga! Integrar com sistema que vc não conhece e não tem referência/documentação, vc corre um risco muito grande de bagunçar algo que está funcionando (às vezes até precariamente). Até mesmo gerando relatórios não tive boas experiências. Apesar de atender às expectativas do usuário, o trabalho foi enorme e vc não tem garantias que a coisa vai sempre correr 100%, já que o aplicativo que gera os dados não é seu. Isso quando o cliente não te liga 8 meses depois pra vc fazer uma alteração pequena mas vc tem que estudar toda aquele banco de dados (vc não vai lembrar dos detalhes, vai?).
Eu não sei o q vc está pensando em desenvolver para o cliente, mas se compensar e o cliente pagar, tente desenvolver do zero.
[Alerta]Visão superficial para regras gerais, depende do que vc tem que desenvolver[/Alerta]
Pessoal, obrigado pela contribuição!
Eu estou fortemente inclinado a começar o projeto do zero (caso o negócio vá pra frente). A opinião de vocês irá me ajudar a argumentar melhor o porquê disso.
Agora, continuando a discussão, se o código fonte estivesse disponível, genérica e superficialmente falando, ainda assim vocês achariam melhor iniciar o projeto ao invés de extender/integrar o legado?
T+!
[quote=RafaelRio]Pessoal, obrigado pela contribuição!
Eu estou fortemente inclinado a começar o projeto do zero (caso o negócio vá pra frente). A opinião de vocês irá me ajudar a argumentar melhor o porquê disso.
Agora, continuando a discussão, se o código fonte estivesse disponível, genérica e superficialmente falando, ainda assim vocês achariam melhor iniciar o projeto ao invés de extender/integrar o legado?
T+![/quote]
Mesmo que o código fonte estivesse disponível, eu faria do zero. Mas também depende: pode ser que a versão antiga esteja bem ou mal estruturada, de modo que pode ser fácil (ou não) inserir novas funcionalidades. É necessário analisar direito.
Apesar de ter o código fonte, muitas vezes isso não é garantia de que você vai entender o que o programador fez.