Il futuro delle soluzioni enterprise con i nuovi scenari di low-coding e i framework di ultima generazione

E’ risaputo come in informatica, ed in particolare nell’ambito dello sviluppo software, vi sia la tendenza a rincorrere le mode del momento, all’interno di una giungla infinita di soluzioni tecnologiche, linguaggi e framework di sviluppo, in continua e rapida evoluzione, con gli addetti ai lavori in balia di questo scenario. Naturalmente tutto questo è in realtà la conseguenza naturale di un contesto molto positivo costituito da un mercato libero ed estremamente vivace che è in grado di produrre e proporre continuamente nuove proposte ed evolvere le tecnologie esistenti. Ed è proprio in questo contesto che vogliamo analizzare un nuovo trend tecnologico che promette di fare la differenza nei progetti di sviluppo software, anche in ambito di soluzioni enterprise. Un trend cha ha una natura tecnologica ed al contempo metodologica, fuse insieme in un’unica anima, capace di fare incontrare le esigenze dei team di sviluppo con quelle di tutti gli stackeholder: lo sviluppo rapido, agile e multi-piattaforma. Questo trend si chiama low-coding, e lo possiamo vedere come la naturale risposta alla richiesta sempre più forte del mercato nella direzione di progetti software caratterizzati da approccio agile sempre più spinto, gestione flessibile rispetto a continui cambi di requisito, applicazione di metodologie di sviluppo rapido, e fruibilità trasversale dei sistemi da device e piattaforme eterogenee.

Analizziamo il contesto

Quando nasce un nuovo progetto, a margine dell’attività di studio e analisi del business e dei processi che il sistema dovrà gestire, si apre un cantiere parallelo che è quello della definizione delle tecnologie e metodologie di sviluppo che dovranno essere adottate. 

Questo cantiere parallelo non è meno importante di quello principale legato al business, anche se per natura viene trattato su un altro piano progettuale, in primis perché rispetto al business queste scelte potranno avere degli impatti, legati alle performance, oppure legati ad eventuali limitazioni tecnologiche, oppure legati alle capacità del sistema di crescere ed estendersi per funzionalità ed interazione con altri sistemi, ma in secondo luogo perché queste scelte guideranno inevitabilmente gli aspetti progettuali, in quanto ogni tecnologia ha in qualche modo un legame anche con le metodologie che meglio si sposano e che spesso le hanno direttamente ispirate. In passato questa scelta era prevalentemente dettata da considerazioni di compatibilità ed integrabilità con i sistemi pre-esistenti del cliente e dell’ecosistema complessivo in cui la soluzione doveva essere collocata, con particolare attenzione ai sistemi con i quali fosse richiesta un’integrazione forte. 

Ma oggi, con l’evoluzione e maturità tecnologica che praticamente ogni framework di sviluppo disponibile sul mercato incorpora, insieme all’evoluzione stessa dei protocolli di comunicazione e scambio di dati tra sistemi, arrivati ad essere completamente indipendenti ed astratti rispetto agli attori della comunicazione, è davvero così rilevante l’ecosistema pre-esistente rispetto a tali scelte tecnico-progettuali? Naturalmente la risposta è no, infatti oggi un altro aspetto ha preso il posto di queste considerazioni, ed è la rispondenza delle tecnologie a requisiti metodologici, e la capacità di queste di flettersi rispetto alle richieste di sviluppo rapido (sempre più rapido) con metodologia agile. In questo panorama ciò che conta è il poter garantire al cliente tempi di risposta praticamente immediati ad ogni nuovo o mutato requisito del business, ed una capacità adattativa del sistema a volte estrema. In questo contesto le tecnologie tradizionali possono a volte incontrare dei limiti, legati alla loro stessa natura, ed è per questo che si sono sviluppate imposte e diffuse diversi framework e tool di nuova generazione completamente o profondamente incentrati sull’approccio low-code.

Entriamo un po’ più nel merito e nel dettaglio

Cosa intendiamo per low-code? Come spesso accade nel nostro settore, il low-code non è un software specifico, neanche un linguaggio specifico, e tantomeno uno specifico tool. Il low-code è piuttosto un paradigma di sviluppo, che contempla una serie di modelli tecnologici e metodologici volti a rispondere a specifiche caratteristiche.

Dal punto di vista tecnologico

  • L’astrazione delle tecnologie sottostanti al framework Le effettive tecnologie utilizzate dal sistema devono essere trasparenti per progettisti e sviluppatori
  • L’estendibilità del sistema Il sistema deve poter interagire con altre fonti e sistemi, e deve essere possibile estendere le funzionalità dall’interno o dall’esterno
  • La modularità delle componenti Le varie funzionalità devono poter essere attivate o meno in base alle esigenze
  • L’astrazione rispetto all’infrastruttura Garantendo dunque compatibilità nativa con soluzioni cloud ed on-premise Dal punto di vista dello sviluppo:
  • Modalità di sviluppo prevalentemente visuale Il design applicativo deve essere prototipabile tramite tool visuali, che permettano di ottenere risultati il più possibile corrispondenti tra la fase di progettazione e quella di live. Lo sviluppo visuale non dovrebbe essere limitato alle interfacce, ma anche alla definizione di business rule e altre interazioni che governano la logica applicativa
  • Astrazione del design e delle interfacce rispetto alle modalità di fruizione Il progettista deve poter disegnare un’unica interfaccia, che gestisca in modo intrinseco le tecniche di adattamento rispetto ai device e agli screen da cui sarà effettivamente fruita
  • Progettazione del sistema correlata ai processi Nei casi dove il sistema è prevalentemente governato da processi ben definiti, deve essere disponibile una modalità di progettazione sempre di tipo visuale, direttamente correlata ai processi, anch’essi definibili e progettabili con tool visuali.
  • Riduzione al minimo della necessità di ricorrere al codice Il ricorso al codice non è precluso ma dovrebbe essere quanto più possibile circoscritto, in quanto i tool di low-coding dovrebbero incorporare quanti più scenari di integrazione e interazione possibile tra le componenti, attraverso un approccio visuale.

