DSL (Domänenspezifische Sprache)
Eine DSL (Domänenspezifische Sprache, englisch: Domain-Specific Language**)** ist eine Programmier- oder Modellierungssprache, die auf ein klar abgegrenztes Fachgebiet zugeschnitten ist. Statt universell einsetzbar zu sein wie Java oder C, bildet sie Konzepte, Regeln und Vokabular genau einer Domäne ab — etwa Versicherungstarife, Steuergeräte-Konfigurationen oder Zustandsautomaten.
Abgrenzung: DSL vs. General-Purpose Language
Allzwecksprachen (General-Purpose Languages, GPLs) wie Java, C oder Python sind darauf ausgelegt, beliebige Probleme zu lösen — sie machen keine Annahmen über die Domäne. Eine DSL geht den umgekehrten Weg: Sie verzichtet bewusst auf Universalität und bietet dafür eine höhere Abstraktion und eine Notation, die sich für Fachexperten natürlich anfühlt. Zwei allgemein bekannte DSLs sind SQL (zugeschnitten auf Abfragen relationaler Datenbanken) und HTML (zugeschnitten auf die Strukturierung von Web-Dokumenten): Beide sind in ihrer Domäne mächtig, außerhalb davon aber unbrauchbar — und genau das ist der Punkt.
Interne und externe DSLs
- Interne (eingebettete) DSLs werden innerhalb einer Wirtssprache umgesetzt, etwa als Fluent API in Kotlin oder Ruby. Sie sind schnell gebaut, bleiben aber an Syntax und Werkzeuge der Wirtssprache gebunden.
- Externe DSLs haben eine eigene Syntax und eigene Werkzeuge: Editor mit Code-Completion, Validierung beim Tippen, Codegenerator oder Interpreter. Sie werden typischerweise mit einer Language Workbench wie Xtext oder JetBrains MPS entwickelt.
Ein Mini-Beispiel
Eine (vereinfachte) externe DSL für Versicherungstarife könnte so aussehen:
tarif Hausrat2026 {
basisbeitrag 89,00 EUR
zuschlag fahrrad 12,5 %
gilt-ab 01.01.2026
}
Fachexperten können solche Spezifikationen lesen und selbst schreiben — ohne Java-Kenntnisse. Ein Codegenerator übersetzt sie automatisch in ausführbaren Code, und die Sprache selbst verhindert fehlerhafte Eingaben: Ein Tarif ohne Gültigkeitsdatum wird schon im Editor als Fehler markiert, nicht erst im Test. Nach diesem Prinzip generiert etwa die Zurich Gruppe versicherungsmathematische Funktionen direkt aus einer DSL.
Nutzen im Software- und Systems Engineering
DSLs definieren nicht nur ein Vokabular — sie kodieren die Methodik selbst. Welche Konzepte existieren, welche Beziehungen erlaubt sind, welche Constraints gelten: Das ist Domänenwissen, das sonst in Köpfen oder Handbüchern steckt, gegossen in ausführbare Sprachkonstrukte. Daraus ergeben sich die zentralen Vorteile:
- Fachexperten arbeiten im eigenen Vokabular — die Distanz zwischen Fachlichkeit und Implementierung schrumpft.
- Validierung beim Tippen — methodische Regeln werden strukturell erzwungen statt dokumentiert.
- Konsistente Codegenerierung — aus einem Modell entstehen automatisiert Code, Konfiguration oder Dokumentation.
- Wissen bleibt im Unternehmen — im Metamodell kodiert statt nur in den Köpfen einzelner Experten.
DSLs in der Praxis: Die Sprache ist nur der Anfang
Ob sich eine DSL lohnt, entscheidet sich vor der ersten Zeile Grammatik: in der Analyse, wie die Experten einer Domäne tatsächlich arbeiten und welche Konzepte ihre Methodik ausmachen. Nicht jede Domäne braucht eine eigene Sprache — manchmal ist eine Standardnotation wie UML mit einem projektspezifischen Profil die präzisere und günstigere Lösung. Und eine DSL ohne gute Werkzeugunterstützung (Editor, Validierung, Generator) wird von Fachexperten schlicht nicht angenommen. Entscheidend ist daher weniger die Sprache selbst als das Zusammenspiel aus Sprachdesign, Tooling und Integration in die bestehende Toolchain.


