Programmieransätze für die smarte vernetzte Welt

Das Forschungsprojekt "REScala"

23.03.2021 von

Die Welt verwandelt sich in einen globalen „Superrechner“, bestehend aus Sensoren, Geräten, Clouds, verbunden über das Internet. Ein Team um Informatik-Professorin Mira Mezini entwickelt neue Programmieransätze, welche komplexe technische Belange dieses „Welt-Superrechners“ automatisiert abhandeln, so dass sich Softwareentwicklungsteams auf die Modellierung der Anwendungsdomäne konzentrieren können.

Unser Gehirn leistet Erstaunliches. Das zeigt sich etwa bei der alltäglichen Autofahrt durch die Stadt. Eigentlich müssten wir von den Signalen, die aus allen Richtungen auf unsere Sinnesorgane ein- strömen, überwältigt sein: von Motorgeräuschen, Sirenen, Baumaschinen, Ampeln, Werbeanzeigen. Trotzdem sitzen wir unbeeindruckt hinter dem Steuer. Wir sind sogar dazu in der Lage, ein Hörbuch zu hören, über den Tag nachzudenken und gleichzeitig zu kuppeln und zu schalten. Das liegt daran, dass unser Gehirn die meisten Signale automatisiert verarbeitet, sodass wir davon wenig mitbekommen. Nur bei Gefahr schlägt es Alarm, und wir sind hochkonzentriert.

Diese Fähigkeiten könnten Softwareentwicklungs-Teams in ihren Lösungen gut gebrauchen. Die Konvergenz von Edge-, In-Network- und Cloud-Computing zu einer Art „Welt-Superrechner“, die Verfügbarkeit von Daten und Information sowie Fortschritte in der künstlichen Intelligenz bergen zwar großes Potential für Innovationen, um dringliche gesellschaftliche Herausforderungen zu bewältigen.

Veraltete Programmieransätze verhindern technische Weiterentwicklung

Allerdings wächst die Komplexität des „Welt-Superrechners“ kontinuierlich an, während die Programmieransätze, mit denen man in der Softwareentwicklungsbranche vertraut ist, noch aus den 1990er Jahren stammen. Die dort arbeitenden Expertinnen und Experten sind mehr damit beschäftigt, die technischen Herausforderungen in der Anwendung zu lösen, als die damit gekoppelten eigentlichen gesellschaftlichen Probleme. Zudem sind ihre Lösungen der technischen Herausforderungen oft unzuverlässig oder suboptimal. Ein Forschungsteam um Professorin Mezini von der Software Technology Group der Technischen Universität Darmstadt entwickelt deshalb einen Programmieransatz, der selbstständig einige technische Herausforderungen des „Welt-Superrechners“ löst, und somit den Algorithmen regelrecht Sinne verleiht. Die derzeitige Implementierung des Ansatzes heißt REScala.

„REScala“ als neuer Lösungsansatz

Die Forschenden beheben mit REScala einige Mängel der bisherigen Programmiertechniken. Diese sind prinzipiell auf einen synchronen Programmablauf ausgerichtet. Vereinfacht ausgedrückt, führen die Algorithmen Zeile für Zeile ihre Aufgaben aus. Aber in heutigen Systemen, etwa in einem Smart Home oder einer vernetzten Produktion, wird der Ablauf immer weniger vom Programm selbst bestimmt als vielmehr von der Interaktion mit Daten- und Ereignisströmen. Diese sind nicht die Ausnahme, sondern die Norm.

Bisherige Programme wollen kontrollieren, wann welche Daten eintreffen und was mit ihnen geschieht. Dies funktioniert nur, wenn die eintreffenden Informationen überschaubar sind. „Eine Software muss in den zunehmend komplexen vernetzten Systemen hingegen kontinuierlich und schnell reagieren“, sagt Mezini. Die meisten Ereignisse seien asynchron – sie passieren zu einem x-beliebigen Zeitpunkt, weshalb Programme nicht mehr länger kontrollieren können, wann genau etwas passiert.

Eine Software muss in den zunehmend komplexen vernetzten Systemen hingegen kontinuierlich und schnell reagieren.

Ein simples Beispiel: Ein Programm soll in einem Lebensmittellager von drei im Raum verteilten Sensoren fortlaufend die Temperatur dokumentieren und daraus die durchschnittliche Raumtemperatur errechnen. Die Sensoren übermitteln ihre Daten bei jeder Temperatur-Änderung automatisch an die Software. Für solche von außen kommenden Ereignisse nutzen Entwickler und Entwicklerinnen bislang sogenannte Callback-Funktionen.

Im Gegensatz zu normalen Funktionen, die immer zur gleichen Zeit während der Ausführung des Programms aufgerufen werden, wird ein Callback erst ausgeführt, wenn ein Ereignis eintritt – dies kann ein Mausklick auf einer Internetseite sein oder eben das eingehende Signal von einem Sensor. Beim Beispiel Lebensmittellager hätte dies zur Folge, dass mit jedem Eintreffen eines Temperaturwertes die Durchschnittstemperatur neu berechnet werden muss, damit sie aktuell ist.

