Tutti noi utilizziamo quotidianamente i software web SaaS (software as a Service) in cloud che forniscono una vasta gamma di servizi accessibili a chiunque in ogni momento: si pensi a Netflix, Amazon, alle E-mail, Google Docs ecc. Essi hanno delle infrastrutture software ed hardware molto vaste e complicate che diamo assolutamente per scontato; la maggior parte degli utenti non ha idea di come nasce una piattaforma software.

Eppure, conoscere le nozioni base della creazione di un applicativo web può essere utile quando si ha a che fare con le nuove tecnologie o si commissiona un software magari per una startup.

In questo articolo parliamo, a grandi linee, di come si progetta un software aziendale oggi, considerando le nuove tendenze web, la diffusione di moderne tecnologie, di nuove architetture ecc., sempre più particolari e aperte a un mercato che cambia velocemente.
COME SI PROGETTA

Progettare un software è un’attività complessa, soprattutto perché richiede conoscenze tecniche approfondite in varie discipline. Il termine progettare non è stato scelto a caso: la realizzazione di un software parte proprio come la progettazione di un’abitazione. E’ esattamente lo stesso principio ma molti ne ignorano le analogie: una casa si costruisce partendo dai requisiti richiesti dal cliente e dal progetto sviluppato poi dall’ingegnere riguardante la struttura, gli impianti ecc.

Lo stesso accade con il software: l’ingegnere del software colloquia con il cliente e gli stakeholders coinvolti per stilare un documento dei requisiti funzionali, non funzionali e di dominio che il software dovrà avere. Fatto questo, si passa al progetto del software (modellazione del software) tramite i diagrammi in linguaggio UML (un linguaggio di modellazione e di specifiche orientato agli oggetti).

Tramite l’UML si realizzano i modelli come gli use case diagram, i class diagram, i data flow diagram ecc. che esprimono e rendono formale il funzionamento che dovrà avere il software (come il progetto dell’ingegnere nel caso dell’abitazione).

Dopo aver completato il progetto del software, si potrà iniziare a costruire l’applicativo vero e proprio (si inizia il cantiere nel caso delle abitazioni) realizzando dei prototipi funzionanti con i vari team di sviluppo (per lo più programmatori, affiancati da altre varie figure professionali come esperti di DataBase, sistemisti, esperti di UI, esperti di UX ecc.): in questa fase ci sono vari metodi di sviluppo (che non approfondiremo in questo articolo) per gestire gli sviluppi incrementali e fare analizzare dal cliente i prototipi realizzati.

A questo punto viene creata anche la documentazione del software: include la descrizione tecnica e approfondita dell’architettura, del codice che implementa il progetto, degli algoritmi e delle eventuali API; alla fine dello sviluppo viene creata anche la documentazione e il manuale utente.

Ogni funzionalità che viene realizzata è testata e validata: questa fase delicata serve ad accertare che il software rispecchi i requisiti iniziali, al fine di ottenere un software non solo perfettamente funzionante e senza errori, ma che soddisfi in pieno i requisiti del cliente.

Tutti questi passaggi fanno parte di una disciplina chiamata ingegneria del software che si occupa dei processi produttivi e delle metodologie per la realizzazione di applicativi.

MESSA IN PRODUZIONE

Seguono poi altre fasi di testing che coinvolgono le prestazioni, il carico di lavoro e lo stress test per verificare soprattutto se un software è sicuro e riesce a ripristinarsi dopo un errore fatale (fault-tollerant).

Qualsiasi software medio-grande ha bisogno di una infrastruttura hardware per funzionare e andare in produzione, in questo caso di un’infrastruttura di rete, server singolo o vari server distribuiti (per i più grandi progetti) che anch’essa va progettata e realizzata da un sistemista o ingegnere informatico.

Una volta che il prototipo è stato realizzato e testato in tutte le sue specifiche, il software diventa distribuibile in beta: questo significa che viene distribuito su un numero ristretto di utenti in modo che essi possano fare da beta tester appunto. Una volta che il software ha passato la fase di beta testing può essere immesso sul mercato.

Infine si realizzano le strategie di marketing e comunicazione per diffondere l’uso della piattaforma agli utenti.

Ecco cosa si nasconde dietro la progettazione di un software. Non abbiamo approfondito la parte centrale dei metodi di sviluppo perché si tratta di una materia altamente tecnica che richiederebbe una trattazione adeguata; tuttavia, siamo riusciti a farci un’idea di cosa c’é dietro ai servizi che utilizziamo ogni giorno.

Se sei un addetto ai lavori sei d’accordo con gli step scritti fin’ora oppure usi altri metodi? Fammelo sapere nei commenti qui sotto.