Le attività base di Six Sigma sono catturate dall'acronimo DMAIC , che sta per: Definisci, Misura, Analizza, Migliora, Controlla . Si applicano questi al processo che si desidera migliorare: definire il processo, misurarlo, utilizzare le misurazioni per formulare ipotesi sulle cause di eventuali problemi, implementare miglioramenti e garantire che il processo rimanga statisticamente "in controllo".
Per quanto riguarda il software, il processo è il tuo ciclo di sviluppo del software (SDLC) o parte di esso. Probabilmente non proverai ad applicare i principi Six Sigma all'intero SDLC (o almeno, non inizialmente). Invece, cercheresti aree in cui pensi di avere un problema (ad es. Il nostro tasso di difetti è troppo alto, troppe regressioni, il nostro programma scivola troppo spesso, troppe incomprensioni tra sviluppatori e clienti, ecc.). Diciamo per ora che il problema è che vengono prodotti troppi bug (o almeno segnalati) ogni settimana. Quindi definiresti il processo di sviluppo del software / creazione di bug. Quindi inizi a raccogliere metriche come il numero di righe di codice scritte ogni giorno, la frequenza delle modifiche dei requisiti, il numero di ore trascorse da ciascun ingegnere in riunioni e altri fatti rilevanti.
Successivamente, guardi i dati e prova a discernere i pattern. Forse ti accorgi che il team di ingegneri A colpisce ogni scadenza che gli viene assegnata e spesso finisce persino le attività in anticipo! Inizialmente, la squadra B non sembra abbastanza sulla palla - si perdono le loro scadenze di un giorno o due almeno la metà del tempo, e sono occasionalmente in ritardo di una settimana o più. La direzione vede la squadra B come qualcosa di un problema e sta cercando di scuotere le cose. Tuttavia, uno sguardo più ravvicinato ai dati mostra che la percentuale di bug della squadra B è molto inferiore a quella della squadra A, e in più alla squadra B viene spesso chiesto di correggere i bug attribuibili alla squadra A perché la direzione ritiene che la squadra A abbia un valore da spendere molto di tempo in manutenzione.
Quindi, cosa fai? Utilizzando i dati che hai raccolto e l'analisi che hai eseguito, suggerisci una modifica: la squadra A e la squadra B risolveranno ciascuno i propri bug. Con la benedizione del management (e contro l'opposizione veemente della squadra A) implementate questo cambiamento. Quindi continui a raccogliere le metriche e continui ad analizzare i dati per vedere se le tue modifiche hanno fatto la differenza. Ripetere questa misura / analizzare / implementare il ciclo fino a quando il tasso di errore è ritenuto accettabile. Ma non hai ancora finito. Infatti, tu sei mai fatto ... devi continuare a misurare la frequenza dei bug e controllare che la frequenza dei bug rimanga nell'intervallo accettabile, cioè è statisticamente "in controllo".
Si noti che qui non c'è nulla che sia specifico dello sviluppo del software oltre alle specifiche del processo che stai migliorando, i tipi di metriche che raccogli, ecc. Le attività che usi per migliorare un processo di sviluppo del software sono le stesse di quelli che useresti per un processo di produzione di widget, anche se lo sviluppo del software è molto diverso dalla produzione di widget. Tutto ciò significa che devi applicare un po 'di buon senso nei tipi di obiettivi che hai impostato per il tuo processo.