None

Quando sviluppiamo un software lo facciamo in team: siamo cioè un gruppo di persone, tra ingegneri e sviluppatori, che vanno a contribuire allo sviluppo delle diverse parti del software. Isole in sé autonome che devono essere in grado di dialogare tra loro per funzionare al meglio.

Continuous integration e continuous delivery: cosa sono

Innanzitutto definiamo il concetto di continuous integration o integrazione continua.
Un esempio pratico?
Quando sviluppiamo un software lo facciamo in team: siamo cioè un gruppo di persone, tra ingegneri e sviluppatori, che vanno a contribuire allo sviluppo delle diverse parti del software.
Ad un certo punto però le diverse parti vanno assemblate, ovvero integrate tra loro affinché lavorino efficacemente insieme: vanno cioè allineate.

Ecco: la continuous integration esprime proprio quest’allineamento. Esso avviene di frequente - spesso "più volte al giorno"- e consiste nell’integrazione dagli ambienti di lavoro dei singoli sviluppatori verso un ambiente condiviso in cui risiede il software nel suo complesso.


Il concetto nacque originariamente nel contesto dell’Extreme Programming, come contromisura preventiva al problema dell'integration hell, (l’”inferno” dell'integrazione di porzioni di software sviluppati in modo indipendente su lunghi periodi di tempo e potenzialmente significativamente divergenti).
Nello sviluppo non continuous gli sviluppi delle diverse parti del software procedono indipendentemente per lungo tempo, ed è solo al momento dell’integrazione che gli eventuali (inevitabili) problemi emergono: il momento dell’integrazione diventava quindi la cartina tornasole degli errori di progettazione e/o sviluppo, cui era spesso macchinoso rimediare vista la distanza temporale trascorsa dall’inizio dello sviluppo.

Il controllo di versione: ovvero la conoscenza è potere (e responsabilità)

Con la continuous integration si apre un nuovo scenario di sviluppo: ogni fase della produzione, dal piccolo commit di codice al test sino al rilascio di funzionalità cardine viene tracciata e corrisponde ad una certa “versione” del software.
Ogni modifica o integrazione ha cioè un numero identificativo ed è tracciata ogni informazione ad essa correlata: quando, come e da chi è stata lanciata.
Cosa ne deriva?
Tantissimi vantaggi per un codice di qualità:

  • Se c’è un errore è più facile capire da dove è partito e perché
  • Gli eventuali difetti e bug vengono intercettati subito e si gioca d’anticipo nel correggerli
  • Ogni nuova versione del codice rappresenta una versione migliorata, ottimizzata di sé stessa
  • Ogni sviluppatore è palesemente reso responsabile della parte di codice rilasciata: è una esplicita chiamata alla responsabilità e allo sviluppo qualitativo cui ogni sviluppatore non può sottrarsi

Continuous delivery: quando il Giorno del Giudizio non è più il Giorno del Giudizio

La continuous delivery è la conseguenza intrinseca della continuous integration: se il software è continuamente e frequentemente integrato, allora è anche continuamente e frequentemente rilasciabile in produzione, ovvero pubblicabile online e visibile al cliente.
E’ questo un punto cardine della tecnologia agile, che anche noi in SAEP applichiamo con le dovute personalizzazioni: il software come abbiamo detto è diviso in parti e lavorazioni, ciascuna delle quali va frequentemente integrata con le altre e rilasciata in produzione.

Ogni modifica introdotta nel codice è potenzialmente rilasciabile a giro breve, senza più lunghi tempi di attesa tra sviluppo e messa in produzione delle modifiche.
In che termini lo sviluppo con continuous integration porta qualità nello sviluppo del software e in ultima istanza agli occhi del cliente finale anche non tecnico?

1. Il D-day è rimandato (alle calendae greche)

Nello sviluppo non agile e senza continuous delivery il giorno del rilascio corrispondeva al Giorno del Giudizio Universale.
Provate a pensarci: 3 mesi di sviluppo e 1 solo giorno in cui tutti i nodi possono potenzialmente venire al pettine.

Spaventerebbe chiunque, giusto?
Con la continuous delivery invece gli sviluppatori sono fisiologicamente vaccinati al rilascio: la release non è più il D-Day tanto temuto, ma solo una delle tante fasi del processo di sviluppo e continuo miglioramento del software.

2. Un miglioramento continuo

Il software stesso non è più un monolite statico e difficilmente penetrabile, ma un complesso di parti di codice in sé autonome e tra loro cooperanti che vengono testate e fatte dialogare tra loro di continuo, permettendone un’ottimizzazione progressiva senza soluzione di continuità.

