Il Capability Maturity Model Integration (CMMI) è un “programma” di formazione e valutazione per il miglioramento a livello di processo gestito dal CMMI Institute.
Bisogna prima introdurre il concetto di maturità dei processi. Questa nozione è abbastanza intuitiva. La probabilità di portare a termine un progetto dipende dalla maturità del progetto e la maturità dipende dal grado di controllo che si ha sulle azioni che si vanno a svolgere per realizzare il progetto.
Si ha quindi che:
Risulta quindi essenziale ragionare sulla maturità del processo.
La maturità del processo è definita tramite un insieme di livelli di maturità con associate metriche per gestire i processi, questo è detto Capability Maturity Model (CMM). In altri termini il modello CMM è una collezione dettagliata di best practices che aiutano le organizzazioni a migliorare e governare tutti gli aspetti relativi al processo di sviluppo, dalla gestione dei rischi al testing, dal design al project management, etc…
Un processo migliore porta ad un prodotto migliore.
La sotria dei CMMs parte dagli anni 90 e porta alla versione del 2018 che andremo ad analizzare.
Analizziamo quindi nel dettaglio il modello:
All’interno del diagramma (che rappresenta letteralmente un documento) notiamo:
process area, che racchiude al suo interno una collezione di pratiche organizzate secondo obiettivi e riguarda un certa area del processo. Nel CMMI abbiamo 22 diverse process area, tra cui configuration management, project planning, risk management, … Nel diagramma si ha lo studio di una generica process area
ciascuna process area ha:
le process area si dividono in due tipologie di obiettivi:
all’interno di ogni specific goals (per questo la freccia tratteggiata) abbiamo una serie di specific practices, ovvero quelle azioni che, se svolte, permettono di raggiungere quell’obiettivo specifico e, a loro volta, tali pratiche sono organizzate in:
all’interno di ogni generic goals (per questo la freccia tratteggiata) abbiamo una serie di generic practices, comuni a tutti, con le pratiche che devono essere svolte per gestire positivamente una qalsiasi process area e, a loro volta, tali pratiche sono organizzate in:
Tra i principali generic goals (GG) abbiamo:
Per capire quanto un processo software è organizzato secondo questo standard bisogna “mappare” quali goals e quali pratiche si stanno perseguendo e seguendo e usare CMMI non solo come “ispirazione” ma come vero e proprio standard per definire le azioni da svolgere nonchè per confrontare il nostro operato e studiarlo qualitativamente. Lo studio qualitativo mi permette di stabilire la maturità dei progetti, secondo un certo livello di compliance, detto CMMI level. Tale qualità che può essere certificata da enti certificatori appositi (si ha anche una repository pubblica con i livelli di compliance di diversi progetti di organizzazioni famose).
Studiamo a fondo questi livelli di maturità e la loro codifica.
Si hanno due linee di sviluppo / miglioramento: