Sviluppo software, ecco i metodi agili per imprese e PA
Nel panorama dell’ingegneria software stanno emergendo concetti quali i metodi agili di sviluppo e la metodica DevOps. Metodi innovativi che puntano alla comunicazione, collaborazione e integrazione tra sviluppatori e addetti alle operations
15 Febbraio 2017
Maurizio Piacitelli, Consulente ICT specializzato in IT Service Management, Agile Governance, DevOps, innovazione tecnologica, Corte dei Conti
Nel panorama dello sviluppo software stanno emergendo concetti quali i metodi agili di sviluppo e metodica DevOps.
I metodi agili si propongono di sviluppare software che abbiano un alto valore per il cliente che commissiona gli sviluppi e che siano rilasciati “presto” e a ritmo costante.
DevOps (development, “sviluppo”, e operations, intesa come “messa in produzione” o “deployment”) è un movimento, un’organizzazione dello sviluppo del software che punta alla comunicazione, collaborazione e integrazione tra sviluppatori e addetti alle operations. La cultura DevOps punta ad aiutare le organizzazioni a sviluppare in modo più efficiente prodotti e servizi software e a metterli in produzione in modo rapido e corretto.
Un team di sviluppo software agile già dopo un paio di settimane rilascia una prima versione del software, che è incompleta, ma utilizzabile. In questo modo il cliente ha un ritorno immediato sulla qualità del software consegnato e può fornire al team di sviluppo un prezioso riscontro sugli obiettivi da raggiungere. Quando il team lavora bene riesce a mantenere un ritmo costante di rilasci frequenti (tipicamente ogni una o due settimane).
Quanto tempo ci vuole per rilasciare un prodotto? E che qualità avrà? Un problema spesso sottovalutato è che è difficile avere una misura concreta di quando il software sarà pronto, fino a quando lo sviluppo non è concluso. Spesso nella fase di integrazione si rilevano incongruenze; inoltre, fino quasi alla fine dello sviluppo non abbiamo una misura della qualità del software che si sta producendo. La risposta a questi problemi risiede, secondo i metodi di sviluppo agili, nello sviluppo incrementale ed evolutivo. Il software viene realizzato con un ritmo costante secondo iterazioni brevi, della durata media di due settimane; alla scadenza il team consegna il software che contiene le funzionalità realizzate fino a quel momento. Il sistema non è completo funzionalmente, tuttavia le funzionalità rilasciate sono state implementate al livello di dettaglio e di qualità sufficiente per metterle in produzione ed essere utilizzate dagli utenti finali. Secondo tale modello il cliente può decidere, a ogni iterazione, se le funzionalità consegnate sono sufficienti per andare in produzione o se modificare qualcosa. In questo modo il progetto inizia a produrre valore prima di essere completo. Organizzazione, costi, qualità, tempi, ritmi di lavoro e di rilascio: sono tutti temi importanti trattati dai metodi di sviluppo agile.
La filosofia DevOps integra gli sviluppatori con i gestori dei sistemi e delle infrastrutture ICT per migliorare la collaborazione e la produttività, cercando di automatizzare le attività di testing del codice, dei test funzionali, la gestione dell’infrastruttura e processi e le metodiche di lavoro, tenendo sempre come punto di riferimento le performance in ambiente di esecuzione, cioè le performance applicative. Tutto ciò si realizza implementando una specifica “pipeline” che conduce il codice dalla sua scrittura, alla fase di build, al test, alla messa in esercizio (deploy automatico) seguito da uno specifico team di persone (team DevOps).
Tutte le figure di questo team dedicato al DevOps devono imparare a scrivere moduli e frammenti di codice; tali moduli devono essere integrati, testati, monitorati e rilasciati in produzione nel giro di poco tempo (a volte ore o minuti); pertanto non si punta più a scrivere componenti software che richiedono settimane di progettazione o settimane di testing delle applicazioni. Per scrivere il codice si deve utilizzare un sistema di controllo dei sorgenti che serve a gestire materialmente tale codice in un repository centralizzato e condiviso, tracciare e documentare tutti i cambiamenti apportati sia al codice applicativo, quanto a quello di configurazione.
Un concetto importante del DevOps riguarda l’Infrastructure as Code (IaC), cioè la pratica in base alla quale anche l’infrastruttura diviene codice come quello applicativo, che può essere versionato e conservato.
Con il DevOps si ha la sicurezza di disporre dello stesso ambiente di sviluppo e di produzione, basati sul cloud, ambienti che aiutano così la fase di testing e di rilascio del codice. Importante diviene il rendersi conto che qualsiasi modifica al codice può avere impatti rilevanti e non prevedibili sulle performance complessive.
Il metodo DevOps offre l’opportunità di adottare un processo iterativo di monitoraggio, misurazione e miglioramento del codice e delle operazioni di gestione delle infrastrutture in ambiente esecutivo, in modo strutturato.
Sia Agile che DevOps insegnano una rilevante lezione: imparare dagli errori commessi; solo così si può migliorare il lavoro.
Le due metodologie saranno oggetto di approfondimento durante il webinar “Sviluppo software: i vantaggi di Agile e DevOps per imprese e PA”.