Consigli e risorse su ambienti collaborativi

-2

Ho bisogno di qualche consiglio sugli ambienti software collaborativi. Più specificamente, Sto cercando libri e materiali di riferimento che possano aiutarmi a capire le strutture del team e del codice e le loro interazioni. In altre parole libri, blog o white paper che spiegano:

  • Diverse strategie per strutturare team che condividono codice comune tra l'altro ma hanno distinte funzioni individuali?

Per riassumere la mia domanda mi piacerebbe sapere quale sarebbe una buona fonte di conoscenza se dovessi creare team in un'organizzazione che condividesse il codice, ma ogni unità rimaneva ancora autonoma.

Ho svolto alcune ricerche su questo argomento e ho esplorato:

  • strumenti per la revisione del codice,
  • VCS distribuito,
  • strumenti di integrazione continua,
  • Automazione test unità.

La parte più difficile nell'implementazione di questi strumenti è determinare dove dovrebbe essere un buon posto, quali strumenti sono a bassa portata, quali strumenti o metodi offrono tassi di successo più alti. Se qualcuno mi chiede informazioni sulla qualità del codice, le indico al codice completo. Sto cercando una guida equivalente sulle strutture e sugli strumenti del team software per rendere questa equazione funzionante.

Mi rendo conto che questa domanda è piuttosto vaga, ma è nata come "abbiamo bisogno di condividere il codice tra i team senza rompere gli altri e causare mal di testa e risme di burocrazia"

La risposta non è sicuramente semplice e richiede cambiamenti su molti livelli, da qui la domanda. Se la domanda è troppo vaga, vota per chiudere o eliminare. Accetterei qualsiasi buon punto di partenza come risposta.

    
posta Tjaart 19.05.2011 - 11:19
fonte

2 risposte

1

More specifically, I am looking for books and reference materials that can aid me in understanding team and code structures and the interactions thereof. In other words books, blogs or white papers explaining:

Different strategies for structuring teams that share common code between each other but have distinct individual functions? To summarise my question I would like to know what would be a good source of knowledge if I were to set up teams in an organisation that shared code but each unit still remained autonomous.

I realise that this question is quite vague but it arose as "we need to share code between teams without breaking each others stuff and causing management headaches and reams of red tape"

Questo potrebbe essere più di una domanda di PM, nel qual caso dovrebbe essere migrato al link , tuttavia, ecco la mia risposta .. .

Condivisione di moduli software - I moduli software possono essere "condivisi" come codice o come binari ...

Personalmente preferisco condividere i binari, in quanto porta a una minore ambiguità sulla questione di quale versione ognuno ha e richiede all'editor di aprire lo stesso ambiente (ad es. VS solution) come autore, vedendo quindi la stessa unit test e integrazione testare i progetti e eseguirli dopo la compilazione locale.

Moduli e team software ...

È meglio quando ogni modulo software ha più di un autore, in questo modo non c'è un singolo punto di conoscenza che, tra le altre cose, può portare a strozzature quando c'è bisogno di cambiamenti.

I moduli possono essere sviluppati in team o cross team. I moduli di infrastruttura sono solitamente sviluppati da team di infrastruttura dedicati o cross-team.

È più facile comunicare all'interno dello stesso team, quindi è preferibile che i moduli vengano sviluppati in un unico team.

Ci sono alcune divisioni comuni ai team :

  • Squadre orizzontali - ad es. Data team, team del motore, team di interfaccia utente
  • Squadre verticali - team per prodotto / progetto (o sottoprogetto)
  • Team verticali + team di infrastruttura / architettura

I team orizzontali sono un bi-prodotto della gestione delle matrici (un noto anti-pattern) e portano a team che possono specializzarsi in qualcosa, ma spesso non ricevono nuove menti (poiché le squadre possono essere piuttosto statico) e il tempo di sviluppo è più ampio in questo modo (più punti di tempo e integrazione API).

I team verticali sono utilizzati da metodologie come SCRUM, tuttavia, possono portare a ridondanze, poiché i prodotti diversi possono avere molto in comune.

Gruppi di infrastruttura / architettura punti di ricerca per l'ottimizzazione e il riutilizzo dei processi e possono fornire componenti riutilizzabili, semplificando il lavoro dei team di sviluppo prodotto (una volta che l'organizzazione si è abituata al nuovo processo).

A partire da libri - Non esiste un singolo libro o fonte di conoscenza che raccomando, al contrario, trovo che poggiare su un singolo punto di conoscenza problematico. Anche i libri più famosi hanno alcuni punti di forza e alcuni più deboli. I punti di forza sono ciò che li rende famosi e sono spesso raggiungibili dal buon senso, solo per la prima volta formalizzati in quel libro. Prendere tutto ciò che un libro o qualcuno dice per scontato non è raccomandato, soprattutto perché ciò che è giusto in una circostanza non è necessariamente giusto in un altro.

Cerca di leggere il più possibile e prendere le parti buone e pertinenti per ciascuna. Non essere troppo teorico per la tua ricerca, controlla cosa funziona e quando, soprattutto cosa funziona nelle tue circostanze.

Inoltre, apprendi dall'esperienza degli altri, sia all'interno della tua organizzazione che su altri che conosci e online, chiedi come sono state fatte cose simili e quali sono le cose buone e cattive in quelle soluzioni.

    
risposta data 04.07.2012 - 19:46
fonte
0

We are a .Net outfit running a mixture of ASP .Net, WPF, Web Services and windows services.

We currently don't have a defined architecture

False. Hai appena definito la tua architettura. Penso che tu sia confuso riguardo a qualcosa e hai bisogno di chiarire la tua domanda.

Where can I start to look at for information on collobaritive environments like ours?

Um. Sei un negozio .Net. Puoi ottenere informazioni ovunque.

Is it possible to build an architecture that makes functionality sharing possible without making it painful to manage?

No. Il codice di condivisione richiede una gestione attiva. Siamo spiacenti.

Should we be opting for web services or libraries?

Entrambi.

What are the pros and cons of each?

Troppo grande e vago per iniziare a discutere in questo tipo di domande. È una durata di studio separata.

In the case of libraries, how would we go about keeping everyone up to date on new versions, regression testing and change control without hampering deadlines to jump through hoops of red tape?

Siamo spiacenti. È difficile. L'utilizzo delle librerie richiede una gestione attiva, implicita e quotidiana del codice condiviso.

Se trovi questa confusione, inizia a seguire un prodotto open source di grandi dimensioni. Qualsiasi prodotto Non importa. Deve solo essere (1) qualcosa che effettivamente userete (alcune persone sono anti-open source, rendendo difficile questo esercizio) (2) un gran numero di altri utenti (3) cambiamenti attivi dalla comunità di utenti. Il server httpd di Apache è un esempio.

Guardare una comunità open source è il modo migliore per imparare a gestire il cambiamento, annunciando nuove versioni e cose del genere.

    
risposta data 19.05.2011 - 11:51
fonte

Leggi altre domande sui tag