Domanda

Abbiamo due squadre distinte agili, ognuno dei quali lavora su separate, ma legate, applicazioni.
Ogni squadra ha, fino ad ora, è stato in grado di lavorare in modo indipendente (basi di codice distinti, negozi di persistenza, sprint, arretrati, ecc). Recentemente, la gestione del prodotto ha deciso che queste applicazioni diventeranno ancora più strettamente integrate. Su un lato nota, la dimensione di ogni squadra (composta da Qas, Devs, BAS) sia in aumento nel corso dei prossimi 6-12 mesi.

Gestione ha deciso di mantenere il processo agile in gran parte intatto, dal momento che ha funzionato bene (due gruppi di lavoro in modo indipendente il più possibile), ma hanno lanciato l'idea di un livello di servizio su base contrattuale, come mezzo di integrazione delle applicazioni.

In ogni sprint, sarà identificato qualsiasi storia che richiede l'integrazione con l'altra applicazione. A quel punto, un ulteriore racconto "integrazione" sarà aggiunta alle altre squadre arretrato. Quella squadra sarà poi compito di adempiere al contratto. Nel frattempo, l'altra squadra può continuare il loro lavoro storia originale, sostituendo un servizio finto / falso fino a quando l'altra squadra produce un servizio di lavoro.

Dal momento che Agile predica una filosofia Kiss, diverse persone sulle squadre hanno contestato la "complessità" di questo approccio. Essi stanno sostenendo continuato utilizzato per la ripartizione stored procedure come un / metodologia di integrazione più semplice più snella che "ha funzionato bene in passato".

Io preferisco la programmazione basata contratto per tutti i tipi di ragioni, ma la ragione principale è la sua capacità di fornire visibilità in tempo di compilazione del comportamento è prevista l'applicazione di fornire. Vedrete anche chiari confini intorno a chi possiede il codice che cosa, e il cui codice si rischia di rompersi se si rompe il contratto. Le stored procedure fanno niente di tutto questo.

Dal momento che abbiamo già raccolto molti benefici da agile, mi piacerebbe pensare che ci sia già un modo "agile-friendly" per affrontare questo tipo di applicazione di integrazione / sincronizzazione. Fa la creazione di un contratto basato SOA strato incontrano il test odore agile? C'è una terza opzione che non ho preso in considerazione?

È stato utile?

Soluzione

Grande questione. A piedi sul filo del rasoio design è sempre uno spinoso. Credo che mantenendo le applicazioni come loosely coupled possibile è sicuramente la strada da percorrere.

La cosa più semplice che potrebbe possibile il lavoro è un grande approccio, ma in seguito ad un fine dogmatica, senza riguardo per i principi solidi e disegno generale di buono sta per darvi due applicazioni che sono strettamente accoppiati e probabilmente pieni di debito tecnico che porterà la squadra di macinazione una battuta d'arresto a un certo punto in futuro.

Il disaccoppiamento e aggiungendo l'astrazione ora sembra la cosa più sensata da fare, a patto che non si aggiunge un sacco di ulteriore "quadro" che non è ancora necessaria. Il trucco è quello di assicurarsi di avere un buon design abbastanza che permetterebbe tale quadro di crescere, se necessario, senza costruire un sacco di cose inutili, a questo punto -. È necessario fare quanto basta per disaccoppiare le applicazioni

Altri suggerimenti

Non credo che mantenere attuale processo intatto è buona idea. La cooperazione e la comunicazione tra i team deve aumentare altrimenti avere un impatto negativo su entrambe le squadre. Si dovrebbe seguire la pratica simile a Scrum di Scrum.

Modifica Scrum di Scrum:. Non ho esperienza con il progetto gestito da più di un team di Scrum, ma a causa del molto buona esperienza con un Daily Scrum credere che Scurm di Scrum funziona e aumentare la produttività in tutte le squadre

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top