Я работаю с кодовой базой, которая содержит более 500 тысяч строк кода. Он нуждается в серьезном рефакторинге. Были выявлены усилия по рефакторингу, которые займут больше времени, чем обычный двухнедельный спринт. Их нельзя разбить на более мелкие задачи, как я видел в других ответах на этом сайте. Продукт должен работать в конце итерации, и частичный рефакторинг оставит систему в непригодном для использования состоянии, поскольку зависимость между элементами ужасна. Так что будет лучшим способом преодолеть это препятствие? Я снова упоминаю, что разбить его на более мелкие кусочки - это уже не вариант, это уже сделано.
Обновление: Люди, кажется, нуждаются в объяснении того, почему это не вписывается в двухнедельный спринт. В спринте участвует больше, чем просто написание кода. У нас есть политика без кода без тестов. Такая политика не всегда существует, и большая часть кодовой базы не имеет их. Также некоторые из наших интеграционных тестов все еще являются ручными тестами. Проблема не в том, что сам рефакторинг настолько велик. Это связано с тем, что небольшие изменения влияют на многие части системы, и мы должны обеспечить правильную работу этих частей.
Мы не можем отложить или продлить спринт, потому что у нас есть ежемесячные исправления. Таким образом, это изменение, распространяющееся после спринта, не может остановить добавление другой работы в исправление.
Рефакторинг против редизайна: просто потому, что наш процесс разработки недостаточно эффективен, чтобы справиться с этим рефакторингом в двухнедельном цикле, не гарантирует его переименование в редизайн. Я хотел бы верить, что в будущем мы сможем выполнить ту же задачу в течение двухнедельного цикла по мере улучшения нашего процесса. Код, о котором идет речь, не должен был изменяться в течение очень длительного времени и является достаточно стабильным. Теперь, когда руководство компании становится все более адаптируемым к изменениям, мы хотим, чтобы эта часть кодовой базы была такой же адаптируемой, как и остальные. Что требует рефакторинга. Основываясь на полученных здесь ответах, становится очевидным, что отсутствуют строительные леса, необходимые для того, чтобы этот рефакторинг работал во временных рамках нормальных спринтов.
Ответ:
Я собираюсь использовать подход ветвления и слияния, предложенный Корбином Марчем впервые, чтобы мы могли больше узнать об этих проблемных областях и о том, как определить отсутствующие тесты. Я думаю, что, двигаясь вперед, мы должны использовать подход, предложенный Бубом, для определения областей, в которых отсутствуют тесты, и сначала выполнить их, а затем выполнить рефакторинг. Это позволит нам придерживаться нашего обычного двухнедельного спринтерского цикла, как, как многие здесь говорили, всегда следует использовать для рефакторинга.