Diss.-ETH 12317 Diss.-ETH 12317 Diss.-ETH 12317 Diss.-E Eine ...
Diss.-ETH 12317 Diss.-ETH 12317 Diss.-ETH 12317 Diss.-E Eine ...
Diss.-ETH 12317 Diss.-ETH 12317 Diss.-ETH 12317 Diss.-E Eine ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
2.2. SOFTWARE-WIEDERVERWENDUNG 13<br />
steckt in der Struktur des Programms, das neue Programme erzeugt. Ein<br />
primitiver Vertreter dieser Vorgehensweise ist das Programmgerüst, das<br />
von einem Klienten bei Bedarf angepasst wird.<br />
Sprach-basierte, generierende Systeme bauen auf einer wohldefinierten<br />
Sprachkonstruktion auf, welche eine Domäne beschreibt. <strong>Eine</strong> solche<br />
Sprache ist weit mehr als nur eine Befehlszeile zur Steuerung eines Programmgenerators.<br />
Ein wesentlicher Vorteil für den Klienten besteht darin,<br />
dass die Sprache von Einzelheiten der Implementation abstrahiert. Als besondere<br />
Herausforderung beim Bau solcher Systeme gilt es jedoch, eine<br />
effiziente Implementation der Sprache zu finden.<br />
Transformations-basierte Systeme bestehen grob gesehen aus einer Folge<br />
von Transformationen, welche eine Grundvariante einer Programmfamilie<br />
beschreibt. Ein Klient passt diese Grundvariante neuen Bedürfnissen<br />
an, indem er einige Transformationen ersetzt und die geänderte Folge von<br />
Transformationen erneut “abspielt”, um das neue Programm zu erzeugen.<br />
Applikations-Generatoren enthalten Muster, die beim Erzeugen spezifischer<br />
Instanzen eines Zielsystems wiederverwendet werden. Ein Muster<br />
stellt dabei das Gemeinsame der erzeugten Instanzen dar. Ein Muster<br />
ist wesentlich flexibler als eine atomare Software-Komponente beim<br />
kompositions-basierten Vorgehen. Der variable Teil einer Applikationsfamilie<br />
wird aus geeigneten Eingabe-Daten erzeugt und im Applikations-<br />
Programm eingebaut. Als Vertreter eines Applikations-Generators wird<br />
DRACO [19] eingestuft, wobei auch dieses System sprach- und transformations-basierte<br />
Eigenschaften enthält.<br />
Den vorgestellten Systemen ist gemeinsam, dass sie neben Quell-Code<br />
auch Domänenwissen und Programmdesign wiederverwenden, um daraus<br />
neue Programme zu erzeugen. Dazu muss unabhängig von der Technik<br />
stets ein System zueinander passender und teilweise voneinander abhängiger<br />
Elemente organisiert werden.<br />
Dies geschieht innerhalb einer zu erarbeitenden, spezifischen Architektur<br />
6 .<br />
6 <strong>Eine</strong> Architektur ist laut [15]:<br />
“1. a organizational structure of a system or asset<br />
2. the structure of components, their interrelationships, and the principles and guidelines governing their<br />
design and evolution over time”<br />
<strong>Diss</strong>.-<strong>ETH</strong> <strong>12317</strong> <strong>Diss</strong>.-<strong>ETH</strong> <strong>12317</strong> <strong>Diss</strong>.-<strong>ETH</strong> <strong>12317</strong> <strong>Diss</strong>.-E