Обратное проектирование плохо документированной Java из источника - PullRequest
7 голосов
/ 14 июня 2011

Я системный инженер, недавно закончил колледж, и мне только что дали проект, который является чрезвычайно пугающим.

У нас есть устаревшая система, мы юридически владеем всем кодом и всеми правами наЭто.Проблема в том, что код плохо документирован, небольшая документация неполная, иногда неправильная, а оригинальные разработчики недоступны.

Для работы с нестандартным сценарием сборки на Perl требуется тысяча модулей из CPAN, а я нетзнать Perl.Обратный инжиниринг в UML не удался, кроме как с помощью Doxygen, и это ограничивается только диаграммами наследования и графами вызовов.

Я получил массивную классную доску, и я медленно перебираю код, моделируя пакеты, а затем вложенныепакеты внутри.

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

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

Существуют ли какие-либо книги, которые могут мне помочь, и я подхожу к этому с правильной точки зрения?Должен ли я нанять работника по контракту, который знает Perl и JMX, чтобы помочь мне?

Ответы [ 3 ]

7 голосов
/ 14 июня 2011

Книга Майкла Фезерса «Эффективная работа с устаревшим кодом», вероятно, поможет вам больше, чем все, что мы можем вам здесь рассказать.вопрос звучит так, как будто не совсем понятно) это так: какова ваша цель?Чего вы хотите достичь с помощью этой кодовой базы?

Если ответ (как это звучит) «возможность эффективно поддерживать существующий проект», то попытка напрямую построить полную высокоуровневую модель системы.возможно, не самый эффективный путь.Это, вероятно, слишком много, чтобы сразу иметь в виду.

В этом случае я бы попытался понять только те случаи использования системы, которые вам необходимо изменить;следуйте вызовам методов через код (возможно, с использованием отладчика в работающей системе), чтобы увидеть, какие части задействованы.Сделайте это для нескольких разных вариантов использования, и вы начнете видеть шаблоны, затем документируете их и постепенно объединяете их в высокоуровневое изображение системы.

0 голосов
/ 15 июня 2011

Если это Java-код, то глубокий обратный инжиниринг был бы очень полезен. См. Документацию по адресу: http://www.ejb3.org/jar_file_reverse/jar_file_reverse.html

0 голосов
/ 14 июня 2011

Этот инструмент может помочь вам.

Или, если устаревшая система написана плохо, это может привести к огромному нечитаемому беспорядку, но я надеюсь, что это поможет.

...