Quality gate • Nei punti chiave del processo di sviluppo del software, viene integrato un insieme di quality gate per monitorare la qualità del prodotto intermedio prima che quest’ultimo possa passare al prossimo passo di sviluppo • Sono revisioni formali che hanno l’obiettivo di fornire un mezzo per valutare il processo usato per sviluppare il software, la conformità del prodotto software alle esigenze del cliente e alle caratteristiche tecniche attese Quality gate • Sono eventi programmati regolarmente e condotti seguendo una procedura standard • Va/non va: – La revisione non viene tenuta se non si verificano certi eventi – Il processo di sviluppo software riprende solo dopo che tutto il lavoro passato in revisione è stato completato e approvato dai revisori Processo per la garanzia della qualità software 1 Il processo SQA comincia facendo una revisione in profondità sul processo di sviluppo del software CHECKLIST 1. La portata del software è definita in maniera chiara? 2. La terminologia è ben definita? 3. Le risorse sono ragionevoli? Sono disponibili? 4. L’analisi dei rischi è stata fatta? E il piano contenimento e/o prevenzione? 5. I compiti sono stati definiti, programmati e allocati? 6. Le stime di costo e programmazione sono ragionevoli (si correlano con i dati storici)? 7. E’ stato applicato uno standard nella stesura della documentazione? 8. Come sarà controllato il piano del progetto? 9. E’ necessario un ambiente per lo sviluppo del software? 10. Come è stata condotta la revisione? Checklist per i requisiti software 1. 2. 3. 4. 5. 6. 7. Tutte le funzioni sono state definite, descritte, vincolate in maniera non ambigua? Per ogni requisito funzionale è stato introdotto anche un requisito di performance, e il requisito funzionale è testabile? Gli input e gli output sono stati tutti definiti in termini di range, protocolli,.. in modo che il designer del software possa essere soddisfatto? E’ stato fatto un piano di test e di integrazione? I criteri di accettazione dei test sono stati già negoziati con il cliente? Lo studio di fattibilità è completo? L’analisi dei rischi è stata iniziata/completata? Sono stati applicati degli standard alla documentazione? Checklist per la specifica architetturale 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Ci sono ancora dei requisiti aperti? Se sì, si progetta di chiuderli? Il partizionamento è completo e documentato? Tutte le interfacce hardware e software interne ed esterne sono state definite adeguatamente in termini di protocolli, range ecc..? Il modello dei dati è stato completamente e accuratamente definito? I requisiti software di basso livello sono tracciati nei requisiti software di alto livello in maniera completa ed accurata? Possono essere soddisfatti i requisiti non funzionali? Il partizionamento soddisfa i criteri di modularità? Sono state definite le interfacce fra i moduli? Il design della struttura dati è consistente con i requisiti dei dati? Manutenibilità e flessibilità sono attributi di qualità considerati nel design? Quali attributi di qualità sono applicati? Gli standard di documentazione sono stati raggiunti? Sono stati applicati degli standard nella pseudocodifica? Se sì, come sono stati applicati? Checklist per la specifica di dettaglio 1. 2. 3. 4. 5. 6. 7. 8. Sono stati tenuti in considerazione tutti i requisiti? La specifica dettagliata è consistente con la precedente? Lo pseudocodice o i diagrammi sono stati correttamente trasformati in codice? Hanno soddisfatto gli standard richiesti? Sono stati soddisfatti gli standard per la documentazione? I commenti soddisfano degli standard? I tipi di dati e la dichiarazione dei dati è corretta? I dati sono corretti? Sono stati tenuti in conto gli attributi di qualità? Checklist del testing 1. I criteri di accettazione dei test sono stati definiti, negoziati ed accettati? Le revisioni sono state fatte come richiesto? 2. I piani di test sono stati preparati e revisionati? 3. L’attività di testing è stata presa in considerazione in altre fasi di sviluppo? 4. Gli ambienti di test (strumenti e risorse) sono definiti in maniera adeguata e disponibili quando necessario? 5. La tracciabilità fra requisiti e test di conferma è stata completata e corretta? 6. Le funzioni principali sono confermate presto nella fase di testing? 7. Sono stati definiti degli standard per condurre i test? I tester sono stati sottoposti a training? 8. Sono stati definiti test limite e test di stress? 9. Il testing è fatto in maniera completa? 10. La gestione degli errori e delle eccezioni è stata testata? Checklist per la valutazione della revisione 1. 2. 3. 4. 5. 6. 7. 8. 9. Il materiale è completo? Il materiale è stato distribuito in tempo? Gli standard applicabili sono disponibili? I partecipanti erano preparati a contribuire? La valutazione è iniziata in tempo? La revisione è stata condotta attraverso protocolli standard? E’ stato identificato un certo numero di difetti? Sono stati riportati gli attributi di qualità? Si e’ cominciato a tracciare i difetti? Misura del processo • L’efficacia di un processo di sviluppo software si misura indirettamente – A partire dalle informazioni derivate dal processo si ricava una famiglia di metriche – Tali informazioni comprendono • • • • • • • La misura degli errori scoperti prima della distribuzione del software I difetti comunicati dagli utenti finali I prodotti distribuiti (produttività) Il lavoro speso Il tempo impiegato Il grado di conformità alle scadenze prefissate … CMM Il Capability Maturity Model (CMM) è il più famoso ed utilizzato modello di valutazione e miglioramento - Software Engineering Istitute (SEI) Pittsburg – USA. Un processo è caratterizzato da 3 attributi fondamentali: capability: è l’insieme dei risultati che un processo consente di conseguire; esprime le potenzialità del processo e permette di effettuare stime attendibili sulla possibilità di raggiungere i risultati di un progetto, sia per il committente che per il produttore; performance: è una misura dei risultati effettivi ottenuti nell’applicazione del processo; una valutazione a consuntivo dei risultati che sono stati raggiunti; maturity: è una misura dell’efficacia del processo e della estensione e precisione con cui le fasi e le attività dello stesso sono esplicitamente definite, gestite, misurate e controllate; è una valutazione del livello di padronanza e controllo del processo da parte dell’organizzazione, ivi inclusa la capacità dell’organizzazione di migliorarlo, ottimizzarlo,… o comunque modificarlo in risposta a necessità che si presentano. CMMI CMM CMMI CMMI CMMI CMMI CMMI CMMI Level Focus Process Areas 5 Optimizing Continuous process improvement Organizational Innovation and Deployment Causal Analysis and Resolution 4 Quantitatively Managed Quantitative management Organizational Process Performance Quantitative Project Management 3 Defined Process standardization (SS) (IPPD) (IPPD) 2 Managed 1 Performed Basic project management Requirements Development Technical Solution Product Integration Verification Validation Organizational Process Focus Organizational Process Definition Organizational Training Integrated Project Management Integrated Supplier Management Risk Management Decision Analysis and Resolution Organizational Environment for Integration Integrated Teaming Requirements Management Project Planning Project Monitoring and Control Supplier Agreement Management Measurement and Analysis Process and Product Quality Assurance Configuration Management CMMI CMMI CMMI CMMI CMMI CMMI