Linguaggio modello

Un linguaggio modello è un metodo per descrivere buone pratiche di progettazione o modelli di organizzazione utile all’interno di un campo di competenza. Il termine fu coniato dall’architetto Christopher Alexander e reso popolare dal suo libro del 1977 A Pattern Language.

Un linguaggio modello può anche essere un tentativo di esprimere la saggezza più profonda di ciò che porta la vitalità all’interno di un particolare campo dello sforzo umano, attraverso una serie di schemi interconnessi. L’aliveness è un termine segnaposto per “la qualità che non ha nome”: un senso di totalità, spirito o grazia, che mentre di forma variabile, è preciso ed empiricamente verificabile. Alcuni sostenitori di questo approccio progettuale affermano che le persone comuni possono usarlo per risolvere con successo problemi di progettazione molto grandi e complessi.

Cos’è un pattern?
Quando un designer progetta qualcosa – sia esso una casa, un programma per computer o una lampada – deve prendere molte decisioni su come risolvere i problemi. Un singolo problema è documentato con la sua posizione tipica (la sintassi) e usa (la grammatica) la soluzione più comune e riconosciuta che si vede in natura, come gli esempi visti nei dizionari. Ciascuna di queste voci è un modello di design unico. Ogni modello ha un nome, una voce descrittiva e alcuni riferimenti incrociati, proprio come una voce di dizionario. Un modello documentato dovrebbe spiegare perché quella soluzione è buona nei contesti del modello.

Modelli elementali o universali come “porta” o “partnership” sono ideali versatili del design, o come trovati nell’esperienza o utilizzati come componenti nella pratica, esplicitamente descritti come risoluzioni olistiche delle forze in contesti e circostanze ricorrenti, sia in architettura, medicina, sviluppo del software o governance, ecc. I modelli potrebbero essere inventati o trovati e studiati, come i modelli di design presenti in natura che caratterizzano gli ambienti umani.

Come tutte le lingue, un linguaggio di pattern ha vocabolario, sintassi e grammatica – ma un linguaggio di pattern si applica ad alcune attività complesse diverse dalla comunicazione. Nei linguaggi pattern per il design, le parti si suddividono in questo modo:

La descrizione della lingua – il vocabolario – è una raccolta di soluzioni nominate e descritte ai problemi in un campo di interesse. Questi sono chiamati modelli di design. Quindi, ad esempio, la lingua per l’architettura descrive elementi come: insediamenti, edifici, stanze, finestre, chiavistelli, ecc.
Ogni soluzione include la sintassi, una descrizione che mostra dove la soluzione si inserisce in un progetto più ampio, più completo o più astratto. Questo collega automaticamente la soluzione in una rete di altre soluzioni necessarie. Ad esempio, le stanze hanno modi per ottenere luce e modi per far entrare e uscire le persone.
La soluzione include la grammatica che descrive come la soluzione risolve un problema o produce un vantaggio. Quindi, se il beneficio non è necessario, la soluzione non viene utilizzata. Forse quella parte del disegno può essere lasciata vuota per risparmiare denaro o altre risorse; se le persone non hanno bisogno di aspettare per entrare in una stanza, una semplice porta può sostituire una sala d’attesa.
Nella descrizione della lingua, la grammatica e la sintassi incrociate dell’indice (spesso con un indice alfabetico alfabetico dei nomi dei modelli) ad altre soluzioni con nome, così il progettista può rapidamente pensare da una soluzione a soluzioni correlate e necessarie e documentarle in modo logico. Nel libro A Pattern Language di Christopher Alexander, i modelli sono in ordine decrescente per dimensione, con un indice alfabetico separato.
La rete di relazioni nell’indice della lingua offre molti percorsi attraverso il processo di progettazione.
Questo semplifica il lavoro di progettazione perché i progettisti possono avviare il processo da qualsiasi parte del problema capiscono e lavorano verso le parti sconosciute. Allo stesso tempo, se il linguaggio del pattern ha funzionato bene per molti progetti, vi è motivo di ritenere che anche un designer che non comprende completamente il problema del design all’inizio completerà il processo di progettazione e il risultato sarà utilizzabile. Ad esempio, gli sciatori che arrivano all’interno devono gettare neve e immagazzinare le attrezzature. La neve disordinata e i pulitori di stivali dovrebbero stare fuori. L’attrezzatura ha bisogno di cure, quindi i rack dovrebbero essere all’interno.

