# Linguaggio di modellazione

Un linguaggio di modellazione (in inglese modelling language) è un linguaggio formale che può essere utilizzato per descrivere (modellare) un sistema di qualche natura. Il concetto trova applicazione soprattutto nell'ingegneria del software; un modello di un sistema software, o di qualche suo aspetto, prende il nome di modello software (in inglese software model).

## Classificazione dei linguaggi di modellazione

I linguaggi di modellazione descritti in letteratura o utilizzati nella pratica dello sviluppo del software si possono classificare secondo numerosi criteri:
* Grafici o testuali. I linguaggi di modellazione grafici sono basati su uno o più tipi di diagrammi, costruiti a partire da simboli grafici con una semantica chiaramente definita. I linguaggi non grafici usano un linguaggio formale testuale, spesso paragonabile per struttura a un linguaggio di programmazione.
* Interpretabili o non interpretabili. Alcuni linguaggi di modellazione hanno una sintassi e una semantica tali da consentire l'interpretazione e l'elaborazione dei modelli da parte di specifiche applicazioni software. L'elaborazione può avere diversi scopi: un modello può essere per esempio eseguito (in tal modo fornendo una simulazione più o meno completa del comportamento del sistema modellato) o tradotto (per esempio generando codice sorgente utilizzabile nell'implementazione del sistema, o altri artefatti).
* Oggetto della modellazione. Diversi linguaggi consentono la modellazione di diversi aspetti di un sistema software. I linguaggi di data modeling sono orientati alla descrizione delle strutture dati utilizzate dal sistema; altri linguaggi possono enfatizzare le caratteristiche funzionali, il comportamento dinamico, gli aspetti di concorrenza, le performance o altro. I linguaggi non orientati alla modellazione di sistemi software possono essere classificati in funzione del particolare contesto in cui si applicano (per esempio modellazione dei processi di business).
Queste distinzioni non sono rigide. Per esempio, in molti linguaggi di modellazione coesistono simboli grafici e notazioni testuali; in molti casi i modelli sono parzialmente interpretabili; e diversi linguaggi forniscono strumenti complementari per modellare diversi aspetti di un sistema.

## Esempi

* I diagrammi E-R (Entity-Relationship) sono un linguaggio grafico di data modeling orientato alla descrizione della struttura delle basi dati relazionali.
* I diagrammi di flusso (e le loro varianti, come i diagrammi di flusso strutturati) sono un linguaggio grafico orientato alla modellazione di algoritmi.
* EXPRESS-G (ISO 10303-11) è un linguaggio di data modeling di uso generale definito da uno standard internazionale ISO e utilizzato per definire altri standard, tra cui diversi protocolli di rete.
* Unified Modeling Language (UML) è un linguaggio di modellazione di uso generale parzialmente basato sul paradigma object-oriented; è lo standard dominante nel contesto dell'analisi e della progettazione a oggetti. UML comprende elementi tratti da numerosi precedenti linguaggi di modellazione, fra cui OMT, Booch, e statechart.
* Systems Modeling Language (SysML) è una estensione del UML utilizzato per la modellazione di sistemi. Supporta la definizione di specifiche, analisi, progettazione, validazione e verifica sia di sistemi che sottosisetmi, che possono includere software, hardware, processi.
* Le reti di Petri sono un modello matematico di rappresentazione di sistemi concorrenti con una rappresentazione standard in forma di diagramma.
* IDEF è una famiglia di linguaggi di modellazione che comprende sottolinguaggi per diversi aspetti di un sistema (per esempio IDEF0 per la modellazione funzionale e IDEF1 per il data modeling).
* Energy Systems Language (ESL) è un linguaggio di modellazione per la rappresentazione di informazioni legate all'economia energetica globale e all'ecologia.
* Business Process Modeling Notation è uno dei principali linguaggi di modellazione dei processi di business.
* Modelica è il linguaggio di modellazione dichiarativo object-oriented per la modellazione fisica di sistemi complessi, ad esempio, sistemi contenenti componenti meccanici, elettrici, elettronici, idraulici, termici o di controllo.
* Interaction Flow Modeling Language (IFML) è un linguaggio di modellazione per definire le interazioni dell'utente con i front-end dei sistemi software.