L'Ingénierie inverse en Java
Je sais que la même question a été posée de nombreuses fois sur DONC et je suis passé par la plupart des threads. Cependant, j'ai encore du point de ne pas avoir une réponse satisfaisante, alors j'ai pensé à demander de la communauté.
Je suis assigné le travail à faire de l'ingénierie inverse à un module et ont les problèmes suivants:
- L'équipe n'a aucune idée de ce qui est exactement dans le composant sous-jacent
(Module est une solution tierce) - Équipe était seul à travailler sur les tests de la partie, de sorte qu'ils ne peuvent me fournir
des informations sur les flux, mais ce qui est le point de départ et qui
c'est là qu'ils n'ont aucune idée.
Maintenant ils veulent me creuser par le biais de la base de code et de venir avec des diagrammes de classe ainsi que la séquence de flux etc.
Je n'ai jamais travaillé de ma vie professionnelle dans ce genre de situation où il n'y est aucune idée par où commencer et comment faire ce travail. La seule chose que j'ai, c'est le code source.
J'ai deux questions où j'ai besoin de l'aide:
- Est-il un plugin pour Eclipse qui peut générer des diagrammes de classe
automatiquement à partir du code source? - Ce que l'approche adoptée doit être quand on est dans ce genre de situation?
Mise à jour:
Je vais avoir accès au code source. Donc je suis plus enclin à la meilleure approche pour accomplir la tâche
- Avez-vous le code source ou de travailler uniquement avec
.class
fichiers/pots? - j'ai dit à l'accès au code source
- Ouais, bonne question. J'ai été s'il n'y a pas de code source, mais si c'est une solution plus facile pour vous...
- Le Reverse engineering est la recréation d'un appareil qui effectue la même chose qu'un périphérique existant, sans la connaissance de la structure interne. Si vous avez le code source pour quelque chose que vous ne sont pas rétro-ingénierie-il. Vous êtes à la refactorisation, ou de le documenter.
Vous devez vous connecter pour publier un commentaire.
Il y a plusieurs Java décompilation qui vous aideront, comme JD-Core, et il y a une Éclipse version de celui-ci.
je commencerais avec la décompilation du module et faire en sorte que le code décompilé peuvent être rassemblés dans un groupe de travail de la bibliothèque. Vous pouvez utiliser JD par exemple.je peux voir maintenant que vous avez obtenu le code source déjà.L'obtention d'un code source compilable il est d'abord important, parce que vous aurez à ajouter des commentaires javadoc et comme vous l'explorer. Vous n'avez pas à travailler avec le binaire original plus de traitement, la décompilation du code source très mal documenté de code. C'est aussi une bonne idée de renommer les variables locales et les paramètres de la méthode pour rendre le code plus facile à lire.
Générer des diagrammes de classes
.java
fichiers devrait être facile ensuite.La compréhension de l'écoulement peut être fait de deux façons, manuellement ou à l'aide d'un profileur. Pour les deux méthodes, vous devez trouver les points d'entrée de la première, mais si vous êtes déjà à l'aide de la bibliothèque, ceux-ci devraient être assez évident. Alors que vous venez invoquer la méthode de l'API et de l'étape à travers le code. Toujours prendre des notes de quelque chose d'intéressant à vous rencontrer. (À bien des égards, l'exploration d'un code inconnu est similaire à l'exploration d'un donjon dans un bon vieux jeu d'aventure.) Convertir ces notes en commentaires javadoc de sorte que vous pouvez générer plus d'information javadocs comme vous allez le long.
Le profiler méthode est plus au sujet de découvrir les modèles généraux d'appels, mais chaque profiler devrait avoir un appel en vue de la pile vous pouvez utiliser.
La réponse à la question (2) dépend de votre réponse à mon commentaire, mais pour la question (1), découvrez cette page qui donne un tutoriel sur la façon d'utiliser eclipse pour générer un diagramme de classes UML à partir de la source.