www.wikidata.de-de.nina.az
Eine domanenspezifische Sprache englisch domain specific language kurz DSL oder anwendungsspezifische Sprache ist eine formale Sprache die zur Interaktion zwischen Menschen und digital arbeitenden Computern Computersprache fur ein bestimmtes Problemfeld die sogenannte Domane entworfen und implementiert wird Beim Entwurf einer DSL wird man bemuht sein einen hohen Grad an Problemspezifitat zu erreichen Die Sprache soll alle Probleme der Domane darstellen konnen und sie soll nicht nichts darstellen konnen was ausserhalb der Domane liegt Dadurch ist sie durch Domanenspezialisten ohne besonderes Zusatzwissen bedienbar Das Gegenteil einer domanenspezifischen Sprache ist eine Allzweck Programmiersprache wie beispielsweise Python oder C oder eine universell einsetzbare Modellierungssprache wie UML Inhaltsverzeichnis 1 Vorteile 2 Nachteile 3 Arten von DSLs 3 1 Interne bzw eingebettete DSLs internal DSL 3 2 Externe DSLs external DSL 4 Nutzungsphasen 4 1 Definition der Sprache 4 2 Erstellung von Satzen 4 3 Auswertung von Satzen 5 Werkzeuge 6 Siehe auch 7 Literatur 8 WeblinksVorteile BearbeitenZu den Vorteilen einer DSL gegenuber der Nutzung einer allgemeinen Programmier oder Spezifikationssprache zahlen weniger Redundanz deklarative Beschreibung eines Sachverhaltes bessere Lesbarkeit weniger technischer Code domanenspezifische statische Validierung nur externe DSLs leichte Erlernbarkeit aufgrund des beschrankten Umfangs und verborgene Wirkungen sind eher nicht zu erwarten Auch Endbenutzer konnen DSLs verwenden da diese leichter erlernt werden konnen als universell einsetzbare Programmiersprachen Man spricht hier von End User Development Nachteile BearbeitenBei Nischensprachen bzw proprietaren DSLs Fehlen von Sprachstandards Zertifizierungsmoglichkeiten freien Implementierungen freien oder kommerziellen Bibliotheken Literatur Diskussionsforen etc Aufwand fur das Erlernen einer neuen Sprache bei einem verhaltnismassig eingeschrankten Anwendungsbereich der Sprache fehlende Moglichkeit oder Bereitschaft von Anwendern sich privat in der Sprache weiterzubilden Risiko dass der Anwender wegen fehlender oder ungeeigneter Dienstprogramme tools fur die DSL viele Entwicklungsaufgaben Review Fehlersuche Laufzeitmessung in der Sprache des erzeugten Codes vornehmen muss Risiko eines Lock in mit interner Bindung an die eigene Programmentwicklung oder externer Bindung an den Anbieter von Programmen fur eine Nischensprache Risiko dass die Moglichkeit eine neue Sprache zu entwickeln oder zu verwenden zum unzureichenden Bemuhen um andere sinnvolle Alternativen fuhrt wie beispielsweise der Schaffung vergleichbar geeigneter Abstraktionen in den bisher verwendeten Sprachen Aufwand fur die Bestimmung der Anforderungen an die neue Sprache der Definition von Syntax und Semantik sowie der Implementierung und Pflege der Dienstprogramme Editoren Compiler Debugger statische Codechecker Testumgebungen Testabdeckungsbestimmung Metrik Tools die zur Anwendung der Sprache benotigt werden Schwierigkeit die langfristig benotigten Eigenschaften der Sprache zu identifizieren Benotigt die Sprache ein Modulkonzept die Moglichkeit zur Definition von Unterroutinen oder Datentypen die Darstellung von Vererbung oder Schnittstellen oder generischer Programmierung oder die Integrierbarkeit mit Code in anderen Programmiersprachen Risiko einer schleichenden Entwicklung der Sprache zu einer allgemeinen Programmiersprache weil die Anspruche an die Sprache steigen und die Sprache um neue Konzepte erweitert werden muss Schwierigkeit der Findung des geeigneten Abstraktionsniveaus hoher Anspruch an die Kompetenz der Entwickler der Sprache Arten von DSLs BearbeitenMan unterscheidet zwischen internen eingebetteten DSLs und externen DSLs Interne bzw eingebettete DSLs internal DSL Bearbeiten Eine Untermenge domanenspezifischer Sprachen stellen die internen DSLs englisch internal DSL oder auch embedded domain specific language dar die wesentliche Komponenten der Sprachimplementierung ihrer Wirtssprache nutzen Dadurch sinkt der Implementierungsaufwand Eine interne DSL ist immer eine echte Untermenge einer generelleren Sprache Prominente Vertreter von internen DSLs sind Rake das make fur Ruby Xunit Frameworks SwiftUI ein domanen spezifisches UML2 Profil Stereotype Stereotypeigenschaften und Constraints ein domanen spezifisches XML Schema Elemente Restriktionen Lisp basierte DSLs Externe DSLs external DSL Bearbeiten Eine externe DSL ist eine von Grund auf neu definierte Sprache Sowohl die konkrete Syntax als auch die Semantik konnen hier frei definiert werden Externe DSLs gelten daher als flexibler und ausdrucksstarker War die Erstellung von externen DSLs in der Vergangenheit noch mit sehr viel Aufwand verbunden so gibt es heute sehr gute Werkzeuge die das Entwickeln von externen DSLs erheblich vereinfachen z B eine sogenannte Language Workbench Prominente Beispiele fur externe DSLs sind SQL regulare Ausdrucke Nutzungsphasen BearbeitenEine DSL ist eine formale Sprache und kann daher maschinell unterstutzt werden Wahrend bei internen DSLs die Definition Nutzung und die Auswertung der DSL durch bestehende Werkzeuge unterstutzt werden Compiler XML Parser XMI Interpreter mussen fur externe DSL Ansatze neue Werkzeuge erstellt werden Definition der Sprache Bearbeiten Zunachst einmal mussen das Alphabet der Wortschatz domanenspezifische Schlusselworter der DSL festgelegt werden und die domanenspezifischen Satzbildungsregeln Erstellung von Satzen Bearbeiten In der nachsten Phase erstellen Domanenexperten Satze die zum Alphabet und den Satzbildungsregeln konform gehen und die fachlichen Gegebenheiten in ihrem Problembereich spezifizieren Auswertung von Satzen Bearbeiten Nachdem die Fachexperten ihre Spezifikationen erstellt haben gilt es diese maschinell auszuwerten und automatisiert weiterzubearbeiten Eine DSL kann mittels einer Domanentransformation in eine andere DSL uberfuhrt werden um das fachliche Problem dort weiterzuverarbeiten Irgendwann wird aber der Bereich der DSL verlassen und man uberfuhrt eine domanenspezifische Spezifikation in eine generische Spezifikation und kann diese dann mit Standardwerkzeugen in eine Problemlosung uberfuhren Die domanenspezifische Spezifikation wird auf folgende Arten in eine andere DSL transformiert oder in eine generische Spezifikation ubersetzt durch Codegeneratoren durch Interpreter oder mit Hilfe eines Compilers Werkzeuge BearbeitenDevelopment Environment for Visual Languages DEViL ein Generator System fur visuelle Sprachen der Universitat Paderborn DSL Tools fur Visual Studio Microsoft Eclipse Xtext Teil des Eclipse Modeling Framework Projekts Eclipse GMF EMFText JetBrains MPS MetaEdit MetaCase MontiCore LangiumSiehe auch BearbeitenModellgetriebene Softwareentwicklung Codegenerator Interpreter Modellgetriebene Architektur Domain driven Design FachspracheLiteratur BearbeitenMartin Fowler Domain specific languages Addison Wesley ISBN 978 0 321 71294 3 Georg Pietrek Jens Trompeter Hrsg Modellgetriebene Softwareentwicklung MDA und MDSD in der Praxis Entwickler Press ISBN 978 3 939084 11 2 Eric Steven Raymond The Art of Unix Programming Addison Wesley Professional Computing Series Addison Wesley Professional Boston 2003 ISBN 0 13 142901 9 Chapter 8 Minilanguages catb org abgerufen am 13 Juli 2015 diskutiert eine Reihe von domanenspezifischen Sprachen die es unter UNIX zum Teil schon seit Jahrzehnten gibt Thomas Stahl Markus Volter Sven Efftinge Arno Haase Modellgetriebene Softwareentwicklung Techniken Engineering Management 2 Auflage Dpunkt Verlag 2007 ISBN 978 3 89864 448 8 Markus Volter DSL Engineering Designing Implementing and Using Domain Specific Languages CreateSpace Independent Publishing Platform 2013 ISBN 978 1 4812 1858 0 Weblinks BearbeitenEfftinge Volter Haase Kolb The pragmatic code generator programmer The ServerSide Martin Fowler on Domain Specific Languages Peter Friese Sven Efftinge Jan Kohnlein Build your own textual DSL with Tools from the Eclipse Modeling Project Sven Efftinge Peter Friese Jan Kohnlein Best Practices of Model Driven Software Development Normdaten Sachbegriff GND 7585264 0 lobid OGND AKS nbsp Die Neutralitat dieses Artikels oder Abschnitts ist umstritten Eine Begrundung steht auf der Diskussionsseite Weitere Informationen erhaltst du hier Abgerufen von https de wikipedia org w index php title Domanenspezifische Sprache amp oldid 238483039