Интеграция кода с несколькими скрамами

Компания, в которой я работаю, пробовала разборки проекта, и теперь намеревается разослать подонки трем или четырем различным проектным командам. Мы предполагаем, что эти команды будут работать в отдельных ветках функций (мы используем SVN).

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

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

Кто-нибудь пробовал любой из этих подходов и что они нашли для работы?

3 ответа

Решение

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

Мы создаем упакованный продукт, поэтому развертывание не является для нас проблемой.

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

Хенрик Книберг (автор Scrum и XP из окопов) написал статью о контроле версий для нескольких гибких команд.

У нас есть две команды с синхронизированными спринтами, и это, кажется, работает очень хорошо. Наша стратегия - держать истории маленькими. Сделайте истории законченными и опубликуйте их в багажнике часто во время спринта. Да, у нас есть конфликты слияний, но они управляемы.

Да, и убедитесь, что команды хорошо общаются друг с другом.

Посмотрите на эту статью, кратко объясняет эти проблемы. http://www.infoq.com/news/2008/04/kniberg-agile-version-control

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

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

Другие вопросы по тегам