In der Softwareentwicklung wird in der jüngeren Zeit wieder zunehmend über Domain Specific Languages (DSL) gesprochen. Dies sind künstliche formale Sprachen, die speziell für einen klar umrissenen Problembereich entwickelt werden. Damit grenzen sie sich gegenüber universell einsetzbaren Programmiersprachen wie Java oder C# ab, in denen man die gleichen Sachverhalte ebenfalls abbilden kann – nur meistens nicht so elegant. Um bei der gewählten Metapher zu bleiben: Die Nagelpistole nutzt zwar nichts, wenn ein Parkett verlegt werden muss, da nimmt man besser wieder den Hammer. Doch das Zunageln von Kisten wird einfacher, präziser und schneller – bei jeder Wiederholung. In der Analogie ist die universell einsetzbare Programmiersprache das Pendant zum Hammer; die Nagelpistole eine DSL.
Es gibt mittlerweile eine Vielzahl von DSL, die nicht mehr nur Spezialisten bekannt sind, wie beispielsweise CSS, SQL oder XAML. Diese betreffen Anwendungsgebiete – resp. im Fachausdruck Domänen -, die in der IT praktisch zum Inventar gehören. Diese Sprachen haben sich in ihren spezifischen Anwendungsgebieten gegenüber den universellen Sprachen wie Java oder C# durchgesetzt und haben ihre Bekanntheit aus dem Grund erzielt, dass die zugrundeliegenden Problemstellungen in der IT allgegenwärtig sind. Doch – um wieder die gewählte Analogie heranzuziehen – was wäre, wenn Firma X als erste pro Tag 100 Kisten zunageln wollte und im Fachhandel gäbe es (noch) keine Nagelpistolen. Jeder wird leicht einsehen, dass Firma X von der Eigenentwicklung einer Nagelpistole profitieren würde. In der Softwareentwicklung scheint es hingegen weit weniger offensichtlich zu sein, dass die Option zur Entwicklung einer DSL generell immer besteht und sich weit öfter lohnt als angenommen.
Denn DSL bieten noch weitere Vorteile: Mit der Definition einer DSL kann eine Sprache auf der Ebene der Domänenexperten angelegt werden, welche diese dann leicht lesen - also in ihr geschriebene Artefakte reviewen können - und im Idealfall auch selbst schreiben können. Die Lesbarkeit allein erlaubt bereits die Validierung des Bedeutungsinhalts auf Domänen- sowie auf Benutzer- und Geschäftsebene, was mit allein in Java oder C# geschriebener Software nicht gelingt. Dieser Vorteil kann Geld und Zeit wert sein. Wenn die Experten dazu Teile der Geschäftslogik selbst mit Hilfe der DSL schreiben können, entfällt die nötige Übersetzungsleistung von den Geschäftsanforderungen in die Programmiersprache; die DSL ist bereits die Programmiersprache, da sie automatisiert verarbeitet, das heisst kompiliert oder interpretiert werden kann. Für Software im validierten Umfeld ergibt sich zudem die interessante Option, Teile der Geschäftslogik in eine spezielle DSL auszulagern. Neben den schon erwähnten Vorteilen muss dann bei Änderungen an der Geschäftslogik nicht die komplette Software neu validiert werden, sondern lediglich der geänderte Teil der Geschäftslogik in der DSL.
Der Aufwand, eine eigene DSL zu entwerfen und zu implementieren ist in den letzten Jahren durch die Entwicklung von Tools wie ANTLR und Xtext stetig gesunken. Eine Anfangsinvestition ist zwar nach wie vor zu leisten. Doch die Einsparungen, die sich hinten hinaus durch Produktivitätssteigerungen erzielen lassen, lohnen es oft, von vornherein «Nägel mit Köpfen» zu machen.
Der Autor
Dirk Schwammkrug, Business Unit Manager,
Logica Switzerland AG;
www.logica.ch