Мне нужно провести аудит большого веб-приложения Java/J2ee, которое эволюционировало по нескольким года. Это было написано какой-то другой компанией, а не той, над которой я работаю. В нынешнее состояние стало трудно развиваться и поддерживать, новые функциональности трудно добавить и часто приводят к ошибкам, которые когда-либо появляются в производство. Кажется, что есть какой-то скопированный/вставленный код, который привел к дублированию кода. Текущее приложение - это своего рода интернет-магазин с каким-то cms-подобным контентом здесь и там. Это в основном Struts и некоторые Spring в новых частях кода, возможно, некоторые ejbs, которые были добавлены для хорошая мера. Есть некоторые модульные тесты, но их не так много. Это вещи, о которых мне сказали, я еще не видел фактического кода.
Моя компания сделает предложение переписать части этого приложения, чтобы уменьшить сложность, качество и модульность, а также упростить добавление новые функции без регрессий. Прежде чем принимать какое-либо решение, они хотели бы получить какую-то оценку о качестве существующего кода и о том, сколько его можно использовать повторно, чтобы иметь более чем предположение о том, что нужно будет сделать - переписать или частично переписать.
Уловка заключается в том, что мне придется сделать это за очень короткий период (пару дней), чтобы я пытаясь разработать план того, что можно сделать за такое короткое время. Я восхищаюсь тем, что:
- проверить "основные" вещи - обработка исключений, регистрация
- проверьте уровень слоев (виды, контроллеры, слой dao).
- измерять фактический охват модульных тестов
- может быть запущен некоторый Checkstyle, Findbugs и PMD над проектами
- ...
Итак, реальный вопрос заключается в том, какие еще вещи следует принимать во внимание /check/measure/etc?
Я не уверен, какие цифры я мог бы получить от этого, и если бы это действительно означало что-то, у меня такое чувство, что то, что спрашивает руководство, подход, поэтому второй вопрос: кто-нибудь имеет лучшую идею?
Я буду благодарен за любую идею, предложение, прокомментирую это.
Изменить: я добавлю в детектор два детектора кода: UCD и DCD