Dal punto di vista metodologico e progettuale

  • Garantire l’adozione di metodologie agile La continua interazione tra i team, cliente e stakeholder, la verifica continua degli avanzamenti e la dinamicità con cui le nuove funzionalità devono poter essere introdotte o meno negli avanzamenti di versione, devono essere agevolate dai tool e dagli strumenti di low-coding
  • Agevolare la continuous integration (CI) e la continuous delivery (CD) Il sistema complessivo deve permettere il rilascio continuo delle nuove funzionalità garantendo consistenza tra gli ambienti e governando in modo nativo il versionamento
  • Agevolare lo sviluppo rapido del software Si tratti di nuove soluzioni, o ci si trovi nella fase successiva di change management, il low-coding deve essere elemento cardine nel poter garantire tempi di sviluppo e delivery particolarmente rapidi, e quindi armonici con le esigenze di un business sempre più dinamico Deve essere chiaro però che questi sono alcuni tra i principi fondamentali alla base del low-coding, ma il low-coding può essere recepito ed applicato a diversi livelli, partendo dall’adozione del singolo principio per ottimizzare una parte specifica del processo (ad esempio per la sola parte di progettazione delle interfacce) fino ad un’adozione spinta di tutti i principi (arrivando ad esempio ad un sistema proprietario che prevede solo configurazioni e progettazioni grafiche per la realizzazione dell’intera soluzione).

Gli scenari in cui il low-coding può davvero fare la differenza sono molteplici, considerando che i principi di cui abbiamo parlato, e che sono alla base dell’affermazione stessa di questi strumenti e pratiche, sono diffusi in modo capillare nell’anima stessa del business che guida la buona parte dei progetti per nuovi sviluppi software. I principali vantaggi sono infatti intrinsechi nei principi del low-coding stesso. A partire dalla promessa di ottenere tempi rapidi di sviluppo, che si traduce nel poter avviare rapidamente un nuovo business, immediatamente supportato dalla componente tecnologica, così come garantire una continuità ed una risposta reattiva e continua alle evoluzioni del business sui progetti già in essere. Un altro vantaggio importante, quando il low-coding viene portato al suo estremo, è quello legato all’ottimizzazione del team di progetto, dove diventa più semplice far convergere le figure di analista e progettista, ottimizzando la comunicazione e la reciprocità con il team di sviluppo, e dove possibile riducendo al minimo la necessità di sviluppo di codice che disti pesantemente dagli standard del low-coding. Infine riveste un ruolo cardine la perfetta armonia esistente tra un approccio low-code e la metodologia agile, in tutte le sue declinazioni, permettendo anche al progetto più complesso ed ambizioso di poter essere gestito in modo progressivo mantenendo alta l’interazione team-cliente.

Certamente è indubbio che l’interesse per l’argomento da parte di tutti i player è molto forte, esistono molteplici casi di successo che permettono un’analisi del reale impatto e risultato prodotto da questo approccio, e l’offerta di tecnologie e tool di low-coding da cui attingere crescono di continuo, offrendo la possibilità di una scelta consapevole del migliore stack tecnologico in base ai requisiti del progetto. Questo non significa che il low-code sia necessariamente la risposta ad ogni esigenza progettuale, ma certamente va mantenuto in seria considerazione ed è necessaria una conoscenza profonda anche di tutte le alternative low-code quando si procede a definire una rosa di stack tecnologici candidati per lo start di un nuovo progetto software. Possibili limitazioni che possono governare scelte diverse possono essere legate a vincoli di policy imposti dal cliente, la valutazione di alcuni vincoli tecnologici o legati alle interfacce utente. Inoltre per chi sviluppa un contro potrebbe essere rappresentato dalla perdita di governo del codice o delle configurazioni di più basso livello, potendo portare ad un minor controllo in caso di issue da approfondire, ed una maggiore dipendenza rispetto a tool e framework utilizzati. Da questo punto di vista però, come già accennato, essendo il low-coding un archetipo, che può declinarsi in diverse forme tecnologiche e che può realizzarsi attraverso l’adozione di stack complessivi anche molto diversi tra loro, con l’adozione di tool dedicati o meno, con l’adozione di strumenti verticali di settore o meno, e con livelli di applicazione più o meno estrema dei suoi principi, in realtà una soluzione di low-coding tailor-made per il cliente e per lo specifico progetto è sempre alle porte, in grado di rispondere alle moderne esigenze progettuali e del business.

Ma in uno scenario così complesso e articolato è davvero facile soccombere invece che trarne un vantaggio. Un System Integrator come Lutech svolge un ruolo chiave in questo contesto, grazie alle competenze ed esperienze trasversali, che ci permettono di individuare e proporre con lungimiranza la giusta soluzione tecnologico-applicativa, basata sulle reali esigenze del cliente. Solo una conoscenza profonda di tutte le tecnologie disponibili ed una capacità di comprensione delle reali esigenze del cliente, insieme ad una capacità di visione complessiva delle soluzioni nel contesto globale del cliente, possono insieme garantire un approccio vincente fin dalle prime scelte progettuali per qualsiasi progetto di Digital Evolution.

Francesco Antonelli