In un mondo in cui sviluppo e delivery del software sono guidati da requisiti del mercato in continua evoluzione (si pensi a certe applicazioni web, o alle app per dispositivi mobili, di cui vengono rilasciate di continuo nuove versioni per aumentarne la stabilità, o in cui si aggiungono ulteriori funzionalità per rispondere alle richieste degli utenti) oggi i team AD&D (Application Development and Delivery) sono sotto pressione, e fanno fatica a tenere il passo. In altre parole, è difficile implementare una metodologia affidabile per sviluppare il software in base ai requisiti, costruire le diverse versioni, collaudarle e aggiornarle con facilità, e con rapidi rilasci, senza avere problemi.
Di questo servizio fa parte anche il seguente articolo:
- COME INTEGRARE – Integrazione di tool DevOps: la soluzione sta nel cloud
Per adottare una strategia di questo genere, tali team devono passare dal tradizionale modello ‘waterfall’, in cui il processo di sviluppo software avviene ‘a cascata’ (in maniera sequenziale e non iterativa) e migrare verso il paradigma DevOps, che si focalizza sulla stretta cooperazione e interdipendenza tra team di sviluppo software e personale delle IT operation.
Tool troppo frammentati
Allo stesso tempo, per abbracciare una strategia di continuo rilascio di software e applicazioni stabili e di alta qualità, i professionisti AD&D devono possedere un corretto insieme di strumenti, che li aiutino a perseguire tale obiettivo, e a ridurre gli errori, automatizzando tutto il processo di sviluppo, test e rilascio del codice. Perseguire questo primo punto però non è facile, segnala la società di ricerche di mercato e consulenza Forrester nel Report The Quest For Speed-Plus-Quality Drives Agile And DevOps Tool Selection (disponibile sul sito della società di analisi), perché attualmente, anche se la situazione sta migliorando, il mercato di tool a supporto di questo approccio risulta ancora troppo complesso e frammentato, con nessun vendor in grado di coprire l’intero ciclo di sviluppo e delivery delle applicazioni. Ciò costringe gli addetti AD&D al difficile compito di integrare da sé l’insieme di tool specializzati per gestire lo sviluppo software lungo il ciclo di vita. Ad esempio, i tool usati dagli esperti di ‘customer experience’ per individuare le esigenze degli utenti finali risultano nella maggior parte dei casi disconnessi da quelli di progettazione e sviluppo del codice.
Automazione per migliorare l’efficacia del team
Da sempre gli sviluppatori hanno sfruttato l’automazione per semplificare il lavoro, ma se prima l’obiettivo era la produttività individuale, oggi il focus è migliorare l’efficacia a livello di team, attraverso una varietà di tool:
- strumenti di controllo versione distribuiti e ‘cloud-hosted’, come Git, che, evidenzia Forrester, ha rivoluzionato i tool tradizionali;
- strumenti di integrazione e distribuzione continua, applicati all’intero ciclo di fornitura del software;
- tool di analisi statica del codice, per analizzare la conformità con regole definite, inclusa la compliance con standard di codifica e di architettura software;
- strumenti di costruzione delle build, compilatori compresi;
- soluzioni per tenere traccia delle versioni delle API (Application Programming Interface) e delle loro dipendenze;
- repository di file binari e metadati, che aiutano a migliorare la qualità attraverso la standardizzazione dei componenti.
Classici tool Ops: non servono solo in produzione
Man mano che si afferma la progressiva attenuazione della linea di demarcazione tra ambienti di sviluppo (Dev) e IT operation (Ops), gli sviluppatori, evidenzia Forrester, adottano alcuni tool Ops tradizionali per fornire il software con maggior rapidità. In altre parole, per migliorare la coerenza del codice e rimuovere i rischi, anche i team di sviluppo necessitano degli stessi tool e processi automatici usati dalle IT operation per l’implementazione delle applicazioni in produzione.
Infine c’è anche da considerare il fatto che l’automazione sta cambiando la natura del processo di assicurazione di qualità (QA – quality assurance), portando a un cambiamento nelle competenze e tool che gli addetti QA utilizzano per collaudare il software. In particolare, il testing funzionale manuale sta perdendo terreno, a favore del collaudo funzionale automatizzato.
Inoltre la virtualizzazione dei servizi, simulando i sistemi di produzione, permette di evitare l’esatta replicazione di tali ambienti, tra l’altro poco pratica e costosa, nei reparti di sviluppo e test. Tra i cambiamenti per facilitare le attività di collaudo, i team in alcune organizzazioni stanno migrando verso processi di test automatizzati basati su API. Un ulteriore trend è lo spostamento del test di carico e prestazioni sempre più nelle fasi iniziali di progettazione, per consentire agli sviluppatori di collaudare le performance il più possibile in anticipo all’interno del processo di sviluppo.