Le attività di base di Six Sigma sono catturate dall'acronimo DMAIC , che significa: Definisci, Misura, Analizza, Migliora, Controlla . Si applicano questi al processo che si desidera migliorare: definire il processo, misurarlo, utilizzare le misurazioni per formare ipotesi sulle cause di eventuali problemi, implementare miglioramenti e garantire che il processo rimanga statisticamente "sotto controllo".
Per quanto riguarda il software, il processo è il ciclo di vita dello sviluppo del software (SDLC) o parte di esso. Probabilmente non proveresti ad applicare i principi Six Sigma all'intero SDLC (o almeno non inizialmente). Invece, cercheresti aree in cui pensi di avere un problema (ad esempio il nostro tasso di difetti è troppo alto; troppe regressioni; il nostro programma scivola troppo spesso; troppi equivoci tra sviluppatori e clienti; ecc.). Diciamo per ora che il problema è che troppi bug vengono prodotti (o almeno segnalati) ogni settimana. Quindi definiresti il processo di sviluppo del software / creazione di bug. Quindi inizieresti a raccogliere metriche come il numero di righe di codice scritte ogni giorno, la frequenza delle modifiche ai requisiti, il numero di ore che ogni ingegnere trascorre nelle riunioni,
Successivamente, guardi i dati e provi a discernere i modelli. Forse noterai che il team di ingegneri A raggiunge tutte le scadenze che gli vengono assegnate e spesso termina anche le attività in anticipo! Inizialmente, la squadra B non sembra abbastanza sulla palla: mancano le scadenze di un giorno o due almeno la metà del tempo e occasionalmente sono in ritardo di una settimana o più. La direzione vede la squadra B come un problema e sta cercando di scuotere le cose. Tuttavia, uno sguardo più attento ai dati mostra che la percentuale di bug del team B è molto più bassa di quella del team A e, inoltre, al team B viene spesso chiesto di correggere i bug attribuibili al team A perché la direzione ritiene che il team A sia prezioso per spendere molto di tempo per la manutenzione.
Allora cosa fai? Usando i dati che hai raccolto e l'analisi che hai eseguito, suggerisci una modifica: il team A e il team B risolveranno ciascuno i propri bug. Con la benedizione della direzione (e contro la veemente opposizione della squadra A) attui quel cambiamento. Quindi continui a raccogliere le metriche e continui ad analizzare i dati per vedere se la modifica ha fatto la differenza. Ripetere questo ciclo di misurazione / analisi / implementazione fino a quando la percentuale di bug non è considerata accettabile. Ma non hai ancora finito. In effetti, non hai mai finito ... devi continuare a misurare la percentuale di bug e verificare che la percentuale di bug rimanga entro l'intervallo accettabile, cioè statisticamente "sotto controllo".
Nota che qui non c'è nulla di specifico per lo sviluppo del software se non le 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 quelle che d utilizzare per un processo di produzione di widget, anche se lo sviluppo del software è molto diverso dalla produzione di widget. Tutto ciò significa che è necessario applicare un certo senso comune nei tipi di obiettivi che si prefiggono per il processo.