Molti modelli formano una lingua
Proprio come le parole devono avere relazioni grammaticali e semantiche l’una con l’altra al fine di rendere una lingua parlata utile, i modelli di progettazione devono essere correlati l’uno all’altro in posizione e ordine di utilità per formare un linguaggio di pattern. Il lavoro di Christopher Alexander descrive un processo di decomposizione, in cui il progettista ha un problema (forse un incarico commerciale), seleziona una soluzione, quindi scopre nuovi, piccoli problemi derivanti dalla soluzione più ampia. Occasionalmente, i problemi più piccoli non hanno soluzione e deve essere selezionata una soluzione più ampia. Alla fine tutti i restanti problemi di progettazione sono abbastanza piccoli o abbastanza di routine da essere risolti dall’improvvisazione da parte dei costruttori, e il “design” è fatto.

L’attuale struttura organizzativa (gerarchica, iterativa, ecc.) È lasciata alla discrezione del progettista, a seconda del problema. Ciò consente esplicitamente a un designer di esplorare un progetto, partendo da una piccola parte. Quando ciò accade, è comune per un progettista rendersi conto che il problema è in realtà parte di una soluzione più ampia. A questo punto, il design diventa quasi sempre un design migliore.

Nella lingua, quindi, ogni schema deve indicare le sue relazioni con altri schemi e con la lingua nel suo complesso. Ciò consente al progettista di utilizzare il linguaggio una grande quantità di indicazioni sui problemi correlati che devono essere risolti.

La parte più difficile di avere un esperto esterno applica un linguaggio di pattern è infatti quello di ottenere una lista completa e affidabile dei problemi da risolvere. Naturalmente, le persone che hanno più familiarità con i problemi sono le persone che hanno bisogno di un design. Alexander, per esempio, sosteneva l’improvvisazione sul posto da parte di utenti interessati e responsabilizzati, come un potente mezzo per creare soluzioni iniziali su larga scala molto praticabili, massimizzando l’utilità di un progetto e minimizzando la rielaborazione del progetto. Il desiderio di potenziare gli utenti dell’architettura è stato, in effetti, ciò che ha portato Alexander a intraprendere un progetto di linguaggio di pattern per l’architettura in primo luogo.

Problemi di progettazione in un contesto
Un aspetto importante dei modelli di progettazione è identificare e documentare le idee chiave che rendono un buon sistema diverso da un sistema povero (che può essere una casa, un programma per computer o un oggetto di uso quotidiano) e per aiutare nella progettazione del futuro sistemi. L’idea espressa in un modello dovrebbe essere abbastanza generale da essere applicata in sistemi molto diversi nel suo contesto, ma comunque sufficientemente specifica da fornire una guida costruttiva.

La gamma di situazioni in cui si applicano i problemi e le soluzioni affrontate in un modello si chiama contesto. Una parte importante in ogni modello è descrivere questo contesto. Gli esempi possono ulteriormente illustrare come il modello si applica a situazioni molto diverse.

Ad esempio, lo schema di Alexander “A PLACE TO WAIT” si riferisce alle fermate degli autobus allo stesso modo delle sale d’attesa in un intervento chirurgico, pur continuando a proporre soluzioni utili e costruttive. Il libro “Gang-of-Four” Design Patterns di Gamma et al. propone soluzioni indipendenti dal linguaggio di programmazione e dal dominio dell’applicazione del programma.

Tuttavia, i problemi e le soluzioni descritti in uno schema possono variare nel loro livello di astrazione e generalità da un lato e specificità dall’altro. Alla fine ciò dipende dalle preferenze dell’autore. Tuttavia, anche un modello molto astratto di solito contiene esempi che, per natura, sono assolutamente concreti e specifici.

