MontiCore: Agile Entwicklung von domänenspezifischen Sprachen ...
MontiCore: Agile Entwicklung von domänenspezifischen Sprachen ...
MontiCore: Agile Entwicklung von domänenspezifischen Sprachen ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
22 Kapitel 2 – Entwurf und Einsatz <strong>von</strong> DSLs in der Softwareentwicklung<br />
auch eine oder mehrere DSLs verwendet werden. Die <strong>Entwicklung</strong> einer DSL ist immer mit<br />
der Erstellung dazugehöriger Werkzeuge verbunden, die die Modelle zur Parametrisierung<br />
der in Abschnitt 1.5 beschriebenen Codegenerierungen verwenden. Wird im Folgenden der<br />
Begriff DSL-<strong>Entwicklung</strong> verwendet, ist damit nicht nur die Sprachdefinition, sondern immer<br />
auch die <strong>Entwicklung</strong> der Werkzeuge gemeint. Der Fokus einer DSL-unterstützten<br />
Softwareentwicklung liegt jedoch weniger auf der Etablierung einer Plattform wie bei den<br />
Software-Produktlinien, da die Produkte nicht zwangsläufig eine gemeinsame Referenzarchitektur<br />
verwenden müssen. Vielmehr können die Produkte auch nur insofern ähnlich<br />
sein, als die Struktur <strong>von</strong> Subsystemen oder die Realisierung bestimmter Querschnittsfunktionalitäten<br />
gleich sind. Dies ist insbesondere dann der Fall, wenn DSLs aus technischen<br />
Domänen bei der Realisierung des Produkts verwendet werden.<br />
Dieses Kapitel beschreibt zunächst in Abschnitt 2.1, welche Aktivitäten in den meisten<br />
Softwareentwicklungsprozessen auftauchen und daher im Folgenden betrachtet werden. In<br />
Abschnitt 2.2 wird dargestellt, für welche dieser Aktivitäten DSLs verwendet werden können<br />
und wie eine aktivitätenübergreifende Verwendung aussieht. In Abschnitt 2.3 wird dargestellt,<br />
was die typischen Arbeitspakete innerhalb der Aktivitäten einer DSL-<strong>Entwicklung</strong><br />
sind. Daraufhin wird in Abschnitt 2.4 erklärt, wie sich die DSL-<strong>Entwicklung</strong> und die Produkterstellung<br />
miteinander zu einem agilen Prozess eng koppeln lassen. In Abschnitt 2.5<br />
werden die verschiedenen Möglichkeiten, eine DSL zu realisieren, übersichtsartig dargestellt.<br />
In Abschnitt 2.6 wird der eigenständige DSL-Entwurf detaillierter erklärt.<br />
2.1 Aktivitäten in der Softwareentwicklung<br />
Damit DSLs erfolgreich in der Softwareentwicklung verwendet werden können, müssen<br />
sie in den Softwareentwicklungsprozess eingebunden werden. In der derzeitigen <strong>Entwicklung</strong><br />
<strong>von</strong> Softwaresystemen lassen sich grob die folgenden vier Aktivitäten identifizieren:<br />
Analyse, Entwurf, Implementierung, Verifikation/Validierung. Zusätzlich kann noch die<br />
Softwareauslieferung und -wartung betrachtet werden, die die Aktivitäten nach der Fertigstellung<br />
der Software bezeichnen. Die Analyse hat als Ziel, alle Anforderungen der vom zu<br />
erstellenden System mittelbar oder unmittelbar betroffenen Personen oder Institutionen zu<br />
erfassen. Der Entwurf nimmt diese Anforderungen als Grundlage und plant die Struktur der<br />
Software. Die Ergebnisse werden in der Implementierung verfeinert und in eine lauffähige<br />
Software umgesetzt. Die Verifikation/Validierung überprüft, ob die Ergebnisse der Analyse,<br />
des Entwurfs und der Implementierung mit den formulierten und den impliziten Anforderungen<br />
der vom zu erstellenden System mittelbar oder unmittelbar betroffenen Personen<br />
oder Institutionen übereinstimmen. Die Softwareauslieferung beschreibt den Prozess zur<br />
Installierung der Software auf den Zielsystemen. Die Softwarewartung fasst die Prozesse<br />
zusammen, die auftreten, wenn sich nach der Auslieferung der Software Änderungen an<br />
Anforderungen oder der technischen Infrastruktur ergeben.<br />
Die beschriebenen Aktivitäten finden sich in allen gängigen Softwareentwicklungsprozessen<br />
wieder, wobei jeweils eine etwas andere Terminologie verwendet wird und der genaue<br />
Inhalt der einzelnen Aktivitäten variieren kann. Zusätzlich unterscheiden sich die Prozesse<br />
auch durch die Priorisierung der Aktivitäten und die Reihenfolge ihrer empfohlenen Ausführung.<br />
Zum Beispiel wird die Softwarewartung im Wasserfallmodell [Roy70] als Betrieb<br />
bezeichnet. Iterative Prozesse wie das Spiralmodell [Boe88] verwenden grundsätzlich dieselben<br />
Aktivitäten, führen diese aber innerhalb der <strong>Entwicklung</strong> der Software wiederholt<br />
aus. Das V-Modell [VMo97] dagegen teilt die Verifikation/Validierung in mehrere Aktivitäten<br />
auf, wobei jeweils die Sicherung der Qualität auf einer bestimmten Granularität<br />
betrachtet wird. Die Weiterentwicklung des V-Modells [RB08] erweitert den Prozess um