Indice articolo

In questa mini-lezione parleremo di software standard e software custom, i loro vantaggi e svantaggi e di una possibile soluzione ai problemi di entrambi, cioè il terzo approccio: il software custom basato su componenti standard.

La cosa bella, che vedremo nell’articolo, è che non solo quest’ultimo risolve o mitiga i downside degli altri due, ma aggiunge anche delle possibilità in più, implicite nella sua architettura, legate all’integrazione.

Software standard

Quando parliamo di software standard parliamo di quei software che vengono costruiti da una software house e vengono distribuiti ed installati uguali per tutti. Pensate ad esempio a microsoft AX, SAP oppure anche gli stessi Google Drive e Gmail. Sono tutti software che sono sviluppati e forniti, così come sono, a chiunque voglia utilizzarli.

Questi software sono creati da un grande gruppo di sviluppatori, soprattutto quando parliamo di gestionali, abbiamo una netta divisione tra gli sviluppatori ed i consulenti (a seconda del tipo di azienda che li sviluppa questa cosa può può essere diversa e può scalare in maniera diversa) 

Gli svantaggi di questi prodotti sono:

  • l’obsolescenza tecnologica dovuta al fatto che l’estrazione di una nuova release costa talmente tanto che molte aziende alla fine non la fanno;
  • una bassissima rispondenza ai requisiti dell’azienda. Sono programmati seguendo uno standard, che non può essere modificato. Pensate ad esempio di chiedere a Google di cambiare Google Drive aggiungendo una funzionalità che loro non vogliono aggiungere, o fare la stessa cosa con i produttori di gestionali standardizzati;
  • l’evoluzione è molto lenta perché gli sviluppatori non hanno nessun vantaggio ad evolvere il software a pezzi, proprio perché devono standardizzato e devono mantenere tutta la parte di documentazione e supporto;

Mentre invece i vantaggi sono:

  • alta disponibilità di documentazione e tanto supporto (essendo standardizzati è più facile documentarli e supportarli);
  • larga adozione nel senso che proprio il loro business basato sul fatto che tanti utilizzino la stessa versione del software;
  • sono riutilizzabili, nel senso che chi li sviluppa li può installare su più clienti e seguendo il release cycle (quindi aggiornando le varie release);
  • sono sempre aggiornati tecnologicamente, possono essere sempre aggiornati tecnologicamente.

Il risultato di queste caratteristiche è un altissimo costo di total cost of ownership oppure una lenta morte

Cosa vuol dire?

Nel grafico nell’immagine qui sotto si vede che la release ha un costo molto alto per l’azienda al momento dell’installazione, per poi spendere pochissimo in manutenzione. Questo succede perché il software non viene quasi mai modificato.

Quando voglio fare una nuova release, invece, devo spendere ancora tantissimi soldi, possibilmente addirittura di più del costo sostenuto all’inizio, ed il ciclo si ripete. Se non faccio nuove release il software standard è destinato a morire lentamente, che è il suo principale problema. 

schema raffigurante un software standard

Software custom

Un’alternativa opposta sono i software custom, che consiste nel pagare degli sviluppatori per fare un software proprio come lo si vuole. Il risultato è che viene sviluppato un primo MVP, una prima feature, a cui poi si aggiungono altre feature, costantemente e ad un prezzo tendenzialmente crescente.

Nell’ambito del software custom non esiste il concetto di release o manutenzione. Una piccola parte ce n’è sempre, ma comunque il costo prevalente riguarda l’aggiunta di feature.

