У нас очень большой проект, который включает в себя несколько приложений, которые служат основой для разных клиентов.
Каждый клиент имеет собственную персонализацию продукта, различные этапы, разные требования и т. Д., И, таким образом, каждый проект будет развиваться независимо от своих потребностей.
Суть проекта схожа (но не одинакова) в каждом проекте, и организация сделана так, что есть команды, которые обрабатывают каждого клиента независимо (но с коммуникацией между ними по мере необходимости). До сих пор я не смог найти ни одной схемы, которая бы соответствовала нашим потребностям, ни поиска в интернете, ни придумывания какой-то блестящей идеи :)
До сих пор мы работали над тем, чтобы получить продукт, отвечающий всем потребностям, со специальными ветвями для необходимых изменений, но, хотя продукт имеет хорошую архитектуру, он постепенно становится большой проблемой. Вот основные проблемы, с которыми мы сталкиваемся:
- Различные этапы для каждого клиента. Это означает, что каждая команда должна выпускать версии в разное время, а остальные коммиты не влияют на стабильность или их продукт.
- Различные требования, которые могут или не могут повлиять на ядро системы в некоторых случаях.
- Большие команды (более 20 человек)
- Обработка ошибок в системе: что вы будете делать, если команда обнаружит в своем проекте ошибку, которая может повлиять на других клиентов?
Примечание. Мы говорим о проекте с 10 + M LOC.
Примечание. Мы используем Team Foundation System, Visual Studio 2008 и C # (в основном).
Любые предложения, источники или идеи о том, как справиться с ситуацией? Есть ли на рынке какая-либо модель с подобной проблемой?