Nuove frontiere dello sviluppo software: Low-Code e No-Code

Sebbene i due termini vengano spesso impropriamente impiegati in via alternativa e le piattaforme di sviluppo vengano accorpate, indistintamente, sotto il novero della medesima categoria denominata “HpaPaaS” (High Productivity Application Platform as a Service), esistono significative differenze. Vediamo quali sono. [...]
Flavia Maltoni

Data Protection Consultant

Roberto Carioli

System Architect

  1. Home
  2. Intelligenza Artificiale
  3. Nuove frontiere dello sviluppo software: Low-Code e No-Code

L’esigenza di rispondere alla costante evoluzione di richieste da parte dei clienti, l’obiettivo di rendersi il più possibile competitivi sul mercato e l’accelerazione dei percorsi di Digital Transformation, stanno spingendo, di recente, sempre più aziende alla riorganizzazione dei propri processi. Tale riorganizzazione passa anche mediante un intervento sui software impiegati per governare tali processi, in particolar modo, tramite l’acquisto di soluzioni software standard o tramite lo sviluppo di applicativi ad hoc. La “pressione” sulla produzione di codici sorgente[1] si riflette sui processi di sviluppo software, che richiedono il coinvolgimento di un numero sempre maggiore di sviluppatori e soggetti in grado di scrivere codici ed una attività di sviluppo sempre più intensiva. Le piattaforme e le metodologie di sviluppo Low-Code e No-Code nascono proprio allo scopo di soddisfare le nuove esigenze sorte nell’ambito dello sviluppo software.

Principali differenze tra Low-Code e No-Code

Sebbene i termini “Low-Code” e “No-Code” vengano spesso impropriamente impiegati in via alternativa e le piattaforme di sviluppo vengano accorpate, tutte indistintamente, sotto il novero della medesima categoria denominata “HpaPaaS” (High Productivity Application Platform as a Service), lo sviluppo Low-Code e quello No-Code, come meglio descritto nel prosieguo, si differenzia profondamente, anche con riguardo al profilo metodologico.

Il metodo di sviluppo Low-Code, realizzato tramite l’impiego di specifiche piattaforme, ha come obiettivo quello di efficientare il lavoro dello sviluppatore, che comunque deve essere a conoscenza dei principi propri dello sviluppo software, mettendo a disposizione strumenti visuali, automazioni ed astrazioni che fungono da catalizzatori durante tutte le fasi del ciclo di vita del software e consentendo, quindi, una maggiore efficienza rispetto all’uso di metodi di scrittura testuali.

Le piattaforme di questo tipo forniscono allo sviluppatore strumenti capaci di generare automaticamente il codice sorgente dell’applicazione a partire da diagrammi di flusso, interfacce utente e data model che possono essere configurati visivamente con interfaccia “drag and drop”[2], senza la necessità di inserire un codice testuale. È piuttosto comune, inoltre, che il codice creato con tali sistemi sia già nativamente progettato per essere automaticamente scalabile e, altresì, che vengano messe a disposizione API aperte e integrazioni native anche verso strumenti di AI e machine learning e verso pipeline di CI/CD per la messa in test e produzione degli applicativi sviluppati.

Al developer è concessa, inoltre, la possibilità di inserire parti di codice scritto a mano per fronteggiare scenari di business non nativamente risolti dai tool della piattaforma, consentendo, quindi, la realizzazione di App anche molto complesse e una gestione end-to-end del ciclo di sviluppo.

Appare chiaro come l’uso di questi strumenti all’interno di metodologie di gestione del ciclo di vita dei software consenta di accelerare e automatizzare i processi aziendali. Si pensi, per esempio, a uno scenario di sviluppo agile in cui la business logic, il data model, le business rule e l’interfaccia utente possano essere sviluppati con strumenti visuali. Ciò consente, sostanzialmente, di mantenere attiva la partecipazione degli stakeholder e degli analisti della parte business nel processo di sviluppo e permette, parallelamente, di avere cicli di feedback più rapidi, coinvolgendo nelle attività stesse junior developer o persino professionisti diversi dai developer, quali power user e analisti.