I modelli possono anche variare in quanto sono provati nel mondo reale. Alexander assegna a ciascun modello un punteggio pari a zero, una o due stelle, indicando in che modo sono dimostrati in esempi reali. È generalmente affermato che tutti i modelli necessitano almeno di alcuni esempi reali esistenti. È tuttavia possibile concepire idee non ancora implementate in un formato simile a un modello.

Anche gli schemi del libro di Alexander variano nel loro livello di scala – alcuni descrivono come costruire una città o un quartiere, altri che si occupano di singoli edifici e l’interno delle stanze. Alexander vede i manufatti di bassa scala come elementi costruttivi del mondo su larga scala, in modo che possano essere collegati a una rete gerarchica.

Bilanciamento delle forze
Un modello deve caratterizzare i problemi che si intende risolvere, il contesto o la situazione in cui questi problemi si presentano e le condizioni in cui le soluzioni proposte possono essere raccomandate.

Spesso questi problemi nascono da un conflitto di interessi o “forze” differenti. Un modello emerge come un dialogo che aiuterà quindi a bilanciare le forze e infine a prendere una decisione.

Ad esempio, potrebbe esserci uno schema che suggerisce un telefono senza fili. Le forze sarebbero la necessità di comunicare e la necessità di fare altre cose contemporaneamente (cucinare, ispezionare lo scaffale). Un modello molto specifico sarebbe semplicemente “TELEFONO SENZA FILI”. Modelli più generali sarebbero “WIRELESS DEVICE” o “SECONDARY ACTIVITY”, suggerendo che un’attività secondaria (come parlare al telefono o ispezionare le tasche dei jeans) non dovrebbe interferire con altre attività.

Benché piuttosto aspecifico nel suo contesto, le forze nel pattern “SECONDARY ACTIVITY” sono molto simili a quelle di “WIRELESS TELEPHONE”. Pertanto, le forze in competizione possono essere viste come parte dell’essenza di un concetto di design espresso in un modello.

I pattern contengono le loro motivazioni
Di solito un modello contiene una motivazione che si riferisce ad alcuni valori dati. Per Christopher Alexander, è molto importante pensare alle persone che entreranno in contatto con un’architettura. Uno dei suoi valori chiave è rendere queste persone più vive. Parla della “qualità senza nome” (QWAN).

Più in generale, potremmo dire che un buon sistema dovrebbe essere accettato, accolto e felicemente abbracciato come un arricchimento della vita quotidiana da parte di coloro che sono destinati a usarlo, o – ancora meglio – da tutte le persone che colpisce. Ad esempio, quando si parla di un caffè di strada, Alexander discute i possibili desideri di un ospite, ma menziona anche le persone che camminano vicino.

Lo stesso ragionamento può essere applicato a dispositivi tecnici come telefoni e automobili, a strutture sociali come una squadra che lavora su un progetto o all’interfaccia utente di un programma per computer. Le qualità di un sistema software, ad esempio, potrebbero essere valutate osservando se gli utenti trascorrono il loro tempo godendo o lottando con il sistema.

Concentrandosi sugli impatti sulla vita umana, possiamo identificare modelli che sono indipendenti dal cambiamento della tecnologia, e quindi trovare “qualità senza tempo” (Alexander).

Struttura e layout generici
Solitamente l’autore di un linguaggio o di una raccolta di pattern sceglie una struttura generica per tutti i pattern che contiene, suddividendoli in sezioni generiche come il contesto, la dichiarazione del problema, la soluzione ecc.

Gli schemi di Christopher Alexander, ad esempio, consistono ciascuno in un breve nome, una valutazione (fino a due simboli * *), un’immagine sensibilizzante, la descrizione del contesto, l’affermazione del problema, una parte più lunga del testo con esempi e spiegazioni, una soluzione dichiarazione, uno schizzo e ulteriori riferimenti. Questa struttura e il layout sono a volte indicati come la “forma alessandrina”.

Alexander usa uno speciale layout di testo per marcare le diverse sezioni dei suoi modelli. Ad esempio, la dichiarazione del problema e la dichiarazione della soluzione sono stampate in grassetto, la seconda è sempre preceduta dalla parola chiave “Therefore:”. Alcuni autori utilizzano invece etichette esplicite, che creano un certo grado di ridondanza.

