MontiCore: Agile Entwicklung von domänenspezifischen Sprachen ...
MontiCore: Agile Entwicklung von domänenspezifischen Sprachen ...
MontiCore: Agile Entwicklung von domänenspezifischen Sprachen ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
26 Kapitel 2 – Entwurf und Einsatz <strong>von</strong> DSLs in der Softwareentwicklung<br />
Konstrukte zur Verfügung gestellt werden können, die die Formulierung <strong>von</strong> kompakten<br />
Testfällen ermöglichen.<br />
Ein Beispiel für eine solche DSL ist die Testing and Test Control Notation Version 3<br />
(TTCN-3) [GHR + 03]. TTCN-3 ist eine standardisierte Sprache zur Erstellung <strong>von</strong> Testfällen,<br />
wobei spezifische Programmkonstrukte wie parametrisierbare Vergleichsoperatoren,<br />
Timer und nebenläufige Ausführung nativ zur Verfügung gestellt werden. Als eine mögliche<br />
Alternative wird in [Rum04a] eine Form der Testfallmodellierung mit UML-Objekt- und<br />
Sequenzdiagrammen beschrieben.<br />
Eine weitere Möglichkeit zur Validierung der Software stellt die Spezifikation <strong>von</strong> Invarianten<br />
dar. Diese können mit Hilfe <strong>von</strong> DSLs wie Alloy [Jac02] oder OCL [OMG06b]<br />
spezifiziert werden. Model checking [CGP00] ist eine Technik, die bestimmte (temporallogische)<br />
Invarianten einer Spezifikation gegenüber einem Modell überprüft oder gezielt<br />
deren Invalidierung zeigen kann. Die verschiedenen Systeme verwenden jeweils eine bestimmte,<br />
meistens automatenbasierte DSL zur Beschreibung des Modells und eine weitere,<br />
oft logikbasierte DSL für die Spezifikation.<br />
2.2.5 DSLs zur Softwareauslieferung<br />
Die Auslieferung verteilter Anwendungen umfasst mehr als nur ein reines Installationsprogramm.<br />
Dabei sind häufig der Einsatz <strong>von</strong> Deploymentdeskriptoren und die Verwaltung<br />
der Serverzugänge notwendig.<br />
In der aktuellen <strong>Entwicklung</strong>sumgebung <strong>von</strong> Microsoft (Visual Studio 2008) ist eine an<br />
UML-Verteilungdiagramme angelehnte DSL integriert, die es erlaubt, Softwarekomponenten<br />
auf physikalische Ressourcen zu verteilen. Bei einer Modifikation der Software kann so<br />
der Auslieferungsprozess automatisiert ausgeführt werden.<br />
2.2.6 DSLs zur Softwarewartung<br />
Mit zunehmender Komplexität und wirtschaftlicher Bedeutung existierender Anwendungen<br />
werden komplette Neuentwicklungen <strong>von</strong> Software seltener und die Evolution bestehender<br />
Anwendungen auf Basis veränderter Anforderungen häufiger. Zusätzlich ist die reine Wartung,<br />
also die Konservierung der Funktionalität bei Austausch der verwendeten Technologie<br />
oftmals aufgrund veralteter Hardware oder verwendeter Software-Plattformen, eine<br />
wichtige Disziplin innerhalb der Softwaretechnik.<br />
In [KR05, KR06a] wird die Evolution <strong>von</strong> Software-Architekturen auf der Basis einer<br />
expliziten Software-Architekturbeschreibung in Form einer kompakten DSL formuliert.<br />
Der Einsatz <strong>von</strong> DSL-Technologien in der Implementierung vereinfacht oftmals auch die<br />
Evolution, weil somit Domänenwissen und technische Realisierung in DSL-Modellen und<br />
Generatoren getrennt <strong>von</strong>einander entwickelt werden. In diesem Fall kann das explizit verfügbare<br />
Domänenwissen in Form der DSL-Modelle wieder verwendet und der Generator<br />
an die neuen Gegebenheiten angepasst werden. Ein aufwändiges Reverse-Engineering der<br />
impliziten Geschäftslogik in Softwaresystemen kann dann entfallen.<br />
2.2.7 Übergreifender Einsatz<br />
Die einzelnen bisher dargestellten Aktivitäten treten bei jedem Softwareentwicklungsprozess<br />
auf. Das heißt jedoch nicht zwangsläufig, dass die Aktivitäten nicht eng miteinander<br />
verzahnt sein können oder sogar zu einem <strong>Entwicklung</strong>sschritt zusammengefasst werden.<br />
Die modellbasierte <strong>Entwicklung</strong> auf der Basis <strong>von</strong> DSLs ermöglicht dieses Vorgehen im Sinne<br />
einer ausführbaren Spezifikation. Dabei wird eine DSL verwendet, die aus der Domäne