La possibilità di introdurre codice custom consente, inoltre, di affrontare e risolvere quelle sfide che il tool Low-Code non gestisce nativamente. Nel processo che stiamo immaginando il codice viene, quindi, inserito in pipeline di validazione e deployment automatizzato, riducendo drasticamente il time to market dell’applicazione.

Accelerazione dei processi di sviluppo front-end

Altro elemento da considerare vantaggioso in relazione a tali tipologie di piattaforma è l’accelerazione dei processi di sviluppo di front-end, che, a sua volta, consente la produzione di applicazioni già idonee all’utilizzo mediante device mobili e desktop.

Se le piattaforme Low-Code rispondono all’esigenza di ottimizzare l’uso delle risorse di sviluppo, le piattaforme No-Code rispondono invece a un diverso scopo, ovvero quello di rendere accessibile a chiunque l’attività di sviluppo software, pur in assenza di specifiche competenze di settore.

Si pensi all’analista che opera nella “business intelligence”. La maggior parte della sua attività di trasformazione di dati grezzi in informazioni utili per il business avviene tramite strumenti completamente visuali. Un altro esempio può essere quello della registrazione e dell’uso di macro registrate all’interno degli strumenti di produttività individuale come la suite Microsoft Office.

Le piattaforme No-Code hanno come obiettivo quello di riempire lo spazio tra la richiesta dell’utente business di ottimizzare un processo e la risposta dell’IT interno, mettendo a disposizione strumenti completamente visuali e senza possibilità di creazione di codice per prototipare e rilasciare tool che accelerino i processi di trasformazione digitale in essere.

Pur mantenendo molte delle caratteristiche del Low-Code (facilità d’uso, orientamento verso l’integrazione di strumenti e basi di dati esistenti, tensione verso l’uso di strumenti di AI e Machine learning), le piattaforme No-Code sono tipicamente orientate ai power user e alla prototipazione e rilascio di applicazioni in modalità self-service e hanno come obiettivo primario la semplicità d’uso, non richiedendo specifiche competenze di sviluppo. Le piattaforme No-Code, tuttavia, sono solitamente utilizzate per la creazione di app semplici e poco adatte a una completa gestione dello sviluppo end-to-end, con la conseguenza che, di fatto, il loro utilizzo può essere destinato alla sola ottimizzazione dei processi interni all’azienda.

Rapporti con A.I. e Machine learning

WHITEPAPER
Intelligenza Artificiale nel Marketing: quello che i CMO devono sapere
CRM
Intelligenza Artificiale

Le caratteristiche, positive e negative, di entrambe le tipologie di piattaforma le rendono naturalmente molto appetibili come acceleratori per l’adozione, da parte delle imprese, di strumenti di AI e Machine learning. Tale correlazione è ancora più forte con riguardo alle piattaforme No-Code, le quali da un lato necessitano di poter interagire con endpoint sufficientemente flessibili per ovviare ai limiti strutturali della personalizzazione dei processi e dall’altro, mettendo a disposizione strumenti di sviluppo rapido, consentono una democratizzazione dell’accesso agli strumenti di AI.

Così come accade nel mondo dello sviluppo software, anche nel mondo della “data science” la richiesta di talenti supera di gran lunga l’offerta di risorse da parte del mercato. Per tale ragione, molte aziende stanno sfruttando la possibilità di avvalersi di lavoratori, quali i citizen data scientist, che abitualmente si occupano di attività diverse da quelle della modellazione statistica prescrittiva o predittiva, ma che, grazie all’uso di strumenti sufficientemente semplici, possono rispondere alle esigenze delle imprese di avere a disposizione analisi di dati tramite modelli di Machine learning.

Low-Code e No-Code

Vantaggi e svantaggi dello sviluppo Low-Code e No-Code

