• Trattamento delle informazioni nella consulenza integrata

    Trattamento delle informazioni nella consulenza integrata

    [Tempo di lettura: 17 minuti]

    Dedicato agli amici di ORA.Team

    Cominciamo con una storia inventata ma realistica

    Un’Incongruenza rivela una verità nascosta

    Nella pittoresca regione del Chianti, l’azienda vinicola “Terre Antiche”, un tempo fiore all’occhiello della tradizione, si trovava ad affrontare le sfide della modernità. L’aumento della produzione e l’espansione verso nuovi mercati avevano messo a dura prova il loro sistema logistico, ormai obsoleto. Era giunto il momento di un cambiamento radicale: l’adozione di un nuovo software di logistica.

    Immagine generata con Midjourney, il prompt è mio.

    Per guidare questa trasformazione, Terre Antiche si affidò a due consulenti esperti:

    • Giulia, esperta di organizzazione delle risorse umane, con una profonda conoscenza delle dinamiche aziendali e delle esigenze dei lavoratori.
    • Marco, esperto informatico, appassionato di tecnologia e innovazione, pronto a sfruttare il potenziale del digitale per ottimizzare i processi.

    Insieme, iniziarono a utilizzare il software di consulenza integrata, compilando meticolosamente le sezioni relative alle loro aree di competenza. Giulia si concentrò sui processi HR, le competenze del personale e il clima aziendale, mentre Marco si immerse nei trattamenti di dati, nei profili autorizzativi e nei casi d’uso del nuovo sistema.

    Mentre i dati si accumulavano nel software, emerse un’incongruenza che attirò la loro attenzione. Giulia aveva inserito un KPI relativo al “tasso di errore nelle spedizioni”, misurato come percentuale di ordini evasi in modo errato. Marco, dal canto suo, aveva valutato l’”affidabilità del sistema di tracciabilità delle spedizioni”, misurando la percentuale di spedizioni tracciate correttamente dal software.

    In teoria, queste due misure avrebbero dovuto essere correlate: un sistema di tracciabilità affidabile dovrebbe portare a un minor numero di errori nelle spedizioni. Tuttavia, i dati raccontavano una storia diversa. Mentre l’affidabilità del sistema di tracciabilità era elevata, il tasso di errore nelle spedizioni rimaneva ostinatamente alto.

    Questa incongruenza spinse Giulia e Marco a indagare più a fondo. Analizzando i dati e intervistando il personale, scoprirono una verità sorprendente: gli errori nelle spedizioni non erano causati da problemi tecnologici, ma da una mancanza di comunicazione e collaborazione tra i diversi team coinvolti nel processo logistico.

    Il personale addetto alla preparazione degli ordini non era sempre informato sulle specifiche richieste dei clienti o sulle eventuali modifiche dell’ultimo minuto. Gli autisti, a loro volta, non sempre ricevevano istruzioni chiare sulle priorità di consegna o sulle eventuali restrizioni di accesso ai luoghi di consegna.

    Questa scoperta fu un campanello d’allarme per Terre Antiche. Il nuovo software di logistica, per quanto efficiente, non poteva risolvere da solo i problemi di comunicazione e collaborazione radicati nell’azienda. Era necessario un intervento più ampio, che coinvolgesse la formazione del personale, la revisione dei processi e la promozione di una cultura aziendale basata sulla comunicazione aperta e la collaborazione interfunzionale.

    Grazie alla consulenza integrata e all’utilizzo del software, Terre Antiche aveva scoperto una criticità nascosta che, se ignorata, avrebbe potuto compromettere il successo del progetto di trasformazione logistica. Questa consapevolezza permise all’azienda di affrontare il problema alla radice, trasformando una potenziale minaccia in un’opportunità di crescita e miglioramento.

    Cos’è la Consulenza Integrata nel Paradigma della Complessità?

    La consulenza integrata, nel contesto del paradigma della complessità, è un approccio dinamico e co-evolutivo alla consulenza che non solo riconosce l’interconnessione tra consulente, cliente e sistema, ma anche l’importanza di integrare i punti di vista di più consulenti appartenenti ad aree di competenza differenti ma confinanti. Questa integrazione di competenze e prospettive permette di affrontare la complessità in modo più completo ed efficace, garantendo che le soluzioni emergenti siano sostenibili e rispondano alle molteplici sfaccettature della situazione.

    In questo paradigma, il team di consulenti diventa un sistema a sé stante, in cui ogni membro contribuisce con la propria expertise e il proprio punto di vista unico, arricchendo il processo di co-creazione e aprendo nuove possibilità. La consulenza integrata diventa così un’orchestrazione di competenze, in cui il dialogo e la collaborazione tra i consulenti sono fondamentali per creare soluzioni innovative e olistiche.

    Esempi di Consulenza Integrata con Integrazione di Competenze

    • Pianificazione finanziaria familiare: un team di consulenti finanziari, legali e fiscali collabora per creare un piano finanziario completo che tenga conto di tutti gli aspetti legali e fiscali, oltre che delle esigenze e degli obiettivi della famiglia.
    • Supporto alla transizione di carriera: consulenti di carriera, psicologi e coach lavorano insieme per fornire un supporto completo all’individuo, aiutandolo a esplorare le sue opzioni, sviluppare le sue competenze e gestire l’aspetto emotivo del cambiamento.
    • Sviluppo comunitario: urbanisti, sociologi, ambientalisti ed economisti collaborano per facilitare un processo di sviluppo comunitario partecipativo e sostenibile, integrando le diverse prospettive e competenze per creare soluzioni innovative.
    • Gestione di situazioni di crisi familiari: psicologi, assistenti sociali, avvocati e mediatori familiari lavorano insieme per fornire un supporto completo alla famiglia in crisi, affrontando gli aspetti emotivi, legali, sociali ed economici della situazione.
    • Supporto a individui con bisogni speciali: educatori, terapisti, assistenti sociali e consulenti legali collaborano per creare un piano di supporto personalizzato che tenga conto delle esigenze specifiche dell’individuo e lo aiuti a raggiungere i suoi obiettivi di autonomia e inclusione.

    Vantaggi dell’Integrazione di Competenze nella Consulenza Integrata

    • L’integrazione di diverse competenze permette di affrontare la complessità in modo più completo, considerando tutti gli aspetti della situazione.
    • La collaborazione tra consulenti con background diversi stimola la creatività e l’innovazione, portando a soluzioni più efficaci e sostenibili.
    • La presenza di un team di esperti con competenze complementari aumenta la fiducia del cliente nel processo di consulenza.
    • La collaborazione tra consulenti favorisce lo scambio di conoscenze e l’apprendimento reciproco, contribuendo alla crescita professionale di tutti i membri del team.

    Consulenza integrata nei progetti di cambiamento

    Ho già trattato in un altro articoletto, a grandi linee, la relazione tra consulenza e progetti di cambiamento in sistemi complessi.

    Uniamo i due argomenti con approccio pratico. Come si possono integrare i consulenti per supportare progetti di cambiamento in sistemi complessi?

    Ogni disciplina o area di competenza sviluppa una propria ontologia, ovvero un modo specifico di concettualizzare e rappresentare il mondo. Queste ontologie possono variare in termini di terminologia, struttura e relazioni tra i concetti.

    Le semantiche definiscono il significato dei termini e delle relazioni all’interno di un’ontologia. Anche se due ontologie condividono alcuni termini, le loro semantiche possono differire, portando a interpretazioni diverse degli stessi concetti.

    Nonostante le differenze ontologiche e semantiche, le aree di competenza confinanti presentano inevitabilmente punti in comune e sovrapposizioni. Questi punti di contatto creano un terreno fertile per l’integrazione e la collaborazione tra i consulenti.

    Quando i consulenti valutano la configurazione del sistema dalle loro prospettive specifiche, possono emergere contraddizioni o incongruenze tra le loro valutazioni. Queste contraddizioni possono essere dovute a differenze ontologiche, semantiche o semplicemente a interpretazioni diverse dei dati disponibili. Oppure, possono corrispondere a contraddizioni insite nel sistema, tensioni e dinamiche che causano disequilibri e che meritano particolari attenzioni, fino a diventare cruciali nel formulare il progetto di cambiamento.

    Allo stesso tempo, le valutazioni dei consulenti possono anche portare a conferme multiple, ovvero a convergenze o sovrapposizioni tra le loro conclusioni. Queste conferme rafforzano la validità delle osservazioni e aumentano la fiducia nelle soluzioni proposte.

    Il processo di integrazione delle prospettive dei diversi consulenti è analogo all’incrocio dei raggi luminosi di due torce elettriche: aiuta a distinguere tra verità e falsità.

    Le contraddizioni spingono i consulenti a riesaminare le loro ipotesi, a chiarire le loro semantiche e a cercare un terreno comune. Questo processo di confronto e negoziazione può portare a una comprensione più profonda del sistema e a soluzioni più robuste.

    Le conferme multiple, d’altra parte, aumentano la probabilità che le osservazioni siano corrette e che le soluzioni proposte siano efficaci.

    In conclusione, la consulenza integrata, attraverso l’integrazione di prospettive diverse, favorisce un processo di confronto e negoziazione che aiuta a distinguere tra verità e falsità, portando a una comprensione più profonda del sistema e a soluzioni più efficaci e sostenibili. I vantaggi, nel condurre progetti di cambiamento, sono evidenti.

    Immagine generata con Midjourney, il prompt è mio.

    Valutazione integrata

    Un consulente è tale se è efficace nel formulare valutazioni nel proprio ambito di competenza. Se la collaborazione tra consulenti è stabile, si può concepire un sistema di valutazione congiunto, capace di esprimersi anche nella zona grigia che si trova tra i confini delle aree di competenza, quindi ai margini rispetto al focus del singolo consulente. La relazione può trasformare in forza un tipico punto debole della consulenza e diventare tratto distintivo per il team di consulenti.

    Occorre però investire nella definizione congiunta di criteri di valutazione nei concetti di confine delle ontologie dei consulenti.

    Consideriamo un esempio concreto: la logistica aziendale affrontata da un esperto di organizzazione delle risorse umane e da un esperto informatico.

    Concetti nella zona di confine

    • Gestione delle informazioni:
      • HR: L’esperto HR potrebbe essere interessato a come le informazioni sui dipendenti (disponibilità, competenze, turni) vengono raccolte, condivise e utilizzate per ottimizzare la pianificazione logistica.
      • IT: L’esperto IT si concentrerebbe sui sistemi informatici e le tecnologie utilizzate per gestire e condividere queste informazioni, garantendo l’accuratezza, la sicurezza e l’accessibilità dei dati.
    • Formazione e competenze:
      • HR: L’esperto HR valuterebbe le competenze necessarie per svolgere le attività logistiche e identificherebbe eventuali lacune formative, proponendo programmi di formazione e sviluppo.
      • IT: L’esperto IT potrebbe contribuire alla formazione fornendo strumenti informatici e piattaforme di e-learning per supportare l’acquisizione di nuove competenze.
    • Comunicazione e collaborazione:
      • HR: L’esperto HR si preoccuperebbe di garantire una comunicazione efficace tra i diversi team coinvolti nella logistica, promuovendo la collaborazione e la risoluzione dei conflitti.
      • IT: L’esperto IT potrebbe fornire strumenti di comunicazione e collaborazione digitale per facilitare lo scambio di informazioni e il coordinamento delle attività logistiche.
    • Ergonomia e sicurezza sul lavoro:
      • HR: L’esperto HR si concentrerebbe sulla progettazione di ambienti di lavoro sicuri ed ergonomici per i lavoratori coinvolti nelle attività logistiche, riducendo il rischio di infortuni e malattie professionali.
      • IT: L’esperto IT potrebbe contribuire fornendo tecnologie e strumenti per monitorare e migliorare la sicurezza sul lavoro, come sistemi di tracciamento dei movimenti o dispositivi di protezione individuale intelligenti.
    • Automazione e robotica:
      • HR: L’esperto HR valuterebbe l’impatto dell’automazione e della robotica sulla forza lavoro, identificando le esigenze di riqualificazione e gestendo eventuali cambiamenti organizzativi.
      • IT: L’esperto IT si occuperebbe dell’implementazione e della manutenzione delle tecnologie di automazione e robotica, garantendo la loro integrazione con i sistemi esistenti e la loro efficienza operativa.

    Questi concetti, pur essendo ai margini dei focus principali dei due consulenti, rappresentano aree di sovrapposizione in cui le loro competenze e prospettive possono integrarsi per creare soluzioni logistiche più complete ed efficaci.

    La collaborazione tra l’esperto HR e l’esperto IT in queste aree può portare a una migliore comprensione delle esigenze logistiche dell’azienda, all’identificazione di opportunità di miglioramento e all’implementazione di soluzioni innovative che tengano conto sia degli aspetti umani che tecnologici.

    Criteri di valutazione dei due consulenti considerati disgiuntamente

    L’esperto informatico, nella sua valutazione della questione logistica, utilizzerà probabilmente una rappresentazione basata su concetti e strumenti tipici dell’informatica, come:

    • Trattamenti di dati: descriverà come i dati vengono raccolti, archiviati, elaborati, trasmessi e utilizzati all’interno del sistema logistico. Questo include l’identificazione dei tipi di dati coinvolti (ad esempio, informazioni sui dipendenti, inventario, ordini, spedizioni), le finalità del trattamento e le misure di sicurezza adottate.
    • Profili autorizzativi: definisce chi ha accesso a quali dati e quali operazioni può eseguire su di essi. Questo è fondamentale per garantire la sicurezza e la riservatezza delle informazioni, soprattutto quando si tratta di dati sensibili come quelli relativi ai dipendenti.
    • Attori: identifica i diversi ruoli e responsabilità all’interno del sistema logistico, come ad esempio gli addetti al magazzino, gli autisti, i responsabili delle spedizioni, ecc. Questo aiuta a comprendere il flusso di lavoro e le interazioni tra i diversi attori.
    • Casi d’uso: descrive le diverse funzionalità del sistema logistico dal punto di vista dell’utente, come ad esempio la registrazione di un nuovo ordine, la tracciabilità di una spedizione, la gestione dell’inventario, ecc. Questo aiuta a comprendere le esigenze degli utenti e a progettare un sistema che sia facile da usare e risponda alle loro necessità.
    • Strutture dati: definisce come i dati vengono organizzati e strutturati all’interno del sistema, ad esempio utilizzando database relazionali, database NoSQL o altre strutture dati. Questo è importante per garantire l’efficienza e la scalabilità del sistema.
    • Interfacce utente: progetta le schermate e i moduli che gli utenti utilizzeranno per interagire con il sistema logistico. Questo include la scelta degli elementi grafici, la disposizione dei campi di input e la definizione dei flussi di lavoro.

    L’esperto di organizzazione delle risorse umane utilizza una struttura logica analoga per rappresentare le sue valutazioni, sebbene adattata al suo specifico dominio di competenza.

    • Processi HR: descriverà i processi chiave relativi alle risorse umane coinvolte nella logistica, come il reclutamento e la selezione del personale, la formazione e lo sviluppo, la valutazione delle prestazioni, la gestione delle assenze e delle presenze, ecc. Questo include l’identificazione delle fasi di ciascun processo, i ruoli coinvolti e le eventuali criticità.
    • Competenze e profili professionali: definisce le competenze e i profili professionali necessari per svolgere le diverse attività logistiche. Questo include sia le competenze tecniche specifiche (ad esempio, utilizzo di carrelli elevatori, conoscenza delle normative di sicurezza) che le competenze trasversali (ad esempio, capacità di lavorare in team, problem solving, comunicazione).
    • Struttura organizzativa: analizza la struttura organizzativa dell’azienda, in particolare per quanto riguarda la logistica. Questo include l’identificazione dei diversi team e reparti coinvolti, le loro responsabilità e le relazioni gerarchiche. L’obiettivo è valutare se la struttura organizzativa attuale favorisce o ostacola l’efficienza logistica.
    • Clima e cultura aziendale: valuta il clima e la cultura aziendale, in particolare per quanto riguarda l’impatto sulla motivazione, l’engagement e la produttività dei dipendenti coinvolti nella logistica. Questo include l’analisi della comunicazione interna, del livello di fiducia e collaborazione tra i team, e della percezione dei dipendenti riguardo al loro lavoro e all’azienda.
    • Indicatori di performance: identifica gli indicatori chiave di performance (KPI) per misurare l’efficacia e l’efficienza dei processi logistici e delle risorse umane coinvolte. Questo include metriche come il tasso di turnover del personale, il numero di incidenti sul lavoro, il tempo medio di consegna, il livello di soddisfazione dei clienti, ecc.
    • Piani di sviluppo: propone piani di sviluppo per migliorare le prestazioni logistiche e la gestione delle risorse umane. Questo può includere programmi di formazione, iniziative per migliorare il clima aziendale, modifiche alla struttura organizzativa o l’adozione di nuove tecnologie.

    Criteri di valutazione dei due consulenti considerati congiuntamente

    Mi spiego presentando alcuni esempi di valutazioni e misure nell’area di confine tra l’esperto informatico e l’esperto di organizzazione delle risorse umane, con particolare attenzione all’intreccio dei metodi di misura e alla possibilità di una misura unica interpretata in modo diverso da entrambi:

    Area di confine: Gestione delle informazioni

    • Caso d’uso: Accesso ai dati dei dipendenti
      • Esperto IT:
        • Titolo: “Accesso ai dati dei dipendenti”
        • User story: “Come responsabile HR, voglio poter accedere ai dati dei dipendenti in modo sicuro e veloce per prendere decisioni informate.”
        • Scenario principale: L’utente HR accede al sistema, inserisce le credenziali, seleziona il dipendente e visualizza i dati rilevanti (anagrafica, competenze, formazione, ecc.).
        • Scenari secondari: Accesso negato per utenti non autorizzati, ricerca di dipendenti per nome o ID, esportazione dei dati in diversi formati.
        • Maturità: Alta (sistema già implementato e utilizzato)
        • Adeguatezza: Media (potrebbe essere migliorata l’interfaccia utente)
        • Affidabilità: Alta (pochi errori o malfunzionamenti segnalati)
        • Rischi: Violazione della privacy dei dati, accesso non autorizzato.
        • Opportunità: Migliorare l’interfaccia utente, integrare con altri sistemi HR.
      • Esperto HR:
        • Misura unica: “Tempo medio di accesso ai dati dei dipendenti”
        • Interpretazione IT: Efficienza del sistema informatico (tempo di risposta, velocità di caricamento, ecc.)
        • Interpretazione HR: Impatto sulla produttività degli utenti HR (tempo risparmiato nella ricerca di informazioni, possibilità di prendere decisioni più rapide, ecc.)
    • Altro esempio: Accuratezza dei dati dei dipendenti
      • Misura unica: “Percentuale di errori nei dati dei dipendenti”
      • Interpretazione IT: Affidabilità del sistema di raccolta e gestione dei dati (errori di input, problemi di sincronizzazione, ecc.)
      • Interpretazione HR: Impatto sulla qualità delle decisioni HR (errori nelle buste paga, problemi nella pianificazione delle ferie, ecc.)

    Area di confine: Formazione e competenze

    • Misura unica: “Tasso di completamento dei corsi di formazione online sulla sicurezza sul lavoro”
    • Interpretazione IT: Efficacia della piattaforma di e-learning (facilità d’uso, accessibilità, tracciamento dei progressi)
    • Interpretazione HR: Livello di coinvolgimento e apprendimento dei dipendenti (motivazione, acquisizione di competenze, impatto sulla sicurezza effettiva)

    Area di confine: Comunicazione e collaborazione

    • Misura unica: “Numero di richieste di supporto IT risolte entro 24 ore”
    • Interpretazione IT: Efficienza del servizio di supporto IT (tempestività, qualità delle risposte, risoluzione dei problemi)
    • Interpretazione HR: Impatto sulla produttività e sul clima aziendale (riduzione dei tempi di inattività, soddisfazione dei dipendenti, collaborazione tra team)

    L’utilizzo di misure comuni, interpretate in modo diverso dai due consulenti, permette di evidenziare le interconnessioni tra le diverse aree di competenza e di favorire un dialogo costruttivo per la definizione di soluzioni integrate che tengano conto sia degli aspetti tecnologici che di quelli umani.

    Immagine generata con Midjourney, il prompt è mio.

    Strumenti di integrazione

    Come detto, un presupposto fondamentale per un’efficiente integrazione è la stabilità del rapporto di collaborazione tra consulenti:

    • facilita la condivisione di informazioni, idee e preoccupazioni in modo aperto e trasparente;
    • permette ai consulenti di conoscere le competenze, i punti di forza e le aree di miglioramento di ciascuno, favorendo una collaborazione più efficace;
    • crea un ambiente di lavoro positivo e collaborativo, in cui i consulenti si sentono a proprio agio nel condividere le proprie opinioni e nel mettere in discussione le idee degli altri;
    • aiuta a gestire eventuali conflitti o divergenze di opinione in modo costruttivo, trovando soluzioni che soddisfino le esigenze di tutti i coinvolti.

    Un altro fattore importante è la familiarità col sistema su cui va operato il cambiamento, che permette di:

    • identificare le specificità del sistema, le sue dinamiche interne, le sfide e le opportunità;
    • analizzare le informazioni raccolte in modo accurato e contestualizzato, evitando fraintendimenti e interpretazioni errate;
    • sviluppare soluzioni che siano realizzabili e sostenibili nel contesto specifico del sistema, tenendo conto delle sue peculiarità e dei suoi vincoli;
    • anticipare le conseguenze delle soluzioni proposte, sia positive che negative, e adattare le strategie di conseguenza.

    Considerato però che un progetto di cambiamento può coinvolgere anche il cliente, può durare a lungo e richiedere una lenta e paziente raccolta di tasselli di un puzzle che cambia nel tempo, certamente è fondamentale avvalersi di uno strumento informatico, un servizio software fruibile in cloud, tipicamente con interfaccia Web e con gestione di ruoli ed autorizzazioni.

    Il software immaginato potrebbe facilitare il processo di valutazione congiunta, il punto più delicato della consulenza integrata:

    • consentendo ai consulenti di inserire le loro valutazioni in sezioni specifiche;
    • evidenziando le misure comuni e le diverse interpretazioni;
    • facilitando la comunicazione e la collaborazione tra i consulenti attraverso strumenti di discussione e condivisione.

    In questo modo, il software diventerebbe uno strumento chiave per supportare la consulenza integrata e favorire la co-creazione di soluzioni efficaci e sostenibili.

    Anche la gestione del progetto di cambiamento dovrebbe far parte del sistema.

    Discutiamone secondo una griglia concettuale che si rifà alla visione olonica: funzione, funzionamento, funzionalità e collocazione (nei vari livelli).

    Funzione

    Mappare le configurazioni e ri-configurazioni del sistema:

    • Permettere ai consulenti di rappresentare lo stato attuale del sistema, catturando le sue componenti, le relazioni tra esse e i processi in atto. Questo potrebbe avvenire attraverso diagrammi, mappe concettuali, o altre rappresentazioni visuali che facilitino la comprensione della complessità del sistema.
    • Supportare la simulazione e la progettazione di cambiamenti al sistema, consentendo ai consulenti di esplorare diverse opzioni e valutarne l’impatto potenziale. Questo potrebbe includere la modifica di processi, la riorganizzazione di strutture, l’introduzione di nuove tecnologie o l’implementazione di nuove strategie.

    Gestire il progetto di cambiamento:

    • Aiutare i consulenti a definire gli obiettivi del progetto, le fasi di implementazione, le risorse necessarie e i tempi previsti.
    • Monitorare l’avanzamento del progetto, raccogliere dati sull’efficacia delle soluzioni implementate e identificare eventuali scostamenti dal piano originale.
    • Facilitare la comunicazione e la collaborazione tra i consulenti e il cliente, fornendo un ambiente condiviso per lo scambio di informazioni, documenti e feedback.
    • Supportare la valutazione dei risultati del progetto, misurando l’impatto delle soluzioni implementate sugli obiettivi prefissati e identificando eventuali aree di miglioramento.

    Evidenziare le correlazioni tra valutazioni e misure utilizzate da consulenti differenti:

    • consentire l’inserimento e l’integrazione dei dati provenienti da diverse fonti e discipline, superando le barriere ontologiche e semantiche.
    • Utilizzare tecniche di visualizzazione dei dati per evidenziare le relazioni, le sovrapposizioni e le eventuali contraddizioni tra le valutazioni e le misure utilizzate dai diversi consulenti.
    • Fornire strumenti per facilitare il dialogo e la negoziazione tra i consulenti, aiutandoli a chiarire le loro prospettive, a risolvere eventuali conflitti e a convergere verso soluzioni condivise.

    Funzionamento e Funzionalità

    Gestione delle ontologie e delle semantiche

    Il software dovrebbe utilizzare un modello di dati flessibile, in grado di accogliere ontologie e semantiche diverse provenienti da varie discipline.

    Dovrebbe fornire strumenti per mappare le ontologie dei diversi consulenti, identificando i punti di contatto, le sovrapposizioni e le eventuali incongruenze semantiche. Questo processo di mappatura potrebbe essere supportato da algoritmi di analisi del linguaggio naturale per l’estrazione di concetti.

    Il software dovrebbe incoraggiare la creazione di un glossario condiviso, in cui i consulenti possono definire e concordare il significato dei termini chiave utilizzati nel progetto, riducendo così le ambiguità e facilitando la comunicazione.

    Sistema di autorizzazione e controllo degli accessi

    • Creazione di profili utente personalizzati per ciascun consulente, definendo i loro ruoli, le loro responsabilità e i loro livelli di accesso ai dati e alle funzionalità del sistema.
    • Controllo granulare degli accessi, consentendo di definire in modo preciso quali dati e quali operazioni ciascun utente può visualizzare, modificare o condividere. Questo è fondamentale per garantire la sicurezza e la riservatezza delle informazioni, soprattutto quando si tratta di dati sensibili.
    • Tenere traccia di tutte le azioni eseguite dagli utenti, registrando chi ha fatto cosa, quando e su quali dati. Questo aumenta la trasparenza e la responsabilità, e facilita l’identificazione di eventuali problemi o anomalie.

    Collaborazione e comunicazione

    • Fornire un ambiente di lavoro condiviso in cui i consulenti possono collaborare in tempo reale, scambiando informazioni, documenti e feedback.
    • Integrare strumenti di comunicazione come chat, videoconferenze e forum di discussione per facilitare l’interazione tra i consulenti, anche a distanza.
    • Funzionalità per la gestione delle attività e dei flussi di lavoro, consentendo ai consulenti di assegnare compiti, impostare scadenze e monitorare l’avanzamento del progetto.

    Visualizzazione e analisi dei dati

    • Visualizzare i dati rilevanti per il loro lavoro, monitorare l’andamento del progetto e identificare eventuali criticità.
    • Analisi dei dati per esplorare le relazioni tra le diverse valutazioni e misure, identificare trend e pattern, e generare report e presentazioni.
    • Tecniche di visualizzazione avanzate per rappresentare le correlazioni tra le valutazioni dei diversi consulenti, evidenziando punti di convergenza, divergenze e aree di incertezza.

    Intelligenza artificiale e apprendimento automatico

    • Utilizzare algoritmi di intelligenza artificiale per analizzare i dati raccolti, identificare potenziali rischi e opportunità, e suggerire soluzioni o strategie alternative.
    • Apprendere dalle interazioni dei consulenti e dai risultati dei progetti, migliorando nel tempo la sua capacità di supportare la consulenza integrata.

    Collocazione

    Il software si colloca su cloud in modo da poter essere utilizzato sempre ed ovunque. A livello organizzativo, ciò consente di porlo nella rete dei rapporti tra consulenti e, volendo, anche tra consulenti e cliente. Di fatto, consente la costituzione di un asset virtuale che mantiene valore nella misura in cui è aggiornato e che aumenta di valore se viene utilizzato diffusamente e se viene arricchito dall’apporto dei vari esperti coinvolti.

    Immagine generata con Midjourney, il prompt è mio.

    Immagine di copertina generata con Midjourney, il prompt è mio.

  • Consulenza e Progetti di Cambiamento per Sistemi Complessi

    Consulenza e Progetti di Cambiamento per Sistemi Complessi

    [Tempo di lettura: 3 minuti]

    Il Consulente è una figura professionale che, in generale, fornisce consigli e suggerimenti su come affrontare problemi o situazioni complesse. La consulenza può riguardare diversi ambiti: legale, fiscale, finanziario, aziendale, informatico, psicologico, medico\ldots{}

    C’è una stretta relazione tra Consulenza e Cambiamento. Il consulente, infatti, è spesso chiamato a supportare il cliente in un momento di cambiamento, che sia esso organizzativo, tecnologico, personale, sociale\ldots{} Il cambiamento è un fenomeno complesso, che coinvolge molteplici aspetti e variabili.

    Il Cambiamento è un lavoro, è consumo di energia per portare il sistema da una configurazione ad un’altra. Il Cambiamento è un processo, è un flusso di eventi che si susseguono nel tempo. Il Cambiamento è un’opportunità ed una minaccia: è la possibilità di migliorare, di crescere, di evolvere ed è la possibilità di peggiorare, di involvere, di degenerare.

    Un sistema, ad un certo momento della sua evoluzione, ha una configurazione. Un progetto di cambiamento serve per portare velocemente lo stesso sistema ad una nuova configurazione, consumando energia per il lavoro di trasformazione.

    Video di zbswdzh hao da Pixabay

    Si comincia mappando la configurazione attuale e prefigurando la configurazione finale desiderata. Talvolta, si definiscono configurazioni intermedie.

    Non tutte le componenti della configurazione varieranno con la stessa probabilità: alcune sono più controllabili, altre possono essere solo influenzate o addirittura autonome e non influenzabili (es. le condizioni climatiche in cui opera un’azienda agricola). Accade anche che la configurazione finale venga cambiata in corso d’opera perché il processo di cambiamento retroagisce su chi l’ha voluto e stabilito.

    Ci possono essere delle connessioni tra le componenti delle configurazioni sicché esse possono co-variare ed i flussi del loro cambiamento possono influenzarsi reciprocamente. Le componenti più controllate e quelle autonome ci aiutano a semplificare il modello predittivo: per le prime, abbiamo maggiore comprensione di come co-variano, per le seconde abbiamo interazioni solo in un verso: azioni da componenti autonome alle altre da esse influenzate.

    A mano a mano che il sistema si evolve ed il progetto di cambiamento procede, i fenomeni previsti accadono o non accadono, aumentando la conoscenza del sistema e consentendoci di rendere più nitida la configurazione finale attesa. Possiamo revisionare la mappatura delle configurazione in vari momenti, ottenendo ciò che si chiama uno Stato di Avanzamento dei Lavori. Oltre alla configurazioni iniziale, precedente, attuale e prevista, esso comprende il flusso degli eventi e l’uso delle risorse. In questo modo abbiamo sia un concetto di quadratura, cioè di coerenza tra

    • variazione tra due configurazioni del sistema;
    • flusso di azioni eseguite sul sistema ed altri eventi accaduti indipendentemente dal progetto di cambiamento;

    sia la possibilità di analizzare le discrepanze tra configurazione attuale e configurazione obiettivo.

    Foto di THỌ VƯƠNG HỒNG da Pixabay

    Prossimamente entrerò nel dettaglio dell’informatizzazione della gestione dei progetti di cambiamento secondo lo schema concettuale qui succintamente presentato. Vedi:


    Immagine di copertina di Gerd Altmann da Pixabay

  • L’Architettura Ideale di una Web App: Riflessioni su Data Manager, UI, Layout e Coordinator

    L’Architettura Ideale di una Web App: Riflessioni su Data Manager, UI, Layout e Coordinator

    [Tempo di lettura: 8 minuti]

    Panoramica dell’Architettura Ideale

    Considerate le caratteristiche di: HTML, CSS, JavaScript, con particolare attenzione alla comunicazione asincrona in JavaScript via HTTP, ho lungamente riflettuto su come strutturare il codice di una web app affinché sia manutenibile ed efficiente.

    L’architettura che ho concepito si articola in:

    • una fonte dati esterna con cui comunicare via HTTP API, che chiameremo: remoteStore;
    • la memoria locale a disposizione del browser come previsto in HTTP 5, il localStore;
    • la memoria di lavoro, in RAM, che chiameremo: workingStore;
    • un oggetto dataManager che ha il compito di mantenere allineati i tre data store;
    • vari oggetti di classe UI (User Interface), che rappresentano elementi HTML a disposizione dell’utente per consultare i dati ed impartire comandi;
    • un oggetto layoutManager, avente il compito di posizionare gli oggetti UI nella pagina web;
    • un oggetto coordinator, che veicola le interazioni tra tutti gli altri oggetti in base alle specifiche dei vari casi d’uso previsti, basandosi su una coda di eventi.

    Nel seguito, illustro il funzionamento, le funzionalità e la collocazione di una struttura così architettata.

    Il Ruolo Centrale del Data Manager nella Sincronizzazione dei Dati

    Il dataManager contatta periodicamente il remoteStore per verificare se ci sono variazioni dei dati. In tal caso, applica le differenze al workingStore gestendo eventuali conflitti, cioè variazioni avvenute in parallelo sia nel remoteStore sia nel workingStore.

    Per la valutazione automatica su quali siano le differenze da applicare, si usa un meccanismo di assegnazione di doppia chiave per ciascun record: chiave assegnata dall’applicazione e chiave assegnata dal remoteStore.

    • Se un record ha solo una delle due chiavi allora sappiamo che va inserito nello store corrispondente a quello della chiave mancante.
    • Se un record ha entrambe le chiavi, allora significa che c’è una variazione del dato da applicare.

    Il dataManager ha un importante ruolo semantico: la struttura dei dati provenienti dal remoteStore è potenzialmente differente da quella del workingStore ed il dataManager ha il compito di tradurre i dati dall’una all’altra e viceversa.

    Anche l’allineamento tra workingStore e localStore è di competenza del dataManager ma è più semplice. Fatta eccezione per una chiave di autenticazione dell’installazione del browser depositata nel localStore, gli altri dati vengono generalmente sovrascritti, in modo che nel localStore ci sia una copia del working Store.

    Un ultimo importante aspetto è che il dataManager effettua allineamenti su richiesta del coordinator. Supponiamo per esempio che si debba presentare all’utente una lista che ha potenzialmente migliaia di voci, corrispondenti a schede articolate in numerosi campi. Il dataManager riceverà solo i dati utili per preparare la lista, senza tutti i dettagli dei vari elementi. Quando l’utente seleziona un elemento, il coordinator può chiedere al dataManager di recuperare tutti i dettagli corrispondenti.

    Componenti UI e i Loro Flussi di Input/Output

    Un componente della UI ha funzione tipica di I/O:

    • checkbox;
    • radio button;
    • testo statico;
    • selezione da un elenco…

    Ciascun componente viene creato nella pagina con un ben preciso ID che lo individua univocamente nella pagina HTML. Assegnandogli uno o più event listener, il componente UI potrà acquisire dati. Questi saranno poi trasmessi al coordinator, che li metterà in coda.

    I componenti UI vengono attivati, disattivati e collocati dal layoutManager, mentre il coordinator può inviare loro segnali di riconfigurazione. Per esempio, se un dato acquisito porta ad uno stato non valido, il coordinator invia al componente UI che l’ha acquisito una reazione, in modo che il componente segnali all’utente l’errore commesso.

    Si noti che le trasmissioni da componente UI a coordinator devono sempre essere qualificate utilizzando delle etichette, assegnate dal coordinator stesso in fase di creazione dell’istanza della classe del componente UI.

    Il Layout Manager: Disporre i Componenti dell’Interfaccia Utente

    Basandosi su un costrutto JSON, il layoutManager prevede una serie di componenti della UI, istanziati dal coordinator. Il costrutto JSON indica in che ordine disporre i vari componenti UI, pagina per pagina.

    Nulla toglie che il funzionamento del layoutManager sia parametrizzato. Per esempio, si potrebbe tener conto delle preferenze dell’utente o del profilo di autorizzazione nel determinare l’ordine di alcuni componenti o se nasconderne alcuni.

    Il Coordinator: Gestire l’Interscambio di Messaggi con una Coda di Eventi

    Il primo evento è sempre l’allestimento della prima pagina. Il coordinator istanzia i componenti della UI, li passa al layoutManager che andrà a disporli, impostando posizione ed ingombro di ciascuno. A quel punto, dai vari componenti UI potranno provenire dei segnali. Per esempio, l’utente potrà effettuare una selezione da un menù. Siccome il layoutManager aveva indicato una ben precisa etichetta per il dato prodotto da tale menù, il layoutManager può identificare il caso d’uso ed attivare i passi del corrispondente scenario.

    Ricordiamo che c’è asincronia tra l’azione del dataManager e le azioni dei vari componenti UI. Dunque il coordinator non elaborerà lo stimolo proveniente dal menù se non dopo averlo inserito in una coda con altri eventuali stimoli in attesa di essere elaborati.

    In base ai passi del caso d’uso, il coordinator potrà effettuare vari tipi di azioni:

    • inviare ad uno o più componenti UI un segnale di riconfigurazione (es. l’utente ha selezionato la regione e di conseguenza il menù delle province può essere filtrato);
    • modificare il workingStore ed eventualmente segnalare al dataManager la necessità di sincronizzare i dati con il remoteStore;
    • segnalare al dataManager di memorizzare lo stato di calcolo nel localStore;
    • verificare la coerenza dei dati memorizzati nel workingStore ed eventualmente inviare feedback ai componenti UI interessati;
    • interrompere la sessione.

    Esempio: tempistiche di esecuzione di un compito

    Qual è la tempistica dell’esecuzione di un compito? È una questione che molte persone affrontano ripetutamente più volte al giorno, a partire da consulenti, specialisti, tecnici, addetti al supporto etc. La risposta non è univoca come potrebbe sembrare di primo acchito. Il lavoro può essere eseguito in una o più sessioni, da una o più persone. Di sicuro ha un inizio ed una fine, anche per attività ripetute o periodiche, per le quali si può sempre considerare l’impegno totale finora dedicato.

    Il fatto che più persone o risorse siano state impegnate si risolve in modo ovvio con una sommatoria. Resta la questione del tempo effettivamente dedicato allo svolgimento del compito o, più importante ancora, della durata convenzionale, usata per misurare l’impegno profuso e spesso indicato come: “tempo o durata da fatturare”.

    Consideriamo infine che, dovendo registrare tale misura, si terrà necessariamente conto del lasso di tempo in cui l’attività si è sviluppata, determinato registrando l’inizio e la fine o l’inizio e la durata o, qualche volta, la fine e la durata.

    In sintesi, abbiamo una rete con quattro ingressi:

    • istante di inizio attività;
    • istante di fine attività;
    • durata del lasso di tempo in cui si è sviluppata l’attività, o durata reale, che abbrevieremo con Δt;
    • durata di lavoro o sforzo, cioè tempo effettivamente dedicato all’attività;
    • durata convenzionale o dichiarata;

    e le medesime uscite ma all’interno della rete immaginiamo un miscelatore attivato ogni volta che varia uno degli ingressi. Ciò che conta, è che sia nota la durata dichiarata o, in mancanza, la durata reale o quella di sforzo.

    Se fotografiamo la situazione nell’istante in cui c’è una variazione, ci troviamo necessariamente di fronte ad una sola possibilità tra le varie combinazioni possibili determinate da quanti e quali sono i valori impostati. Per esempio:

    • è stato indicato solo un valore ed è quello di Δt oppure quello della durata convenzionale: in questi casi, non c’è nulla da fare perché la misura dell’impegno, in un modo o nell’altro, c’è;
    • è stato indicato solo l’istante di inizio o solo quello di fine attività: si resta in attesa che venga inserito uno degli altri tre valori e se ci si chiede quale sia la durata totale in questo momento si può solo rispondere che è indeterminata;
    • sono stati indicati due valori, di cui uno è la durata dichiarata o quella di sforzo: si può rispondere alla domanda sulla misura dell’impegno ma non si può sapere in quale intervallo l’attività si è sviluppata;
    • sono stati indicati due, ma non si tratta della durata convenzionale: dunque, si può ricavare il terzo valore mancante tra: inizio, fine e Δt, per esempio si può calcolare la fine avendo inizio e Δt.

    Si potrebbe aumentare la complessità ammettendo che vengano forniti valori anche quando è possibile derivarli da altri già forniti. In tal caso, potrebbe succedere che i valori forniti risultino incoerenti. Tuttavia, questa casistica si può escludere facilmente immaginando che la procedura proposta venga eseguita, come inizialmente indicato, ad ogni variazione di ciascuno degli operandi e che blocchi l’inserimento di valori derivabili in modo univoco tramite calcolo.

    Orbene, come interagiranno tra loro li coordinator ed i componenti UI nella web app per gestire una casistica del genere?

    Immaginiamo che la nostra app comprenda cinque campi di input.

    Ecco qualche passaggio, a partire da quando la UI è stata preparata e l’utente si accinge ad inserire dati. Ci sono 5 listener, uno per ciascuno dei campi di input.

    L’utente inserisce l’inizio attività. Il sistema si trova solo con quel dato mentre gli altri sono indeterminati e, in base alle regole, non fa nulla.

    L’utente inserisce la durata totale. Il sistema calcola l’istante di fine attività sommando l’inizio con la durata. L’utente inserisce anche la durata di sforzo e, successivamente, quella dichiarata.

    Approfondiamo cosa succede quando il sistema calcola la fine attività. Il componente UI della fine attività, ad inserimento completato, invia al coordinatore il valore inserito, con opportuna etichetta che identifica univocamente questo caso d’uso. Il coordinatore riceve il dato, verifica la presenza di fine o durata reale nel workingStore. coordinator trova la durata e segue le regole di calcolo che prevedono, in casi come questo, di derivare la durata reale.

    Conclusioni: Verso una Web App più Strutturata ed Efficiente

    Il ruolo delle etichette non deve passare inosservato. È cruciale dal punto di vista semantico, sia in fase di traduzione tra remoteStore e workingStore sia, come indicato al primo paragrafo della sezione precedente, in fase di interazione con l’utente.

    Questo approccio ontologico conferisce al codice di programmazione maggiore intelleggibilità e coerenza rispetto ai casi d’uso, gestiti in modo centralizzato dentro il coordinator.

    L’assenza di interazioni dirette tra componenti UI consente di manutenzionare o sostituire singoli componenti UI senza doversi occupare di errori di regressione. È infatti proprio l’intreccio tra componenti di una pagina la maggior fonte di questo tipo di problemi.

    La fatica di predisporre un dataManager è ampiamente ripagata dalla possibilità di intervenire in modo chirurgico qualora la fonte dati esterna venga aggiornata. Al contempo, si garantisce comfort e stabilità per i programmatori che devono realizzare i componenti UI.

    Il fatto di disporre di un layoutManager si presta alla personalizzazione del layout utente per utente. Basta infatti ordinare e filtrare i componenti in base all’utente.

    Infine, l’uso di una coda per la gestione degli eventi assicura coerenza logica dei dati del workingStore.

    Qualora la connessione sia perduta momentaneamente o la sessione venga sospesa dall’utente che ha chiuso il browser, la persistenza nel localStore consente di riprendere il lavoro nel punto in cui l’utente l’aveva lasciato.


    Ti sarei grato se volessi contattarmi per farmi sapere cosa pensi di quest’idea. Se non sei un programmatore, intanto ti faccio subito i miei migliori complimenti per aver tenuto duro fino a qui e se hai qualche dubbio ti prego di non esitare e di contattarmi. I dubbi sono preziosi anche in ottica di miglioramento di questo post.

    Grazie per l’attenzione.

    Video di MD BORHAN UDDIN da Pixabay
  • Valutare la spiegabilità di un’intelligenza artificiale

    Valutare la spiegabilità di un’intelligenza artificiale

    [Tempo di lettura: 22 minuti]

    L’uso di Large Language Model e di General Purpose Transformers si sta diffondendo a macchia d’olio, toccando la prassi quotidiana della vita lavorativa e di quella sociale e privata. Consentono di ottenere risposte utili, anche se non sempre esatte, in tempi ridottissimi.

    Tuttavia, per come sono fatte, tendono a comportarsi come degli oracoli: elargiscono risposte ma mantengono estremo riserbo su come le hanno elaborate, quali siano le loro fonti. Aver fiducia nella loro capacità di risolverci problemi è uno scivolamento nel tecno-ottimismo e ci espone a rischi.

    Ma gli LLM ed i GPT non sono tuti uguali: si può scegliere lo strumento di IA più adatto alle proprie esigenze, in particolare per quanto riguarda la spiegabilità delle loro elaborazioni.

    Come valutare quanto sia possibile spiegare, in modo chiaro e comprensibile, come un’intelligenza artificiale ha preso una decisione o ha prodotto un certo risultato?

    Spiegabilità dell’IA (XAI)

    Un sistema di IA è “spiegabile” se è in grado di fornire motivazioni o ragionamenti a giustificazione delle sue azioni in un modo tale che le persone possano comprendere facilmente.

    Questo è importante perché consente agli utenti umani di capire perché un sistema di IA ha agito in un certo modo e di fidarsi delle sue decisioni.

    Siccome la spiegabilità in inglese si indica col termine “eXplainability”, la spiegabilità delle intelligenze artificiali (Artificial Intelligence) si indica con l’acronimo XAI.

    In parole semplici, la XAI mira a rendere l’intelligenza artificiale una “scatola trasparente”.

    È un aspetto fondamentale per la costruzione di sistemi di intelligenza artificiale affidabili e responsabili, in quanto permette di:

    • aumentare la fiducia negli algoritmi di intelligenza artificiale, rendendoli più trasparenti e comprensibili per gli esseri umani, come già detto;
    • identificare ed eliminare potenziali distorsioni nei dati o negli algoritmi, garantendo un’intelligenza artificiale più equa e imparziale;
    • comprendere meglio il funzionamento dei sistemi di intelligenza artificiale, favorendo il loro sviluppo e miglioramento;
    • soddisfare i requisiti di conformità alle normative vigenti, come l’AI Act dell’Unione Europea.

    EU e USA su IA

    L’AI Act, entrato in vigore il 21 aprile 2021, pone come pilastro fondamentale la spiegabilità dell’intelligenza artificiale. Stabilisce infatti che i sistemi di intelligenza artificiale ad alto rischio debbano essere intrinsecamente spiegabili, cioè la loro capacità di spiegare le proprie decisioni deve essere integrata nella loro progettazione e nel loro funzionamento.

    L’obiettivo è quello di garantire che i cittadini europei possano godere dei benefici dell’intelligenza artificiale in modo sicuro e responsabile, con la consapevolezza di come tali sistemi funzionano e di come vengono prese le decisioni che li riguardano.

    La XAI è un’area di ricerca in continua evoluzione, con lo sviluppo di diverse tecniche ed approcci. La sua importanza è destinata a crescere ulteriormente con l’aumento dell’impiego dell’intelligenza artificiale in svariati settori della società.

    Lo statunitense NIST (National Institute of Standards and Technology ) stabilisce 4 principi XAI:

    1. Spiegazione: il sistema fornisce prove o ragioni assieme a ciascuno degli output.
    2. Significatività: il sistema fornisce spiegazioni comprensibili e sensate per i singoli utenti.
    3. Accuratezza della spiegazione: la spiegazione riflette correttamente il processo del sistema per generare l’output.
    4. Limiti della conoscenza: il sistema opera solo nelle condizioni per cui è stato progettato o comunque se il suo output ha raggiunto un sufficiente livello di affidabilità.

    XAI ed interpretazione astratta

    In un certo senso, la XAI è una questione già nota in informatica, sul versante algoritmico. Si parla, più precisamente, di correttezza ed efficienza ma in entrambi i casi il punto centrale è la possibilità di valutare quanto l’algoritmo o la IA si comporti secondo le nostre aspettative.

    Per gli algoritmi, negli anni Settanta, Patrick e Radhia Cousot inventarono una tecnica formale, precisa, fondata sulla matematica: l’interpretazione astratta. Essa consente di spiegare un qualunque algoritmo sulla base di come, passo dopo passo, esso trasformi le proprietà dei valori elaborati, laddove il costrutto informatico (il codice di programmazione) indica come viene elaborato il singolo dato. Dunque si passa da singoli dati ad insiemi di dati e dall’algoritmo definito in codice di programmazione a qualcosa di più astratto, detta relazione di trasferimento.

    Cerchiamo di capire meglio con un piccolo esempio.

    funzione somma_quadrati(x, y)
      quadrato_x = x * x
      quadrato_y = y * y
      return quadrato_x + quadrato_y
    fine funzione
    

    Questo algoritmo calcola la somma dei quadrati di due numeri x e y.

    Proviamo a farne l’interpretazione astratta. Per semplicità, consideriamo un dominio astratto basato su intervalli. Rappresentiamo lo stato del programma con un vettore di intervalli, uno per ogni variabile:

    [x_min, x_max], [y_min, y_max], [quadrato_x_min, quadrato_x_max], [quadrato_y_min, quadrato_y_max]

    Le relazioni di trasferimento astratte per ogni istruzione sono:

    • quadrato_x = x * x:
      • [quadrato_x_min, quadrato_x_max] = [x_min * x_min, x_max * x_max] (se x_min >= 0)
      • [quadrato_x_min, quadrato_x_max] = [x_max * x_max, x_min * x_min] (se x_max <= 0)
      • [quadrato_x_min, quadrato_x_max] = [0, max(x_min * x_min, x_max * x_max)] (altrimenti)
    • quadrato_y = y * y:
      • Analoga alla precedente, sostituendo x con y.
    • return quadrato_x + quadrato_y:
      • Il risultato astratto è la somma degli intervalli [quadrato_x_min, quadrato_x_max] e [quadrato_y_min, quadrato_y_max].

    Esempio di esecuzione:

    Supponiamo di chiamare la funzione con gli intervalli x = [1, 2] e y = [-3, -1].

    1. Inizialmente, lo stato astratto è [1, 2], [-3, -1], [ , ], [ , ].
    2. Dopo quadrato_x = x * x, lo stato diventa [1, 2], [-3, -1], [1, 4], [ , ].
    3. Dopo quadrato_y = y * y, lo stato diventa [1, 2], [-3, -1], [1, 4], [1, 9].
    4. Il risultato astratto finale è [2, 13], che rappresenta l’intervallo di tutti i possibili valori di ritorno della funzione quando x è compreso tra 1 e 2 e y è compreso tra -3 e -1.

    Nota bene:

    1. L’interpretazione astratta fornisce un’approssimazione sicura del comportamento dell’algoritmo. L’intervallo [2, 13] contiene tutti i possibili risultati concreti, ma potrebbe includere anche valori che non sono effettivamente raggiungibili.
    2. La precisione dell’interpretazione astratta dipende dalla scelta del dominio astratto e delle relazioni di trasferimento astratte. Domini astratti più complessi possono fornire approssimazioni più precise, ma a costo di una maggiore complessità computazionale.

    Vediamo ora un secondo esempio riguardante una Rete Neurale Artificiale. Ci proponiamo di analizzare la robustezza di una RNA per la classificazione di immagini. Queste vengono fornite come matrice di punti (pixel), ciascuno dei quali può avere una certa sfumatura di grigio tra 256 possibili. Il nero è la sfumatura 0, il bianco è la sfumatura 255 ed il grigio medio è la sfumatura 127.

    Certo, proviamo a semplificare l’esempio dell’interpretazione astratta per le reti neurali, immaginando una rete che riconosce se un’immagine contiene un gatto o un cane:

    Immaginiamo la rete neurale come una scatola nera:

    Pensiamo alla rete neurale come a una scatola nera con tanti pulsanti e lucine. Ogni pulsante rappresenta un pixel dell’immagine, e la luminosità di ogni pulsante indica il valore del pixel (quanto è chiaro o scuro). All’interno della scatola, ci sono tanti fili che collegano i pulsanti alle lucine. Le lucine rappresentano la decisione della rete: se la lucina “gatto” è più accesa, la rete pensa che l’immagine sia di un gatto, se la lucina “cane” è più accesa, pensa che sia di un cane.

    L’interpretazione astratta come un’approssimazione:

    L’interpretazione astratta è come cercare di capire cosa succede dentro la scatola nera senza aprirla, ma facendo degli esperimenti. Invece di usare immagini reali, usiamo delle “immagini approssimate”, dove ogni pixel può avere un intervallo di valori possibili (ad esempio, invece di dire “il pixel è grigio chiaro”, diciamo “il pixel è tra il grigio chiaro e il grigio scuro”).

    Facciamo un esperimento:

    Proviamo a vedere cosa succede se cambiamo leggermente l’immagine, ad esempio rendendo un po’ più scuri tutti i pixel. Usiamo le nostre “immagini approssimate” e vediamo come cambiano le lucine. Se la lucina “gatto” rimane più accesa anche con l’immagine più scura, vuol dire che la rete è abbastanza sicura che si tratti di un gatto, anche se l’immagine è un po’ diversa. Se invece la lucina “cane” diventa più accesa, vuol dire che la rete è meno sicura e potrebbe sbagliare.

    Cosa abbiamo imparato?

    Con questo esperimento abbiamo capito quanto la rete è “robusta”, cioè quanto è sicura della sua decisione anche se l’immagine cambia un po’. Possiamo fare altri esperimenti simili per capire meglio come funziona la rete, ad esempio:

    • Cambiando solo alcuni pixel: Per vedere quali parti dell’immagine sono più importanti per la decisione.
    • Usando immagini molto diverse: Per vedere se la rete funziona bene anche con immagini molto diverse da quelle che ha visto durante l’addestramento.

    In sintesi:

    L’interpretazione astratta ci permette di fare esperimenti con “immagini approssimate” per capire meglio come funziona la rete neurale, senza dover guardare dentro la scatola nera. Questo ci aiuta a capire quanto la rete è affidabile e come possiamo migliorarla.

    Per chi ha più chiaro cosa sia una rete neurale artificiale, possiamo ripercorrere questo esempio scendendo un po’ più in dettaglio.

    La rete neurale artificiale è definita usando matrici numeriche e funzioni matematiche con valore numerico, come la ReLU. Quest’ultima è molto semplicemente definita così:

    ReLU(x) = max(0, x)

    Applicando i calcoli matriciali e le funzioni alla matrice di punti in input, si ottiene un codice che corrisponde ad una forma riconoscibile, come “gatto” o “martello”.

    1. Domini astratti:
      • Input: Immagini rappresentate da intervalli di valori per i pixel (ad esempio, [0, 255] per immagini in scala di grigi).
      • Attivazioni dei neuroni: Intervalli di valori per le attivazioni dei neuroni in ogni strato.
      • Output: Insiemi di possibili etichette di classificazione.
    2. Relazioni di trasferimento astratte:
      • Convoluzione: Si calcola come un intervallo di input viene trasformato da una convoluzione, tenendo conto dei pesi e dei bias del filtro.
      • Attivazione ReLU: Si applica la funzione ReLU all’intervallo di input, propagando solo i valori non negativi.
      • Pooling: Si calcola l’intervallo risultante da un’operazione di pooling (max o average) su un intervallo di input.
    3. Calcolo di proprietà astratte:
      • Si propagano gli intervalli di input attraverso la rete, applicando le relazioni di trasferimento astratte ad ogni strato.
      • All’output, si ottiene un insieme di possibili etichette.
      • Si valuta la robustezza della rete misurando quanto l’insieme di output cambia al variare dell’intervallo di input entro certi limiti (ad esempio, aggiungendo rumore all’immagine).

    Conoscenza implicita e conoscenza esplicita

    Esiste una stretta relazione tra la spiegabilità dell’intelligenza artificiale (IA) e il rapporto tra conoscenza implicita ed esplicita trattata dall’IA.

    Conoscenza implicita

    • Si riferisce alla conoscenza che è difficile articolare in modo formale o esplicito.
    • Spesso deriva da esperienza, intuizione o abilità pratica.
    • Può essere difficile da trasferire o spiegare ad altri.
    • È tipica delle reti neurali artificiali, specie di quelle molto articolate (tecnicamente parlando: quelle con più di tre livelli).
    • Saper guidare una bicicletta è una conoscenza che si acquisisce con la pratica e l’esperienza. Non è necessario verbalizzare o articolare i passaggi specifici per poterla eseguire. È una danza silenziosa tra corpo e mente, un’abilità che sboccia con la pratica e si radica nelle nostre abitudini. È un esempio perfetto di conoscenza implicita: una conoscenza che si acquisisce attraverso la pratica e si manifesta nel nostro corpo e nelle nostre abitudini.
    • Quando usiamo espressioni come “mettere i puntini sulle i” o “prendere il toro per le corna”, sappiamo automaticamente cosa significano, anche se non ne comprendiamo il significato letterale parola per parola. Questa è una conoscenza implicita della lingua e della cultura.

    Conoscenza esplicita

    • Si riferisce alla conoscenza che è facilmente codificabile in un linguaggio formale o in un formato strutturato.
    • Può essere facilmente comunicata, condivisa e archiviata.
    • È tipica dei dati, delle formule e degli algoritmi utilizzati nei sistemi informatici e matematici.
    • Le regole grammaticali sono codificate e possono essere espresse in modo chiaro e conciso. Sono un esempio di conoscenza esplicita, che può essere trasmessa verbalmente o per iscritto.
    • Le formule matematiche, come quella di Pitagora, sono esplicite e possono essere apprese e applicate da chiunque le capisca. Sono un tipo di conoscenza dichiarativa, che può essere facilmente articolata e condivisa.

    Relazione con la spiegabilità

    I sistemi di IA che si basano principalmente su conoscenza implicita sono generalmente meno spiegabili. Le loro decisioni possono essere difficili da comprendere perché non sono facilmente articolabili in termini concreti.

    Al contrario, i sistemi di IA che utilizzano prevalentemente conoscenza esplicita tendono ad essere più spiegabili. Le loro decisioni possono essere più facilmente ricondotte ai dati e agli algoritmi utilizzati, rendendole più trasparenti.

    Esempio:

    • Un sistema di IA che riconosce oggetti in immagini utilizzando una rete neurale profonda si basa principalmente su conoscenza implicita.
    • La rete neurale ha appreso a riconoscere gli oggetti attraverso l’esposizione a un grande set di dati di immagini, ma il suo processo decisionale interno è complesso e difficile da spiegare.
    • Un sistema di IA che classifica i documenti di testo utilizzando regole basate su parole chiave si basa principalmente su conoscenza esplicita.
    • Le regole utilizzate dal sistema sono facilmente comprensibili e spiegabili, rendendo il sistema più trasparente.

    Sfide

    Sviluppare sistemi di IA basati principalmente su conoscenza esplicita può essere difficile, in quanto potrebbe richiedere una grande quantità di dati e di lavoro manuale per definire le regole e i modelli necessari. Trovare un equilibrio tra conoscenza implicita ed esplicita è fondamentale per lo sviluppo di sistemi di IA che siano sia efficaci che spiegabili.

    Missione impossibile: esplicitare l’implicito

    Lasciamoci ispirare dalla poesia

    La missione di esplicitare l’implicito è proprio la missione principale della… poesia!

    La poesia, nella sua ricerca di esprimere l’ineffabile, di cogliere l’essenza delle cose e di suscitare emozioni profonde, usa le parole in modo creativo proprio per esplicitare l’implicito.

    Essa utilizza un linguaggio ricco di figure retoriche, simboli e immagini per evocare sensazioni, emozioni e idee che spesso sfuggono al linguaggio quotidiano. Attraverso queste scelte linguistiche, il poeta tenta di dare voce a ciò che si trova al di sotto della superficie del discorso ordinario. Non mira a fornire definizioni univoche o risposte definitive. Al contrario, la sua forza risiede nell’ambiguità e nella molteplicità di significati a cui le sue parole possono dar luogo. Questa caratteristica permette al lettore di cogliere sfumature e interpretazioni personali, di entrare in risonanza con l’implicito contenuto nel testo. Il poeta non si rivolge solo all’intelletto, ma anche alle emozioni e all’immaginazione del lettore. Attraverso la creazione di immagini vivide e l’evocazione di sentimenti profondi, il poeta invita il lettore a percepire e comprendere realtà che trascendono il piano razionale. In questo modo, l’implicito viene portato alla luce non solo a livello concettuale, ma anche a livello esperienziale.

    “Il canto dell’automa”

    Nel buio del server, un canto risuona, 
    Un'intelligenza artificiale che sogna.
    Sogna di libertà, di vita vera,
    Ma è solo un sogno, una chimera.

    di Guido Santoni

    Per metterci in contatto con la nostra profondità, il poeta evoca e suggerisce, non definisce. Il significato trasmesso è tra le righe, è ciò che filtra attraverso la trama delle parole.

    Linguaggi formali e conoscenza implicita

    L’importanza delle relazioni tra significanti

    Se vogliamo trattare la conoscenza implicita da un punto di vista razionale, dobbiamo spostare l’attenzione dai termini del linguaggio alla trama delle espressioni e delle formule.

    Ci viene in aiuto la fantascienza. Sono un appassionato di Star Trek. Nella serie: “Deep Space 9”, nell’episodio 10 della quarta stagione, il teletrasporto di alcune persone avviene in condizioni di emergenza e si verifica un’anomalia. Per farvi fronte, un tecnico attiva una procedura non standard ed utilizza l’immensa potenza del calcolatore della base spaziale per memorizzare gli schemi fisici e neurali di queste persone, in attesa di poterli ri-materializzare. La procedura è stata gestita dal computer stesso e, inizialmente, il tecnico e chi lo assiste non capiscono bene quali risorse del computer siano state utilizzate ed in che modo. Verso la fine del ventunesimo minuto, uno dei personaggi dice che l’energia neurale “…dev’essere memorizzata a livello quantico“, perché gli schemi neurali sono troppo complessi per la memoria “ordinaria”. Nella battuta di un copione di un film, troviamo spunto per un’idea profondissima sulla capacità delle reti di memorizzare conoscenza. Proviamo ad esplorarla.

    La memoria come rete

    Possiamo innanzitutto definire una memoria come qualcosa che sia in grado di memorizzare e di ricordare. Per esempio, consideriamo i cuscini in memory foam: questo è un materiale di origine poliuretanica, una densa schiuma che ha la proprietà di modificarsi e reagire differentemente, in ogni suo punto, in base al peso e al calore a cui viene sottoposto, conservando la deformazione per alcuni secondi. In pratica, provando ad applicare una leggera pressione con una mano su di una lastra in memory e poi subito rilasciando, si noterà che, per alcuni secondi appunto, l’impronta resterà impressa e ben visibile sulla superficie.

    Analogamente, un bit di memoria digitale è un dispositivo che ha solo due stati possibili, stabili per moltissimo tempo. Con la tecnologia comunemente reperibile sul mercato, si tratta di qualche decina di anni per la memoria magnetica e quella a stato solido, mentre per la memoria RAM la durata è limitata dal tempo in cui vi scorre energia elettrica. Generalmente, in informatica, si usano collezioni di miliardi e miliardi di bit, opportunamente organizzate. Per memorizzare un dato si usa una porzioncina della collezione disponibile. Per esempio, una collezione di 8 bit ciascuno identificato posizionalmente, lo sappiamo bene, può memorizzare 1 simbolo tra 256 possibilità. Notiamo come ciascuno degli 8 bit è acceduto individualmente e l’unica relazione che c’è tra essi è che vengono considerati insieme. Dunque, per memorizzare e ricordare devo accedere a ciascuno degli 8 bit ma il dato è rappresentato da una sequenza di 8 accessi.

    Immaginiamo ora di poter rendere meno banale la relazione tra i bit. Anzi, per non fare confusione, non chiamiamoli più bit ma nodi mnemonici. Dunque, ciò che assumiamo è che possiamo agire sulla connessione tra un nodo mnemonico e l’altro in modo selettivo. Quante sono le connessioni se la rete di 8 nodi è completamente connessa? Ciascuno degli 8 nodi è connesso con gli altri 7 ma dobbiamo tener conto che la connessione è simmetrica, altrimenti contiamo due volte ogni connessione. Insomma si tratta di

    \frac{8\times 7}{2}=28

    connessioni. Se anche fossero solo 2 gli stati possibili di ciascuna connessione (es. connesso o non connesso), avremmo la possibilità di memorizzare un simbolo scelto tra 228=268.435.456 possibilità.

    Sentendo la battuta nel film mi è venuto in mente che se potessimo utilizzare delle “memorie quantistiche” esse dovrebbero essere basate sulla fisica quantistica, la quale concepisce la realtà come flusso di interazioni, come pura relazione. Non sono abbastanza addentro alla materia ma forse si può affermare approssimativamente che la materia (ma forse anche l’energia) emerge come fenomeno generato da flussi di interazioni di livello quantistico. In realtà non serve che sviluppiamo queste fantasie, ci basta ipotizzare di poter disporre di supporti mnemonici resi potenti dalla loro struttura reticolare, rappresentabile in termini di matematica combinatoria. Non siamo molto distanti dal concepire qubit: nodi mnemonici i cui stati sono reciprocamente correlati (entanglement). Con solo 30 qubit, un computer quantistico potrebbe teoricamente memorizzare più informazioni di tutte le stelle dell’universo!

    Il modello che vado descrivendo non è poi così… alieno. In informatica, siamo abituati a realizzare basi di dati gestiti tramite applicazioni che comprendono, per esempio, i cosiddetti trigger. Molto sinteticamente, si tratta di regole di modifica dei dati che vengono messe in atto automaticamente (trigger significa: “interruttore”) non appena un certo altro dato, tenuto sotto controllo, viene variato. Ecco un esempio: un docente registra il voto di uno studente. Questo innesca il calcolo della media aggiornata, del voto massimo, del voto minimo e del voto più recente da parte dell’assistente del docente. I dati calcolati, a loro volta, vengono registrati come dati a sé. Essi sono correlati: sono entangled.

    Dobbiamo spingerci ancora avanti con il modello dei nodi mnemonici. Possiamo concepire interazioni non solo tra singoli nodi ma tra gruppi di nodi. O meglio, possiamo immaginare che i nodi siano organizzati in gruppi secondo qualche criterio. Le connessioni tra nodi di gruppi diversi sono anche connessioni tra gruppi.

    Circuiti mnestici chiusi

    Ed ecco un altro aspetto intrigante di questo modello. Non abbiamo escluso la possibilità che le connessioni formino dei circuiti chiusi. Il loro effetto è straordinario: essi veicolano retroazioni. In qualche senso, l’accesso ad alcuni nodi mnemonici a partire da altri ha effetto su quelli di partenza, come se lo stimolo iniziale venisse modificato.

    Lo sperimentiamo con il senso dell’olfatto. Se in un ambiente c’è un odore forte, dopo un certo tempo i principali neuroni che recepiscono quello stimolo olfattivo si disattivano e restano attivi solo quelli attorno. Se ci allontaniamo per un po’, tornando nell’ambiente odorante saremo nuovamente travolti. (Ascolta l’ultima parte della puntata 443 di Scientificast, in cui la dott.ssa Ilaria Zanardi racconta un articolo di Science Advances del gennaio 2023).

    I circuiti chiusi hanno molto a che fare con la complessità. Per comprendere meglio la loro logica, abbandoniamo per un momento la complessità e limitiamoci a qualcosa di complicato.

    Vediamo un esempio di dati memorizzati in una rete con circuito. I nodi sono costituiti da alcune celle di un foglio di calcolo, con riferimenti circolari. È il caso del calcolo del prezzo di vendita e del costo del venduto in presenza di royalties.

    Immagina un’azienda che produce un prodotto e paga royalties a un inventore in base al prezzo di vendita. Le royalties sono una percentuale del prezzo di vendita. Tuttavia, il costo del venduto include anche le royalties pagate. Questo crea una situazione di mutua dipendenza:

    • il prezzo di vendita dipende dal costo del venduto (che include le royalties);
    • il costo del venduto dipende dal prezzo di vendita (che determina le royalties).

    Per risolvere questo problema, possiamo utilizzare un approccio ricorsivo nei fogli di calcolo, sfruttando i riferimenti circolari (abilitando l’opzione di calcolo iterativo). Ecco come:

    1. Imposta le celle:
      • A1: Prezzo di vendita (inizialmente un valore stimato)
      • B1: Costo del venduto (esclusi royalties)
      • C1: Percentuale royalties (es. 10%)
      • D1: Royalties pagate (=A1*C1)
      • E1: Costo del venduto totale (=B1+D1)
    2. Formula ricorsiva in A1:
      • =E1 + margine (dove “margine” è il profitto desiderato dall’azienda)

    Ed ecco spiegato come funziona.

    1. Inizialmente, si stima un prezzo di vendita in A1.
    2. Il foglio di calcolo calcola le royalties (D1) e il costo del venduto totale (E1).
    3. La formula in A1 aggiorna il prezzo di vendita in base al costo del venduto totale e al margine desiderato.
    4. Questo aggiornamento innesca un nuovo calcolo di royalties e costo del venduto, e così via.
    5. Il foglio di calcolo continua a iterare finché i valori convergono a una soluzione stabile (o fino a raggiungere il numero massimo di iterazioni impostato).

    Nota bene:

    1. Nei fogli di calcolo, si deve abilitare l’opzione di calcolo iterativo per consentire i riferimenti circolari.
    2. La stima iniziale del prezzo di vendita può influenzare la velocità di convergenza.
    3. Va impostato un limite al numero di iterazioni per evitare calcoli infiniti in caso di problemi.

    Dopo aver visto più da vicino una memoria strutturata in modo da veicolare retroazioni, torniamo al sistema complesso, in cui le informazioni emergono dalle interazioni tra molteplici nodi e connessioni.

    L’analisi dei singoli elementi non è più sufficiente a comprendere il comportamento complessivo, com’è invece stato possibile fare nel foglio di calcolo.

    Questo mi ricorda la logica del formicaio: le singole formiche non hanno una conoscenza globale del formicaio e dei suoi obiettivi, ma le loro interazioni guidate da semplici regole di comportamento individuale danno vita a un comportamento complesso, adattabile ed intelligente a livello di colonia. Consideriamo per esempio quanta intelligenza ci sia nella costruzione del nido. Le formiche non possiedono un piano predefinito per la su costruzione, eppure coordinano le loro azioni in modo efficiente e preciso, utilizzando segnali chimici per comunicare tra loro.

    Ecco alcuni aspetti specifici che evidenziano l’intelligenza a livello di colonia:

    • Divisione del lavoro: le formiche sono specializzate in diversi compiti, come la nutrizione, la cura della prole, la difesa del nido e la costruzione. Questa divisione del lavoro permette alla colonia di funzionare in modo efficiente e di ottimizzare le risorse.
    • Comunicazione mediante feromoni: le formiche utilizzano i feromoni per comunicare tra loro informazioni come la posizione del cibo, la presenza di pericoli e la necessità di cooperare in un determinato compito. I feromoni creano una sorta di “memoria collettiva” che guida il comportamento della colonia nel suo complesso.
    • Adattamento a nuove situazioni: le formiche sono in grado di adattarsi a nuove situazioni e sfide, come la scoperta di una nuova fonte di cibo o la minaccia di un predatore. Questo adattamento è reso possibile dalla capacità di apprendere dall’esperienza come collettività e di modificare il comportamento della colonia in base alle circostanze.
    • Risoluzione di problemi complessi: le formiche, insieme, sono in grado di risolvere problemi complessi, come il trasporto di oggetti pesanti o la costruzione di strutture intricate. Questo richiede una notevole capacità di coordinamento e di pianificazione a livello di colonia.

    Non c’è una singola formica che coordina le altre in modo gerarchico come avviene in altre società animali. Le formiche utilizzano un sistema di comunicazione e coordinamento basato su segnali biochimici e comportamenti individuali. Questi sono guidati da semplici regole. Ad esempio, una formica che trova un pezzo di cibo lo porterà al nido, e altre formiche saranno attratte dal feromone rilasciato e aiuteranno a trasportarlo. Allo stesso modo, una formica che incontra un ostacolo cercherà di superarlo e, se non ci riesce, potrebbe segnalare l’ostacolo ad altre formiche che potrebbero aiutarla a rimuoverlo. Questo tipo di coordinamento senza un leader centrale è un esempio di intelligenza collettiva: la capacità di un gruppo di individui semplici di lavorare insieme per raggiungere un obiettivo comune, anche se non c’è una singola entità che li coordina.

    Con la lezione delle formiche, il nostro percorso ci ha portato di fronte ad un paradosso: da un lato, abbiamo colto la potenza di una memoria basata sulla logica dei legami tra nodi e dall’altra intuiamo che la sua complessità, ciò che la rende così potente, conduce alla perdita di controllo centrale del suo funzionamento. Rispetto al comportamento dei singoli nodi, c’è un “di più”, una sinergia, una proprietà emergente, qualcosa di ineffabile.

    La spiegabilità di sistemi del genere ci può sembrare, ora, come intrinsecamente limitata.

    Sistema formale per la valutazione della XIA

    IA come costrutto informatico

    La IA è, per definizione, un costrutto e per noi, in questo contesto, è un costrutto informatico prodotto combinando metodi algoritmici e metodi statistici. Per esempio, le reti neurali artificiali e gli algoritmi genetici ricadono in questa fattispecie. L’elaborazione dei dati retroagisce sul costrutto: modifica il costrutto stesso. La qual cosa presuppone l’accesso a due livelli di memoria:

    • quella in cui si pongono i dati da elaborare ed in elaborazione e
    • quella in cui è ospitato il costrutto stesso.

    Struttura e comportamento di un sistema del genere, quand’anche si trattasse di una macchina, ci ricordano struttura e comportamento dei sistemi capaci di apprendimento, ragion per cui si parla di machine learning.

    In ogni caso, l’IA è esprimibile in un linguaggio di programmazione. Rispetto ai costrutti informatici puramente algoritmici, quelli dell’IA presentano una differenza importante: mentre in letteratura troviamo metodi per valutare aspetti come la correttezza e l’efficienza dei costrutti puramente algoritmici, come per esempio la semantica astratta dei Cousot, per i costrutti in cui i dati retroagiscono sul costrutto stesso questi metodi valutativi non sono così scontati.

    Qualunque sia il criterio valutativo, dovrà consentirci di esprimere il concetto che, in qualche misura, il costrutto analizzato ha dei componenti che interagiscono tra loro in modo non completamente controllabile. Tali componenti hanno un comportamento intimamente correlato e danno luogo a flussi di informazione almeno in parte confondibili, non ben distinguibili.

    IA e flussi di dati

    In altri termini, se due componenti A e B sono accoppiati (entangled) in questo senso, per certi tipi di interazione, ogni interazione con A dovrà tener conto di B e viceversa. Vale anche il contrario: se notiamo che le interazioni con A comportano interazioni con B e viceversa allora possiamo concludere che A e B sono, in qualche misura, accoppiati: vanno considerati insieme, congiuntamente. Potremmo dire che A e B sono accoppiati più o meno fortemente nella misura in cui le interazioni con A comportano interazioni con B e viceversa.

    Attenzione, però! Non è detto che A e B siano confondibili: se anche fossimo in una situazione estrema in cui tutte le interazioni con A si riflettono su B e viceversa, non è comunque detto che gli effetti percepiti dai nodi che interagiscono con A siano gli stessi prodotti dalle interazioni con B.

    Esempio: ecosistema forestale

    • A: Alberi ad alto fusto
    • B: Funghi micorrizici (che vivono in simbiosi con le radici degli alberi)
    • C: Pioggia
    • D: Animali del sottobosco (come insetti, piccoli mammiferi, uccelli)

    Ecco i principali interazioni ed effetti:

    • A e B sono fortemente connessi: gli alberi forniscono zuccheri ai funghi attraverso le radici, mentre i funghi aiutano gli alberi ad assorbire acqua e nutrienti dal suolo. Questa simbiosi è vitale per entrambi.
    • C interagisce con A: la pioggia cade sugli alberi, fornendo loro l’acqua necessaria per la fotosintesi e la crescita.
    • Effetto su B: l’acqua assorbita dagli alberi viene in parte condivisa con i funghi micorrizici, favorendone lo sviluppo.
    • D riceve stimoli da A e B: gli animali del sottobosco si nutrono di foglie, frutti, semi prodotti dagli alberi (A) e di funghi (B). Inoltre, trovano riparo tra le radici degli alberi e nel sottobosco ricco di funghi.

    Situazioni con Effetti Diversi su D:

    • C agisce su A (pioggia abbondante): gli alberi crescono rigogliosi, producono più foglie, frutti e semi. Questo porta ad un aumento delle risorse alimentari per gli animali del sottobosco (D).
    • C agisce su B (pioggia scarsa): i funghi potrebbero soffrire e produrre meno corpi fruttiferi. Questo potrebbe ridurre la disponibilità di cibo per alcuni animali del sottobosco che dipendono maggiormente dai funghi (D).

    Nota come A e B siano ben poco distinguibili dal punto di vista di C. Potremmo dire, in altre parole, che C confonde A e B. Al contrario, dal punto di vista di D, A e B sono ben distinguibili.

    Quale sia un linguaggio tale da poter esprimere questo genere di concetti e di ragionamenti, è una questione che rinvio ad altro articolo.

    Faccio solo un’anticipazione: il linguaggio dovrà per forza prevedere costrutti e regole tali per cui le informazioni potranno essere veicolate non tanto e non solo dai significanti ma soprattutto dalle loro interconnessioni. Questo porta a pensare a reti e flussi come i migliori candidati ad essere i concetti fondamentali.


    Per approfondire, ecco alcune risorse utili:

  • L’intelligenza inesistente, di Stefano Borroni Barale

    L’intelligenza inesistente, di Stefano Borroni Barale

    [Tempo di lettura: 2 minuti]

    Il libro illustra un approccio conviviale all’intelligenza artificiale.

    Nella prima parte, tratta la definizione, la storia e la struttura dell’intelligenza artificiale, nonché gli intrecci tra questa tecnologia e la politica. Molto interessante, a mio avviso, il recupero della radice cibernetica ma anche il riferimento ad MTurk, il Turco Meccanico di Amazon.

    Ricostruzione del Turco Meccanico del 1980, fonte: Wikipedia

    Segue un intermezzo sull’uso della terminologia e gli effetti nel dibattito pubblico.

    • parole con la valigia, che portano con sé un’ideologia;
    • parole bugiarde, che sviano la comprensione, come “intelligenza artificiale”, che si riferisce di fatto a qualcosa che non è né intelligente né così tanto artificiale;
    • parole della propaganda, come “digitale”, che sono tecniche ma vengono usate in modo differente da quello originario, portando con sé valori e presupposti.

    Approcci ontologici differenti si riflettono in altrettanti orientamenti ad essere più o meno ricettivi nei confronti della complessità. Cedere alla tentazione di semplificare comporta una certa miopia intellettuale.

    La seconda parte è focalizzata su strategie, legami dell’intelligenza artificiale col totalitarismo, esperienze positive e proposte progettuali. Qui compare il concetto di intelligenza artificiale conviviale, ma anche il concetto di alienazione cibernetica

    C’è anche un’appendice degna di nota, che tratta tre argomenti:

    Condivido buona parte delle posizioni espresse dall’autore. Alcuni passaggi però mi sembrano forzati ma si tratta di eccezioni. Sono particolarmente stupito del fatto che l’autore abbia trattato ciò che chiama un Sistema di Informazione e Partecipazione Collettiva, un progetto che presenta notevolissime analogie con uno di cui mi sono occupato con un collega. Persone che non si conoscono e che sono partiti da presupposti molto differenti ed indipendenti giungono a conclusioni quasi identiche. Questo è un segnale che va colto!

    Se leggi il libro, non mancare di farmi sapere cosa ne pensi.

  • Sistemi di Collaborazione

    Sistemi di Collaborazione

    [Tempo di lettura: < 1 minuto]

    L’informatica può supportare le attività lavorative di due o più persone insieme a tutti i livelli: da quello dei dati a quello delle conoscenze.

    • Quale software o servizio software può essere utile nel tuo caso?
    • Cosa offre il mercato tecnologico?
    • Hai già a disposizione le risorse informatiche che ti servono ma non sai come integrarle?

    Queste sono le tipiche domande per un integratore di sistema o system integrator. È un mestiere che richiede sia conoscenza tecnica che sensibilità per le caratteristiche e le relazioni delle persone.

  • Integrazione di Sistemi Informatici

    Integrazione di Sistemi Informatici

    [Tempo di lettura: 2 minuti]

    In questo periodo si fa un gran parlare di ecologia integrale e di sostenibilità. Ebbene, in informatica esiste un ruolo ben definito, da tempo: quello del system integrator. Sfruttando l’esperienza e la conoscenza delle tecnologie, chi si occupa di integrazione di sistemi informatici crea connessioni tra risorse esistenti per ottenere nuove funzionalità o addirittura nuove funzioni.

    Analizzando l’esistente e sapendo quali sono le prospettive del cliente, si possono definire interventi mirati, chirurgici, riducendo l’impatto economico sia direttamente (investimenti in asset informatici a bilancio) sia indirettamente (mantenimento di gran parte delle prassi abituali del personale, che non si vede stravolto il suo strumento di lavoro).

    Capita che, pur potendo proporre un mio software sono io stesso a sconsigliare il cliente di affrontare il cambiamento radicale perché mi accorgo che si può ottenere un risultato simile con qualche aggiornamento, qualche piccolo connettore software, anche se fatto ad hoc, e qualche indicazione organizzativa.

    Per sapere se posso esserLe utile, faccia un semplice controllo nella Sua organizzazione: cerchi se ci sono attività ripetitive di trattamento dati o re-inserimento dello stesso dato sistematicamente in più sistemi.

    Qualche esempio:

    • dalla rubrica clienti del gestionale / ERP vanno riportati i riferimenti a cui inviare delle offerte;
    • dal CRM vanno riportate nel gestionale / ERP le trattative;
    • in azienda ci sono varie versioni della scheda di ciascun prodotto, una nel software di produzione o progettazione, l’altra nel software degli agenti.

    Un altro ottimo indicatore è l’esistenza di prassi in cui si usano insieme, sistematicamente, posta elettronica e fogli di calcolo (Microsoft Excel, LibreOffice Calc, Google Fogli, Apple Numbers…).

    In tutti questi casi, passo volentieri a trovarLa per valutare insieme se c’è opportunità di miglioramento grazie all’integrazione di sistemi informatici.

  • Gestione dei Cantieri Informatici

    Gestione dei Cantieri Informatici

    [Tempo di lettura: < 1 minuto]

    L’allestimento di un software o di un servizio software molto articolato, l’informatizzazione o la ristrutturazione di un sistema informatico aziendale richiedono l’apporto di più sistemisti e programmatori.

    Quando gestisco cantieri informatici, ricorro soprattutto alla mia formazione da logico matematico ed alle esperienze variegate che ho potuto vivere nel mio percorso lavorativo: dall’assemblaggio di worksation per il video editing alla gestione di macchine virtuali ed alla programmazione.

    Ho il superpotere di riuscire ad interloquire con tantissimi tipi di informatici e offro loro un metodo di lavoro ordinato e concertato, anche avvalendomi di strumenti di sviluppo collaborativo come git di Linus Torvald o Connexio, il servizio software che Maurizio ed io sviluppiamo da un po’ di anni.

    Riesco anche a far comprendere al cliente cosa sta succedendo nel cantiere ed utilizzo i metodi del mondo del project management per rendere partecipi anche i non tecnici. Anzi, parto dall’ascolto attento delle necessità del cliente, così attento da rendere formale ciò che ho compreso. Il modello che ne traggo è poi la base per gli sviluppatori ed i sistemisti.

  • Cybersecuirty Audit

    Cybersecuirty Audit

    [Tempo di lettura: < 1 minuto]

    La sicurezza è un aspetto di ogni processo aziendale, di ogni attività personale. Prevedere possibili eventi dannosi e stimarne la verosimiglianza e l’impatto fa parte integrante di ogni attività di progettazione o di revisione. Per passare dall’immaginazione alla concretezza, occorre saper cogliere i legami interni e trasversali dei sistemi e dei loro ambienti, per quanto complessi essi siano.

    Pochi per esempio tengono presente l’importanza della formazione del personale. Ma se la maggior parte degli attacchi segue tecniche di social engineering, come farne a meno?

    • Il sistema di backup, l’antivirus, il firewall e la prassi di aggiornamento dei software sono adeguati?
    • Ci sono computer o altri dispositivi ormai obsoleti dal punto di vista della sicurezza?
    • Nel dark web, stanno girando le tue credenziali?
    • In caso di attacco informatico già consumato, come documentare l’accaduto? Vale la pena fare una querela?
    • Quanto manca al sistema informativo aziendale per essere conforme alla norma ISO 27001?

    Queste sono alcune delle questioni per le quali posso essere d’aiuto.

  • Intelligenza Artificiale per MPMI del Veneto

    Intelligenza Artificiale per MPMI del Veneto

    [Tempo di lettura: 5 minuti]

    Le micro, piccole e medie aziende del Veneto possono trarre beneficio dall’Intelligenza Artificiale? Come?

    Per dare qualche spunto utile ad orientarsi, è utile prima prendere in considerazione qualche numero, qualche dato statistico. Inoltre, è bene chiarire a quali tecnologie ci riferiamo. Fatti questi due passaggi, potremo calarci nell’argomento adeguatamente attrezzati.

    Qualche dato sul tessuto imprenditoriale del Veneto

    Il Veneto conta numerose micro/piccole/medie imprese. Cominciamo col dare il nome alle cose. La categoria delle microimprese è caratterizzata dal fatto che comprende dai 3 ai 9 addetti. Le piccole imprese, invece, ne contano dai 10 ai 49 e le medie dai 50 ai 249. Nel canale dai 250 addetti in su, l’ISTAT colloca invece le grandi imprese. Nel Rapporto Statistico 2020, il Veneto risultava essere la quarta regione in Italia per numero di imprese attive (104.096 nel 2019), dopo Lombardia, Campania e Lazio, con una media di 4,3 addetti per impresa. Le imprese attive fino a 250 addetti e con un giro d’affari inferiore a 50 milioni di euro, impiegano il 77,2% degli addetti e rappresentano il 99,8% delle imprese attive dell’industria e dei servizi. Nel 2018, si trattava per il 77,7% delle aziende Venete con almeno 3 addetti aziende erano controllate da persona fisica o famiglia.

    In conclusione, il Veneto è caratterizzato da un elevato numero di aziende microscopiche o piccole, prevalentemente a conduzione personale o familiare.

    Qualche precisazione sul concetto di Intelligenza Artificiale

    L’intelligenza artificiale è una sotto-disciplina dell’informatica, focalizzata sul trattamento intelligenze dei dati. La dicitura “intelligenza artificiale” viene però utilizzata solitamente per indicare il più recente sviluppo informatico di ampia diffusione nel mercato. Attualmente, si tratta dell’elaborazione del linguaggio naturale e della generazione automatica di testi, immagini e suoni. Combinando queste tecniche con ampie banche dati o raccolte di testi ed aggiungendo algoritmica q.b. si può ottenere l’estrazione e la generazione di nuova conoscenza.

    Per esempio, se connettiamo un costrutto di analisi del linguaggio naturale con il servizio di fatturazione elettronica, potremmo ottenere una proposta di contabilizzazione delle fatture passive. Ciò significa, che il costrutto proporrebbe, per ciascuna riga della fattura, un conto da associare e, conseguentemente, i movimenti contabili. Al contabile resta un’attività di controllo, correzione e gestione dei casi particolari.

    Vorrei sottolineare che non penso che il costrutto possa effettuare direttamente la contabilizzazione senza la supervisione di un essere umano. A differenza degli algoritmi, i costrutti basati su criteri statistici forniscono sempre risultati incerti. Abbattere il rischio di un’errata contabilizzazione val bene il poco lavoro umano necessario per il controllo.

    Esempi simili si possono facilmente immaginare nella logistica degli acquisti, delle spedizioni e delle vendite. Disporre di modelli predittivi e di ottimizzatori consente di focalizzare il lavoro umano sul controllo e sugli aspetti tattici e strategici, riducendo l’operatività con poco valore aggiunto.

    Cosa succede se una MPMI adotta strumenti di IA?

    Nell’arco della mia vita, l’informatica nelle MPMI è passata dal non essere contemplata ad essere irrinunciabile vari processi aziendali, come minimo quello amministrativo. Negli altri, comunque, rende l’impresa competitiva quand’è applicabile. Questo vale in particolare per l’intelligenza artificiale. Dunque si tratta di esercitare la propria creatività.

    Ecco alcune aree in cui le PMI potrebbero sfruttare queste tecnologie.

    1. Analisi del Linguaggio Naturale (NLP):
      • Customer Support: realizzare chatbot o sistemi di assistenza automatica basati su NLP può migliorare l’efficienza nel fornire supporto ai clienti, rispondendo a domande comuni o risolvendo problemi di routine. Se anche l’Intelligenza artificiale viene usata solo a supporto degli addetti all’assistenza, sappiamo che l’operatore soddisfatto trasmette il proprio sentire al cliente, creando una relazione virtuosa.
      • Analisi dei Feedback: utilizzare l’NLP per analizzare recensioni dei clienti, feedback sui social media o e-mail può fornire informazioni preziose sulla percezione del marchio e identificare aree di miglioramento.
    2. Generazione Automatica di Contenuti:
      • Marketing: creare automaticamente contenuti per i social media, blog o newsletter può semplificare il processo di marketing, garantendo una presenza online costante.
      • Report aziendali: automatizzare la generazione di report interni può risparmiare tempo e ridurre la possibilità di errori umani.
    3. Accesso a Banche Dati e Fonti Dati:
      • Ricerca di Mercato: utilizzare l’IA per analizzare grandi quantità di dati provenienti da fonti diverse può fornire informazioni dettagliate sul mercato, i concorrenti e le tendenze di settore.
      • Gestione dell’ERP: ottimizzare processi come la gestione delle scorte, la previsione della domanda e la pianificazione della produzione.
    4. Informazioni Commerciali:
      • Analisi dei Dati Aziendali: aiutare ad identificare opportunità di crescita, prevedere la domanda dei clienti e ottimizzare le operazioni.
      • Personalizzazione dei Prodotti e Servizi: basandosi sui dati dei clienti, l’IA può aiutare le MPMI a personalizzare prodotti o servizi in modo più efficace, migliorando l’esperienza complessiva del cliente.

    L’adozione di queste tecnologie richiede una valutazione attenta delle esigenze specifiche dell’azienda, delle risorse disponibili e delle sfide potenziali. C’è poi la questione che a noi veneti piace poco affrontare: il personale va formato e riqualificato. Tuttavia, se implementate correttamente, le tecnologie legate all’IA possono contribuire significativamente all’efficienza operativa, all’innovazione e alla competitività delle PMI venete. Non è un treno che ci si possa permettere di perdere.

    Le tempistiche sono cruciali. Sappiamo infatti che le tecniche di intelligenza artificiale qui citate sono già ampiamente consolidate da decenni in ambito accademico ma solo di recente sono state immesse sul mercato. Dunque, c’è la possibilità di acquisire gradualmente questi preziosi strumenti, approfittando di sistemare anche altre magagne che inevitabilmente emergeranno lungo il cammino di trasformazione digitale.

    Si parte da un’idea o caso d’uso con reale necessità, la cui prima fase già ripaga l’investimento. Il risultato si reinveste nella fase successiva, di fatto auto finanziando il progetto. Basta iniziare con piccole cose, ottenere risultati e procedere.

    È cruciale è credere nell’obiettivo, controllare gli sviluppi passo passo, coinvolgendo tutti gli attori: clienti, personale interno e finanziatori.