|
Altre caratteristiche | |
|---|---|---|
|
|
|
|
Come già spiegato nella sezione dedicata alle performance, purtroppo negli ultimi decenni (dagli anni 90) la qualità complessiva del software è andata calando. Tutta una serie di problemi affliggono il software commerciale, fino al punto da risultare poco utile e decisamente poco avanzato. La fretta di immettere sul mercato qualsiasi novità, anche la più insignificante, ha portato ad un software di larga diffusione, ma di scarsissima qualità. Sempre le stesse cose, sempre nello stesso modo. Poca automazione e nessuna reale innovazione significativa.
Il problema del software delle generazioni precedenti (anni 70 ed 80) era la complessità di sviluppo, che portava con sé costi elevati e tempistiche molto lunghe.
Per ottenere un software di buona qualità occorreva dedicare una grande attenzione a tutti i singoli dettagli, con valutazioni approfondite di ogni aspetto. Ovviamente i costi erano troppo elevati, spesso i prezzi per l'utenza finale erano spropositati, da qui la necessità di semplificare i processi produttivi per abbattere i costi finali. Chiaramente la cosa non poteva che andare ad abbattere anche la qualità finale del prodotto. L'attenzione per tutta una serie di aspetti tecnici finì nel dimenticatoio, meglio una singola funzionalità spettacolare che un software veramente utile.
Il software che rispetta numerosi requisiti non è particolarmente spettacolare, e non colpisce affatto l'utente finale. Normalmente viene percepito come ovvio e scontato ma, in realtà, dopo il primo superficiale impatto ci si rende conto della sua autentica utilità e della sua profonda innovazione rispetto al passato.
Il CLnet vuole riportare il timone in direzione del lavoro, e non dello stupore, quindi non si interessa di elementi grafici innovativi o di una profonda cura del Layoutper colpire gli utilizzatori finali. Il CLnet è concentrato sul lavoro che gli utilizzatori dovranno svolgere quotidianamente, normalmente lo stupore iniziale lascia presto il posto alla noia, ed alla routine, ed il CLnet punta proprio a consentire una semplificazione della routine quotidiana, con elementi logici ed intuitivi, non c'è "intrattenimento", c'è solo velocità e semplicità operativa.
L'elemento portante è la rapidità di impiego, ridurre i tempi di lavoro e migliorare la quantità e qualità del lavoro quotidiano. Per ottenere dei buoni risultati qualitativi occorrono, come dicevamo, tutta una serie di attenzioni alle regole, occorre una forte ingegnerizzazione ed una forte strutturazione di base del software. Questo rispetto diffuso delle regole è pervasivo nel CLnet, e porta ad una decisa velocità di sviluppo, ad una forte personalizzazione, ed anche ad un continuo avanzamento delle possibilità tecniche.
La nota dolente, per chi sia interessato, è la primordiale veste grafica, è questo lo scotto da pagare per questa fortissima efficienza operativa. Se le schermate fossero qualcosa in più che scontate e banali, non si riuscirebbero ad usare senza un addestramento decisamente approfondito, e causerebbero difficoltà ai nuovi utenti.
Il coordinamento delle schermate, tutte assolutamente simili tra loro, agevola l'esplorazione del CLnet anche per chi lo vede per la prima volta, i tempi di addestramento ed apprendimento sono totalmente piatti ed, una volta capite le linee guida di fondo, il flusso lavorativo diviene assolutamente spontaneo e continuo.
L'attenzione degli operatori deve risultare totalmente concentrata sul lavoro da svolgere, e non sul capire come si usa il software. Il CLnet si sforza di fornire uno strumento che non faccia perdere tempo autoincensandosi con funzionalità accattivanti o stravaganti ma, al contrario, è invece di fornire uno strumento essenziale, che porti a risultati lavorativi immediati, senza perdite di tempo di fronte allo schermo del computer. Il soggetto principale è sempre il lavoro da svolgere, non il software.
I requisiti tecnici da rispettare durante la progettazione e lo sviluppo di un software di qualità sono molti, e tentare di rispettarli tutti è un'autentica impresa.
Vediamone alcuni con maggiore dettaglio:
L'usabilità è quella caratteristica che rende il software chiaro ed immediatamente fruibile, senza dubbi o perplessità durante il funzionamento. Ogni operazione deve risultare evidente ed ovvia, niente sofismi o schermate eccessivamente complesse, ci si deve poter concentrare sull'attività da svolgere, non sulle difficoltà interpretative del software.
L'usabilità si ottiene rendendo semplici ed immediate le schermate e gli strumenti agevolmente utilizzabili. Il CLnet presenta tutti gli strumenti disponibili accanto ai dati su cui operano, in modo da rendere immediatamente fruibili le funzionalità disponibili, senza confondere l'utente con le funzionalità inutili in quel preciso contesto.
Tutte le attività svolte presentano dei feedback, non ci sono operazioni "misteriose", sono tutte ovvie ed immediatamente comprensibili.
Il CLnet presenta un Aiuto in linea( Help online) molto confortevole e poco invadente, tanto che, se lo si desidera, è possibile lavorare con l' Helpsempre aperto. Anche questa è una particolarità singolare del CLnet, normalmente gli Help, anche quelli contestuali, non lo sono affatto se paragonati a quelli del CLnet, gli aiuti sono in prossimità degli oggetti descritti, e non ne inficiano in alcun modo la funzionalità.
L' Helpsi può aprire e chiudere in qualsiasi momento, senza interrompere l'operatività. L' Helpaperto si limita unicamente ad occupare più spazio nelle schermate, una volta presa confidenza lo si può chiudere.
La stratificazione del software vede la propria importanza soprattutto nella velocità e semplicità delle variazioni apportabili al software stesso. Senza un'adeguata stratificazione il software non può crescere, non può evolversi, e rimane confinato per sempre nei propri limiti iniziali.
Gli strati software(o livelli) semplificano lo sviluppo e l'evoluzione delle singole funzionalità. Queste implementazioni prevedono la relativa indipendenza delle singole procedure, in modo da fonderle agevolmente tra di loro. Si vengono a creare strati software di complessità crescente disposti ordinatamente in modo che quelli più complessi utilizzino quelli sottostanti, senza troppi intrecci o confusioni.
La stratificazione consente di modificare un singolo strato senza dover rivedere gli strati adiacenti o, almeno, senza creare troppe difficoltà. Da qui la velocità di sviluppo, senza la compromissione dell'affidabilità complessiva. Modificare o rivedere troppi componenti ogni volta causa inevitabili bugal software, minandone profondamente l'affidabilità.
Tutto il CLnet è multistrato(o multi livello), i livelli indipendenti presenti sono circa una decina, più di quelli che si trovano nei software anche qualitativamente avanzati, mentre nei software commerciali è molto frequente trovare implementazioni a singolo strato, da qui la diffusa impossibilità di crescita senza danneggiarne l'affidabilità.
La modularità va a braccetto con la stratificazione. I singoli componenti software sono indipendenti tra loro, e possono operare in maniera coordinata, in modo da ottenere un codice complessivo con pochi rischi sul fronte dell'affidabilità, e con grandi possibilità di riutilizzo.
Purtroppo anche questo aspetto è andato perduto negli ultimi decenni, si preferisce sviluppare piccoli software "monoblocco", perché di rapido e semplice sviluppo, ma la cui crescita è resa impossibile proprio per il fatto di essere un singolo blocco, che rischia di crollare miseramente quando toccato.
Senza modularità il software non può crescere, ogni nuova funzionalità andrebbe a rovinare la stabilità complessiva, rendendo impossibili dei cambiamenti radicali, ci si limita a sviluppare singole funzionalità isolate (le classiche cattedrali nel deserto), che non portano nessuna reale evoluzione, sono la perpetuazione all'infinito delle stesse annose problematiche.
Il CLnet è pesantemente modulare, e lo si può notare facilmente guardando come funziona, schermate tutte simili ed analoghe tra loro, alcuni meccanismi chiave sono ripetuti, con le debite variazioni, su tutto l'applicativo. Ciò rende l'applicativo "banale", ma estremamente mirato al risultato finale, senza pause intermedie. Sono pesantemente modulari sia l' application serverche il database (la struttura data al database), entrambi gli strumenti presentano numerosi strati software anche al loro interno, con una modularità spintissima ai massimi livelli, ogni singola funzione è stata implementata come nativamente autonoma, e può venire modificata senza influenzare più di tanto le altre funzioni presenti.
Quindi alta velocità e tranquillità di modifica e potenziamento, scarsa probabilità di introdurre inconvenienti.
Sia la stratificazione che la modularità presentano una caratteristica particolare, per i piccoli software è più vantaggioso (nell'immediato) evitarle, perché possono ridurre e limitare le prestazioni, un software "monoblocco" è più semplice e veloce. Ma appena il software diventa più ampio e ricco di funzionalità, ecco che i due elementi di stratificazione e modularità prendono il sopravvento, e le performance complessive diventano rapidamente irraggiungibili per gli applicativi "monoblocco". Quindi un'apparente limitazione iniziale diventa uno degli elementi fondamentali per ottenere un applicativo moderno e ricco.
Come accennato le caratteristiche illustrate in precedenza conducono ad un software semplicissimo da imparare e sfruttare pienamente. Una volta comprese le funzionalità di base, queste si ritroveranno in tutto il resto dell'applicativo, ed anche in applicativi diversi, dato che il CLnet è un sistema multi-applicativo.
La capacità del CLnet è anche quella di poter presentare numerosi applicativi diversi nello stesso menù iniziale. Ogni applicativo è composto di moduli, e la diversa combinazione di moduli conduce ad ogni singolo tipo di applicativo. Questa enorme modularità porta alla semplicità nel passaggio dall'apprendimento di un singolo applicativo a quello di un altro, anche apparentemente totalmente diverso.
I tempi di apprendimento sono molto importanti nelle realtà aziendali (in contrapposizione agli ambienti home), e più è grande e complessa l'azienda, e più diventa improponibile riaddestrare gli utilizzatori ad ogni minimo cambiamento del software. Il CLnet si è posto la problematica preferendo un'omogeneità totale tra i vari applicativi, in modo che gli uffici possano confrontarsi in maniera assolutamente diretta sull'operatività complessiva, diventa così enormemente più semplice coordinarsi tra diversi uffici, ed il livello di condivisione delle conoscenze diventa altissimo. Lavorare in un determinato ufficio non comporta la necessità di imparare ad usare altri software diversi, dato che il software è del tutto analogo ed immediatamente fruibile. Gli utenti possono così concentrarsi sull'apprendimento della nuova attività lavorativa, senza perdere ulteriore tempo con le diverse logiche dei pacchetti software.
Una volta imparato il CLnet, ci si trova a proprio agio su tutto il CLnet.
Nelle realtà aziendali moderne è necessario un buon livello di personalizzazione del software, la spinta alla specializzazione è inevitabile per riuscire a competere sui mercati attuali. Diventerebbe difficile ottenere dei risultati di elevata efficienza se i software di base aziendali non fossero in grado di operare in maniera altrettanto specializzata.
Il vecchio paradigma di evoluzione verticale(specializzazione) o orizzontale(aumento dei volumi) sta cigolando sotto il peso della concorrenza, ed anche il software applicativo di base presenta ancora parecchie difficoltà di adattamento alle nuove realtà produttive aziendali.
Esistono molti software che puntano alla gestione di grandi volumi (ad es. di produzione e vendita), dato che queste sono le peculiarità delle macchine, svolgere tanto lavoro purché semplice e ripetitivo. Più difficile è trovare un pacchetto software specializzato per l'attività che si svolge, normalmente si preferisce sviluppare pacchetti molto generici, per via delle difficoltà di sviluppo e delle ancora più grandi difficoltà di adeguamento. Il software commerciale deve andare bene per il maggior numero di clienti (si punta a grandi volumi), ma diventa sempre più raro individuare un software che faccia ciò che serve realmente ( verticalizzazione), senza aggiungere complessità inutili, probabilmente queste ultime risultano utili ad altre realtà, ma non alla nostra.
Dato l'aumento progressivo di complessità che i gestionali generici dovrebbero implementare, diventa impossibile sviluppare un prodotto che vada realmente bene per tutte le situazioni. Il CLnet rovescia queste logiche proponendo un software cucito su misura, dato che solo così si può ottenere un risultato efficiente per qualsiasi realtà, ogni azienda deve avere un applicativo leggermente diverso da tutte le altre aziende, che faccia ciò che deve fare senza ammennicoli inutili.
Tutte le caratteristiche precedentemente illustrate portano ancora più lontano, rispettandole diventa semplice modificare il software, sia in termini evolutivi generali, che di personalizzazione specifica.
L'efficienza implementativa si traduce nella possibilità di adattare il software applicativo alle esigenze aziendali. Ogni singolo applicativo del CLnet può venire modificato ad hoc per soddisfare le esigenze di ogni singolo cliente, non esistono problemi nella gestione dell'aumento della complessità infrastrutturale del CLnet. In parole povere il CLnet può gestire in una singola infrastruttura una quantità enorme di applicativi diversi tra loro. In questo caso si comprende come sia determinante l'impiego della modularità e dell'omogeneità.
Il CLnet si pone l'obiettivo di creare un'infrastruttura di tipo globale, tutte le esigenze aziendali possono trovare una possibile risposta nel CLnet. Questo tipo di risultato potrebbe apparire irraggiungibile, ma non se vengono rispettate tutte le caratteristiche tecniche che rispetta il CLnet, è decisamente un'attività complessa ma assolutamente possibile e più che verosimile.
L'affidabilità è legata anche alla tolleranza agli errori. La scelta di una logica di funzionamento piuttosto che un'altra è dovuta anche agli aspetti di "resistenza" agli errori.
I dati devono sempre venire mantenuti al sicuro mentre l'utilizzatore opera, non devono esserci elementi critici esposti a rischi o disattenzioni. Anche i casi imprevedibili devono venire comunque valutati e gestiti, riservandosi un certo margine di sicurezza, in modo da creare un cuscinetto di protezione nei confronti di elementi non totalmente prevedibili.
Nella scelta delle tecniche e degli algoritmisi è data preferenza a quelli che portano a risultati coerenti anche in caso di errori di implementazione.
Scrivere codice "resistente" non è affatto semplice, ma è possibile. Nel CLnet è stata implementata una fortissima "tolleranza agli errori", tanto che anche eventuali errori nella programmazione stessa non possono portare direttamente alla perdita di dati, o ad altri danni di grande entità. Il motore è estremamente stabile, tanto da poter venire programmato male senza per questo andare in crisi, ogni situazione anomala è recuperabile, un bugin un punto preciso del software non incide sul funzionamento degli altri componenti e, con un rapido intervento tecnico, si può riprendere subito a lavorare.
Nel CLnet è stata posta grande attenzione alla gestione corretta delle transazioni, l'applicativo e l'interfaccia utente sono rispettosi del concetto di transazione, in modo da non mettere in difficoltà il database con operazioni troppo spericolate. Purtroppo anche la corretta gestione delle transazioni è stata troppo trascurata negli ultimi decenni, sono molte di più le implementazioni che vanno ad inficiare la coerenza transazionale, rispetto a quelle rispettose della solidità dei database.
Senza un'attenta implementazione delle tolleranze non si può ottenere l'affidabilità del software.
L'attuale tecnologia dell'hardware ha condotto sulla strada delle CPU multi core, quindi anche il software deve venire progettato per rispettare questa struttura, altrimenti le prestazioni decaderebbero inesorabilmente.
Scrivere software multitaskingè molto più difficile che scrivere software su singolo task, quindi questa seconda strada viene sempre preferita nei software di larga diffusione.
Occorre molto impegno per progettare software con funzionamento parallelo, e non sempre le performance sono aumentate significativamente, è facile prendere cantonate, quindi occorre rimanere in un delicato equilibrio nella ripartizione delle elaborazioni in singoli task. Non devono essere troppo pochi, ma nemmeno troppi.
Il CLnet opera con un parallelismo non massivo, si è data priorità alla ripartizione dei compiti, e non al bilanciamento del carico. Il software non risulta quindi "bilanciato" su molti core, ma "ripartito" su molti core. La ripartizione è stata valutata con attenzione, ed è il risultato della profonda modularità del codice.
La scelta di come distribuire il carico sui vari coredisponibili è lasciata pienamente al sistema operativo. Nessun sistema è più performante ed "intelligente" di Linux nella distribuzione del carico, ed il CLnet si limita a dare indicazioni al sistema sul modo migliore per ripartire i carichi, ma si tratta unicamente di "suggerimenti" per il sistema operativo, mai di "imposizioni".
Questa capacità di "suggerire" la ripartizione dei carichi rende efficiente il software a prescindere da quanti coresiano effettivamente disponibili, e da quanto risultino già occupati da altre operazioni. Il sistema riceve numerosi spunti per ottimizzare l'elaborazione, ma è libero di decidere di volta in volta cosa fare. Il carico è sempre "ripartibile" a discrezione del sistema.
Durante lo sviluppo si è cercato di tenere conto delle grandi diversità che sussistono all'interno dei browser, purtroppo negli ultimi decenni il panorama si è molto allargato, ricomprendendo logiche molto diverse tra loro, e spesso non compatibili.
Scrivere un codice che vada bene su tutti i browserè diventata un'autentica acrobazia, il CLnet ha optato per una scelta minimalista, si è cercato di utilizzare unicamente tecniche e logiche comuni e diffuse su tutti i browser. Questo non garantisce che funzioni sempre tutto correttamente su qualsiasi browser, ma solo che la maggior parte dei browserin circolazione lo gestisca in maniera almeno adeguata alle esigenze.
Questa scelta conduce a schermate "povere" in termini di HTML, ma sicuramente ad elevate prestazioni. Molte decisioni tecniche nel CLnet sono state prese per tentare di rendere le pagine HTMLestremamente semplici e rapide da "disegnare", e non particolarmente sofisticate o gradevoli all'occhio.
Si è cercato sempre di seguire le logiche di funzionamento interne dei browserin modo da agevolarne il compito, ed i risultati sono ben visibili a chiunque, le pagine arrivano sempre in maniera estremamente fluida e confortevole, senza esitazioni o inceppamenti, neanche nelle pagine più complesse e ricche di dati.
E' chiaro che la scelta minimalista porti a pagine dall'apparenza molto "rudimentale", ma è proprio questa caratteristica che le rende sempre altamente performanti. Un aumento della complessità avrebbe portato subito a rallentamenti ed incespicamenti vari, ed ad una complessiva "incertezza" delle schermate, e questo non lo si voleva.
La scelta di operare con un clustering"pervasivo" (a tutti i livelli) è dovuta all'esigenza di rendere sempre fruibile il CLnet, anche in caso di guasti di vario tipo.
Nelle realtà aziendali attuali i sistemi informatici sono decisamente critici, un loro fermo conduce spesso al fermo dell'intera azienda, e questa problematica si sta facendo sentire sempre di più col passare degli anni. Il CLnet preferisce sacrificare qualcosa in termini di hardware piuttosto che rischiare dei fermi prolungati.
Oltre ai veri e propri guasti, il clusteringconsente di ridurre ai minimi termini la necessità di fermare l'attività lavorativa, anche per le normali operazioni di manutenzione del software. La natura 24x7 del CLnet gli consente di ricevere gli aggiornamenti mentre si sta lavorando, non occorre fermare l'attività lavorativa per effettuare aggiornamenti, potenziamenti o personalizzazioni.
Anche la maggior parte degli interventi tecnici sulle macchine si può svolgere durante la normale attività lavorativa, non esistono "interruzioni pianificate" dell'operatività e non è mai indispensabile spegnere entrambi i sistemi per operare sugli stessi, lo si può sempre fare intervenendo su di un singolo sistema per volta, eliminando la necessità di fermi totali.
Questi aspetti, unitamente all'attenta progettazione del software, rendono il CLnet perfettamente adatto all'impiego per attività mission critical, e riteniamo questo un requisito sempre più essenziale nella maggior parte delle attività aziendali.