Java: удобный способ рефакторинга приложения - PullRequest
0 голосов
/ 21 февраля 2011

У нас есть гибкое корпоративное приложение, построенное на JSP и Servlet без какой-либо стратегии проектирования.

Это приложение было создано в начале 2002 года с учетом 1000 пользователей. После 2002 года мы получили много запросов от партнеров по маркетингу.

В настоящее время в приложении имеется множество спагетти-кода с множеством слов и других. Один класс содержит более 20 000 строк кода с огромным набором функций без абстракций.

Теперь нам нужно поддержать миллиарды записей, что нам нужно делать немедленно и постепенно?

Мы должны провести рефакторинг приложения? Какие рамки нам нужно использовать? Как использование фреймворка будет полезно для конечных пользователей? Как убедить лидеров сделать рефакторинг? Как получить более быстрое время отклика по сравнению с текущей системой?

Ответы [ 5 ]

3 голосов
/ 21 февраля 2011

Вот как бы я подошел к этому, если бы в моем распоряжении были соответствующие ресурсы компании (да, верно):

  1. Начните хороший процесс обеспечения качества, с автоматическим регрессионным тестированием, настроенным перед внесением значительных изменений,Мне все равно, насколько вы хороши, вы не можете поставить такую ​​систему под модульное тестирование и разумно контролировать регрессии.
  2. Составьте карту взаимозависимостей, посмотрите, сколько отдельного класса можно протестировать как единое целое..
  3. Как вы едите слона?Один укус за раз.Возьмите определенный фрагмент требуемой функциональности (желательно что-то, связанное с требованиями к увеличению нагрузки) и проведите рефакторинг частей класса или классов, над которыми можно работать изолированно.
  4. Узнайте, как сделать 3 выше, прочитав статью Эффективная работа с устаревшимКод.
1 голос
/ 21 февраля 2011

Удобный способ рефакторинга приложения.

Не существует "удобных" или "простых" способов рефакторинга существующей кодовой базы, особенно если кодовая база выглядит как спагетти.

... что нам нужно делать немедленно и постепенно?

Невозможно ответить без понимания текущей архитектуры вашей системы.

Мы должны провести рефакторинг приложения?

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

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

Какую структуру нам нужно использовать?

Невозможно ответить без подробностей для вашего приложения.

Как использование фреймворка будет полезным для конечных пользователей?

Это может сократить время ответа.Это может улучшить надежность.Это может позволить больше онлайн-пользователей одновременно.Это не может сделать ничего из перечисленного.

Использование фреймворка не решит магически проблему плохого дизайна.

Как убедить лидеров провести рефакторинг?

Вам нужно убедить их, что проект даст хороший возврат инвестиций (ROV).Вам / им также необходимо рассмотреть альтернативы:

  • что произойдет, если вы / они ничего не сделаете, или
  • - это полное переписывание, которое может дать лучший результат.

Как получить более быстрое время отклика по сравнению с текущей системой?

Невозможно ответить, не понимая, почему текущая система работает медленно.


Суть в том, что вам, вероятно, нужен кто-то из вашей ближайшей группы (например, внешний консультант), чтобы сделать подробный обзор вашей текущей системы и сообщить о вариантах ее исправления.Похоже, ваше руководство не доверяет вашим рекомендациям.

0 голосов
/ 21 февраля 2011

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

0 голосов
/ 21 февраля 2011

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

0 голосов
/ 21 февраля 2011

Это большие, большие вопросы.Слишком широк для одного ответа.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...