Questo post è una introduzione ai sistemi complessi. Verranno date una serie di definizioni, analizzeremo vari aspetti della complessità, i costi e i vantaggi. Infine ci focalizzeremo sul system thinking, vedremo che relazione ha con l'architettura dell'informazione, e proverò a dare alcuni suggerimenti a chi ha il compito di progettare, innovare o riorganizzare un sistema complesso.
Alcune definizioni
Un sistema è un'entità composta da un insieme di elementi che interagiscono fra di loro.
Un sistema è dinamico se la sua struttura, le sue componenti o il suo comportamento cambiano nel tempo, pur mantenendo una propria identità.
Un sistema è teleonomico se ha un fine. I sistemi biologici - e dunque anche gli esseri umani - sono tutti teleonomici: il fine ultimo è sopravvivere e riprodursi. Gli artefatti e i servizi, ma anche le organizzazioni sociali, hanno il fine per cui sono stati progettati e costruiti. L'esempio più lampante di sistema (iper)complesso non teleonomico è l'atmosfera terrestre (il tempo atmosferico).
Viene definita fitness di un sistema teleonomico la sua capacità di raggiungere i propri fini, i propri scopi. L'efficacia è la capacità di realizzare gli scopi, l'efficienza è la capacità di farlo con risorse limitate.
Un sistema è adattativo se è capace di adattarsi ed apprendere a seguito dell'interazione con l'ambiente, anche in assenza di un controllo o gestione da parte di una singola entità. E dunque di aumentare il proprio fitness (la propria efficacia ed efficienza) o di mantenerla ad un livello accettabile nelle condizioni avverse.
Un sistema è robusto se riesce a mantenere la propria fitness nonostante eventi avversi senza modificare radicalmente la propria struttura.
Un sistema è resiliente se riesce a mantenere la propria fitness nonostante eventi avversi attraverso meccanismi di adattamento e apprendimento.
Topologia, struttura, architettura del sistema
Un sistema è definito principalmente da:
- le sue componenti (oggetti, agenti, risorse materiali, risorse immateriali)
- le relazioni fra le componenti
- il flusso di interazioni che intercorrono fra le componenti
In un sistema complesso la struttura topologica - la sua architettura - è il risultato della sua evoluzione, e ha un effetto sulle caratteristiche funzionali del sistema e sulla capacità di rispondere alle perturbazioni. Ha inoltre un ruolo nella comparsa di proprietà emergenti.
Nei sistemi dinamici la topologia e l'architettura non sono fisse.
Componenti di un sistema
Le componenti possono essere più o meno eterogenee e differenziate. Possono essere degli agenti, ovvero entità capaci di agire all'interno del sistema (tipicamente, gli esseri umani), risorse materiali (oggetti di varia complessità), e immateriali: informazioni, conoscenza, regole, procedure e così via.
La diversità delle componenti, ancor più della loro numerosità, è una misura della complessità di un sistema.
Relazioni fra elementi
La complessità di un sistema è in buona parte legato alle relazioni fra le componenti e fra le componenti e il sistema stesso. Sono queste relazioni che determinano la struttura topologica, le proprietà e la capacità del sistema di adattarsi ed apprendere.
Le relazioni si possono innescare fra gli elementi, fra i sottosistemi, fra le gerarchie del sistema (ovvero relazioni verticali nella gerarchia: bottom-up, top-down), e fra il sistema e l'ambiente. In un sistema dinamico le relazioni evolvono nel tempo.
L'analisi di queste relazioni può permettere di identificare delle regole, degli schemi, dei pattern che definiscono una sorta di grammatica del sistema.
Per comprendere un sistema vanno studiate le componenti, le risorse, le relazioni, i flussi di interazioni che intercorrono fra gli elementi, fra i sottosistemi, e fra il sistema e l'ambiente.
Component vs interaction dominant
L'importanza delle relazioni varia da sistema a sistema, secondo un continuum che va dai sistemi component dominant, in cui sono i componenti a definire il sistema e le relazioni sono scarse e poco importanti, ai sistemi interaction dominant, in cui le relazioni fra i componenti sono più importanti dei componenti stessi.
Component dominant
Nei sistemi component dominant le caratteristiche del sistema sono attribuibili non alle proprietà delle relazioni ma alle proprietà degli elementi che lo compongono; sono sistemi tendenzialmente statici, il loro funzionamento è relativamente indipendente dal contesto, il loro comportamento è lineare e può essere approssimato da equazioni lineari; non esibiscono forme di emergenza, apprendimento o adattamento.
Interaction dominant
Nei sistemi interaction dominant le componenti interagiscono nel tempo per produrre risultati emergenti caratterizzati da comportamenti non lineari (transizioni improvvise, biforcazioni). Il comportamento complesso non può essere ridotto alle componenti del sistema, ma alle componenti e alla loro interazione nel tempo. Il livello di analisi non può basarsi solo sulle componenti.
Nei sistemi interaction dominant le relazioni sono interdipendenti, non lineari, sia in termini di funzione che di direzione. Le relazioni possono cambiare nel tempo, sono dipendenti dal contesto. L'apprendimento è un processo di auto organizzazione
Aggregazioni
Le aggregazioni sono insiemi di elementi a bassa complessità, fortemente "component dominant". Nelle aggregazioni la struttura non determina le proprietà del sistema. L'aggiunta, la rimozione o la sostituzione di elementi dello stesso tipo non cambia le proprietà del sistema, e nemmeno la scomposizione o l'aggregazione di sottoinsiemi di elementi. Le interazioni fra gli elementi sono assenti o trascurabili.
Una nave container è una aggregazione di elementi (i container). Un e-commerce è un sistema component dominant, e dunque si caratterizza per molti aspetti come una aggregazione. Spesso sono aggregazioni anche quei domìni informativi che sono raccolte di documenti. Anche una biblioteca è una aggregazione, in cui gli elementi principali (i libri) non hanno interazioni fra di loro.
Sistemi scomponibili / modulari
Sono sistemi con una struttura gerarchica, ovvero composti da sotto-sistemi, o moduli. Il comportamento dei moduli è predeterminato, ovvero non è influenzato dal contesto e dal sistema nel suo insieme. Il funzionamento dei moduli non cambia se isolati dal sistema, ed è influenzato solo dagli input che riceve. L'architettura del sistema (ovvero il modo in cui i moduli sono connessi ed interagiscono) determina le proprietà e il comportamento del sistema, ma non influenza i moduli. In sintesi, non c'è una causalità top-down dal macro (il sistema) al meso (i moduli).
Vengono definiti non scomponibili quei sistemi in cui, al contrario, vi è una influenza del sistema sulle parti, e il cui comportamento non è isolabile. Il corpo umano è un sistema non scomponibile (fidatevi sulla parola ;) )
Localizzabilità
Si parla di localizzabilità se vi è corrispondenza fra le componenti del sistema e le funzioni: componenti diverse assolvono funzioni diverse. Il corpo umano, ad esempio, ha una localizzabilità parziale: organi diversi hanno funzioni diverse, ma la divisione non è modulare, in quanto ci sono delle forti interazioni fra componenti e dal sistema (il corpo) alle componenti.
Sistemi complessi
Un sistema complesso è un insieme di componenti che interagiscono (interferiscono, collaborano, competono) per dare luogo a un comportamento complesso. I sistemi complessi sono interaction dominant: le relazioni fra le componenti hanno un ruolo fondamentale nel definire le proprietà e i comportamenti del sistema.
Vi sono diversi gradi di complessità: le aggregazioni sono le meno complesse, i sistemi scomponibili hanno un grado di complessità intermedio, mentre i sistemi non scomponibili interaction dominant sono i più complessi.
Proprietà dei sistemi complessi
In un sistema complesso la struttura determina le proprietà del sistema; l'aggiunta, la rimozione o la sostituzione di elementi, la loro scomposizione o aggregazione può potenzialmente modificare il sistema; generalmente vi sono interazioni importanti fra gli elementi del sistema, di tipo cooperativo (o eccitatorio, o agonistico) o competitivo (inibitorio, antagonistico). Il sistema esercita un'influenza sia sulle componenti che sui moduli che compongono dei sottosistemi.
La complessità e l'essere interaction dominant sono condizioni necessarie per innescare strutture e comportamenti emergenti, capaci di adattarsi e di imparare.
Nei sistemi complessi spesso gli agenti agiscono in parallelo, vi sono forme di coordinamento basate sulle interazioni e sui feedback positivi e negativi.
Non linearità
La non linearità è uno degli aspetti centrali che rendono complesso un sistema. Un sistema è non lineare se l'output non è proporzionale al'input. La non linearità può essere dovuta alla funzione non lineare dell'interazione fra componenti, oppure al fatto che l'interazione fra le componenti non è unidirezionale, ma è soggetta a feedback (positivi) o a loop.
La conseguenza della non linearità è che un input (una causa) relativamente modesta può portare ad output (degli effetti) molto ampi, o addirittura catastrofici. Per catastrofico si intende un effetto che ha una discontinuità di cambiamento dell'output, ovvero un "salto" di discontinuità.
I sistemi caotici sono un caso limite di sistemi non lineari.
Struttura gerarchica
Un sistema complesso ha generalmente una struttura gerarchica, ovvero è composto da sottosistemi. Dunque sia i sistemi scomponibili che i sistemi complessi hanno una struttura gerarchica. La differenza è che nei sistemi complessi le proprietà e il comportamento dei sottosistemi è influenzato dagli altri sottosistemi e dal sistema nel suo complesso. Anche in questo caso non si tratta di dicotomie (sistemi scomponibili vs sistemi complessi) ma di un continuum che va dalla completa modularità a delle interazioni forti fra componenti e fra macro (il sistema), meso (i sottosistemi) e micro (gli elementi).
I sistemi complessi dinamici spesso sono capaci di forme di auto organizzazione bottom-up, in cui la struttura viene creata, nel tempo, a seguito dell'interazione dei componenti.
Reti sovrapposte
In un sistema complesso spesso, fra gli elementi e fra i sottosistemi, intercorrono relazioni di diversa natura, ovvero esistono diverse strutture che si sovrappongono sugli stessi elementi. E dunque è possibile identificare strutture di relazioni diverse e a volte conflittuali. L'esistenza di relazioni di diversa natura viene definita multiplexity.
Sistemi aperti
I sistemi complessi sono generalmente aperti, ovvero hanno delle relazioni e connessioni ricche con l'ambiente circostante e con altri sistemi. L'ambiente e gli altri sistemi possono avere un'influenza sulle proprietà di un sistema complesso aperto.
Confini di un sistema complesso
Un sistema complesso può avere interazioni forti con l'ambiente, con sistemi o con elementi esterni. Questo rende, a volte, difficile identificare il confine, il dentro e fuori di un sistema. E dunque, nell'analizzare un sistema, diventa necessario tener conto di tutto quello che ne influenza la struttura e il comportamento.
Per comprendere i confini, è di nuovo necessario focalizzarsi sugli elementi, sulle relazioni e sui flussi (i processi).
In un sistema aperto può esserci l'ingresso di nuovi elementi e la fuoriuscita di elementi esistenti, una sorta di "permeabilità dei componenti". Questo vale, naturalmente, anche per i sistemi sociali in cui le persone entrano ed escono. Nei sistemi sociali questa permeabilità può avere degli effetti in termini di fitness (efficacia ed efficienza), in quanto cambiano le competenze, le relazioni e, per molti versi, l'identità del sistema sociale stesso.
Per comprendere i confini di un sistema sociale, è fondamentale coinvolgere e comprendere il punto di vista degli attori che ne fanno parte.
Agenti
Spesso i sistemi sono composti da agenti (banalmente, gli esseri umani). Gli esseri umani sono agenti complessi, e i sistemi sociali sono per loro natura complessi, a meno che non vengano stabilite delle regole per renderli più modulari e più semplici da prevedere e governare.
Gli agenti (soprattutto gli agenti umani) rispondono non solo agli scopi del sistema ma anche ai propri scopi personali e a quelli di altri sistemi cui appartengono. La struttura, il comportamento e il funzionamento dei sistemi sociali è determinato dagli individui che lo compongono, e viceversa: il comportamento delle persone è influenzato dai sistemi sociali a cui appartengono. Questa interazione reciproca rende i sistemi sociali non lineari e complessi.
Flessibilità
Un sistema è flessibile nella misura in cui la sua struttura può essere modificata senza che il sistema stesso venga danneggiato (o distrutto). Nel caso di sistemi teleonomici, senza che questo abbia un impatto drammaticamente negativo sulla sua fitness. La flessibilità è dunque la misura di quanto un sistema possa essere modificato in risposta ad un cambiamento (esterno, ma non solo).
In un sistema complesso ad un cambio di struttura può corrispondere una modifica delle proprietà funzionali.
Emergenza
Quando l'interazione fra gli elementi e i sottosistemi genera dei pattern (di struttura o di comportamento) a livello di sistema, si parla di proprietà emergenti del sistema. Emergenti sono le proprietà del sistema che non possono essere riscontrate nei componenti, e non sono riducibili alle caratteristiche delle componenti (riduzionismo).
L'emergenza è dunque il presentarsi di proprietà, strutture e comportamenti che non possono essere spiegati o descritti a livellico gerarchico inferiore. Per comprendere i fenomeni emergenti è necessario osservare il sistema, le parti e gli elementi che lo compongono, la rete di relazioni che li rende possibili: bisogna guardare sia la foresta che gli alberi.
Il comportamento emergente rende il sistema un'entità con una propria identità.
L'emergenza è frutto della non linearità in sistemi interaction dominant, e può essere descritta come l'apparire di pattern di macro livello che nascono dall'interazione degli elementi (livello micro) o dei sottosistemi (livello meso)
In alcune circostanze le proprietà emergenti aumentano la complessità dei comportamenti del sistema (emergent complexity). In altre, la complessità è finalizzata a generare un comportamento prevedibile in circostanze disturbate (emergent semplicity - robustezza)
Auto organizzazione
Uno degli aspetti dell'emergenza è l'auto organizzazione, che ha luogo nel momento in cui vi è una coordinazione di parte degli elementi che avviene senza l'impulso di input esterni. L'auto organizzazione è frutto delle interazioni complesse nei sistemi interaction dominant, e può essere la fonte delle strutture gerarchiche del sistema.
Adattamento e apprendimento
I sistemi complessi teleonomici possono essere capaci di innescare dei cambiamenti dinamici di tipo adattativo, o di apprendimento. In base alle definizioni date un cambiamento è adattativo se aumenta la fitness (la capacità di raggiungere i propri scopi) o se contribuisce a mantenerla in caso di condizioni avverse (che corrisponde al concetto di resilienza). Affinché questo avvenga è necessario che il sistema disponga di una sorta di funzione di fitness, ovvero un modo per stimare la fitness del sistema, e di un insieme di meccanismi capaci di promuovere quei comportamenti che portano ad un aumento della fitness.
Abbiamo parlato di reinforcement learning, meccanismi di apprendimento model free e model based nel post la rotta per Itaca: modelli, percorsi ed usabilità
Rapporto causale
Il comportamento di un sistema è determinato dai rapporti causali che intercorrono sia fra l'ambiente e il sistema che fra gli elementi e fra le componenti del sistema.
Nei sistemi a bassa complessità questi rapporti sono generalmente lineari (ovvero l'ouput è proporzionale all'input) e unidirezionali - ovvero non vi è feedback, oppure vi è esclusivamente feedback negativo, finalizzato a modulare e stabilizzare i processi.
Nei sistemi complessi generalmente anche le relazioni causali lo sono. Le relazioni complesse hanno alcune caratteristiche:
- congiunzione di cause: l'effetto è conseguenza della combinazione e dell'interdipendenza di molteplici cause
- equifinalità: un effetto può essere la conseguenza di cause o processi diversi
- asimmetria: una causa può avere un effetto in alcune circostanze e nessun effetto o effetti radicalmente diversi in circostanze differenti
Misurare la complessità
È possibile misurare il livello di complessità di un sistema? Esistono diversi indicatori:
- il numero di elementi, ma soprattutto il numero di tipologie di elementi diversi: la loro eterogeneità e diversità;
- il numero di collegamenti, ovvero di relazioni, il numero di tipologie di relazioni, e la complessità della rete di relazioni;
- la presenza di relazioni non lineari, di collegamenti di feedback negativo o positivo, di cicli all'interno della rete di collegamenti, e dunque flussi non unidirezionali;
- la presenza di sottosistemi, in una organizzazione gerarchica: macro, meso (con vari livelli), micro; il numero di livelli della struttura gerarchica;
- l'apertura del sistema, e il numero e la complessità di relazioni con l'ambiente circostante.
Complessità descrittiva, costruttiva, predittiva
Complessità descrittiva
Vi è complessità descrittiva quando è difficile descrivere sinteticamente la struttura, le proprietà, il comportamento e - in caso di sistemi teleonomici - la fitness.
Se un sistema ha una bassa complessità descrittiva è facile da comprendere, mentre un sistema ad alta complessità descrittiva è complicato da comprendere, e può risultare necessario creare dei modelli concettuali semplificati.
I sistemi complessi hanno una alta complessità descrittiva. Ma una alta complessità descrittiva potrebbe essere anche sintomo di un sistema disordinato ma non complesso, ovvero un sistema a cui mancano le caratteristiche che rendono un sistema complesso: interaction dominant, relazioni forti, emergenza, fitness. La distinzione fra complesso e disordinato ha un senso solo nei sistemi teleonomici.
Complessità costruttiva
La complessità costruttiva si riferisce a quanto sia complesso ricostruire un sistema - o una sua simulazione.
Complessità predittiva
Si intende la difficoltà a fare delle previsioni sul comportamento futuro di un sistema.
Il comportamento dei sistemi non complessi, soggetti a rapporti causali lineari e unidirezionali, può essere approssimato a delle funzioni lineari.
I sistemi complessi sono caratterizzati da rapporti causali complessi, non lineari e non unidirezionali. In questi casi le funzioni lineari non possono approssimarne il comportamento. Risulta più proficuo utilizzare approcci simulativi non lineari.
I sistemi lineari possono essere rappresentati da modelli di equazione lineare (equation-based modeling); i sistemi complessi da modelli basati su agenti artificiali (agent-based modeling).
Complessità: costi e vantaggi
Che impatto ha la complessità di un sistema teleonomico sulla sua fitness? E quali sono i vantaggi della complessità?
I costi
In questa valutazione probabilmente è necessario distinguere fra sistemi biologici e sistemi teleologici non biologici: artefatti, servizi, sistemi sociali. I primi sono ampiamente ottimizzati in virtù della selezione naturale. Anche i sistemi non biologici sono in parte oggetti a selezione, ma in maniera molto meno spinta.
Un sistema complesso (o anche solo disordinato) è più difficile da gestire, da descrivere (complessità descrittiva), da progettare. Ed è generalmente meno efficiente in termini di rapporto fra output e risorse necessarie.
I sistemi complessi hanno, generalmente, un più alto tasso di ridondanza (più elementi dello stretto necessario), una maggiore diversità di elementi, molteplici modalità di fare una cosa (equifinalità). Tutti questi sono dei costi che, nel breve termine, riducono l'efficienza.
I vantaggi
Un sistema complesso può essere più efficace se le proprietà emergenti, la flessibilità, la capacità di apprendere ne aumentano l'efficacia, ovvero riescono a fare cose che un sistema meno complesso non riesce a fare. E può essere più robusto o resiliente se quelle proprietà gli permettono di sopravvivere ed adattarsi a condizioni avverse.
System thinking
Il system thinking è un approccio e una tecnica finalizzata a fare inferenze affidabili in merito al comportamento di sistemi complessi, attraverso una comprensione approfondita della loro struttura. Il focus è non solo sugli elementi ma anche sulle relazioni, sui flussi, sulle dinamiche e sul comportamento che emerge dal sistema nel suo complesso.
Per comprendere, descrivere ed analizzare un sistema complesso è opportuno adottare questo processo:
- identificare gli elementi del sistema, e crearne una ontologia e delle tassonomie
- identificare le interconnessioni, i legami, le relazioni, e classificarli (ontologia e tassonomie delle relazioni)
- identificare i processi di feedback e i loop (positivi e negativi)
- mappare la struttura del sistema
- identificare le risorse a disposizione del sistema, il loro uso, il flusso e il processo del loro utilizzo; creare un'ontologia e delle tassonomie delle risorse
- identificare i confini del sistema
- identificare e mappare l'ambiente entro cui il sistema opera
- identificare i pattern temporali
- identificare le non linearità
- comprendere come il comportamento di un sistema emerge dall'interazione degli elementi e degli agenti nel tempo
- identificare i cambiamenti nei sistemi dinamici
- creare dei modelli concettuali multipli:
- più prospettive del sistema
- mappare diverse relazioni
- creare modelli sia del sistema nel suo complesso che delle sue parti; permettere una comprensione del sistema su più livelli (macro, meso, micro)
- se possibile e opportuno, creare delle simulazioni per riprodurre e stimare i comportamenti del sistema e per testare i modelli concettuali
- se possibile e opportuno creare delle simulazioni per stimare i possibili cambiamenti dei sistemi dinamici
- comprendere le modalità di intervento per migliorare la fitness del sistema
Design e complessità
Complessità e architettura dell'informazione
Chi si occupa di UX design avrà notato i parallelismi fra il processo proposto dal system thinking e i metodi dell'architettura dell'informazione. Potremmo dire che il system thinking è l'architettura dell'informazione dei sistemi complessi.
Se gli utenti del sistema informativo sono non esperti, è fondamentale creare ANCHE delle rappresentazioni semplificate del sistema complesso, che permettano però agli utenti di scalare a rappresentazioni più complesse.
Complessità e progettazione
Comprendere un sistema complesso è fondamentale per chi deve metterci mano: progettazione ex novo, riprogettazione, semplificazione, innovazione di strutture, processi e funzioni.
Nel momento in cui si vuole innestare un processo di cambiamento, di innovazione, è necessario comprendere il sistema su cui si sta lavorando. E questo vale soprattutto per i sistemi sociali: organizzazioni aziende, comunità.
Nel momento in cui vogliamo intervenire per cambiare qualcosa, ci dobbiamo chiedere quali impatti potrà avere l'intervento:
- sulle relazioni fra gli attori
- sulla struttura del sistema
- sulla sua robustezza
- sulla sua flessibilità
- sulle proprietà emergenti
- sulla sua capacità di adattarsi e apprendere
- sulla resilienza
Questo per evitare di fare danni, ovvero interventi che possono avere conseguenze negative sulla fitness del sistema ma anche degli agenti (il loro benessere).
D'altro canto, è necessario comprendere quanto la complessità garantisca un valore aggiunto (emergenza, flessibilità, resilienza) e quanto invece sia disordine ed entropia, ovvero quella complessità che non ha benefici sulla fitness.
Conclusioni
Nel momento in cui mettiamo mano ad un sistema complesso, dobbiamo
- evitare effetti collaterali avversi: danneggiare il sistema, non ridurre la fitness;
- identificare il disordine (complessità che non porta valore) e semplificare;
- incentivare i cambiamenti e le innovazioni capaci di aumentare la fitness e la resilienza del sistema.