Le piattaforme in oggetto presentano, entrambe, vantaggi per le aziende che le adottano: entrambi gli strumenti utilizzano la leva tecnologica per ridurre il tempo necessario per la messa a disposizione di un’applicazione, accelerando il processo di sviluppo e avvicinando gli esperti di business agli sviluppatori. La forte integrazione delle piattaforme nell’intera gestione del ciclo di vita del software consente di ridurre i “tempi morti” tra i processi di sviluppo, testing e rilascio, grazie all’erogazione di ambienti di prototipazione visuali, di semplice utilizzo e verifica da parte del business e alla fornitura di endpoint ai quali collegare le pipeline di CI/CD; alcune piattaforme consentono già autonomamente la gestione dei rilasci e il relativo deployment.

Tali strumenti riducono, inoltre, lo sforzo necessario alle aziende per adattarsi alla costante evoluzione del contesto in cui operano, fornendo soluzioni già preconfezionate a quelli che possono essere gli scenari più comuni, quali, ad esempio, la possibilità di usare la app con strumenti mobile, il controllo degli accessi, delle autorizzazioni e delle identità, l’integrazione con soluzioni di AI e Machine learning e la gestione dei processi di rilascio e patching.

Lo svantaggio principale di queste piattaforme è legato al possibile lock-in tecnologico che potrebbe verificarsi. Se pensiamo, ad esempio, ad uno sviluppo di un’app in modalità low-code su di HPaPaaS, molte parti del codice generato faranno leva sulle caratteristiche di quella piattaforma, facilitando l’uso di altri strumenti all’interno dello stesso ecosistema e rendendo più difficile l’integrazione verso strumenti di terza parte. Nel caso poi di migrazione verso un altro ambiente Low-Code o No-Code, risulterà difficile riciclare completamente o anche in parte il lavoro svolto, obbligando a sostanziali riscritture dell’intero software. Si pensi, ad esempio, a uno sviluppo su PowerApps di Microsoft. Tale progetto sarà più facile andando a sfruttare componenti dell’ecosistema Microsoft Azure e, di contro, un eventuale porting su altre piattaforme non sarebbe un solo porting di codice ma dell’intera piattaforma su cui viene gestito il ciclo di vita del software, rilasci e patching inclusi. Uno scenario di migrazione è quindi disincentivato dalla vastità delle attività a corollario necessarie per mantenere lo stesso livello di funzionalità.

Nel caso dei modelli di sviluppo No-Code e dei modelli Low-Code, il fatto che non siano richieste competenze specifiche sulle tecniche e tecnologie di creazione e progettazione del codice rappresenta un’arma a doppio taglio.

I rischi legati all’adozione di modelli Low-Code e No-Code

Il software prodotto, infatti, deve essere all’altezza degli standard richiesti dall’azienda sia dal punto di vista delle performance, che della sicurezza. Per quei business che operano in settori o su dati fortemente regolamentati (ad esempio su dati sanitari) anche la compliance rispetto alle leggi e normative vigenti nonché ai vincoli contrattuali è un elemento di particolare interesse.

Prima dell’adozione di questi modelli, le società devono quindi calcolare i rischi legati alla minaccia della produzione di software non conforme e instradare processi di mitigazione, ad esempio tramite revisioni più frequenti e severe degli applicativi sviluppati e tramite configurazione e gestione della piattaforma tali da consentire la conoscenza, la classificazione e la limitazione dei processi di sviluppo esistenti, finalizzata a evitare il rilascio di app rischiose.

Un altro rischio legato a tali piattaforme è quello di una perdita di manutenibilità delle soluzioni sviluppate. Sebbene le buone prassi dei processi di sviluppo indichino che il codice prodotto sia adeguatamente commentato e documentato e conservato in repositori nella disponibilità dell’organizzazione, non è detto che queste buone prassi vengano applicate da parte dei citizen developer.

