Qual è il metodo per identificare i colli di bottiglia in un programma di ingegneria del software?

7

Sono su un programma di sviluppo software nei servizi finanziari - con 100 sviluppatori, oltre a tester, BA, PM e altro personale di supporto.

Abbiamo letto Implementazione dello sviluppo software snello e Il progetto Phoenix , che parla di identificare il collo di bottiglia nel flusso e di ottimizzarlo. (Alcune somiglianze con il percorso critico in un progetto).

Intuitivamente, possiamo identificare i colli di bottiglia, il numero di ambienti di test, la quantità di tempo e gli sforzi richiesti per i test di regressione, la dimensione del monolite, il numero di sviluppatori e così via. Quello che stiamo cercando di fare è ridurlo all'unico collo di bottiglia che trattiene tutto il resto. (Come un flusso del processo di produzione).

L'applicazione di Lean Software Development parla di analisi del flusso di valori, ma non abbastanza da identificare il blocco che è fondamentale per l'intero sistema.

La mia domanda è: Qual è il metodo per identificare il collo di bottiglia chiave in un programma di ingegneria del software?

MODIFICA: Presupposti aggiuntivi:

  • Nel mio ambiente - i finanziamenti vengono assegnati per grandi blocchi di scopo da consegnare in una data specifica. In sostanza, la qualità, la portata e il tempo sono bloccati in primo piano. (Con alcune varianti per scopo e tempo se assolutamente richiesto).

  • Questo significa che manca un concetto di "piccoli pezzi che si muovono attraverso il sistema". Ci sono solo grandi progetti con molte storie (più di 60 storie, ognuna con 10 giorni di lavoro).

  • Questo è un ambiente in qualche modo simile a una cascata (tanto quanto dice Sarbanes Oxley) con una fase di test di integrazione del sistema e di accettazione degli utenti separata.

posta hawkeye 26.11.2016 - 10:06
fonte

2 risposte

6

Un metodo per identificare i colli di bottiglia più importanti è rendere visibile quali fasi attraversano gli elementi di lavoro.

Come inizio, prova a seguire un paio di elementi di lavoro (nuove funzionalità, bug, miglioramenti, ecc.) attraverso il ciclo completo dall'elemento che diventa noto al team fino al punto in cui è stato distribuito con successo nella produzione. Annota quali passi devono essere presi per percorrere il percorso completo verso la produzione e dove il biglietto potrebbe essere posizionato su una pila aspettando che qualcun altro continui a lavorare su di esso o in attesa di qualche altro motivo.

Tutto questo può essere reso visibile usando una tavola kanban. Nella sua forma più semplice, una scheda kanban è composta da un numero di colonne che rappresentano le fasi di lavoro e gli stati di attesa nel processo di sviluppo e le note adesive per gli elementi di lavoro.
Ogni nota adesiva viene spostata su tutta la scheda in base a dove si trova nel processo di sviluppo o cosa sta aspettando.

Usando una kanban board, puoi identificare i colli di bottiglia vedendo i ticket accumulati in una colonna o vedendo che i biglietti vengono estratti da una colonna più velocemente di quelli in arrivo.

  • Se una colonna di attesa si riempie più velocemente di quella che i biglietti vengono rimossi, questo è un indicatore del sovraccarico delle risorse che i biglietti stanno aspettando.
  • Se una colonna "doing work" contiene un numero significativamente maggiore di ticket rispetto ai membri del team che possono lavorarci, è un'indicazione che il team sta lavorando su troppe cose nello stesso momento (portando a inefficienze a causa del cambio di contesto) o mancato uno stato di attesa.
  • Se una colonna di attesa viene regolarmente eseguita completamente vuota (i biglietti escono più velocemente di quanto non arrivano), significa che la squadra che tira quei biglietti è sottoutilizzata e / o sovradimensionata.

Il collo di bottiglia chiave è la colonna in cui questi effetti sono maggiormente visibili.

    
risposta data 26.11.2016 - 11:09
fonte
2

Penso che la risposta di Bart van Ingen Schenau sia molto buona. È essenzialmente una mappa del flusso di valore in tempo reale. Tuttavia, ho altri suggerimenti che potrebbero aiutarti a superare quella risposta.

Per prima cosa, considera di tenere traccia del tempo in ogni stato per un'attività. Gli strumenti dovrebbero essere in grado di fornire questo. Se il tuo strumento non funziona, o stai usando una scheda fisica, puoi scrivere la data di transizione su ogni carta. Ciò ti consentirà di ottenere il tempo medio e identificare le fasi che richiedono molto tempo. Tuttavia, qualcos'altro che devi catturare è il tempo di attesa rispetto al tempo attivo. Ancora una volta, prendere appunti sulla carta può aiutare con questo e alla fine di un ciclo, puoi mettere i tempi delle carte in qualcosa da analizzare.

In secondo luogo, considera la dimensione delle attività. Se stai usando una scheda Kanban come quella suggerita da Bart, potresti prendere in considerazione l'idea di avere colonne più piccole o creare mappe di flusso di valore per ciò che accade all'interno di una colonna.

Quando conosci i tuoi tempi, ottimizza prima i tempi più lunghi. Innanzitutto, prova a ridurre il tempo di "spreco" o il tempo in cui non è attivo. In secondo luogo, cerca di ridurre il tempo necessario.

    
risposta data 27.11.2016 - 14:03
fonte

Leggi altre domande sui tag