Condividi tramite


Informazioni sui linguaggi specifici del dominio

A differenza di un linguaggio generico, ad esempio C# o UML, un linguaggio specifico del dominio (DSL) è progettato per esprimere istruzioni in uno spazio problema specifico o in un dominio specifico.

Le DSL note includono espressioni regolari e SQL. Ogni linguaggio DSL è molto meglio di un linguaggio generico per descrivere le operazioni sulle stringhe di testo o su un database, ma molto peggio per descrivere idee esterne al proprio ambito. I singoli settori hanno anche I propri DSL. Ad esempio, nel settore delle telecomunicazioni, le lingue di descrizione delle chiamate sono ampiamente utilizzate per specificare la sequenza di stati in una chiamata telefonica e nel settore dei viaggi aerei viene usato un DSL standard per descrivere le prenotazioni dei voli.

L'azienda e il progetto gestiscono anche set speciali di concetti che possono essere descritti con un linguaggio DSL. Ad esempio, è possibile definire un linguaggio DSL per una di queste applicazioni:

  • Pianificare i percorsi di spostamento in un sito Web.

  • Diagrammi di cablaggio per i componenti elettronici.

  • Reti di nastri trasportatori e attrezzature per la gestione dei bagagli per un aeroporto.

Quando si progetta un linguaggio DSL, si definisce una classe di dominio per ognuno dei concetti importanti nel dominio, ad esempio una pagina Web, una lampada o una scrivania per il check-in aeroporto. Si definiscono relazioni di dominio come collegamento ipertestuale, filo o nastro trasportatore per collegare i concetti.

Gli utenti del linguaggio DSL creano modelli. I modelli sono istanze del linguaggio DSL. Ad esempio, descrivono un particolare sito Web o il cablaggio di un particolare dispositivo o il sistema di gestione bagagli in un particolare aeroporto.

Gli utenti possono visualizzare un modello come diagramma o come windows form. I modelli possono anche essere visualizzati come XML, ovvero come vengono archiviati. Quando si definisce un linguaggio DSL, si definisce la modalità di visualizzazione delle istanze di ogni classe di dominio e relazione nella schermata dell'utente. Un linguaggio DSL tipico viene visualizzato come una raccolta di icone o rettangoli collegati da frecce.

La figura seguente mostra un modello di piccole dimensioni in un linguaggio DSL diagrammatico:

Tudor Family Tree Model

Operazioni che è possibile eseguire con le licenze DSL

Un'applicazione tipica di un linguaggio DSL consiste nel generare codice programma o altri artefatti. Quando si definisce il linguaggio DSL, è possibile definire modelli di testo che leggono un modello del linguaggio DSL e generano file di testo.

Ad esempio, è possibile scrivere modelli che accettano un piano aeroportuale e generano parte del software per la gestione dei bagagli, nonché alcuni dei documenti utente che descrivono il piano.

Dopo aver definito un linguaggio DSL, è possibile distribuirlo ad altri utenti che possono installarlo nei propri computer. Gli utenti del linguaggio DSL possono creare e modificare modelli in Visual Studio.

È anche possibile definire comandi di menu e altri strumenti che consentono agli utenti di modificare il linguaggio DSL, i vincoli di convalida per garantire che il linguaggio DSL venga usato correttamente e i modelli di elemento che consentono agli utenti di creare nuove istanze. È possibile eseguire il wrapping di uno o più DSL con gli strumenti e altre estensioni di Visual Studio come pacchetto integrato.

In genere, viene creato un linguaggio specifico del dominio quando un team di sviluppo deve scrivere codice simile per diversi prodotti. Ad esempio, un'azienda specializzata in sistemi di gestione bagagli potrebbe definire un DSL di traccia bagagli da cui possono generare parte del codice per ogni installazione. I vantaggi del dsl sono che possono essere riconosciuti dai clienti, che il codice generato da esso è affidabile e che il sistema può essere rapidamente aggiornato se i requisiti dei clienti cambiano.

Strumenti di linguaggio specifici del dominio consente di creare un linguaggio specifico del dominio con la propria finestra di progettazione grafica e la notazione del diagramma e quindi usare il linguaggio per generare il codice sorgente appropriato per ogni progetto.

Sviluppo specifico del dominio

Lo sviluppo specifico del dominio è il processo di identificazione delle parti delle applicazioni che possono essere modellate usando un linguaggio specifico del dominio e quindi di costruire il linguaggio e distribuirlo agli sviluppatori di applicazioni. Gli sviluppatori usano il linguaggio specifico del dominio per costruire modelli specifici per le applicazioni, usare i modelli per generare il codice sorgente e quindi usare il codice sorgente per sviluppare le applicazioni.

Aspetti dello sviluppo grafico specifico del dominio

