Flusso di lavoro del codice di condivisione per piccoli team

4

Il problema è che abbiamo sviluppato un piccolo CMS, diverso per implementazione (al momento).

Naturalmente lo sviluppo di questo non è mai completo. A volte, stiamo lavorando su più di un progetto che lo implementa (copiando e incollando i file di codice del CMS in ogni progetto), e aggiungiamo una nuova funzionalità che vogliamo condividere anche su altri progetti (questi possono essere piccoli anche quelli, cioè un controller JSON ajax personalizzato - usiamo MVC)

Ciò che vogliamo fare è condividere in modo rapido e uniforme il codice con tutti gli altri progetti, tramite un sistema di controllo della versione (o qualcosa di simile) e generalmente organizzare il flusso di lavoro poiché sappiamo che questo non è un ottimo flusso di lavoro che abbiamo . Cosa suggeriresti?

Inoltre, al momment, il software che usiamo è Visual Studio 2010, quindi stiamo prendendo in seria considerazione TFS, ma anche se lo otteniamo non sappiamo ancora il flusso di lavoro ideale, o anche se TFS supporta ciò che vogliamo fare.

Modifica: Inoltre, abbiamo implementazioni specifiche che hanno modifiche sulla base CMS che vogliamo mantenere solo nell'area del progetto. (es .: una funzione specifica che NON vogliamo condividere con il codice CMS di base)

    
posta Mihalis Bagos 25.11.2011 - 10:12
fonte

2 risposte

4

Questo non è un problema di controllo della versione selezionato ma il problema dell'architettura del prodotto. C'è molto domanda simile dove ti accorgi di non sono l'unico sfidato con questo problema.

Il consiglio generale è di evitare qualsiasi copia-incolla tra le implementazioni. Questo può ovviamente essere fatto solo se si dispone di un singolo ramo per il core del prodotto e le funzionalità specifiche del cliente sono implementate in rami separati (ma senza il core) o tramite la configurazione del prodotto. Una volta che più di due clienti desiderano la stessa funzione, è ora di spostare la funzione nel ramo principale e renderla riutilizzabile e configurabile (in modo che possa essere disattivata per i clienti che non lo desiderano).

Come puoi notare ho menzionato "più di due". Questa è la mia ipotesi sulla riusabilità di pesare i costi necessari per trasformare la funzionalità in riutilizzabile e globalmente disponibile. Ritengo che due clienti che richiedono la stessa funzione non siano ancora fattibili per questo sforzo. Di solito, due clienti non sono sufficienti a definire la riusabilità, ma la raccolta dei requisiti da parte di tre o più clienti di solito comporta una serie di requisiti per definire la funzionalità riutilizzabile e configurabile.

Ci sono altri problemi con l'applicazione multi-cliente. Ad esempio, se vendi l'applicazione e la personalizzazione anziché l'applicazione o il servizio, puoi avere problemi con questo perché l'implementazione della nuova funzione direttamente per il cliente (nel tempo pagato dal cliente) può portare a situazioni in cui la funzionalità stessa è di proprietà del cliente e non posso usarlo per altri clienti (anche se lo vogliono) fino a quando il proprietario della funzione lo consente - vendi una licenza (ma questo problema può già esistere nella tua situazione attuale anche se non hai un accordo corretto con i tuoi clienti ).

    
risposta data 25.11.2011 - 11:05
fonte
2

Prima di tutto, dovresti davvero usare il controllo del codice sorgente - questo è meno un mezzo per condividere quanto un mezzo per garantire che modifiche siano registrate.

Riguardo alla condivisione del codice - è necessario identificare le parti comuni di queste applicazioni, le cose che non cambiano. Prendili e crea da loro un progetto (o anche una serie di progetti) - idealmente cose che sono puro codice e nessun markup. Questo può quindi produrre una DLL condivisa da utilizzare per tutti i tuoi progetti personalizzati.

Per quanto riguarda il markup, potresti fare qualcosa di simile, ma l'interfaccia utente tende a differire tra i progetti, quindi non so quanto possa essere utile.

    
risposta data 25.11.2011 - 10:57
fonte

Leggi altre domande sui tag