Pessoal entrei numa empresa que me ofereceu um salário bom…o problema é que tenho que entender o sistema, os códigos e etc…o problema é que o sistema não tem documentação nenhuma…alguém tem alguma técnica milenar neste caso?
Abs
Rodrigo
Pessoal entrei numa empresa que me ofereceu um salário bom…o problema é que tenho que entender o sistema, os códigos e etc…o problema é que o sistema não tem documentação nenhuma…alguém tem alguma técnica milenar neste caso?
Abs
Rodrigo
Blz?
Engenharia reversa do código para diagramas UML podem ser um início.
Mas não tem jeito. Vai ter que ralar muito no código para entender a estrutura do sistema e regras de negócio.
Boa sorte!
Primeiramente chama-se oxin dos codigos fontes, reza 3x, oferece sua alma, e pronto, você entenderá os codigos, mas somente desse sistema, para outro terá de repetir o ritual.
Brincadeiras a parte, não tem jeito não, o negocio é rala e adivinha, o pior e se o sistema não seguir nenhum padrão, ai sim vc está ferrado ehhehe.
abraços
Nessas ocasiões eu tento seguir o caminho de um evento no sistema. Desde o momento que o “ator” clica em um botão, ou coisa parecida, até o resultado retornar.
Tambem é util fazer um tipo de log conforme voce vai indo, que classe chama qual, essas coisas, pra tentar ter uma visão geral.
Olá,
Bom poderia ir inicialmente tentando entender a lógica de/do negocio. (crie alguns fluxos de como deveria ser.)
Tente seguir os fluxos enquanto “debuga” o código… é árduo, mas você começa a compreender melhor o sistema todo( por mais que não conheça tudo plenamente, começará ter noção de onde certas “coisas”, códigos, properties, etc, se encaixam no sistema ) .
Começa criando um diagrama de classes,
tentando montar um modelo de domínio,
editando classe por classe.
Se você conseguir, mesmo que seja
meio nebuloso a princípio, vai começar
a entender o sistema.
Vai ralar muito, infelizmente.
Boa sorte.
Se você achar resposta para isso, você pode escrever um livro e ganhar muita grana, pois tem muito projeto assim por aí. Você não tem noção da infinidade de projetos que não possuem uma linha sequer de Javadoc.
Sinceramente programador que não documenta seus códigos nem sequer merecia ser chamado de programador.
Por mais que o código fale por si só, o que não é muito que se vê por ai, porem seria o ideal. Mesmo assim, pelo menos, deveria haver um documento para dar o “ponta-pé” inicial. Porem sinceramente é muito chato ficar documentando coisas, eu tento criar código simples (seguindo os princípios do “ema ema ema”) e comentar pontos importantes da aplicações. Alguem tem algumas dicas legais ,de fácil “usabilidade” ?.
obs.: Mas o problema em tudo isso é que é muito complexo ser simples. (Pelo menos tentar criar coisas simples é complexo. :D)
Documentação de código deve possuir um formato pré-definido. No minimo ela deve ser clara e concisa e principalmente ser uma informacao útil. Uma equipe deve entrar em acordo sobre o que documentar e o que não documentar.
Olá!
Pra mim uma das últimas coisas que você deve fazer é diagrama de classe, pq vc já está começando pelo fim. Primeiro e mais importante: faça Diagramas de Casos de Uso para que saiba o que o seu sistema faz. Segundo: Mapeie processos usando BPMN, a partir daí vc já será capaz de ter um entendimento completo do código. Se usa jdbc, hibernate ou wherever isso são apenas detalhes de implementação, sem contar que o resultado do mapeamento com BPMN é algo “apresentavel” aos gestores.
O que aconteceu com quem desenvolveu o sistema? Se ele esta na empresa, exija algum tempo com ele para dar seus primeiros passos. Se nao, desconfie que voce pode estar se metendo numa fria…
Tem sim… uma tecnica chamada Debug frenetico…
so assim pra entender a bagaça…
ja passei por isto amigo… e complicado porem nada que um bom debug e verificação de pilha de chamadas resolva
É isso aí…infelizmente essa situação é bem comum mesmo, a parte boa é que geralmente oferecem mais dinheiro nestes tipos de oportunidades.
Minhas dicas:
Se houver algume que participou do projeto no local, pergunte a ele/ela; esta é a maneira mais rápida de aprender sobre o sistema. Se não houver ninguem (como ocorreu comigo), relaxe e vai devagar porque vai ficar realmente mais difícil porem a culpa não é sua, é mais de quem deixou todo mundo “voar” sem deixar nenhuma dica.
Se já houver usuários para o sistema eles poderão ser seus aliados, poderão lhe ajudar a entender os casos uso, instalação, regras de negócio e etc… enfim a parte externa da coisa.
Tente perceber o nível do desenvolvedor anterior verificando a codificação, se houver um método que começa com letra maiúscula, nome de classe com letra minuscula você já pode se preparar para problemas sérios de arquitura, perfomance, fluxos confusos e falta de verificações nas entradas de dados. Neste caso não tem jeito tambem, relaxe e vai aprendendo / arrumando a medida que os problemas vão surgindo.
Tente varificar quais componentes foram utilizados no sistema (hibernate, spring, jsf, struts, etc…) se você não souber com funciona algum deles comece a estudar imediatamente, caso contrario vc não irá entender a parte do código que envolve o componente desconhecido. Vc terá pontos cegos no código.
Se o desenvolvedor anterior for de nível médio para cima, você irá constatar uma especie de “modus operandis” expresso no código. Nestes casos selecione uma funcionalidade bem simples e percorra seu código do inicio ao fim depois disto pegue uma de nível médio e faça a mesma coisa.
Muitas vezes é possível encontrar alguns arquivos .docs na rede sobre o projeto; os caras as vezes fazem durante/após as reuniões e deixam espalhados se encontrar dá uma lida. Ao menos vc terá uma leve idéia do que eles queriam antes da crise chegar no seu ponto máximo.
Navegue nas janelas no sistema até ficar de “saco cheio” mesmo sem saber para que servem. Assim quando vc estiver no meio do código vc poderá fazer uma rápida associação.
Aproveite seu tempo livre (se houver) para aprender mais sobre a arquitetura (se houver) do sistema, assim você será mais àgil quando ocorrer algum problema, poderá até causar uma boa impressão nos seus usuários.
Tente perceber se foi utilizado patterns, se foi estude os que vc não conhecer. Com isto você já irá dominar boa parte do código escrito.
…
Espero ter ajudado.
flws
Não tem testes?
Pessoal vejo que o negócio é colocar a mão na massa mesmo!!!
Pelo jeito vou fazer um pouco de cada coisa que vocês falaram!!!
Olha que não é nada mal pensar em montar livro com uma técnica para entender projetos sem documentação!!
Será que daria grana? hahahhaha
Obrigado pessoal…o que vcs disseram pra mim nesse forúm…já me deixa tranquilizado diante do que tenho que passar!!
Abraços e obrigado por tudo!!
Rodrigo Santik
Se precisa de técnica milenar use:
The Tao of programming
Uma boa maneira de entender a bagunça é refatorando o código. Mas muitas vezes você precisará sentar por horas e horas até dominar bem o que o código faz.
Apenas mais duas opiniões sobre isso:
eu tentaria ir refatorando o código a medida que fosse lendo, ir retirando as 200 linhas do método monolítico e passando para objetos coesos, etc. O Eclipse é uma ótima ferramenta para refatoração, com diversos mecanismos próprios pra isso (pull up, push down, extract to local method, etc);
sobre comentários nos métodos, eu também não costumo colocar muito comentário no código - às vezes nenhum! Há uma recomendação do Extreme Programmig que diz ser melhor tornar o código legível ao invés de escrever linhas e mais linhas de comentários.
Tipo, é melhor ter um método getSituacaoDoPagamento() do que ter um método getStPgm() com um comentário “retorna a situação do pagamento”…
Abraço,
Marcone - http://marconems.blogspot.com
Olá caro colega rsantik!
Fique sabendo que vc estava me procurando, então resolvi aparecer, da minha melhor forma: de surpresa! :twisted:
Os outros colegas já te deram dicas boas, realmente "técnica milenar" não existe.
Mas faltou vc falar informações importantes no seu post. Por ex, que vc está numa equipe e não sozinho e abandonado no escuro da noite...rs... que nós não somos tão terroristas e te passamos sempre as alterações mais simples, fora que estamos te explicando o tempo todo vai. Em resumo, tá exagerando!!! Desse jeito vc assusta o pessoal! Todo mundo vai acreditar que o sistema é tão trash qto vc tá falando! rs...
Bom, eu sou meio "velha de GUJ", tô sumida por falta de tempo... mas o povo mais antigo acho que lembra de mim.
Em resumo pra galera que não entendeu nada dessa história: o rsantik está trabalhando comigo agora! :lol:
Ah, e detalhe, que papo é esse de salário bom que eu não tô sabendo?! rs... :shock:
T+ pessoal
Renata
Olá caro colega rsantik!Fique sabendo que vc estava me procurando, então resolvi aparecer, da minha melhor forma: de surpresa! :twisted: Os outros colegas já te deram dicas boas, realmente "técnica milenar" não existe. Mas faltou vc falar informações importantes no seu post. Por ex, que vc está numa equipe e não sozinho e abandonado no escuro da noite...rs... que nós não somos tão terroristas e te passamos sempre as alterações mais simples, fora que estamos te explicando o tempo todo vai. Em resumo, tá exagerando!!! Desse jeito vc assusta o pessoal! Todo mundo vai acreditar que o sistema é tão trash qto vc tá falando! rs... Bom, eu sou meio "velha de GUJ", tô sumida por falta de tempo... mas o povo mais antigo acho que lembra de mim. Em resumo pra galera que não entendeu nada dessa história: o rsantik está trabalhando comigo agora! :lol: Ah, e detalhe, que papo é esse de salário bom que eu não tô sabendo?! rs... :shock:T+ pessoal
Renata
Ainda bem que ele falou bem! 
Quando eu passo por isso eu vou pelo debug no eclipse mesmo, com um papel e uma caneta do lado pra ir escrevendo os passos executados.
Quando eu refatoro códigos, eu procuro tentar usar java code convention & kiss, e o mais importante, não custa abrir um:
/**
* Meu breve comentario
* @author: seu nome aqui.
*/
[]'s
Olá caro colega rsantik!Fique sabendo que vc estava me procurando, então resolvi aparecer, da minha melhor forma: de surpresa! :twisted: Os outros colegas já te deram dicas boas, realmente "técnica milenar" não existe. Mas faltou vc falar informações importantes no seu post. Por ex, que vc está numa equipe e não sozinho e abandonado no escuro da noite...rs... que nós não somos tão terroristas e te passamos sempre as alterações mais simples, fora que estamos te explicando o tempo todo vai. Em resumo, tá exagerando!!! Desse jeito vc assusta o pessoal! Todo mundo vai acreditar que o sistema é tão trash qto vc tá falando! rs... Bom, eu sou meio "velha de GUJ", tô sumida por falta de tempo... mas o povo mais antigo acho que lembra de mim. Em resumo pra galera que não entendeu nada dessa história: o rsantik está trabalhando comigo agora! :lol: Ah, e detalhe, que papo é esse de salário bom que eu não tô sabendo?! rs... :shock:T+ pessoal
Renata
Caro rsantik,
Só pelo bom salário acho que já vale a pena hein, num é não?
E como nossa colega Renata disse, é isso mesmo, cola nos mais antigos e vamos que vamos, será que os demais que fazem parte da equipe também já não passaram por isso? Enfim é tudo questão de tempo, qdo perceber, passaram alguns meses e vc já estará totalmente inteirado ao sistema, e verá que a documentação pode fazer falta, mas que não foi tão dificil assim…rsrs
Enfim sei que trabalhar com a Renata num é fácil, mas vc vai conseguir…relaxa…rs
QQ dúvida tamos ae, qdo precisar…
E só pra saber, qto tão te pagando nessa empresa ae hein!?..kkkkkk
Benvindo a equipe!!
Abraços, Léo.
Ih cara, se foi essa tal de RenataFA que fez… Pode pedir demissão! Hehehehehe, calma, foi só uma brincadeira.
Falando serio agora… Cara, acho que a melhor forma é você conversar com quem fez o sistema. Ou usar ele (o sistema) durante algumas horas… Eu não recomendo pegar de cara o fonte e ir lendo porque tive que fazer isso com Delphi (e eu nunca tinha visto Delphi na vida) e passar pra Java. Passei uns 2 meses querendo me enforcar, porque não era muito fácil de entender. Não que o sistema foi feito de forma errada, mas é complicado você mudar daquela visão de Java (que grande parte das coisas tem arquitetura no meio (não é recomendável acessar o banco nem o servidor diretamente da tela, por exemplo) e é mais elaborado que o Delphi que eu vi) praquela visão do Delphi, que dá commit da tela, pega os valores da tela, cria variáveis globais e bota uma grid que já faz algo parecido com um pojo.
Brincadeiras a parte, eu faria tudo diferente. Primeiramente, tentaria entender o que o sistema faz. Depois, levantaria as tabelas do banco que são usadas e daria uma olhada nelas. Depois disso, vai por eventos, como o pessoal falou. Starta a aplicação e vai traçando o caminho das coisas. O ideal, depois disso, seria fazer uma reuniãozinha todos os dias, de meia hora, com os caras que fizeram o sistema e ir perguntando as dúvidas que surgem. Dá 1 mês, até menos, que você tá sabendo pelo menos uns 90% do sistema.
Olá caro colega rsantik!Fique sabendo que vc estava me procurando, então resolvi aparecer, da minha melhor forma: de surpresa! :twisted: Os outros colegas já te deram dicas boas, realmente "técnica milenar" não existe. Mas faltou vc falar informações importantes no seu post. Por ex, que vc está numa equipe e não sozinho e abandonado no escuro da noite...rs... que nós não somos tão terroristas e te passamos sempre as alterações mais simples, fora que estamos te explicando o tempo todo vai. Em resumo, tá exagerando!!! Desse jeito vc assusta o pessoal! Todo mundo vai acreditar que o sistema é tão trash qto vc tá falando! rs... Bom, eu sou meio "velha de GUJ", tô sumida por falta de tempo... mas o povo mais antigo acho que lembra de mim. Em resumo pra galera que não entendeu nada dessa história: o rsantik está trabalhando comigo agora! :lol: Ah, e detalhe, que papo é esse de salário bom que eu não tô sabendo?! rs... :shock:T+ pessoal
Renata
É meu camarada que bola fora em! HAHAHA!
mas não liga não, é o que o pessoal já te falou Renata e o Léo estamos todos aqui para te ajudar!!
Mas para de dar bola fora mano! kkkk
Capacete Rosa, e agora essa!?
kkkkkkkkkkkk
kkkkkkkkkkkkk :lol:
Abraço e precisando estamos aii!!
Milton - Tino
Bom pelo visto o cara tá apenas com aquele cagaço inicial de trampo novo , não tá numa barca furada abandonada no oceano como passou a impressão pelo post, tava com cara daquelas vagas ninja que surgem no apinfo, bom salário para uma bela bucha.
Mas no meu caso já passei por uma situação dessas, projeto grande, mal desenhado, utilizando péssimas práticas de programação, totalmente desorientado a objetos rs, e os caras que fizeram já tinham saído da empresa, e pior, eu precisava ir no cliente ficar alocado 3 dias para corrigir backlogs de homologação, e o cliente ficava em outro estado, tive pouco tempo para me familiarizar com o sistema antes de ir pra lá.
Nessa situação não teve jeito, Debug na veia.
O engraçado é como as coisas caminham juntas, um projeto nessas “características” , de 10, é certeza que 9 não tem documentação alguma e o 1 que tem não deve servir para nada.
Assim como se tivesse documentação decente, talvez o software não estivesse em situação tão caótica, ou possivelmente a documentação nem seria necessária, daria para entender os fluxos do sistema dando uma rápida passada no código, olhando as assinaturas dos métodos, as interfaces, ou seja, LEGIBILIDADE, COESÃO, conceitos básicos, se o desenvolvedor não conhece nem isso, deve ser melhor nem ler a documentação do mesmo para não passar raiva.
Bom pessoal, agradeço pela força.
Fiz uma simples pergunta, não quis ofender ninguém, sempre utilizo o guj para ficar inteirado com a galera e aprender cada vez mais
Talvez tenha feito uma pergunta boba para alguns, talvez para outros uma pergunta inteligente.
Na minha carreira com Java, já ouvi muitos “nãos” na vida, ja ouvi muitas pessoas criticarem minhas perguntas, já ouvi críticas e elogios… É um mundo de incertezas…
Desculpe se magoei alguém, se fiz uma pergunta que alguém não tenha entendido, pois tinha a necessidade de saber, e no momento não obtive resposta, por isso uso o guj, só estou tentando ser um engenheiro de software, porque programar eu já sei!
Para responder todo esse questionário acima, gostaría que vocês olhassem o vídeo abaixo, é rápido tem alguns minutos:
Abraços a todos
Rodrigo Santik