Обратный инжиниринг в Java - PullRequest
2 голосов
/ 31 января 2011

Я знаю, что один и тот же вопрос задавался много раз на SO, и я прошел через большинство тем.Тем не менее, у меня до сих пор нет удовлетворительного ответа, поэтому я подумал спросить у сообщества.

Мне поручена работа по обратному проектированию модуля, и у меня возникли следующие проблемы:

  1. Команда не знает, что именно находится в базовом компоненте (Модуль является сторонним решением)
  2. Команда работала только над частью тестирования, поэтому они могли предоставить мне только информацию о потоке, но чтоотправная точка, и это то, где они понятия не имеют.

Теперь они хотят, чтобы я копался в базе кода и придумывал диаграммы классов, а также последовательность операций и т. д.

Я никогда не работал в своей профессиональной жизни в такой ситуации, когда нет понятия, с чего начать и как выполнять эту работу.Единственное, что у меня есть, это исходный код.

У меня есть два вопроса, где мне нужна помощь:

  1. Есть ли какой-нибудь плагин для Eclipse, который может автоматически генерировать диаграммы классов из исходного кода?
  2. Что следует делатьподход будет, когда кто-то находится в такой ситуации?

Обновление: у меня будет доступ к исходному коду.Поэтому я больше склоняюсь к лучшему подходу для выполнения задачи

Ответы [ 3 ]

3 голосов
/ 31 января 2011

Я бы начал с декомпиляции модуля и убедился, что декомпилированный код можно собрать в рабочую библиотеку. Например, вы можете использовать JD . Теперь я вижу, что у вас уже есть исходный код.

Важно сначала получить скомпилированный исходный код, потому что вам придется добавлять комментарии и javadoc при его изучении. Вам больше не нужно работать с исходным двоичным файлом, просто рассматривайте декомпилированный исходный код как очень плохо документированный нормальный код. Также рекомендуется переименовывать локальные переменные и параметры методов, чтобы сделать код проще для чтения.

Создание диаграмм классов из файлов .java должно быть простым.

Понять процесс можно двумя способами: вручную или с помощью профилировщика. Для обоих методов сначала нужно найти точки входа, но если вы уже используете библиотеку, они должны быть достаточно очевидными. Затем вы просто вызываете метод API и шагаете по коду. Всегда делайте заметки о том, что вам интересно. (Во многих отношениях исследование неизвестного кода похоже на исследование подземелья в старой доброй приключенческой игре.) Преобразуйте эти заметки в комментарии javadoc, чтобы вы могли генерировать более информативные javadocs по мере продвижения.

Метод профилировщика больше предназначен для обнаружения общих моделей вызовов, но каждый профилировщик должен иметь представление стека вызовов, которое вы можете использовать.

3 голосов
/ 31 января 2011

Вам помогут несколько декомпиляторов Java, например JD-Core , и есть версия Eclipse.

0 голосов
/ 31 января 2011

Ответ на вопрос (2) будет зависеть от вашего ответа на мой комментарий, но для вопроса (1), проверьте эту страницу , которая дает учебное пособие о том, как использовать eclipse для генерации класса UMLдиаграмма из источника.

...