Con che frequenza rilasciare in Scrum Sprint


10

Quanto spesso rilasci durante uno sprint. Solo alla fine dello sprint o ogni volta che una funzione è pronta. E come gestire le versioni bugfix?


3
se rilasci ogni volta che viene eseguita una funzione, forse dovresti guardare kanban invece di Scrum
David

Risposte:


10

TL; DR: rilasciare quando appropriato

Facciamo rilasci ogni volta che c'è valore nel fare un rilascio. A volte ciò significa eseguire una versione dopo il completamento di una singola funzionalità o correzione di bug. A volte ciò significa rilasciare una raccolta di funzionalità e / o correzioni di bug.

Questo non significa che spesso abbiamo "emergenze" che richiedono rilasci rapidi. Significa che abbiamo lavorato duramente per rendere le versioni facili. Il nostro codice è testato, etichettato e impacchettato con ogni build. Utilizziamo test di accettazione automatizzati e di conseguenza abbiamo sviluppato un'elevata fiducia nel codice che supera i test. Poiché i nostri pacchetti sono immediatamente disponibili tramite un repository yum locale, la distribuzione di una versione è banale.


10

Mai durante. Ciò viola la premessa di base di uno "sprint". Corri fino a quando non finisci ciò che hai commesso. Dopo aver finito, è davvero fatto e funziona davvero. È quindi possibile rilasciarlo.

Il rilascio può essere un tipo separato di sprint in cui le cose sono impacchettate per il rilascio.

Le versioni di Bugfix possono essere solo brevi sprint. Non avere un programma regolare di sprint della stessa lunghezza è considerato da molti una cattiva idea. Pertanto, la regola abituale è che le correzioni di errori sono semplicemente lavori ad alta priorità che si verificano durante lo sprint successivo .

Se si tratta di un'emergenza, hai troppe cose in corso - supporto e sviluppo - e dovresti considerare di cambiare l'organizzazione per avere meno cose in corso.


Quindi, come dovrebbero testare i tester continuamente?
Sviluppatore Melbourne,

4

Se il lavoro che il team si sta impegnando è favorevole a fare più rilasci all'interno dello sprint, rilascialo tutte le volte che vuoi.

Lo stesso vale per le versioni con correzione dei difetti: se ha senso rilasciarle, fallo.


Si, sono d'accordo. L'approccio migliore è quello di separare le versioni dall'implementazione di funzionalità e / o sprint. I processi (di rilascio) devono supportare questo. Uno sprint è un intervallo di tempo. Una versione può essere eseguita in qualsiasi momento se la versione rilasciata supera il QA. Le due cose possono essere diverse. Come raggiungere questo obiettivo? Un'opzione è utilizzare il concetto "no junk in the trunk" per la gestione delle filiali.
Manfred,

3

L'ultimo lavoro Agile a cui ho lavorato ha rilasciato ogni sprint; il codice veniva bloccato ogni due giovedì (sprint di due settimane), quindi il prodotto veniva impacchettato e pubblicato su un server UAT per consentire ai nostri clienti di lavorare. Ciò avveniva durante lo sviluppo iniziale del prodotto; per un prodotto maturo, in particolare un programma distribuibile e non un'app Web, probabilmente non vorrai caricare i tuoi utenti con l'aggiornamento ogni due o tre settimane.

Praticamente tutte le nostre versioni includevano un mix di punti della storia e difetti (bug). Difetti contati come "ore non ideali"; ci sono 5 ore ideali in una giornata lavorativa, che significa codifica a testa in giù di nuovi punti di lavoro. Le altre tre o quattro ore al giorno sono incontri, discussioni, progettazione, a volte "picchi" (ricerca focalizzata / sviluppo di prove concettuali) e lavoro sui difetti; cose che contribuiscono a un prodotto migliore ed è una parte necessaria del processo, ma semplicemente non possono occupare l'intero sprint dell'intero team. L'unica volta che abbiamo fatto rilasci di soli difetti è stato quando non vi era alcun lavoro story-point disponibile nel backlog come di un IPM; poi abbiamo semplicemente programmato uno sprint di QA in cui ci è stato chiesto di "uccidere quanti più difetti possibile". Poiché non avere i requisiti pronti all'uso è SEMPRE colpa dell'OP (e l'OP ha funzionato per i clienti), potremmo semplicemente emettere un avviso di modifica del contratto e lavorare con quello che avevamo. Naturalmente, una volta terminato il vero lavoro della storia e siamo entrati nello sviluppo della "garanzia", ​​i difetti erano tutti lì.

In un progetto Agile ben gestito, l'esaurimento dei requisiti non dovrebbe mai avvenire; l'arretrato dovrebbe sempre avere uno sprint di lavoro pronto a raccogliere. Ma a volte l'OP viene sommersa producendo requisiti; a volte i BA / tester sostengono il rilascio di storie nel backlog di sviluppo, per motivi relativi alla qualità dei requisiti o conflitti di storie; a volte una squadra decide di dover "puntare" su una storia che non è stata ben definita o stimata, e non c'è qualcosa che possa facilmente riprendere i cicli rimanenti. Insomma, anche in Agile, succede merda.