Un linguaggio grafico specifico del dominio deve includere le funzionalità seguenti:

  • Notazione

  • Modello di dominio

  • Generazione di artefatti

  • Serializzazione

  • Integrazione con Visual Studio

Notazione

Un linguaggio specifico del dominio deve avere un set ragionevolmente ridotto di elementi che possono essere facilmente definiti ed estesi per rappresentare costrutti specifici del dominio. Una notazione è costituita da forme, che rappresentano gli elementi e i connettori, che rappresentano le relazioni tra gli elementi, su una superficie diagramma grafica. In Strumenti di linguaggio specifici del dominio, le forme possono essere estese e perfezionate per rappresentare gli elementi del linguaggio specifico del dominio.

Modello di dominio

Un linguaggio specifico del dominio deve combinare il set di elementi e le relazioni tra di essi in una grammatica coerente. Deve inoltre definire se le combinazioni di elementi e relazioni sono valide. Ad esempio, i linguaggi di programmazione impediscono in genere l'ereditarietà circolare, in cui una classe è derivata da una seconda classe e la seconda classe deriva dalla prima classe. I vincoli possono essere usati anche per esprimere la logica di business, ad esempio una persona non può essere dipendente da se stesso. Gli strumenti di linguaggio specifici del dominio usano vincoli per esprimere i tipi di restrizioni richieste dalla maggior parte dei linguaggi specifici del dominio.

Generazione artefatto

Uno degli scopi principali di un linguaggio specifico del dominio consiste nel generare un artefatto, ad esempio codice sorgente, un file XML o altri dati utilizzabili. In genere, una modifica nel modello indica una modifica nell'artefatto. È possibile usare Strumenti di linguaggio specifici del dominio per generare artefatti e rigenerarli quando si modifica il modello.

Serializzazione

Un linguaggio specifico del dominio deve essere salvato, salvato, chiuso e ricaricato in un determinato formato. Strumenti di linguaggio specifici del dominio usa un formato XML che consente di definire e personalizzare la modalità di serializzazione o persistenza del linguaggio specifico del dominio.

Integrazione con Visual Studio

Poiché Strumenti di linguaggio specifici del dominio è ospitato in Visual Studio, estende molti controlli e finestre di Visual Studio. Consente inoltre di personalizzare il comportamento dei comandi di menu, degli elementi della casella degli strumenti e di altri elementi dell'interfaccia utente.

È anche possibile creare un adattatore del bus di modello per il linguaggio specifico del dominio. Questa scheda consente di fare riferimento a un modello e a elementi all'interno di un modello e di scrivere codice in grado di accedere e aggiornare un'istanza del linguaggio DSL. Usando il potente meccanismo del bus di modello, è possibile scrivere estensioni di Visual Studio che funzionano con più modelli. È anche possibile scrivere applicazioni autonome che funzionano con i modelli. Per altre informazioni, vedere Integrazione di modelli con Visual Studio Modelbus.

Vantaggi dello sviluppo specifico del dominio

Un linguaggio specifico del dominio può offrire i vantaggi seguenti:

  • Contiene costrutti che si adattano esattamente allo spazio del problema.

    A differenza dei linguaggi per utilizzo generico, un linguaggio specifico del dominio è costituito da elementi e relazioni che rappresentano direttamente la logica dello spazio del problema. Ad esempio, un'applicazione di criteri assicurativi deve includere elementi per i criteri e le attestazioni. Un linguaggio specifico del dominio semplifica la progettazione dell'applicazione e la ricerca e la correzione degli errori della logica.

  • Consente a utenti non sviluppatori e utenti che non conoscono il dominio di comprendere la progettazione complessiva.

    Usando un linguaggio grafico specifico del dominio, è possibile creare una rappresentazione visiva del dominio in modo che gli sviluppatori non possano comprendere facilmente la progettazione dell'applicazione.

  • Semplifica la creazione di un prototipo dell'applicazione finale.

    Gli sviluppatori possono usare il codice generato dal modello per creare un'applicazione prototipo che può mostrare ai client.

Processo di sviluppo specifico del dominio

La maggior parte dei team di sviluppo software che usano linguaggi specifici del dominio seguire questa procedura per creare e usare i relativi modelli:

  • Il team distingue le parti variabili del dominio dalle parti che non cambiano mai.

  • Gli sviluppatori scrivono codice per le parti fisse e lasciano i punti di estensione per le parti variabili.

  • Lo sviluppatore software principale o l'architetto crea un linguaggio specifico del dominio che incorpora i modelli di progettazione delle parti fisse del dominio e i punti di estensione per le parti variabili.

  • Lo sviluppatore software responsabile o l'architetto distribuisce il linguaggio specifico del dominio agli sviluppatori delle varie applicazioni che il team produce.

  • Ogni sviluppatore crea un modello che si applica all'applicazione specifica.