Qualora, infatti, si abbia un accesso non strutturato alle piattaforme di sviluppo e la creazione di applicazioni da parte di utenti che non siano stati sufficientemente formati sui principi di sviluppo sicuro, le aziende potrebbero non esser consapevoli di quali e quante siano le app sviluppate, di chi ne abbia la proprietà e la conoscenza, di quali siano i dati trattati; si rischia, quindi, di non saper come intervenire nella gestione del ciclo di vita qualora si manifestino variazioni di normativa o leggi o più semplicemente per assegnare la responsabilità sulla manutenzione di un’applicazione in caso di variazioni dell’organizzazione interna aziendale.

Low-Code e No-Code

Alcuni esempi di impiego di piattaforme Low-Code e No-Code

Il mercato delle piattaforme Low-Code e No-Code presenta, già oggi, un ambito di soluzioni ampio e variegato che fanno capo ai giganti del mondo cloud (Microsoft e Salesforce), ai produttori specializzati di queste soluzioni (Outsystems e Mendix) ed ai produttori delle piattaforme di gestione del workflow (ServiceNow).

Si ricorda che Microsoft ha presentato, durante l’evento di Ignite di settembre 2020, i risultati ottenuti dal center of excellence di Toyota Motor North America, che ha, al momento, rilasciato circa 400 App a uso interno, tutte sviluppate su piattaforme Low-Code dell’ecosistema Power Platform. Una di queste, utilizzata per la verifica degli allestimenti dei veicoli prima del loro rilascio, integra i Microsoft Azure Cognitive Services e il Machine learning di Azure per valutare, tramite foto scattate da smartphone, che le caratteristiche del prodotto siano conformi a quanto ordinato. La città di Dubai, per rimanere compliant rispetto all’obbligo di rendere tutti i propri processi paperless entro il 2021, ha completamente digitalizzato, in circa tre mesi, 250 servizi prima analogici, integrando processi anche di firma elettronica, appoggiandosi sulla piattaforma Mendix.

Anche nell’ambito No-Code si sono manifestati casi di successo, spesso legate a start-up che erogano servizi specifici: dai servizi formativi di BloomTech, alle App di educazione finanziaria come Qoin.

Low-Code e No-Code

Conclusioni

Le piattaforme di sviluppo Low-Code e No-Code rappresentano, certamente, una rilevante opportunità per le aziende, consentendo la riduzione di tempi e costi per lo sviluppo sia di soluzioni strutturate rivolte al mercato, sia di applicativi finalizzati alla trasformazione digitale dei processi interni aziendali. Non è un caso che molti colossi del tech, ivi inclusa Microsoft, abbiano investito ingenti quantità di denaro allo scopo di primeggiare nell’ambito del business in oggetto.

Si è visto, però, che l’impiego queste metodologie può anche generare delle criticità che richiedono d’essere mitigate con un’opportuna conoscenza, configurazione e controllo delle piattaforme. È perciò opportuno che le imprese valutino attentamente i rischi connessi all’uso di strumenti in considerazione della propria maturità tecnologica e consapevolezza dei processi e decidano in quali specifici scenari possa essere vantaggioso utilizzarli, al fine di meglio implementare la trasformazione digitale in maniera controllata e consapevole.

 

 

Note

  1. Per codice sorgente si intende il testo di un algoritmo di un programma scritto in un determinato linguaggio di programmazione da parte di un programmatore in fase di programmazione, compreso all’interno di un file sorgente, che definisce il flusso di esecuzione del programma stesso, ovvero la sua codifica software.Il codice sorgente, scritto in un linguaggio di programmazione leggibile dagli esseri umani, fornisce indicazioni ai computer affinché questi possano tradurle in linguaggio macchina, costituendo così la base di siti web e programmi.
  2. Drag and drop  indica una successione di tre azioni, consistenti nel cliccare su un oggetto virtuale (quale una finestra o un’icona) per trascinarlo in un’altra posizione, dove viene rilasciato.
WHITEPAPER
Canale ICT: 5 misure di successo automatizzare il business
Sicurezza
Software

 

FacebookTwitterLinkedIn