3
Penso che il punto di Agile sia che ci aspettiamo che succeda qualcosa.
Matthew Flynn,

Se il tuo processo di compilazione tagga automaticamente un pacchetto il codice non è necessario "congelarlo"? Il lavoro può continuare, la versione controllata può essere
espulsa

Il "congelamento" era simbolico; abbiamo sostanzialmente detto che l'ultimo build per il quale CI era passato giovedì alle 17:00 era il build del rilascio, e abbiamo tagliato un ramo SVN per quella revisione e siamo passati. Se allora non hai eseguito il commit o se il commit non ha superato tutti i test CI, non era presente nella versione.
KeithS,

1

Cosa intendi per rilascio? Se intendi PSP - probabilmente prodotto spedibile, hai due opzioni:

  • Scrum per libro (o Scrum livello 2) hai PSP alla fine dello sprint ed è quello che mostri alla riunione retrospettiva
  • Ho anche incontrato il termine Scrum livello 3 in cui il team ha acquisito padronanza dei propri strumenti come il controllo del codice sorgente e l'integrazione continua e si è trasferito alla consegna continua. Tale team è in grado di avere PSP dopo ogni build notturno (o ogni build nel migliore dei casi). Avere PSP dopo ogni build non significa che lo mostri al cliente dopo ogni build - è ancora solo una versione interna.

La differenza principale tra il livello 2 e il livello 3 è che nel livello 2 devi fare uno sforzo per fare PSP finale alla fine dello sprint ma nel livello 3 metti un po 'di soldi e sforzi inizialmente per i tuoi strumenti e configurazioni e hai preparato la PSP automaticamente tutto il tempo = non è necessario alcuno sforzo manuale. Raggiungere pienamente il livello 3 è raro.


questi nomi ufficiali sono "livelli di mischia"? L'ho cercato su Google e non ho trovato nulla.
David,

@ David: non penso che sia qualcosa di ufficiale. È solo un altro approccio per misurare la "maturità Scrum": ho trovato questa presentazione discutendo di quei livelli, ma l'ho incontrata sul corso CSM.
Ladislav Mrnka,

0

In Scrum non ci sono assolutamente regole su quando implementare nuove funzionalità. Ogni squadra deve avere una "definizione di fatto", che dovrebbe sempre includere alcuni criteri relativi ai test. Una volta che una funzione è "fatta", è pronta per il mondo reale e se non ci sono altre dipendenze o condizioni che devono essere soddisfatte prima di poter essere distribuite, non c'è motivo di aspettare che la fine dello Sprint schieralo.

Nessuno di questi significa che non è stato presentato durante la riunione Sprint Review / Planning. Il concetto è che tutto ciò che il Team ha completato viene mostrato all'OP (e alle altre PMI dei clienti) in modo che possano integrarlo nella loro crescente comprensione del sistema mentre si evolve.


0

Dopo un paio di settimane abbiamo trovato una buona soluzione adatta alle nostre esigenze. Decidiamo di rilasciare quando vogliamo. Come lo facciamo:

  1. ogni volta che qualcuno decide di rilasciare il ramo di sviluppo effettivo, unisce tutte le modifiche nel ramo principale taggandolo con un nuovo numero di rilascio e inserito nel nostro sistema di gestione temporanea.
  2. del nostro QA e tutti gli altri team ricevono una mail con un log delle modifiche reale e testano il sistema di stadiazione
  3. se hanno trovato dei bug li sistemiamo nel master, lo spingiamo in staging e poi uniamo nuovamente il master nel ramo di sviluppo
  4. quando il sistema di gestione temporanea ha superato il QA il master diventa attivo

Questo è tutto. Usiamo git e maven come sistema CI e abbiamo una buona copertura dei test. Questo è uno dei motivi per cui possiamo farlo in questo modo.


0

Rispondere a una domanda che ha quasi 2 anni può essere un po 'ridondante, ma spero di aggiungere valore per gli altri che arrivano a questa domanda vorrei aggiungere un 2cent o giù di lì. :)

Per rispondere alla domanda: è preferibile rilasciare ciò che è stato impegnato nello sprint, al termine di quello sprint. In questo modo si collega a tutte le altre parti / processi / linee guida della mischia che è orientata a ottenere il miglior valore aziendale al momento giusto.

MA emergenze, bug, eventi imprevisti, ecc. Possono forzare la tua mano, ed è qui che potrebbe tornare utile l'idea di "Release Release". Con "Pianificazione del rilascio" non intendo la pianificazione a cascata, ma piuttosto la pianificazione delle aspettative che potrebbero aiutare a gestire l'arretrato di prodotti e la priorità delle storie negli sprint ect.

Ma forse il commento di David sulla domanda è qualcosa da considerare meglio. Scrum non è sempre la risposta giusta.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.