Dieses Seminar ist Teil der Advanced Module der iSAQB-Zertifizierung für Software-Architekten (CPSA-A). Hier lernst du die Design- und Implementierungsprinzipien von domänspezifischen Sprachen (DSL) kennen. Diese sind entscheidend, denn Domänen vieler Projekte sind inhaltlich und fachlich kompliziert und erfordern besondere Flexibilität bei der Problemlösung, da sie Aspekte wie komplexe Regelwerke, Abläufe oder Beschreibungen von Domänenentitäten enthalten.
Vorteile von DSLs in deinem Projekt
In vielen Projekten ist die übliche Mehrzweck-Programmiersprache nicht immer ideal, um alle Anforderungen zu erfüllen. Dies zeigt sich besonders, wenn Benutzer:innen Software selbst konfigurieren sollen oder wenn die Sprache entweder zu komplex ist, um grundlegende Eigenschaften klar zu definieren oder nicht ausdrucksstark genug, um technische Details verständlich darzustellen. Domänspezifische Sprachen (“domain-specific languages”, DSLs) können helfen, diese Komplexität zu bändigen, befähigen Benutzer:innen selbstständig mit der Software auch komplexe Aufgaben zu lösen, ermöglichen Low-Code-Ansätze, bei denen Aufgaben mit weniger Code gelöst werden können, als es in der Implementierungssprache des Projekts möglich wäre, und verbessern Qualitätseigenschaften wie Adaptierbarkeit, Modifizierbarkeit, Analysierbarkeit und Sicherheit.
Praxisorientiertes Lernen mit Racket
Das Seminar vermittelt Fähigkeiten bei Design und Implementierung von DSLs, die in vielen Kontexten anwendbar sind. Dabei gehen wir systematisch vor. Wir fangen mit einfachen DSLs, die als Library in die Implementierungssprache des Projekts eingebettet werden, und die wir schrittweise weiterentwickeln zu komplett eigenständigen Sprachen mit eigener Syntax und Semantik. Die nötigen Grundlagen aus der Informatik werden begleitend vermittelt.
Alle Aspekte des Seminars werden von praktischen Übungen begleitet, welche die Teilnehmer:innen befähigen, selbst DSLs zu entwickeln und in die Architektur ihres Projekts zu integrieren. Die Übungen führen wir in Racket durch, eine besonderes leicht zur lernende und leistungsfähige Plattform für das Design von DSLs. Außerdem machen wir Exkurse in Xtext und MPS.