Abbiamo un progetto molto grande che include diverse applicazioni che fungono da base per diversi client.
Ogni cliente ha la propria personalizzazione del prodotto, diverse pietre miliari, requisiti diversi e così via, e quindi ogni progetto evolverà indipendentemente in base alle proprie esigenze.
Il nucleo del progetto è simile (ma non uguale) in ogni progetto e l'organizzazione è fatta in modo tale che ci siano team che gestiscono ciascun client in modo indipendente (ma con la comunicazione tra di essi se necessario) . Finora, non sono stato in grado di trovare uno schema che si adatta alle nostre esigenze, sia effettuando ricerche su Internet sia ottenendo qualche idea geniale:)
Finora, abbiamo lavorato ottenendo il prodotto come un seme adatto a tutte le esigenze, con rami specifici per le modifiche necessarie ma, sebbene il prodotto abbia una buona architettura, sta lentamente diventando un grosso problema. Ecco i principali problemi che affrontiamo:
- Diverse pietre miliari per ogni cliente: il che significa che ogni squadra deve produrre versioni come tempi diversi senza che il resto dei commit influisca sulla stabilità o sul loro prodotto.
- Requisiti diversi, che possono o non possono influire sul core del sistema in alcuni casi.
- Grandi team (oltre 20 membri del team)
- Gestione dei bug nel sistema: cosa fai se un team trova un bug nel suo progetto che potrebbe interessare altri client?
Nota: stiamo parlando di un progetto con 10 + M LOC.
Nota: utilizziamo il sistema Team Foundation, Visual Studio 2008 e C # (principalmente).
Qualche suggerimento, fonte o idea su come affrontare la situazione? C'è qualche modello sul mercato che ha un problema simile?