Modello di Controllo Qualità Applicativa
Transcript
Modello di Controllo Qualità Applicativa
V2.2 Modello di Controllo Qualità Applicativa Offerta Assioma.net Tel +39 02.45.05.5810 / +39 011.19.70.9510 Via Rimembranze, 6 - 20090 Cesano Boscone (MI) / Via G. Spano, 6/11 - 10134 Torino 2014 Benefici Descrizione Servizi Proposti 2 – AGENDA Benefici introduzione modello Qualità Applicativa Gestione Fornitori Sviluppo Abbattimento dei costi per: • Diminuzione degli interventi di correttiva da produzione • Diminuzione dei rilasci in emergenza Miglioramento caratteristiche: • Manutenibilità • Robustezza • Efficienza • Sicurezza Classificazione • Dimensione delle applicazioni • Distribuzione per tecnologia • Volumi del Change • Aderenza a standard Modello Controllo Qualità Applicativa Contratto di Servizio Miglioramento della gestione dei costi: • Dimensione • Volumi del Change • Technical Debt residuo SLA con metriche oggettive sulla qualità di prodotto 3 - Modello di Controllo Qualità Applicativa Esercizio Diminuzione dei costi di gestione applicativa per: • Aumento efficienza • Aumento dell’affidabilità • Aumento della sicurezza Governance Portfolio Dimensione del Portfolio applicativo Distribuzione per Unità Organizzative Distribuzione per tecnologia Volumi del Change Correlazione con altre metriche di gestione del Parco Software: • Incident • Costo • …… Sintomi Visibili Iceberg Quality – la nostra visione Requirement Validation On-time delivery Acceptance Test Difettosità durante il processo di sviluppo Difettosità in produzione System Test Regression Test Manutenibilità Integration Test Accoppiamento Unit Test Radice Invisibile Flessibilità Leggibilità Riusabilità Complessità Bug Pattern Analysis Testabilità Program Practice Robustezza 34 –- Modello Introduzione di Controllo Qualità Applicativa Code Review Programming Style Tecniche di Intervento Costi di manutenzione Qualità del coding: i 7 debiti dello sviluppo Bugs potenziali Talvolta gli sviluppatori introducono nel codice potenziali problemi che hanno effetti sulla robustezza e sicurezza dell’applicazione N. Potential bugs Programming Practice Source Code Spesso la mancanza di linee guida chiare porta ad avere del codice poco chiaro e scarsamente manutenibile Complessità Codice troppo complesso è indice di bassa Rules Compliance %Complexity manutenibilità e scarsa testabilità Duplicazioni Spesso il codice viene duplicato per mancanza di tempo o coraggio al refactoring, rendendo poco manutenibile l’applicazione %Duplication Unit Test La verifica unitaria del codice sviluppato è spesso assente o con livelli di copertura molto bassi, rendendo il codice poco robusto %Unit test Coverage Architettura Talvolta l’architettura con la quale l’applicazione è stata pensata non viene rispettata con implicazioni sulla manutenibilità Commenti L’assenza di commenti rende il codice poco leggibile e scarsamente manutenibile 5 - Modello di Controllo Qualità Applicativa Package Index %Comment 5 Continuous Improvement Model Continuous Improvement High Time Frequency Continuous Improvement Application Assessment Typical Use Case: Assessing or auditing the quality of applications to use as a quality gate, help in portfolio level decisions, or providing visibility to management Frequency of Use: Analysis is done very in-frequently (1-4 times a year) or on-demand Application Assessment Supplier Quality Gate Supplier Quality Gate Low Typical Use Case: Monitoring and improving the quality of mission critical applications on an ongoing basis Frequency of Use: Analysis on applications is done during development phase, whenever major changes are done to the code base (often daily, weekly or based on the build schedule) Quality Improvement Effectiveness 36 –- Modello Introduzione di Controllo Qualità Applicativa High Typical Use Case: Evaluating the quality of deliverables from vendors against existing Service Level Agreements Frequency of Use: Analysis is done at every major code drop by the vendor either for Quality Assurance or User Acceptance Testing (QA or UAT) Continuous Improvement Model: the best overall value Continuous Improvement Model Application Assessment Model (daily, weekly) (1-4 times/year) Less remediation work: • Development teams receive monthly for weekly feedback they internalize and incorporate best practices the first time the code it written, resulting in drastic reduction of new violations introduced • Sooner identification of violations, results in cheaper and quicker fixing of violations • More frequent analysis and remediation results in less reactive work, more proactive attitude of development teams More remediation work: • Developers forget quickly the mistakes they make and keep reintroducing same errors and violation, unless the best practices are reinforced more frequently • If violations are not identified fixed immediately, contexts are forgotten so cost of fixing violations becomes high • Remediation effort can be seen as a burden and painful because of the high volume of the piled up defect if the analysis is done only once every quarter or semester Increased innovation: Once the initial cleaning is done, ongoing remediation becomes a breeze as there are fewer violations and teams can focus on adding innovative new features for business. Increased developer interruptions: Development teams can spend entire weeks to clean the mess rather than focusing on adding new features daily, weekly Introduction of new violations 37 –- Modello Introduzione di Controllo Qualità Applicativa Q1 Software quality improvement Q2 Q3 Remediation workload Q4 Technical Debt Il Debito Tecnico è una metafora per riferirsi alle eventuali conseguenze di uno sviluppo poco curato del software. Il debito può essere pensato come ad una attività che deve essere fatta prima che un progetto possa essere considerato completo. Se il debito non viene sanato, tenderà ad accumulare interessi, il che rende difficile attuare le modifiche in seguito. La non gestione del Debito Tecnico aumenta l'entropia del codice software aumentandone i costi di manutenzione. Il debito tecnico di un’applicazione tende a crescere nel tempo se non tenuto sotto controllo, aumentando i Costi legati agli Incident ed alla Manutenibilità 8 - Modello di Controllo Qualità Applicativa Servizi proposti da Assioma.net Assessment Base Governance Portfolio Applicativo L’Assessment Base consente una verifica una tantum del codice applicativo di una determinata applicazione. Ha l’obiettivo di valutare la bontà di una applicazione in un momento qualsiasi. Il servizio di Governance del Portfolio Applicativo consente di mettere sotto controllo un elevato numero di applicazione in modalità Continuous Inspection, ovvero intervenendo per periodi di tempo lunghi, nei quali si vuole mettere sotto controllo l’applicazione per verificarne le variazioni rispetto alle metriche di qualità nel tempo. Fornisce informazioni utili al management per conoscere il perimetro e la qualità del proprio Parco Applicativo. Assessment a Progetto L’Assessment a Progetto consente la verifica, durante il rilascio, del codice di una determinata applicazione. Il contesto è pensato per introdurre un Gate di qualità sul codice applicativo durante la fase di Verifica di un progetto software. Nel momento in cui la software factory (interna o esterna), rilascia in ambiente di test, viene pianificata e realizzata un’attività di verifica formale del codice sorgente. Le non conformità rilevate verranno segnalate e, durante la fase di test, verrà verificata la chiusura o meno delle Issue aperte 39 –- Modello Introduzione di Controllo Qualità Applicativa Assessment Base Abstract Syntax Tree (AST) Applicazioni L’Assessment Base è pensato per una verifica una tantum del codice applicativo di una determinata applicazione. Ha l’obiettivo di valutare la bontà di una applicazione in un momento qualsiasi. L’Assessment Base prevede: • Raccolta e studio dei sorgenti dell’applicazione, a seguito incontro con gruppi applicativi del Cliente • Configurazione ed analisi del codice sorgente su infrastruttura messa disposizione da Assioma.net • Realizzazione di una Dashboard web accessibile da parte del Cliente per 6 mesi, contenente i risultati dell’analisi di una specifica versione dell’applicazione • Realizzazione di un documento di Action Plan contenente le anomalie riscontrate durante la fase di analisi, organizzate e descritte sulla base del modello di qualità SQALE Metriche: • LOC, Num Files, Num Classes • Complessità ciclomatica • Duplicazioni • Commenti •… 310– -Introduzione Modello di Controllo Qualità Applicativa Regole: • Manutenibilità • Robustezza • Performance • Efficienza • Portabilità • … Dashboard online Case History: Assessment Base Esigenza del Cliente Ad un anno dalla scelta di esternalizzare le attività di sviluppo tramite un processo di outsoucing il Cliente necessita di: • un assessment sulla qualità del codice al fine di comprendere i rischi correlati • un modello di ottimizzazione dei costi del progetto • dare rilievo agli aspetti di Robustezza e Performance • valutare un processo di verifica continua su tecnologia JAVA e COBOL Attività svolta Raccolta dei sorgenti e suddivisione degli stessi in aree funzionali Configurazione di un’infrastruttura presso Assioma.net in grado di analizzare l’applicazione Introduzione nella piattaforma del modello SQALE per la misurazione del Technical Debt sulle applicazioni analizzate Realizzazione di un assessment su una applicazione di oltre 5 Milioni LOC Segnalazione di oltre 50 violazioni di tipo bloccante (in grado di causare crash del sistema) Realizzazione di un Action Plan contenente gli aspetti di maggior criticità presenti a sistema Applicazione del modello SQALE per la misurazione del Technical Debt 11 - Modello di Controllo Qualità Applicativa Obiettivi raggiunti Nell’arco di 2 mesi è stato: migliorato il livello della robustezza dell’applicazione grazie all’individuazione (e successivo fix) di problematiche bloccanti migliorato il controllo del lavoro svolto dai fornitori esterni messo sotto controllo il fenomeno della duplicazione del codice che risultava superare la soglia del 40% Evidenza delle violazioni bloccanti Assessment a Progetto L’Assessment a Progetto consente di verificare la qualità del codice applicativo di una determinata applicazione durante la fase di System Test. E’ pensato per introdurre un Gate di qualità sul codice applicativo durante la fase di Verifica di un progetto software. Nel momento in cui la software factory (interna o esterna), rilascia in ambiente di test, viene pianificata e realizzata un’attività di verifica formale del codice sorgente. Le non conformità rilevate verranno segnalate e, durante la fase di test, verrà verificata la chiusura o meno delle Issue aperte. Contiene le stese attività previste per l’Assessment Base, ma per un periodo di tempo più ampio. Passaggio in produzione, l’eventuale TD residuo viene portato come Action Plan per il progetto successivo Baseline a inizio progetto 28/08/2013 Rilasci in Test 02/09/2013 10/10/2013 Added technical debt: +8 g/u Added technical debt: +6 g/u Controllo su Progetto - Fine Sviluppo 12 - Modello di Controllo Qualità Applicativa Rilascio in Produzione 15/11/2013 Added technical debt: 4 g/u t Quality Gate Controllo su Progetto - iterazioni di Sviluppo Rischio Accettabile ? Blocco rilascio Case History: Assessment a Progetto Esigenza del cliente IT Attività svolta Definizione di un Quality Gate verso il fornitore attraverso l’introduzione di più fasi di controllo formale all’interno del processo di sviluppo software Certificazione Assegnazione Evolutiva al FORNITORE Richiesta di Change Midrange Condivisione documento di richiesta Evolutiva Rilascio in Certificazione SI Rilascio con fermo sistemi? Creazione Ticket su TRAC in Milestone ~ Controllo preventivo da parte degli sviluppatori sul codice sviluppato ~ Controllo formale sul codice rilasciato prima del passaggio in ambiente di certificazione ~ Controllo formale sull’intera applicazione con cadenza bimestrale OK Esito NOT OK Analisi del processo attuale e proposta di un nuovo processo di sviluppo in grado di integrare le fasi di: Comunicazione ad AMS dell’esito della certificazione e formalizzazione della data di rilascio Richiesta di Change Midrange NO Comunicazione ad AVIO del rilascio in certificazione Compilazione Commit del codice su SVN SI Rilascio con fermo sistemi? Creazione di un Folder/ Branch SVN del codice Esito NO OK Configurazione di un’infrastruttura in grado di supportarne il processo Definizione di un’applicazione (Java, C/C++) sulla quale mettere a punto il processo e relativa analisi della stessa Realizzazione dell’Action Plan in grado di indirizzare i miglioramenti qualitativi Estensione di nuove regole custom su linguaggio C/C++ NOT OK Controllo formale su Branch Rilascio in Produzione NEW Condivisione Folder/Branch Evolutiva Eventuale merge su SVN del codice del Folder/Branch Versionamento iniziale sul Branch Sviluppo e test Evolutiva Controllo preventivo NEW Commit del codice sul Folder/Branch SVN Invio Action Plan Comunicazione ad AMS di fine sviluppo Condivisione risultati con AVIO Generazione Action Plan NO Quality Gate Superato? Obiettivi raggiunti Nell’arco di 4 mesi è stato: formalizzato il nuovo processo e messa in opera dello stesso all’interno del gruppo di sviluppo contenente un Quality Gate in grado di controllare la qualità apportato un miglioramento qualitativo dell’ordine del 10% rispetto alla baseline iniziale realizzata una forte integrazione ed interazione con i gruppi di sviluppo KPI per tecnologia JAVA Violazioni Bloccanti e Critiche Rules Compliance Commenti (%) Linee duplicate (%) Complessità ciclomatica media per singolo metodo Gate superato se =0 > 80% > 10% < 30% < 10 KPI per tecnologia C Violazioni Bloccanti e Critiche Rules Compliance Commenti (%) Linee duplicate (%) Complessità ciclomatica per singola funzione/procedura Gate superato se =0 > 80% > 10% < 30% < 20 Controllo formale Produzione NEW 13 - Modello di Controllo Qualità Applicativa Distribuzione delle linee di codice per competenza Definizione del Quality Gate Governance Portfolio Applicativo Il servizio di Governance del Portfolio Applicativo consente di mettere sotto controllo un elevato numero di applicazione in modalità Continuous Inspection, ovvero intervenendo per periodi di tempo lunghi, nei quali si vuole mettere sotto controllo l’applicazione per verificarne le variazioni rispetto alle metriche di qualità nel tempo. Fornisce informazioni utili al management per conoscere il perimetro e la qualità del proprio Parco Applicativo. App 1 CRM System App 2 J2EE Environment App 3 App 4 Billing System App 5 Tutto il portfolio App 6 App 7 Order Management System Dashboard online Possibilità di aggregare il portfolio applicativo a qualsiasi livello e profilarlo per viste utenti differenti App 8 App 9 App 10 App 11 App 12 Possibili aggregazioni: - Per Tecnologia - Per Sistema - Per Unità di Business - Per Fornitore - … 314– -Introduzione Modello di Controllo Qualità Applicativa COBOL Enviroment SAP Enviroment App 13 App 14 App 15 App 16 .NET Enviroment Case History: Governance Porfolio Applicativo Esigenza del cliente IT Attività svolta Obiettivi raggiunti Difficoltà nell’individuazione e raccolta organica di metriche legate al Parco Software con conseguente impossibilità di: avere un Controllo della qualità del codice realizzato dai gruppi applicativi definire un modello per la rappresentazione del parco applicativo in termini quantitativi e qualitativi definire un processo in grado di migliorare la qualità abbattendo i costi di licenza di Software poco efficaci nell’ambito della Governance Raccolta delle metriche del software già in uso Tuning dell’infrastruttura sulla quale basare basare la soluzione a supporto del processo Tuning della piattaforma sulla base delle metriche definite Incontri con i gruppi applicativi al fine di condividere i risultati Implementazione della metrica relativa alla movimentazione del parco software Introduzione di un modello di maturità delle applicazioni in funzione dei livelli di qualità raggiunti Supporto ai run quindicinali sull’intero parco software Nell’arco dei primi 6 mesi: aumentata l’efficienza del processo di governance grazie alla dismissione delle licenze relative ad altri prodotti aumentata l’efficacia del processo di raccolta delle metriche con estensione del controllo a tutto il parco software (circa 30 Milioni di LOC) ridotto il tempo di analisi del parco software (da settimane a circa 20 h) introdotto un processo di maturità delle applicazioni basato su diverse soglie migliorato il controllo del lavoro svolto dai fornitori esterni Misurazione della movimentazione del parco software Dashboard aggregate dei sistemi software 15 - Modello di Controllo Qualità Applicativa Modello basato su classi di qualità per la riduzione del rischio I NOSTRI CONTATTI Let’s start improving your quality application and reduce risk and cost of software lifecycle!!! Torino Via G. Spano, 6/11 - 10134 Torino Tel. +39 011.19709.510 - Fax +39 011.19709.541 Milano Via Rimembranze, 6 - 20090 Cesano Boscone (MI) Tel. +39 02.45055.810 - Fax +39 02.45055.841 [email protected] www.assioma.net Claudio Gaiani [email protected] +039.348.2239118