Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Im Gegensatz zu allgemeinen Sprachen wie C# oder UML ist eine domänenspezifische Sprache (Domain-Specific Language, DSL) dafür konzipiert, Anweisungen in einem bestimmten Problembereich oder einer bestimmten Domäne auszudrücken.
Bekannte DSLs sind etwa reguläre Ausdrücke und SQL. Jede DSL ist wesentlich besser als eine allgemeine Sprache zum Beschreiben von Vorgängen für Textzeichenfolgen oder eine Datenbank geeignet, aber wesentlich schlechter zum Beschreiben von Ideen außerhalb ihres spezifischen Bereichs. Bestimmte Branchen verfügen auch über eigene DSLs. Beispielsweise werden in der Telekommunikationsbranche häufig Sprachen zur Anrufbeschreibung verwendet, um die Abfolge der Zustände in einem Telefonanruf anzugeben, und in der Luftfahrtindustrie wird eine Standard-DSL zum Beschreiben von Flugbuchungen verwendet.
Ihr Unternehmen und Ihr Projekt beschäftigen sich auch mit speziellen Konzepten, die mit einer DSL beschrieben werden könnten. Sie können beispielsweise eine DSL für eine der folgenden Anwendungen definieren:
Plan der Navigationspfade in einer Website.
Verdrahtungsdiagramme für elektronische Komponenten.
Netzwerke von Förderbändern und Gepäckabfertigungsanlagen auf einem Flughafen.
Wenn Sie eine DSL entwerfen, definieren Sie eine Domänenklasse für jedes wichtige Konzepte in der Domäne, z. B. eine Webseite, eine Lampe oder einen Check-in-Schalter am Flughafen. Sie definieren Domänenbeziehungen wie Hyperlink, Draht oder Förderband, um die Konzepte miteinander zu verknüpfen.
Benutzer*innen Ihrer DSL erstellen Modelle, die Instanzen der DSL darstellen. Beispielsweise beschreiben sie eine bestimmte Website oder die Verdrahtung eines bestimmten Geräts oder das Gepäckabfertigungssystem auf einem bestimmten Flughafen.
Ihre Benutzer*innen können ein Modell als Diagramm oder als Windows-Formular anzeigen. Modelle können auch als XML angezeigt werden, denn in dieser Form werden sie gespeichert. Wenn Sie eine DSL definieren, definieren Sie die Anzeige der Instanzen jeder Domänenklasse und Beziehung auf dem Benutzerbildschirm. Eine typische DSL wird als Sammlung von Symbolen oder Rechtecken angezeigt, die durch Pfeile verbunden sind.
Die folgende Abbildung zeigt ein kleines Modell in einer als Diagramm angelegten DSL:
Möglichkeiten mit DSLs
Eine typische Anwendung einer DSL besteht darin, Programmcode oder andere Artefakte zu generieren. Zum Definieren Ihrer DSL können Sie Textvorlagen definieren, die ein Modell der DSL lesen und Textdateien generieren.
Beispielsweise können Sie Vorlagen schreiben, die einen Flughafenplan entgegennehmen und einen Teil der Software für die Gepäckabfertigung generieren sowie einige der Benutzerdokumente, die den Plan beschreiben.
Wenn Sie eine DSL definiert haben, können Sie sie an andere Benutzer*innen verteilen, die sie auf ihren eigenen Computern installieren können. Benutzer*innen Ihrer DSL können Modelle in Visual Studio erstellen und bearbeiten.
Sie können auch Menübefehle und andere Tools definieren, die Benutzer*innen beim Bearbeiten der DSL helfen, Validierungseinschränkungen, um sicherzustellen, dass die DSL ordnungsgemäß eingesetzt wird, und Elementvorlagen, mit denen Benutzer*innen neue Instanzen erstellen können. Sie können DSLs mit ihren Tools und anderen Visual Studio-Erweiterungen als integriertes Paket umschließen.
In der Regel wird eine domänenspezifische Sprache erstellt, wenn ein Entwicklungsteam ähnlichen Code für mehrere Produkte schreiben muss. Beispielsweise könnte ein Unternehmen, das sich auf Gepäckfördersysteme spezialisiert hat, eine Gepäckverfolgungs-DSL definieren, aus der ein Teil des Codes für jede Installation generiert werden kann. Die Vorteile der DSL sind, dass sie von der Kundschaft verstanden werden kann, der daraus generierte Code zuverlässig ist und das System schnell aktualisiert werden kann, wenn sich die Anforderungen der Kundschaft ändern.
Mit DSL-Tools können Sie eine domänenspezifische Sprache erstellen, die einen eigenen grafischen Designer und eine eigene Diagrammnotation aufweist, und mit der Sprache dann den passenden Quellcode für jedes Projekt generieren.
Domänenspezifische Entwicklung
Bei der domänenspezifischen Entwicklung werden die Teile Ihrer Anwendungen identifiziert, die mithilfe einer domänenspezifischen Sprache modelliert werden können, und anschließend die Sprache erstellt und für die Anwendungsentwickler*innen bereitgestellt. Die Entwickler*innen verwenden die domänenspezifische Sprache zum Erstellen anwendungsspezifischer Modelle, die Modelle zum Generieren von Quellcode und schließlich den Quellcode zum Entwickeln der Anwendungen.
Aspekte der grafischen domänenspezifischen Entwicklung
Eine grafische domänenspezifische Sprache muss die folgenden Features einschließen:
Notation
Domänenmodell
Artefaktgenerierung
Serialisierung
Integration in Visual Studio
Notation
Eine domänenspezifische Sprache muss über relativ wenige Elemente verfügen, die einfach definiert und erweitert werden können, um domänenspezifische Konstrukte darzustellen. Eine Notation besteht aus Formen, die die Elemente darstellen, und Verbindungen, die die Beziehungen zwischen Elementen darstellen, auf einer grafischen Diagrammoberfläche. In DSL-Tools können die Formen erweitert und verfeinert werden, um die Elemente Ihrer domänenspezifischen Sprache darzustellen.
Domänenmodell
Eine domänenspezifische Sprache muss die Elemente und die Beziehungen zwischen ihnen in einer kohärenten Grammatik kombinieren. Außerdem muss definiert werden, ob Kombinationen von Elementen und Beziehungen gültig sind. Beispielsweise verhindern Programmiersprachen in der Regel Zirkelvererbung, bei der eine Klasse von einer zweiten Klasse und die zweite Klasse von der ersten Klasse abgeleitet wird. Einschränkungen können auch verwendet werden, um Geschäftslogik auszudrücken, z. B. kann eine Person nicht von sich selbst abhängig sein. DSL-Tools verwenden Ausdrücke für die Einschränkungen, die die meisten domänenspezifischen Sprachen erfordern.
Artefaktgenerierung
Einer der Hauptzwecke einer domänenspezifischen Sprache besteht darin, ein Artefakt zu generieren, z. B. Quellcode, eine XML-Datei oder andere verwendbare Daten. In der Regel bedeutet eine Änderung im Modell eine Änderung des Artefakts. Sie können DSL-Tools verwenden, um Artefakte zu generieren und neu zu generieren, wenn Sie das Modell ändern.
Serialisierung
Eine domänenspezifische Sprache muss in einer Form beibehalten werden, die bearbeitet, gespeichert, geschlossen und neu geladen werden kann. DSL-Tools verwenden ein XML-Format, mit dem Sie definieren und anpassen können, wie Ihre domänenspezifische Sprache serialisiert oder beibehalten wird.
Integration in Visual Studio
Da DSL-Tools in Visual Studio gehostet werden, dienen sie der Erweiterung vieler Visual Studio-Fenster und -Steuerelemente. Außerdem können Sie mit ihnen das Verhalten von Menübefehlen, Toolboxelementen und anderen Elementen der Benutzeroberfläche anpassen.
Sie können auch einen Modellbusadapter für Ihre domänenspezifische Sprache erstellen. Mit diesem Adapter können Sie auf ein Modell und Elemente innerhalb eines Modells verweisen und Code schreiben, der auf eine Instanz der DSL zugreifen und diese aktualisieren kann. Mithilfe des leistungsstarken Modellbusmechanismus können Sie Visual Studio-Erweiterungen schreiben, die mit mehreren Modellen funktionieren. Sie können mit Modellen auch eigenständige Anwendungen schreiben. Weitere Informationen finden Sie unter Integrieren von Modellen mit Visual Studio-ModelBus.
Vorteile der domänenspezifischen Entwicklung
Eine domänenspezifische Sprache kann folgende Vorteile bieten:
Sie enthält Konstrukte, die genau zum Problembereich passen.
Im Gegensatz zu allgemeinen Sprachen besteht eine domänenspezifische Sprache aus Elementen und Beziehungen, die die Logik des Problembereichs direkt abbilden. Beispielsweise muss eine Versicherungspolice-Anwendung Elemente für Policen und Ansprüche enthalten. Eine domänenspezifische Sprache vereinfacht das Entwerfen der Anwendung sowie das Suchen und Korrigieren von Logikfehlern.
Sie ermöglicht Nichtentwickler*innen und Personen, die die Domäne nicht kennen, ein Verständnis des Gesamtentwurfs.
Indem Sie eine grafische domänenspezifische Sprache verwenden, können Sie eine visuelle Darstellung der Domäne erstellen, sodass Nichtentwickler*innen den Entwurf der Anwendung einfach verstehen können.
Sie vereinfacht die Erstellung eines Prototyps der endgültigen Anwendung.
Entwickler*innen können den von ihrem Modell generierten Code verwenden, um einen Prototyp einer Anwendung zu erstellen, den sie der Kundschaft vorführen können.
Der Ablauf der domänenspezifischen Entwicklung
Die meisten Softwareentwicklungsteams, die domänenspezifische Sprachen verwenden, führen die folgenden Schritte aus, um ihre Modelle zu erstellen und zu verwenden:
Das Team unterscheidet die variablen Teile der Domäne von den Teilen, die sich nie ändern.
Die Entwickler*innen schreiben Code für die festen Teile und behalten Erweiterungspunkte für die variablen Teile bei.
Die Softwareentwicklungsleitung oder der/die Architekt*in erstellt eine domänenspezifische Sprache, die die Entwurfsmuster der festen Teile der Domäne und die Erweiterungspunkte für die variablen Teile enthält.
Der Softwareentwicklungsleitung oder der/die Architekt*in stellt die domänenspezifische Sprache für die Entwickler*innen der verschiedenen im Team entwickelten Anwendungen bereit.
Alle Entwickler*innen erstellen ein Modell, das die jeweilige Anwendung betrifft.