Ciclo di vita del software: ecco come realizziamo le tue app.

Le app che utilizziamo maggiormente sono anche quelle più semplici e ben fatte; ma come si realizzano? Il ciclo di vita del software è qualcosa di estremamente complicato, andiamo ad analizzarlo.

Tap. Clic. Digitiamo “f” sulla barra di ricerca e la funzione autocomplete di Google ci rimanda subito a Facebook. Accedere a un’app è davvero semplicissimo, utilizzarla ancora di più (a patto che sia ben fatta).

Dall’altra parte, però, ci sono degli sviluppatori che per realizzare un prodotto così semplice ma sofisticato destinano moltissime ore alla sua progettazione e implementazione. Ma come lavorano? Qual è il processo che gli permette di sviluppare un’app così semplice ai tuoi occhi ma così complicata dal punto di vista progettuale?

Fino ai primi anni sessanta, la pianificazione non era necessaria, e ci si affidava alla creatività dello sviluppatore: dopo che gli applicativi hanno iniziato a diffondersi in campi quali quello dell’energia, degli armamenti e aerospaziale, invece, la mentalità è cambiata. L’informatica ha cominciato ad essere accostata agli altri campi dell’ingegneria, e la creatività dello sviluppatore è stata sostituita, o meglio affiancata, da una sua capacità di pianificazione delle attività da svolgere, del controllo delle funzionalità tramite test e del rilascio della documentazione per permettere al committente di capire cosa fa, come si utilizza e come è implementato il software.

Ciclo di vita del software

Sia che ti rivolga a DevInterface che ad altri per creare la tua app, web o mobile che sia, dovranno quindi essere degli ottimi strateghi oltre che dei bravi programmatori, e riuscire a definire in ogni minimo particolare tutto il processo di sviluppo: esso dovrà essere scomposto in parti diverse ma precisamente coordinate, per ottenere come risultato finale un prodotto funzionante e, soprattutto, performante.

Il mio intento, in questo articolo, è farti capire come funziona il ciclo dello sviluppo del software all’interno di DevInterface e quali sono i vantaggi che avresti rivolgendoti a noi; prima però, ti farò un breve riassunto di alcuni dei modelli che sono stati o sono tuttora utilizzati per la realizzazione delle applicazioni, così potrai avere un metro di valutazione rispetto al nostro metodo di lavoro:

  • Modello a cascata: il modello più classico sviluppato negli anni sessanta, strutturato in una sequenza rigida e lineare di step quali analisi – progetto – sviluppo – collaudo – manutenzione, che si rifanno al ciclo di produzione industriale. E’ stato progressivamente abbandonato perché contenente numerose lacune, ma resta uno storico punto di partenza.
  • Modello a spirale: contiene le stesse fasi del modello a cascata ma le utilizza in modo più intelligente. Dopo la verifica del funzionamento dell’applicazione e il riscontro di eventuali problemi si torna alla fase iniziale di pianificazione per effettuare le correzioni nell’implementazione.
  • Metodologia agile: è la metodologia che usiamo a DevInterface, come puoi vedere qui. Riteniamo che sia più vantaggioso lavorare al prodotto in stretto contatto con te, andando a sviluppare prima le parti più importanti e successivamente il resto. Aspetto essenziale della metodologia Agile, è il fatto che non ti rilasciamo il software solo al termine del lavoro, ma in diverse tappe: suddividiamo il lavoro in cicli temporali chiamati sprint (solitamente di tre settimane ognuno), al termine dei quali rilasciamo una piccola porzione di software funzionante. In questo modo possiamo testarla e capire, insieme a te, se è proprio ciò che desideravi o se c’è bisogno di apportare delle modifiche. Nel caso dell’utilizzo di un sistema a cascata invece, funzionerebbe così: se, al momento del rilascio del software completo riscontrassi eventuali problemi, essi potrebbero sì essere risolti, ma il loro fix potrebbe andare a compromettere l’intero funzionamento dell’app; questo comporterebbe la necessità di un numero indefinito di fix e un’enorme perdita di tempo per te e per noi.

Andiamo ora ad esaminare più in dettaglio la metodologia Agile che utilizziamo, analizzando le tappe fondamentali del nostro sviluppo di un’app.

Analisi

Quando ci proporrai di realizzare un’app, dovremo capire a fondo il problema che andremo a risolvere: per fare ciò, avremo bisogno di essere a contatto con te il più possibile, in modo da raccogliere dati molto precisi su quello che vuoi che realizziamo. Da essi partirà lo studio di fattibilità, il quale esito ci dirà, dopo aver incrociato i dati sulle spese che sosterremo e sugli sforzi tecnici che intraprenderemo, se è conveniente o meno realizzare tale progetto (sia per noi che per te).

Se lo studio di fattibilità è positivo, analizzeremo successivamente i precisi requisiti e funzionalità che vuoi che l’applicativo soddisfi. Questi, come vedremo in seguito, verranno identificati come user stories: i nostri sviluppatori si metteranno nei panni dell’utilizzatore finale per sviluppare le caratteristiche della tua applicazione, in modo da garantire la massima usabilità.

