zu diesem Thema und Infos zum Lehrstuhl
zu diesem Thema und Infos zum Lehrstuhl
zu diesem Thema und Infos zum Lehrstuhl
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
wenige „Fäden“ gibt; jeder Faden entspricht der Tätigkeit<br />
eines Prozessors. Wenn wir den Durchsatz<br />
maximieren wollen, brauchen wir mehr Prozessoren,<br />
also mehr Fäden. Da die Punkte auf jedem<br />
Faden aber weiter voneinander entfernt sind, kann<br />
der Prozessor versetzt zwei weitere Matrixprodukte<br />
berechnen, ohne dass wir bei der Berechnung jedes<br />
einzelnen Matrixprodukts Zeit verlieren.<br />
Sehr beeindruckend. Aber die Welt besteht nicht nur<br />
aus Matrixprodukten.<br />
Dies ist ja nur ein einfaches Beispiel für die Anwendung<br />
des sogenannten Polyedermodells. Wir können<br />
auch wesentlich kompliziertere Schleifenprogramme<br />
automatisch parallelisieren. Ebenso kann<br />
man das Modell da<strong>zu</strong> benutzen, auf einfache Weise<br />
die Granularität der Parallelität <strong>zu</strong> vergröbern, d. h.<br />
die Anzahl der von den Raumschleifen aufgezählten<br />
Prozessoren der der tatsächlich vorhandenen Prozessoren<br />
an<strong>zu</strong>gleichen.<br />
Dieses Modell scheint ja gerade <strong>zu</strong>r rechten Zeit für<br />
die neuen Mehrprozessorrechner <strong>zu</strong> kommen. Derartige<br />
Methoden könnten die Entwickler von Software<br />
für solche Rechner sehr entlasten.<br />
Genauso sehen wir es auch.<br />
Zeitaufteilung<br />
Raumaufteilung<br />
(niedrige Prozessorenzahl)<br />
Raumaufteilung<br />
(hoher Durchsatz)<br />
Feature-Orientierte<br />
Software-Entwicklung<br />
Es gibt aber noch andere Stellen, an denen wir<br />
glauben, den Programmierer mit automatischen<br />
Techniken unterstützen <strong>zu</strong> können. Betrachten wir<br />
einmal nicht wissenschaftliche, sondern Anwendungssoftware.<br />
Jeder, der schon mal an einem<br />
Computer gearbeitet hat, hat Anwendungssoftware<br />
verwendet. Beispiele sind Software <strong>zu</strong>m Schreiben<br />
<strong>und</strong> Gestalten von Textdokumenten oder Webbrowser<br />
<strong>und</strong> Email-Programme.<br />
Ja, solche Programme habe ich schon benutzt. Aber<br />
wo liegt das Problem?<br />
Das Problem ist, dass Anwendungssoftwaresysteme<br />
heut<strong>zu</strong>tage über eine riesige Menge an Funktionalität<br />
verfügen, die nur selten von einem Anwender<br />
auch verwendet werden kann. Ich wette mit Ihnen,<br />
dass die meisten Nutzer nicht mehr als 10 % der<br />
Funktionalität von Word ausnutzen.<br />
Und wenn schon... Wenn die Software mehr kann,<br />
als ich brauche, umso besser!<br />
Das Problem ist einerseits, dass Sie natürlich den<br />
kompletten Funktionsumfang bezahlen müssen.<br />
Andererseits wird die Software unnötig komplex,<br />
langsam <strong>und</strong> fehleranfällig. Oftmals ist es für Entwickler<br />
wie Anwender schwer, das Softwaresystem<br />
überhaupt noch <strong>zu</strong> überblicken, geschweige denn im<br />
Detail <strong>zu</strong> verstehen.<br />
Firmen sollten also Anwendungssoftware ausliefern,<br />
die genau das kann, was der individuelle<br />
K<strong>und</strong>e wünscht, <strong>und</strong> ihm auch nur das in Rechnung<br />
stellen?<br />
Genau. In <strong>diesem</strong> Zusammenhang sprechen wir<br />
auch von Features. Ein Feature ist ein Verhalten bzw.<br />
ein Stück Funktionalität, das sich der Anwender von<br />
einem Softwaresystem erhofft. Features in Textverarbeitungssoftware<br />
sind z. B. die Rechtschreibprüfung,<br />
die Möglichkeit <strong>zu</strong> drucken oder die Unterstüt<strong>zu</strong>ng<br />
verschiedener Sprachen.<br />
Und wie helfen Features nun, Anwendungssoftware<br />
besser <strong>zu</strong> bauen?<br />
Die Idee ist, dass die einzelnen Bestandteile, aus denen<br />
ein Softwaresystem besteht, den einzelnen Features<br />
des Softwaresystems <strong>zu</strong>geordnet werden. Wenn man<br />
so will, beantwortet man die Frage, welches Feature<br />
durch welche Teile des Softwaresystems umgesetzt<br />
wird. Oftmals ist diese Antwort aber recht kompliziert.<br />
Würde man die Teile eines Softwaresystems<br />
einfärben, die <strong>zu</strong> den jeweiligen Features gehören,<br />
so wären die farblichen Fragmente weit verstreut <strong>und</strong><br />
stark miteinander vermischt.<br />
Feature-Zugehörigkeiten in<br />
einem Codestück<br />
Also wenn man eine Zuordnung hat, kann man die<br />
Teile eines Softwaresystems weglassen, die von mir<br />
nicht bezahlt werden?<br />
Korrekt. Neben der Maßschneiderung von Softwaresystemen<br />
durch Features hat man aber noch<br />
weitere Vorteile. Der Anwender kann leichter einen<br />
Überblick über seine Anwendungssoftware bekommen.<br />
Und der Entwickler kann, wenn ein Fehler auftritt,<br />
feststellen, welche Features betroffen sind, <strong>und</strong><br />
so die Fehlerquelle eingrenzen. Da<strong>zu</strong> sind natürlich<br />
Methoden <strong>und</strong> Werkzeuge nötig, die unter anderem<br />
auch an unserem <strong>Lehrstuhl</strong> entwickelt werden.<br />
Okay, aber wo bleiben denn da die automatischen<br />
Techniken?<br />
Wir arbeiten auch an einem Werkzeug, das bei Angabe<br />
einer Sequenz von Features automatisch ein<br />
Softwaresystem erstellt, das die entsprechenden<br />
Funktionalitäten hat, <strong>und</strong> das obendrein gerade<br />
für diese Kombination von Funktionalitäten optimiert<br />
ist. Bei Weiterentwicklung dieser Technologie<br />
könnte sich ein K<strong>und</strong>e seine Anwendungssoftware<br />
so <strong>zu</strong>sammenstellen wie heute etwa einen Neuwagen<br />
– <strong>und</strong> sie wird dann auch ebenso automatisch<br />
<strong>zu</strong>sammengesetzt. Eine Konsequenz wäre, dass das<br />
Produkt dann auch mit ähnlichen Garantien ausgeliefert<br />
werden kann.<br />
53