3. Pianificazione trasparente di tempi e obiettivi

Con lo sviluppo software sotto capillare controllo, è molto più semplice pianificare obiettivi realistici e progressivi su un periodo di tempo concordato tra team di sviluppo e team cliente.
Gli obiettivi possono essere presidiati, le richieste integrative o i cambiamenti in corsa sono capillarmente tracciati, così come i loro impatti sull’integrazione con le altre funzionalità previste.

Questo consente di avere controllo anche su eventuali ritardi – non più subiti come conseguenze di meccanismi imprevedibili, ma come scelte consapevoli di eventuali cambi di direzione - sui tempi complessivi di sviluppo ed i relativi costi.

La combo continuous integration + continuous delivery sconfigge la paura del rilascio e apre la strada ad un’evoluzione del software in sostanza più rapida, controllata e di qualità rispetto al passato.

Articoli correlati

sviluppo-single-page-application-milano.jpg
Le SPA o Single Page Application sono applicazioni web fruibili come singola pagina senza necessità di caricamento per pagine: scopriamone …
software-gestionale.jpg
Le soluzioni software gestionali SAEP ICT e SAEP Informatica nascono per soddisfare qualsiasi necessità di gestione aziendale.Sommano la trentennale esperienza …
Progressive Web App cosa sono SAEP ICT
Le PWA sono un’ottima alternativa alle app e ai siti tradizionali, con diversi vantaggi anche per gli sviluppatori. Scopriamo in …
consulenza-informatica-milano.jpg
La consulenza informatica, "IT Consulting" o "Business and Technology Consulting" è una forma di consulenza che consiste nella prestazione professionale, …
significato-acronimo-ict.jpg
Ti sarà capitato di chiederti cosa significhi ICT, l'acronimo che identifica l'attività di molte aziende e software house che lavorano …
sviluppo-software-personalizzato.jpg
Il processo di sviluppo software è un'attività complessa che richiede un’attenta pianificazione, un costante controllo e una documentazione specifica e …
landing-page.jpg
Nel marketing digitale, una landing page è una pagina web autonoma, creata appositamente ai fini di una campagna pubblicitaria o …
sviluppo-in-python-milano.jpg
Se sei atterrato su questo articolo è perché probabilmente cerchi un team che possa supportarti nello sviluppo di software in …
dns_pubblico_di_google.jpg
Google Public DNS è un servizio gratuito offerto agli utenti Internet di tutto il mondo da Google. Il DNS Google …
Schermata.jpg
Cos’è il Materiale DesignIl Material Design è uno stile, un codice, un linguaggio di design sviluppato da Google supportato nativamente …
sviluppo-python-django-milano.jpg
Ciao Matteo, innanzitutto raccontaci almeno un po’ di te: come sei arrivato in SAEP ICT e che tipo di percorso …
sicurezza-ecommerce-milano2.jpg
Misure di sicurezza per i sistemi eCommerce: cosa dice il DGPR EuropeoLe misure di sicurezza nell’ambito di sistemi di eCommerce …
app-per-offerte-commerciali.jpg
Offerte e preventivi: i parametri utili per snellire i processiCome ogni commerciale o agente di commercio sa, la creazione dell’offerta …
sviluppo-applicazioni-angular-milano.jpg
Caratteristiche principali di AngularAngular è un framework opensource dedicato allo sviluppo di applicazioni WEB e sviluppato principalmente da Google. Dire …
catalogo digitale.jpeg
Scegliere di sviluppare un catalogo digitale significa in prima battuta rinunciare.A cosa?Ai costi del cartaceo, innanzitutto: costi di stampa, costi …
sviluppo-software-linguaggio-python.jpg
Il linguaggio di programmazione Python è confermato da O'Reilly come uno degli argomenti più cercati ed utilizzati sulla propria piattaforma.Ricordiamo …
agile_1.jpg
Ogni progetto è caratterizzato in maniera univoca dai suoi vincoli. Secondo il concetto di triple constraint la natura sistemica dei …
GDPR
Il Regolamento Europeo 2016/679, meglio conosciuto come GDPR è un insieme di norme in materia di trattamento dei dati personali …
Portal
Con l’avvento dei nuovi canali di comunicazione nati grazie al Web, le imprese moderne dispongono di diversi strumenti per instaurare …
software-house
Nel corso degli anni, le Software House hanno giocato un ruolo cruciale nell'evoluzione del settore IT. La loro storia si …
Contattaci