Nomi significativi
Quando il design viene eseguito da una squadra, i nomi dei pattern formeranno un vocabolario che potranno condividere. Ciò rende necessario che i nomi dei pattern siano facili da ricordare e altamente descrittivi. Alcuni esempi delle opere di Alexander sono WINDOW PLACE (aiuta a definire dove dovrebbero andare le finestre in una stanza) e A LUOGHI DI ATTESA (aiuta a definire le caratteristiche delle fermate degli autobus e delle sale d’attesa degli ospedali, ad esempio).

Aggregazione in una rete associativa (linguaggio pattern)
Un linguaggio di pattern, come concepito da Alexander, contiene collegamenti da un pattern a un altro, quindi quando si tenta di applicare un pattern in un progetto, un designer viene spinto ad altri pattern che sono considerati utili nel suo contesto.

Nel libro di Alexander, tali collegamenti sono raccolti nella parte “Riferimenti” ed echeggiati nella parte “contesto” del pattern collegato – quindi la struttura generale è un grafo orientato. Un modello che è collegato a “riferimenti” di solito affronta un problema di scala inferiore, che è suggerito come una parte del problema su più alta scala. Ad esempio, il modello “PUBLIC OUTDOOR ROOM” ha un riferimento a “STAIR SEATS”.

Anche senza la descrizione del modello, questi link, insieme a nomi significativi, portano un messaggio: Quando si costruisce un luogo esterno dove le persone possono passare il tempo (“PUBLIC OUTDOOR ROOM”), considera di circondarlo da scale dove le persone possono sedersi (“SCALE SEDUTE “). Se stai pianificando un ufficio (“WORKSHOP E UFFICI”), considera di organizzare spazi di lavoro in piccoli gruppi (“PICCOLI GRUPPI DI LAVORO”). Alexander sostiene che le connessioni nella rete possono essere considerate ancora più significative del testo dei pattern stessi.

I link nel libro di Alexander risultano chiaramente in una rete gerarchica. Alexander disegna un parallelo con la gerarchia di una grammatica – questo è un argomento per lui per parlare di un linguaggio di pattern.

L’idea del collegamento è generalmente accettata dagli autori di pattern, sebbene la logica semantica dietro i collegamenti possa variare. Alcuni autori, tuttavia, come Gamma et al. in Design Patterns, fai solo un piccolo uso del pattern linking – probabilmente perché non ha molto senso per la loro collezione di pattern. In tal caso parliamo di un catalogo di modelli piuttosto che di un linguaggio di pattern.

uso
Alexander ha incoraggiato le persone che hanno usato il suo sistema per espandere la sua lingua con schemi propri. Per consentire ciò, i suoi libri non si concentrano rigorosamente sull’architettura o sull’ingegneria civile; spiega anche il metodo generale dei linguaggi pattern. Il concetto originale per il libro A Pattern Language era che sarebbe stato pubblicato sotto forma di un raccoglitore a 3 anelli, in modo che le pagine potessero essere facilmente aggiunte in seguito; questo si è dimostrato poco pratico nell’editoria. L’approccio del linguaggio modello è stato utilizzato per documentare le competenze in diversi campi. Alcuni esempi sono modelli architettonici, modelli di informatica, modelli di progettazione dell’interazione, modelli pedagogici, modelli di azione sociale e modelli di facilitazione di gruppo. L’approccio al linguaggio del modello è stato raccomandato anche come un modo per promuovere l’intelligenza civica, contribuendo a coordinare le azioni per diverse persone e comunità che stanno lavorando insieme su significativi problemi condivisi. Le specifiche di Alexander per l’utilizzo dei linguaggi di pattern e la creazione di nuove lingue restano influenti e i suoi libri sono citati per lo stile da esperti in campi non correlati.

È importante notare che le notazioni come UML o la raccolta di simboli del diagramma di flusso non sono lingue pattern. Potrebbero essere paragonati più strettamente a un alfabeto: i loro simboli potrebbero essere usati per documentare un linguaggio di pattern, ma non sono un linguaggio da soli. Anche una ricetta o un altro insieme sequenziale di passi da seguire, con un solo percorso corretto dall’inizio alla fine, non è un linguaggio di pattern. Tuttavia, il processo di progettazione di una nuova ricetta potrebbe trarre vantaggio dall’uso di un linguaggio di pattern.

