Sviluppo di gestionali

Revisione 0.6

Lo sviluppo di gestionali personali e non legati a mainframe, nasce negli anni ’80 e ci riportano al CobolBasic e, poi, dBase.

Alla fine degli anni ottanta,  dBase e Clipper primeggiarono soprattutto in relazione all’enorme e meritato successo del sistema operativo Microsoft DOS ed alle tabelle DBF con l’eccellente meccanismo di indicizzazione.

All’inizio degli anni novanta ci fu l’enorme rivoluzione visuale sostanzialmente introdotta da Microsoft.

Microsoft e Borland forse furono i due veri e grandi giganti nell’innovazione visuale per lo sviluppo di software gestionale: finalmente chi si prendeva questi pesanti oneri aveva un debugger amichevole, dei widgets decorosi e la possibilità di avere una formidabile vista personale  d’insieme. I due prodotti che segnarono i tempi furono Microsft Visual Studio e Borland Delphi.

Ogni altro approccio, dagli oggetti all’ultima moda HTML5, crea enormi problemi per sviluppare gestionali legati al non rapido sviluppo, alla dispersione delle sorgenti, alla molto più difficile lettura, ai metodi di  debug complicati, alla difficoltà di personalizzare parti senza perdere il controllo dell’insieme.

Ancora oggi, a livello nazionale, la gran parte dei programmi di contabilità è prodotta con strumenti Microsoft Visual Studio, in particolare Visual Basic e Visual Fox Pro. Alcune aziende riescono a creare gestionali formidabili con l’erede del Borland Pascal ovvero  Delphi appartenente alla suite Embarcadero RAD Studio.

 

Con il nuovo millennio lo sviluppo in Java ha preso sempre più spazio, ma per grandi realtà, con collocazioni in diverse località e capaci ad investimenti economici di rilievo. Java è alla base delle produzioni di aziende quali IBM ed Oracle. Gli applicativi si caratterizzano per l’interfaccia utente piuttosto rigida e l’utilizzo in prevalenza del RDBMS Oracle.    Lo sviluppo comunque non è in generale personale e coinvolge un gruppo di lavoro che impone delle pratiche burocratiche talvolta onerose.

Lo sviluppo ad oggetti è obbligatorio per una libreria destinata ad ampia diffusione, ma non per lo sviluppo di gestionali che meglio beneficia del formidabile approccio visuale.

La tecnologia web è evoluta in modo formidabile, da essere alla base anche della generazione attuale delle app mobile, ma soffre, nell’ambito dei gestionali, delle forti restrizioni imposte dal browser web.

Il futuro dei gestionali si baserà molto su app mobile, ma le scelte attuali, alla base degli SDK più diffusi per app mobile, permettono solo utilizzi marginali.

Le app mobile comunque sono attualmente sbilanciate tra sviluppo C++, Java ed HTML5, un cocktail semplicemente sfavorevole allo sviluppo di gestionali.

Si consideri la possibilità di sviluppare in Java per Android. Il solo SDK  Java occupa oltre i 70 GB di spazio disco, la realizzazione di una app con qualche bottone a volte offre la percezione analoga al varo del Titanic. Situazione ben distante da poter sviluppare una gestione minimale che in genere facilmente coinvolge un centinaio di tabelle ed altrettante pagine con innumerevoli widgets di base e, soprattutto, la diretta interazione con il personale aziendale che considera solo i problemi legati alla loro attività e non all’informatica.

Mescolare script con sintassi e semantiche diverse, spingendosi fino a toccare l’impossibilità di eseguire il debug,  è necessario per fare  funzionare i browser web, che condensano un formidabile miscuglio di interpreti a volte forse neppure compatibili.

Per creare gestionali, soprattutto su misura, servono:

  •  un ambiente semplice, con fortissima integrazione verso le tabelle sia locali che remote
  • un approccio decisamente Visuale integrato ad
  • un debugger ben oliato
  • con una libreria di widget adeguata, per esempio con widget grid evoluto
  • utilizzare un’ unica sintassi ed un’ unica semantica, escludendo banali eccezioni quali utilizzare l’utilizzo di SQL
  • seguire uno stile di scrittura delle sorgenti quasi esclusivamente rivolto alla comprensione umana, meglio scrivere cento righe intellegibili umanamente che una riga Perl one-liners
  • scrivere una procedura in una procedura e non disseminata in diversi file
  • evitare trucchi ed espedienti, discendenti dei memorabili peek&poke, che poi portano a vere e proprie trappole, meglio scrivere codice vanilla
  • il codice sorgente deve contenere commenti certosini, ma intellegibili,  da permettere di riprenderne la lettura senza esitazioni anche in tempi, modalità e situazioni diverse: contano la comprensione umana, il poter concentrarsi sul mondo reale e non su contorsioni di programmazione
  • i commenti devono seguire sempre lo stesso stile
  • deve esistere un file documento unico di riferimento al programma

Un raro modello di ambiente ottimale per lo sviluppo di gestionali da citare è Lazarus con freePascal, veramente ha tutto di quanto è stato succintamente elencato. Inoltre è opensource. Ma non ha consenso tra i programmatori e, forse, non ha raggiunto livelli di maturità tali da permettere lo sviluppo di applicazioni in ambito critico. Delphi, la versione commerciale, è senza ombra di dubbio forse il miglior strumento per lo sviluppo di gestionali, ma non ha propulsione. Anche in questo contesto valgono gli usuali elementi di propaganda.

Forse diventa ancora più ardito provare a sviluppare tale semplice gestione in Objective-C ed HTML5, scelte caratteristiche di Apple.

Lo sviluppo di gestionali in C++ in genere si sbilancia pesantemente verso gli oggetti,  affondando l’approccio visuale. Situazione che porta a perdere il controllo del codice sorgente sganciandolo dalle problematiche legate all’utilizzo concreto.

SAP, Systeme, Anwendungen, Produkte in der Datenverarbeitung, è forse il più mirabile esempio di  sviluppo in C++. Valgono le considerazioni fatte per lo sviluppo in Java, ma aggiungendo che comunque le asprezze sono smorzate dall’attingere ampiamente in materiali e metodi  Microsoft Visual Studio.

Qt forse apre uno spiraglio promettente, ma l’evoluzione è molto lenta: il debugger funziona ed è pratico; l’integrazione in un sistema operativo Ubuntu Linux con Ubuntu SDK è ancora fragile per lo sviluppo di gestionali; le librerie talvolta assorbono l’intera attenzione compromettendo quella visione d’insieme che garantisce il felice connubio tra codice prodotto e questioni concrete ben risolte. Il programmatore deve poter essere quasi completamente assorbito dall’astrazione dei problemi concreti e non da quelli dell’ambiente di sviluppo.

QML forse sarà lo strumento che permetterà di realizzare gestionali nella veste di app mobile.

La realizzazione di gestionali è strettamente legata ad un RDBMS, in particolare i due più diffusi sono Oracle e Microsoft SQL. In ambito web primeggia Mysql.

Postgresql è il riferimento assoluto in ambito Open Source per applicazioni enterprise.