Zur Webseite der Informatik

Research of the Reliable Software Systems Research Group

(Translation will follow)

Methoden, Prozesse, Sprachen und Werkzeuge für den ingenieurmäßigen Softwareentwurf vertrauenswürdiger Systeme

Durch die fortschreitende Durchdringung unseres Alltags mit Systemen, die durch Software gesteuert werden, wird auch die Abhängigkeit von diesen Systemen immer größer. Es wird eine ordnungsgemäße, sichere und effiziente, sprich vertrauenswürdige, Ausführung dieser Software von den Anwendern erwartet. Um der zunehmenden Komplexität und der stetig steigenden Bedeutung der Erfüllung funktionaler und nicht-funktionalen Anforderungen der Software gerecht zu werden, entwickeln wir Methoden, Prozesse, Sprachen und Werkzeuge, um Software ingenieurmäßig herzustellen. Dabei zeichnet sich eine ingenieurmäßige Vorgehensweise durch planbare und vorhersehbare Ergebnisse bereits während des Entwurfs des Systems aus.

Wir, die Professur für Softwaretechnik, setzt sich mit der Erfüllung der funktionalen aber auch insbesondere der nicht-funktionalen Anforderungen bereits zur Entwurfszeit von Systemen auseinander. Eine solche Anforderungserfüllung ist zwingende Voraussetzung vertrauenswürdige Systeme. Dabei werden Systeme modellbasiert oder modellgetrieben spezifiziert und analysiert. Dazu kommen unter anderem Sprachen wie die UML2 (Unified Modeling Language, v2.x) und DSLs (Domänen-spezifischen Sprachen) zum Einsatz.

Grundpfeiler der Professur

Die Professur baut dabei auf drei Säulen auf: Modellierung und Analyse funktionaler und nicht-funktionaler Eigenschaften von Software, Methoden für den ingenieurmäßigen Softwareentwurf, und Reengineering von bestehenden Systemen.

Bei der Modellierung und Analyse richtet sich dabei unser Fokus unter anderem auf die Qualitätseigenschaften der Performance, der Zuverlässigkeit, der Wartbarkeit, der Skalierbarkeit, der Elastizität, der Kosteneffizienz, sowie der Sicherheit (sowohl im Sinne von Security als auch von Safety). Hierzu nutzen und erweitern wir formale Analysemodelle wie Markovketten, Warteschlangennetzwerke oder stochastische Prozessalgebren. Wenn es die Modelle erfordern, befassen wir uns auch mit geeigneten Simulationswerkzeugen.

Die Entwicklung qualitativ hochwertiger Software erfordert bei der heutigen Komplexität der Systeme Methoden der ingenieurmäßige Softwareentwicklung. Solche Methoden erfassen zuerst die Anforderungen systematisch in Modellen des zu realisierenden Systems und transformieren diese dann möglichst automatisiert in den lauffähigen Code. Zur Modellierung des Systems werden dabei aus Gründen der Wiederverwendbarkeit und der schrittweisen, skalierbaren Analysierbarkeit Komponenten oder Services eingesetzt – und zwar sowohl in betrieblichen Anwendungen als auch in eingebetteten oder mechatronischen Systemen. 

Liegen für solche Komponenten oder Services deren Modelle nicht vor, müssen sie gegebenenfalls für jede Art von Reengineeringaktivitäten aus Altanwendungen zuerst extrahiert werden. Hierzu entwickeln wir Methoden und Werkzeuge, die den Softwarearchitekten bei der Extraktion der Modell möglichst weitreichend unterstützt.

Aktuelle Kernthemen der Forschung

Derzeit befasst sich die Professur mit drei Kernforschungsthemen: Multi- und Many-Core-Systeme, energieeffiziente Ausführung und koordinierte Selbstadaptionen des Systems.

Multi- und Many-Core-Systeme sind Systeme, deren Hauptprozessoren (CPUs) aus mehreren Recheneinheiten (Cores) bestehen. Solche Systeme sind heutzutage der Stand der Technik. In solchen Systemen kann die CPU massiv parallel arbeiten - vorausgesetzt, es wird geeignet entworfene Software verwendet. Diesen Entwurf wollen wir geeignet mit Modellen und Analysen unterstützen. Multi-Core-Systemen weisen derzeit dutzende Recheneinheiten auf, in CPUs integrierte Beschleuniger wie GPUs weisen bereits hunderte oder tausende von Einheiten auf. Hat man noch mehr Einheiten, so sprechen wir von Many-Core-Systemen. Modellierung und Analyse solcher Systeme steckt noch in den Kinderschuhen und kann mehr mit dem Level von maschinennahen Sprachen, wie Assembler, verglichen werden: Höhere Abstraktionen in Programmiersprachen fehlen oft und Modelliersprachen sind für sequenzielle Rechner entworfen worden. Unsere Forschung beschäftigt sich mit der Frage, wie die effektive Nutzung von Multi- und Many-Core Systemen durch den Einsatz von Modellen auf einer höheren Abstraktionsstufe zugesichert werden kann.

