Temos um projeto muito grande que inclui vários aplicativos que funcionam como base para diferentes clientes.
Cada cliente tem sua própria personalização do produto, marcos diferentes, requisitos diferentes e assim por diante, e assim cada projeto evoluirá independentemente, com base em suas próprias necessidades.
O núcleo do projeto é semelhante (mas não igual) em todos os projetos e a organização é criada para que haja equipes que lidem com cada cliente de forma independente (mas com a comunicação entre eles conforme necessário). Até agora, não consegui encontrar nenhum esquema que atenda às nossas necessidades, pesquisando na Internet ou tendo alguma idéia brilhante :)
Até agora, estamos trabalhando para que o produto seja adequado a todas as necessidades, com ramificações específicas para as mudanças necessárias, mas, embora o produto tenha uma boa arquitetura, está lentamente se tornando um grande problema. Aqui estão os principais problemas que enfrentamos:
- Marcos diferentes para cada cliente: o que significa que cada equipe deve produzir versões em momentos diferentes, sem que o restante dos comprometimentos afetem a estabilidade ou o produto.
- Requisitos diferentes, que podem ou não afetar o núcleo do sistema em alguns casos.
- Equipes grandes (mais de 20 membros da equipe)
- Lidando com erros no sistema: O que você faz se uma equipe encontra um erro em seu projeto que pode afetar outros clientes?
Nota: Estamos falando de um projeto que possui 10 + M LOC.
Nota: Estamos usando o Team Foundation System, Visual Studio 2008 e C # (principalmente).
Alguma sugestão, fonte ou idéia sobre como lidar com a situação? Existe algum modelo no mercado que tenha um problema semelhante?