Gli svantaggi di questa opzione sono:

  • i pochi sviluppatori, che causano un lock-in molto grosso con la tecnologia utilizzata. Se viene realizzato un prodotto cutting edge, si tratta comunque della tecnologia più avanzata odierna, che tra cinque anni sarà una tecnologia vecchia di cinque anni. Quindi avremo creato un lock-in sia sulla tecnologia, perché è impossibile modificarla, sia sulle persone, che tendenzialmente sono poche o sono spesso piccole aziende o piccoli gruppi di sviluppo che fanno soltanto il lavoro che gli viene richiesto.
  • l’obsolescenza nascosta, perché sembra che si stia comprando qualcosa di super aggiornato, mentre in realtà diventa subito vecchio 
  • la lenta evoluzione, dovuta all’innalzamento dei costi dopo la prima release, caratteristica tipica dei software custom. 
  • non è riutilizzabile, essendo stato fatto ad hoc per un determinato cliente
  • la documentazione ed il supporto sono sostanzialmente assenti

Vediamone invece i vantaggi:

  • si ottiene un prodotto in tempi molto brevi;
  • i costi, quantomeno inizialmente, sono ridotti;
  • il risultato che si ottiene è fatto su misura per soddisfare le necessità espresse nel momento in cui si acquista il software.
Schema raffigurante un software custom

Adesso vediamo come risolvere i principali problemi legati alle due forme di software che abbiamo appena analizzato.

Software custom con componenti standard

È possibile realizzare software custom con componenti standard! 

Come suggerisce il nome, il processo consiste nell’utilizzare dei componenti standard, anche molto intelligenti, per costruire delle soluzioni custom oppure delle soluzioni standard di livello superiore

Gli svantaggi di questo software sono:

  • rimane il problema della poca documentazione e del poco supporto;
  • l’obsolescenza è un rischio che si corre se non si fanno aggiornamenti. Questi, però, sono molto più semplici da eseguire perché sono legati appunto ai singoli componenti, mentre nel caso del software standard, bisogna attendere la disponibilità di tutta una nuova release.

Mentre i vantaggi legati a questo procedimento sono:

  • il fatto che il software creato è riutilizzabile o riadattabile (poi vediamo anche qualche dettaglio in più);
  • il fatto che è sempre aggiornato, perché il release cycle è legato al singolo componente. Questo significa che non è necessario fare un update di tutta la release, è sufficiente fare un aggiornamento del singolo componente, il che riduce di moltissimo i tempi richiesti;
  • anche in questo caso si arriva ad una prima release molto molto velocemente, spesso più velocemente che nel software custom, perché si tratta semplicemente di assemblare componenti che sono già stati creati;
  •  anche in questo caso si ottiene il perfect fit. Quello che si ottiene è un software custom che risponde alle esigenze espresse, la differenza è che viene creato utilizzando dei componenti standard;
  • un vantaggio importantissimo di questo modello è che, basandosi su componenti, chi l’ha sviluppato è obbligato a fare componenti riutilizzabili. Questo significa che si ottiene, come nel caso di smeup, la capacità di farli funzionare su più software contemporaneamente. Se quindi i componenti in questo caso sono i componenti di front end, e sono fatti per essere ricomposti tra loro e costruire una soluzione custom, va da sé che potranno essere riutilizzati. Sono infatti creati appositamente per essere isolati e riutilizzati anche, per esempio come facciamo in smeup, in applicazioni web che costituiscono soluzioni custom su software terzi, oppure su software nostri.
schema raffigurante un software custom costruito con componenti standard

Total Cost of Ownership

schema comparativo del TCO dei diversi tipi di software

Questo schema fa capire meglio i grafici che abbiamo visto nelle immagini precedenti. 

Il TCO è la somma di tutte le barrette che vedete:

  • Nel software standard abbiamo il problema del black monday che dicevamo prima. 
  • In quello custom tende ad essere basso all’inizio ma poi andando avanti il continuo a pagare non poco per ogni feature. 
  • Nel terzo invece abbiamo una release con delle feature che tendenzialmente costano di meno ed al contempo svolgono tutte le funzioni richieste. Quando, col passare del tempo diventa necessario aggiornare i componenti, il basso costo fa sì che il total cost of ownership sia il più conveniente di tutti.