Bei der Energieeffizienz geht es um das Ziel, Rechenzentren mit möglichst minimalem Stromverbrauch bei einer gegebenen Arbeitslast zu betreiben. Dazu müssen die Verarbeitungsschritte optimiert werden und unnötige Rechenschritte und Wartezeiten vermieden werden. Ebenfalls müssen Recheneinheiten oder ganze Knoten heruntergefahren werden, wenn sie nicht benötigt werden - jedoch so, dass sie in vorgegebener Zeit wieder zur Verfügung stehen, wenn diese wieder benötigt werden.

Moderne Systeme müssen in immer mehr und immer unvorhersehbaren Umgebungen agieren. Die Systeme brauchen also Fähigkeiten, sich zur Laufzeit an ihre Umgebung anzupassen. Eine der Techniken, die hier genutzt werden, ist die der Selbstadaption. Leider werden Selbstadaptionsmechanismen in Systeme eingebaut, ohne Wissen über andere Selbstadaptionssysteme im selben System. Daher forschen wir an koordinierter Selbstadaption, bei der all die Selbstadaptionsmechanismen koordiniert und einem globalen Systemziel untergeordnet werden. Dies soll verhindern, dass unkoordinierte Selbstadaption zu unvorhersehbarem Fehlverhalten führt – was bei eingebetteten, sicherheitskritischen Systemen Leben kosten oder bei Informationssystemen immerhin hohen finanziellen Schaden anrichten kann.

Anwendungsgebiete

Die Professur für Softwaretechnik wendet ihre Forschungsergebnisse derzeit in drei Hauptanwendungsgebieten an: Cloud Computing, HPC und mechatronische Systeme.

Im Cloud Computing stehen Systemen virtuell unbegrenzte Rechen-, Speicher- und Netzwerkressourcen zur Verfügung. Diese Ressourcen können von Systemen durch Selbstadaption und Virtualisierung zur Laufzeit nahezu beliebig angemietet, konfiguriert, umkonfiguriert und auch wieder freigegeben werden. Dieses hohe Maß an Flexibilität macht es nötig, genau den Entwurf der Systeme zu analysieren, um die Nutzerzufriedenheit sicherzustellen aber gleichzeitig auch die Betriebskosten zu optimieren.

Im HPC werden rechenintensive Probleme auf dedizierten, höchst komplexen, und enorm leistungsfähigen Rechnerclustern gelöst. Dies führt dazu, dass die Abarbeitung dieser Probleme systematisch geplant werden muss. Insbesondere Fehler in der Abarbeitung müssen frühzeitig erkannt werden, um fehlerhafte, und somit unnötige, Berechnungen abbrechen zu können und so wertvolle Rechenzeit und damit auch Energie zu sparen. Hierbei interessiert uns derzeit vor allem, solche fehlerhaften Berechnungen anhand von abnormalem Systemverhalten, wie z.B. extrem erhöhter Speicherverbrauch, frühzeitig zu erkennen. Modelle des Normalverhalten der Software helfen dabei, abnormale Abläufe zu identifizieren.

Mechatronische Systeme oder auch cyber-physical systems (CPS) sind Systeme, die stark mit ihrer physikalischen Umwelt verbunden sind und interagieren. Beispiele sind autonome Fahrzeuge, Smart Grids, Roboter, etc. Solche Systeme werden interdisziplinär entwickelt (z.B. durch Maschinenbauer, Regelungstechniker und Informatiker), da sie aus den verschiedenen Komponenten der jeweiligen Disziplinen zusammengesetzt werden. Durch die Interaktion mit der physikalischen Welt sind diskrete Vorgänge, wie "an" oder "aus", nur beschränkt möglich. So kann die Software beispielsweise in wenigen Nanosekunden entscheiden, das autonome Auto zum Stehen bringen zu wollen (sprich es von "fahrend" zu "stehend" zu bringen), das eigentliche Bremsmanöver verläuft jedoch kontinuierlich und eben nicht im Bereich von Nanosekungen (also mit zeitlicher Verzögerung vom 100km/h auf 0km/h). Da diese Systeme direkt das Schicksal von Menschen oder Gesellschaften beeinflussen, ist es besonders wichtig, die Systeme zuverlässig, sicher, effizient und damit vertrauenswürdig zu entwerfen.