2009-12-09 2 views
1

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

Это привело к заданному вопросу: Что бы вы сказали, это ключевые процессы, инструменты и методы разработки программного обеспечения, которые необходимо будет выполнить команде, чтобы успешно перестроить/реорганизовать очень гнилую устаревшую базу кода в хорошую стабильную систему? Это, безусловно, возможно. Есть ли хорошие книги/сайты по этому вопросу?
Благодаря

+0

Книга «Рабочая с устаревшим кодом "может дать некоторые идеи. http://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052 – ewernli

+0

И Марк Нидхэм сделал обзор всех глав книги в своем «книжном клубе». Также очень интересно. http://www.markhneedham.com/blog/tag/book-club/ – ewernli

ответ

2
  • определить четкий план того, что вы пытаетесь достичь, и где вы собираетесь
  • тестов записи для так много нового и старого кода, как вы можете гарантировать, что вы сохраняющее поведение и создавая хороший набор тестов идти вперед
  • Refactor небольших порций в то время, он складывает в конце концов
  • работа с дискретными вертикальными дольками функциональности, если вы можете предотвратить критические изменения каскадных через код
  • убедитесь, что вы строите regularl у
  • использования управление источником

в основном, все приняты хорошая практика вы должны были использовать с самого начала;)

+0

, если у вас есть бэкэнд базы данных, убедитесь, что он также находится в исходном управлении. Люди забывают это сделать. – HLGEM

2

Начнет с классиками:

Автоматизированные строит & Deploy менеджера тестов Unit Фитнес-тесты

Как только у вас есть эти вещи на месте .. когда когда-либо вы готовы реорганизовать/переписать весь беспорядок .. это w плохо будет намного легче ... и очень легко попросить эти инициативы, не растокая никаких подозрений в ваших намерениях переписывать.

Я говорю с голосом опыта;)

0

я действительно получил много из this series of articles. Хотя речь идет именно об ASP.Net, я думаю, что концепции, обсуждавшиеся, по крайней мере, в первой части статей, будут относиться к приложению Java brownfield. Такие, как:

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

  1. контроль версии
  2. Выпуск отслеживания
  3. Automated, самодостаточный строит
  4. Автоматизированного тестирования»

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

0

Я успешно сработал ed Enterprise Architect (EA) для обратной обработки больших баз исходного кода.

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

0
  1. Затмение - это рефакторинг возможности очень мощный
  2. Терпения
  3. навыки. Мне кажется, что почти всякая «устаревшая» система «раздута», «мусор», «гнилая» или «дерьмо». Хотя это, как правило, верно, не устаревшие приложения одинаковы, потому что разработчики, пишущие их, недостаточно квалифицированы. Поэтому имейте в виду, что если вы хотите достичь чего-то большего, чем еще-гнилая система, вы должны быть очень осторожны с навыками команды.
0

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

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

Смежные вопросы