Progettazione: User Experience e Design

Dopo che lo studio di fattibilità sarà andato a buon fine, andremo anche ad identificare il target ideale per il tuo servizio: in base alle sue caratteristiche penseremo ad una esperienza utente ad hoc, perfettamente calibrata sulla base della tipologia di persone che più utilizzeranno il tuo servizio, in modo da rendere la fruizione più semplice e produttiva possibile. Questa è una fase essenziale del progetto: se per esempio ti rivolgessi ad un pubblico che va dai 18 ai 25 anni, dovremmo studiare qualcosa di completamente diverso da un prodotto destinato ad una fascia d’età che va dai 50 ai 60 anni.

Come vedi la prima cosa a cui pensiamo è la semplicità di utilizzo poiché, se i tuoi clienti non riescono ad ottenere ciò che vogliono dall’app che gli hai fornito, presto ti abbandoneranno. Il passo successivo, tuttavia, non ricopre minore importanza: ora è la volta di rendere la tua applicazione unica, trasferendo tramite essa la tua brand awareness. Grazie al tuo aiuto, riusciremo a mantenere radicata la tua identità di marca in un prodotto moderno ed innovativo: in questo modo, ancora più persone assoceranno il tuo nome ad un servizio di alta qualità. Otterremo questo risultato grazie ad un design tale da rendere la fruizione della tua app un’esperienza molto piacevole e difficile da dimenticare, oltre che produttiva ovviamente.

Realizzazione: il framework Scrum

Una volta definiti tutti i passi descritti, si va alla realizzazione vera e propria. Come detto in precedenza, a DevInterface utilizziamo la metodologia Agile: per implementarla adottiamo il framework Scrum, che ci permette di ottimizzare al meglio le nostre risorse. Ma come funziona?

La mentalità che sta dietro Scrum ci permette di avere ben chiaro, subito dopo l’analisi di fattibilità, come sarà strutturato il progetto: creeremo un product backlog, ossia un documento dove sono elencate tutte le user stories di cui ti parlavo prima, le caratteristiche della tua app pensate dal punto di vista dell’utente. Queste user stories, verranno realizzate concretamente all’interno degli sprint, periodi di tempo che possono durare dalle 2 alle 6 settimane nei quali i nostri sviluppatori si prefissano di realizzare concretamente un certo numero di user stories. Ogni sprint comincerà con una pianificazione iniziale nella quale decideremo appunto tutte le funzioni che implementeremo stimando i relativi tempi di sviluppo. Utilizzeremo quindi l’approccio del Test Driven Development: dopo aver completato la stesura di una porzione di codice, la testeremo e la riscriveremo finché non risulterà funzionante; in seguito penseremo a perfezionarla. Vogliamo darti la sicurezza che il prodotto funzionerà perfettamente in ogni suo componente.

Al termine di questi lassi temporali ti rilasceremo una parte di app funzionante, cosicché potrai capire passo dopo passo l’avanzamento del tuo prodotto, e in caso comunicarci le modifiche che vuoi apportare (che saranno inserite nel prossimo sprint).

Rilascio definitivo

Una volta terminato l’ultimo sprint, fatto l’ultimo test previsto dalla nostra tabella di marcia, e appurato che le funzionalità sono proprio quelle che avevi richiesto inizialmente, siamo quasi pronti a consegnare il prodotto finito: a questo punto, mancheranno solo gli ultimi fix grafici per migliorare l’usabilità e gli ultimi test sulla sicurezza globale del sistema. Dopodiché saremo pronti a rilasciare la versione definitiva dell’applicazione.

Ma non è finita qui.

Aggiornamenti e manutenzione

Il mercato del software è anche quello del servizio post vendita per eccellenza. Infatti, una volta rilasciata l’app definitiva, saranno molteplici i motivi per i quali probabilmente dovremo intervenire ancora sul prodotto, per renderlo sempre migliore:

  • Correzione di errori che non avevamo rilevato dai test e che solo grazie al tuo uso del programma è stato possibile individuare.
  • Migrazione da un web framework ad un altro.
  • Aggiornamento del web framework in utilizzo (quindi relative modifiche al codice per adattarci alle nuove logiche del framework).
  • Aggiornamento atto all’integrazione di nuove funzionalità.

In tutti questi casi dovremo ripetere i test prima del rilascio, sia per capire se le nuove modifiche funzionano appropriatamente, sia per vedere se vanno ad intaccare le funzionalità esistenti.

Ecco, in sostanza, in cosa consiste il mondo che sta dietro lo sviluppo di alcune delle “cose” che ci accompagnano sempre più spesso, e che ormai diamo per scontate. E’ un mondo estremamente logico, pieno di enigmi da risolvere, stimolante ma al tempo stesso frenetico e arduo. Solo chi ci mette passione riesce ad arrivare al successo, e noi a DevInterface ce la mettiamo tutta.

Se questo articolo ti è stato utile sei libero di condividerlo sui social e di seguirci su Facebook e Twitter.

Se, invece, vuoi sviluppare un’app con noi contattaci qui o sui social.