Compreensão do código, engenharia reversa, melhores conceitos e ferramentas. Java

Uma das tarefas mais exigentes para qualquer programador, o arquiteto é entender o código de outros.

Por exemplo, sou contratado, contratado para resgatar algum projeto muito rapidamente. Corrija bugs, planeje refatoração global e, portanto, preciso da maneira mais eficiente de entender o código. Qual é a lista de conceitos, sua prioridade e as melhores ferramentas para isso?

Do que eu sei: engenharia de código reverso para criar modelos de objetos (a criação de diagrama por pacote não é tão conveniente), crie diagramas de sequência (a ferramenta se conecta no modo de depuração ao sistema e gera diagramas em tempo de execução). Algumas técnicas de visualização, usando algumas ferramentas para trabalhar não apenas com.java mas também com p.JPA implementadores comoHibernate. Gere um diagrama para não toda a base de código, mas adicione algumas classes e depois as classes usadas por ela.

O Sparx Enterprise Architect é o estado da arte em engenharia reversa ou está longe disso? Alguma outra ferramenta melhor? Idealmente, essa ferramenta me faz entender o código como se eu mesmo o tivesse escrito :)

questionAnswers(6)

yourAnswerToTheQuestion