„Eine Callback-Lösung ist bei einer einfachen Anwendung völlig ausreichend, aber wenn Daten aus hunderttausenden Quellen eintreffen, kann es vorkommen, dass der Gesamtzustand des Systems inkonsistent ist, weil zum Beispiel Synchronisierungs- probleme auftreten“, sagt Mezini. Hätte man etwa 5.000 Sensoren, könnte ein neuer Wert eintreffen, während der Rechner noch damit beschäftigt ist, den Gesamtwert auszurechnen – dieser wäre somit bereits veraltet.

In der Medizin oder im Finanzwesen können solche kurzzeitig falschen Werte schwerwiegende Folgen habe. Um dies zu vermeiden, müssen Programmierungs-Dienstleister komplexe, unübersichtliche Programmstrukturen aufbauen. Es entsteht eine technische Komplexität, die nicht mehr durch das eigentliche Problem verursacht wird (engl. „accidental complexity“). Das Beherrschen der Komplexität geht auf Kosten des Beherrschens der inhärenten Komplexität des Problems – und somit auf Kosten von Rechenleistung sowie Zuverlässigkeit und letzten Endes der Innovation.

Wenn Daten aus vielen Quellen asynchron eintreffen, ist es eine große Herausforderung, einen konsistenten Gesamtzustand zu bewahren. (Mira Mezini)

Wie funktioniert „REScala“?

REScala funktioniert im Kern ein bisschen wie Excel. Ändert man in einer Excel-Tabelle einen Wert, ändern sich automatisch alle davon abhängigen Werte. Nutzerinnen und Nutzer können sich somit darauf konzentrieren, die Zusammenhänge der Daten abzubilden. Wie Berechnungen im Hintergrund ausgeführt werden, um effizient korrekte Ergebnisse zu produzieren, kann Nutzenden egal sein. Sie verlassen sich darauf, dass die Automatisierung zuverlässig für sie arbeitet.

REScala überträgt diesen Gedanken in Form von Bibliotheken auf die Programmiersprache Scala und entwickelt ihn wesentlich weiter, um die Automatisierung in einer Welt der global verteilten Daten zu gewährleisten, in der Berechnungen massiv neben- und gegenläufig sind und in der die Kommunikationsinfrastruktur unzuverlässig ist. Eine strikte Konsistenz ist in einem solchen Umfeld ein unlösbares Problem. REScala sichert aber in jeder Situation so viel Konsistenz wie nötig und möglich – ist gerade keine Verbindung verfügbar, werden alle Änderungen lokal aufgezeichnet und bei der nächsten Gelegenheit wird die Konsistenz wiederhergestellt.

REScala bietet ein von Professorin Mezini als „Active Computations“ bezeichnetes Paradigma: Entwickler beschreiben im Code lediglich, wie die asynchron eintreffenden Daten und Ereignisse kombiniert und weiterverarbeitet werden. Um den Zeitpunkt und die Reihenfolge der Ausführung einzelner Berechnungskomponenten kümmern sich Anwendungsentwickler nicht. REScala sorgt dafür, dass sie automatisch immer dann ausgeführt werden, wenn sie ihren Zustand an die Ankunft neuer Daten und Ergebnisse anpassen müssen. Das vereinfacht die Software erheblich.

REScala kommt zur rechten Zeit. Weltweit bauen derzeit Staaten das Mobilfunknetz der fünften Generation auf, an der sechsten wird geforscht – mit potentiellen Übertragungsraten von bis zu einem Terabit pro Sekunde. Hinzu kommt, dass neuartige Accelerator Chipsätze in den kommenden Jahren Edge Computing und somit das Internet of Things immens vorantreiben.

Somit können immer mehr Anwendungen des maschinellen Lernens lokal Daten verarbeiten. Eine dezentralisierte Intelligenz ist aus ökonomischen und ökologischen Gesichtspunkten sowie bezüglich einer Datenhoheit immens wichtig. Sie verändert die Gesellschaft vermutlich ähnlich radikal, wie es das Smartphone tat. REScala kann helfen, ihren Weg erst zu ebnen.

Ausgezeichnet vom Europäischen Forschungsrat

Professorin Mira Mezini wurde 2012 mit einem ERC Advanced Grant des Europäischen Forschungsrats ausgezeichnet – für ihr Projekt PACE (Programming Abstractions for Applications in Cloud Environments). Ihre Forschung wird seit 2019 vom ERC mit einem Proof of Concept-Grant in Höhe von 150.000 Euro weiter gefördert. Im Projekt REScala (A Programming Platform for Reactive Data-intensive Applications) untersuchen sie und ihr Team, wie das durch PACE generierte Wissen in neuartige Programmiersprachen und -plattformen für die Entwicklung von datenintensiven dezentralisierten Softwaresystemen überführt werden kann.