Domänenspezifische Sprachen - DSLs

Domänenspezifische Sprachen bieten formale Notation für einen bestimmten Zweck an

Maßgeschneiderte Sprachen für besondere Probleme

Domänenspezifische Sprachen, oder DSLs, sind weit verbreitet, um die Modellierung komplexer Systeme zu ermöglichen, und zwar nicht unbedingt nur durch Software-Programmierer.

Lesen Sie mehr

Es gibt Aufgaben, für die ein neues Programm geschrieben werden muss. Doch die dafür gewählte Programmiersprache oder der gewählte Ansatz scheint der Lösung der Aufgabe im Weg zu stehen. In dieser Situation könnten Sie eine domänenspezifische Sprache in Betracht ziehen.

Domänenspezifische Sprachen im Vergleich zu Allzwecksprachen

Was ist eine DSL?

Um zu erklären, was eine domänenspezifische Sprache ist, lohnt es sich, zunächst die Rolle und die Möglichkeiten einer Allzwecksprache zu betrachten. Programmiersprachen wie C, Java und Rust sind so konzipiert, dass sie jede Aufgabe bewältigen können, die ein Programmierer in Angriff nimmt. Wenn nötig, können sie dieselbe Aufgabe auf unterschiedliche Weise lösen. Eine mathematische Funktion wie die Fibonacci-Reihe kann beispielsweise als Bibliotheksfunktion zur Verfügung stehen, sie kann aber auch mit Loops oder Rekursion programmiert werden. Allzwecksprachen werden verwendet, um Software zu erstellen, die beispielsweise eine Kaffeemaschine steuert, medizinische Bilder analysiert oder Bilder vom Mars zur Erde überträgt.

Im Vergleich dazu sind domänenspezifische Sprachen restriktiv. Die Domäne, für die die Sprache entwickelt wird, bestimmt ihre Fähigkeiten. Im Gegensatz zu Allzwecksprachen werden domänenspezifische Sprachen oft von Nicht-Programmierern verwendet. In der Regel arbeitet ein Fachmann, z. B. ein Versicherungsmathematiker oder Physiker, mit einem Team von Softwareentwicklern zusammen, um eine domänenspezifische Sprache zu entwickeln. Ein Großteil der Arbeit besteht zunächst darin, die Domäne zu verdeutlichen und die verwendete Nomenklatur zu verfeinern. Nachdem dies geklärt ist, wird eine Sprache entwickelt, mit der Probleme in diesem Bereich effizient angegangen werden können, auch wenn die Benutzer keine typischen Softwareprogrammierer sind.

Letztendlich unterstützen DSLs ihre Benutzer bei einer Vielzahl von Aufgaben wie der Analyse und Bewertung von Informationen, der Durchführung von Konsistenzprüfungen und der Erstellung von Dokumentation oder Input für andere Tools.

Anwendungsbeispiele für DSLs

Wo werden DSLs eingesetzt?

DSLs werden überall eingesetzt, aber nicht in jeder Situation ist es sinnvoll. Ein erstes Anzeichen für den Bedarf einer domänenspezifischen Sprache ist die Abhängigkeit der Benutzer von Excel-Tabellen oder Diagrammen in PowerPoint, um Aufgaben zu dokumentieren und zu erledigen. Oder sie haben eine Sprache, wie z.B. C, mit einer Skriptsprache erweitert. Zweitens muss die Aufgabe entweder so kompliziert sein, dass sie eine eigene Sprache rechtfertigt, oder sie muss ein integraler Bestandteil des Unternehmens sein. Dann kann eine DSL zu Kosteneinsparungen und Effizienzsteigerungen führen. Zu den DSLs, die für bestimmte Anwendungsfälle entwickelt werden, gehören Testumgebungen für eingebettete Systeme, die Modellierung komplexer Versicherungsprodukte für Aktuare, große Maschinen für Physiker oder die Modellierung komplexer Kommunikationssatelliten.

Der DSL-Entwicklungsprozess

Wie werden DSLs entwickelt?

Der erste Schritt im Entwicklungsprozess einer domänenspezifischen Sprache besteht darin, das Problem gemeinsam mit den Experten der Domäne zu untersuchen. Dies geschieht in der Regel in einem oder mehreren Treffen oder in Workshops. Während dieses Prozesses wird der Umfang der Aufgabe, die Besonderheiten der Domäne und die Bedürfnisse des Teams definiert. Am Ende der Sitzungen ist die neue Sprache und ihre Verwendung in der Regel sichtbar. Es wird auch klar, ob die DSL textbasiert oder visuell sein soll.

Als Nächstes folgt die Entwicklung der ersten Prototypen der Sprache. Im Verlauf dieser Entwicklung können erste Einschätzungen darüber gemacht werden, welche Verbesserungen die Sprache für den Unternehmensprozess bringen wird und ob die erhofften Effizienzgewinne erzielt werden können.

Wenn grünes Licht gegeben wird, entwickelt das Softwareteam die domänenspezifische Sprache in mehreren Durchläufen, so dass die Domänenexperten ihre Leistung regelmäßig bewerten können. Während dieses Prozesses werden Pläne erstellt, die sicherstellen, dass die DSL entweder vom Team des Kunden oder von PROTOS gepflegt und erweitert werden kann.

Beispiele für domänenspezifische Sprachen

Von PROTOS entwickelte DSLs

Das Entwicklungsteam von PROTOS hat in den letzten Jahren an einer Reihe von Projekten mitgewirkt, von denen einige kommerziell und andere Open-Source sind. Diese haben verschiedene DSLs hervorgebracht, die regelmäßig verwendet werden, darunter:

Andere Projekte haben sich mit folgenden Themen befasst:

  • Modellierung von fahrzeuginternen Infotainment-Systemen (IVI).
  • Definition des optimalen Systemdesigns von Kommunikationssatelliten.
  • Bearbeitung von Dokumentation und Architekturentwürfen für Systemingenieure für Fahrzeugplattformen, einschließlich des Anforderungsmanagements.

DSL-Projekt von Anfang bis Ende

Die Zusammenarbeit mit PROTOS bei der DSL-Entwicklung

DSL-Projekte nehmen viele Formen an, von der Entwicklung "von Grund auf" bis zur Unterstützung von Teams bei der Entwicklung und Erweiterung bestehender DSLs. Bei einem ersten Treffen besprechen wir Umfang, Zeitrahmen und Anforderungen. So können wir Status und Bedürfnisse neuer Kunden einschätzen und die nächsten Schritte planen. Wenn Sie der Meinung sind, ein DSL zu brauchen, Sie sich aber noch nicht mit solch einem Projekt befasst haben, bieten wir auch eine breite Palette von Seminaren an, die Ihnen helfen, die optimale Vorgehensweise zu bestimmen. Wir freuen uns immer über ein persönliches Gespräch, deshalb nutzen Sie bitte das untenstehende Kontaktformular, wir werden uns bei Ihnen melden!

Das Team der PROTOS Software GmbH hat viele DSLs für seine Kunden entwickelt und schult diese auch in der Verwendung von Xtext und Xtend oder auch JetBrains MPS, um eigene DSLs und Codegeneratoren zu erstellen.

Bewegen Sie sich weg von der Entwicklung von Softwarekonzepten in Allzwecksprachen oder der Verwendung ungeeigneter Werkzeuge und nehmen Sie Kontakt mit uns auf, um zu erfahren, wie DSLs Ihr Entwicklungsteam unterstützen können.