Semplice esempio di un modello
Nome: ChocolateChipRatio
Contesto: stai cuocendo i biscotti con gocce di cioccolato in piccoli lotti per famiglia e amici
Prendi in considerazione prima questi modelli: SugarRatio, FlourRatio, EggRatio
Problema: determinare il rapporto ottimale tra gocce di cioccolato e pasta per biscotti
Soluzione: osserva che la maggior parte delle persone considera il cioccolato la parte migliore del biscotto con gocce di cioccolato. Osserva anche che troppa cioccolata può impedire al biscotto di restare unito, diminuendo il suo appeal. Poiché stai cucinando in piccoli lotti, il costo non è una considerazione. Pertanto, utilizzare la quantità massima di gocce di cioccolato che si traduce in un cookie molto robusto.
Considerare successivo: NutRatio o CookingTime o FreezingMethod

Origine
Christopher Alexander, architetto e autore, ha coniato il termine linguaggio dei pattern. Lo ha usato per riferirsi a problemi comuni di progettazione e costruzione di edifici e città e come dovrebbero essere risolti. Le soluzioni proposte nel libro includono suggerimenti che vanno dal modo in cui le città e le città dovrebbero essere strutturate in cui le finestre dovrebbero essere collocate in una stanza.

La struttura e la filosofia dell’approccio del “linguaggio del modello” sono state inizialmente rese popolari nel libro A Pattern Language che è stato scritto da Christopher Alexander e cinque colleghi del Center for Environmental Structure di Berkeley, in California, alla fine degli anni ’70. Mentre A Pattern Language contiene 253 “pattern” dal primo pattern, “Independent Regions” (il più generale) fino all’ultimo, “Things from Your Life”, il libro di Alexander The Timeless Way of Building approfondisce la motivazione e lo scopo del lavoro. Le seguenti definizioni di “pattern” e “pattern language” sono parafrasate da A Pattern Language:

“Un modello è un’attenta descrizione di una soluzione perenne a un problema ricorrente all’interno di un contesto di costruzione, che descrive una delle configurazioni che danno vita a un edificio.Ogni schema descrive un problema che si verifica continuamente nel nostro ambiente e quindi descrive la soluzione principale a questo problema, in modo tale da poter utilizzare la soluzione un milione di volte, senza mai farlo nello stesso modo due volte. ”

Un linguaggio modello è una rete di modelli che si richiamano l’un l’altro. I pattern ci aiutano a ricordare le intuizioni e le conoscenze sul design e possono essere usati in combinazione per creare soluzioni.

Domini di applicazione
L’idea di Christopher Alexander è stata adottata in altre discipline, spesso molto più pesantemente dell’applicazione originale dei modelli all’architettura, come illustrato nel libro A Pattern Language. Esempi recenti includono modelli di progettazione del software nell’ingegneria del software e, più in generale, modelli architettonici nell’informatica, nonché modelli di progettazione dell’interazione. Gli schemi pedagogici sono usati per documentare le buone pratiche nell’insegnamento. Il libro Liberating Voices: A Pattern Language for Communication Revolution, contenente 136 modelli per l’utilizzo di informazioni e comunicazione per promuovere la sostenibilità, la democrazia e il cambiamento sociale positivo, è stato pubblicato nel 2008 insieme a un sito Web che contiene ancora più schemi. Il mazzo “Lavori di gruppo: un linguaggio modello per portare vita alle riunioni e altri raduni” è stato pubblicato nel 2011. Recentemente, sono stati introdotti modelli anche nella progettazione di sistemi di architettura. La strategia e le tattiche degli scacchi coinvolgono molti schemi dall’apertura allo scacco matto.

Ward Cunningham, l’inventore di wiki, ha scritto un documento con Michael Mehaffy sostenendo che esistono profonde relazioni tra wiki e linguaggi pattern, e che i wiki “sono stati in effetti sviluppati come strumenti per facilitare la condivisione efficiente e la modifica dei modelli”.