27.10.2015 – Kategorie: IT

Darwins Theorien optimieren Software-Entwicklung

shutterstock_dragon-images

Was hat Software-Entwicklung mit der Evolution gemein. Eigentlich viel, das dachten sich wohl auch die Initiatoren eines Projektes des Wissenschaftsfonds FWF, die davon ausgehen, dass sich Software für ganze Produktlinien automatisch und intelligent aufeinander abstimmen können – und nicht wie bisher „manuell“ und unkoordiniert.

Was hat Software-Entwicklung mit der Evolution gemein. Eigentlich viel, das dachten sich wohl auch die Initiatoren eines Projektes des Wissenschaftsfonds FWF, die davon ausgehen, dass sich Software für ganze Produktlinien automatisch und intelligent aufeinander abstimmen können – und nicht wie bisher „manuell“ und unkoordiniert.

In einem Projekt des Wissenschaftsfonds FWF wurden Algorithmen zur Abstimmung von Software entwickelt, die auf Prinzipien der Evolution beruhen. Dabei stimmen sich die Funktionalitäten der einzelnen Komponenten selbstständig aufeinander ab. Beispiel Smartphone: Jede Komponente – wie Kamera, Akku oder App – hat ihre eigene Software und deren Abstimmung aufeinander ist selbst heute noch eher dem Zufallsprinzip überlassen. Ganz besonders eklatant wird dieses Problem bei Produktfamilien, bei denen die Software eines Produkts (Smartphone) auch für viele andere Produkte (Tablet) verwendet wird.

Diese Software in der Entwicklungsphase richtig abzustimmen hat sich Roberto Erick Lopez-Herrejon von der Johannes-Kepler-Universität in Linz in einem Projekt des Lise Meitner-Programms des FWF zum Ziel gemacht – mit spannenden Ergebnissen, die nun in mehreren internationalen Publikationen veröffentlicht wurden.

Suchen und finden

Zu den Hintergründen des Projekts meint Lopez-Herrejon: „Die Anpassung von Software aneinander ist hoch komplex. Die nahezu unendlich vielen Möglichkeiten wie diese interagieren sind unüberblickbar. Die Probleme, die auftauchen können sind also gar nicht alle vorhersehbar – und genau deswegen sucht man nach Lösungen diese zu vermeiden. Dabei wird trotz des enormen Zeitdrucks bei der Entwicklung noch immer auf die Leistung individueller Fachleute gesetzt, anstatt den Prozess zu automatisieren. Wir haben nun nach Wegen gesucht, diesen Optimierungsprozess durch Einsatz intelligenter Algorithmen zu automatisieren.“

Einer dieser Wege nennt sich „Search Based Software Engineering“ und basiert auf „metaheuristischen Methoden“, einem näherungsweisen Verfahren, das allgemeingültige Lösungen in unüberschaubaren Problemen schafft. Selbst wenn das Wissen über die Struktur der Software nur teilweise bekannt ist, können dennoch Lösungsszenarien berechnet werden, die zwar nicht unbedingt das absolute Optimum darstellen, in der Praxis die Breite aber ausreichend gut abdecken – und mit überschaubarer Rechnerleistung kalkuliert werden können.

Die natürliche Lösung

„Wir haben nun in unserem Projekt Algorithmen entwickelt, die sich an Prozessen der natürlichen Evolution orientieren“, erläutert Lopez-Herrejon den besonderen Ansatz des Projekts, „darin werden Prinzipien der Vererbung und von Mutationen genauso abgebildet wie Selektion. So erhalten wir näherungsweise Lösungsansätze, die sich in der Realität bewähren.“

Ein spezielles Problem, dem sich das Team um Lopez-Herrejon widmete, war das Kontrollieren der Richtigkeit, Sicherheit und Zuverlässigkeit solcher Software. Dabei werden Softwareteile (auch Komponenten genannt), daraufhin kontrolliert, ob und wie sie mit anderen Komponenten integrierbar sind, um eine falsche Verwendung zu vermeiden. Dies ist eine zwingende Voraussetzung für die reibungslose Komponenteninteraktion innerhalb eines Softwareprodukts. Das Team konnte dabei einen allgemeinen Ansatz entwickeln, der diese Kontrolle (auch Consistency Checking genannt) für die gesamte Familie von Softwareprodukten (also allen Komponentenkombinationen auf einmal) erlaubt – und zwar bereits in einem sehr frühen Stadium der Entwicklung dieser Software. Zu einem Zeitpunkt also, zu dem etwaige Korrekturen noch ohne viel Aufwand möglich sind.

Linientreu

Für Lopez-Herrejon war es ganz klar, den Fokus des Projekts auf ganze Familien von Softwareprodukten zu legen: „Eine Softwarefamilie, auch als Software Product Line bezeichnet, ist eine Art modulares System, wo ein Softwareprodukt auf kombinierbaren Komponenten aufbaut. Und da manche dieser Komponenten öfter in Softwareprodukten verwendet werden, sind diese bereits zuverlässiger und können mit weniger Testen in neuen Softwareprodukten wiederverwendet werden. Das verkürzt die Entwicklungszeit von neuen Produkten enorm und beschleunigt den Markteintritt.“ Gleichzeitig müsse aber gerade bei Software Product Lines die Abstimmung der Komponenten sehr sorgfältig geplant werden, denn oftmals wurden diese Bestandteile zunächst für eine andere Umgebung (Smartphones) entwickelt – und die „Zusammenarbeit“ mit anderen Softwarekomponenten in einer neuen Umgebung (Tablets) kann dann voller Überraschungen stecken. Oder eben nicht, wenn die in dem FWF-Projekt entwickelten Algorithmen zukünftig bei der Entwicklung der Software zum Einsatz kommen.


Teilen Sie die Meldung „Darwins Theorien optimieren Software-Entwicklung“ mit Ihren Kontakten:

Zugehörige Themen:

App-Entwicklung, Software

Scroll to Top