Sugestão: Criar Sistema do Zero ou Integrar-se a um Existente

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? :smiley: )

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.

  1. Já passaram por algo do tipo?

  2. Será que não existe outro meio além de começar um novo sistema do zero?

  3. Vocês vêem alguma outra forma viável de resolver esse problema?

  4. 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… :slight_smile:

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 :frowning: , 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.