beim Fachgebiet Adaptive Systeme
Was ist ein adaptives System?
Ein adaptives System ist in der Lage, seine Struktur und sein Verhalten während des Betriebs selbstständig anzupassen. Dadurch kann es auf Veränderungen in seiner Betriebsumgebung, in seinen Qualitätseigenschaften und in seinen Anforderungen reagieren. Ein anschauliches Beispiel ist ein Online-Shop: Bei hoher Auslastung kann er die ressourcenintensive Generierung personalisierter Produktempfehlungen deaktivieren, um die geforderte Antwortzeit zu erreichen.
Erweiterung des Software-Lebenszyklus um eine Adaptions-Phase zur Laufzeit [Bildquelle]
Was sind software-technische Herausforderungen bei adaptiven Systemen?
Softwareentwickelnde stehen bei der Realisierung adaptiver Systeme vor der Herausforderung, festzulegen, wann und wie sich das System selbstständig anpassen soll. Dies wird durch die sogenannte Designzeitunsicherheit erschwert. Konkret bedeutet das: (1) Es ist schwierig, bereits während der Entwicklung alle potenziellen Situationen vorherzusehen, in denen sich das System zur Laufzeit anpassen muss; (2) Die genauen Auswirkungen von Anpassungen sind oft unklar. Dadurch ist es schwierig, die richtigen Anpassungsmaßnahmen zu bestimmen. Im Beispiel des Online-Shops wissen die Softwareentwickelnden zwar, dass das Deaktivieren der Empfehlungen die Systemlast reduziert. Es ist jedoch unklar, ob diese Maßnahme in allen denkbaren Auslastungssituationen ausreicht, um die geforderte Antwortzeit zu erreichen.
Wie kann Künstliche Intelligenz (KI) hier helfen?
Der Einsatz von künstlicher Intelligenz (KI) wird zunehmend genutzt, um die Herausforderungen der Designzeitunsicherheit bei der Realisierung adaptiver Systeme zu bewältigen. Ein besonderer Ansatz ist hierbei das sogenannte Online Learning. Online Learning ermöglicht es adaptiven Systemen, während des Betriebs aus ihren tatsächlichen Betriebsdaten zu lernen. Dadurch können Informationen berücksichtigt werden, die erst zur Laufzeit verfügbar sind. Für Softwareentwickelnde bedeutet der Einsatz von KI eine erhebliche Erleichterung: Anstatt die Adaptionslogik manuell zu entwickeln, können sie diese deklarativ beschreiben. Das heißt, sie definieren, was das System erreichen soll (z.B. bestimmte Lernziele), anstatt detailliert vorzugeben, wie es das erreichen soll. Ein Beispiel hierfür ist der Einsatz von Online-Reinforcement-Learning für den Online-Shop. Die Softwareentwickelnden definieren Lernziele in Form einer Belohnungsfunktion: Das System erhält eine positive Belohnung, wenn es die geforderte Antwortzeit einhält. Bei Nichterfüllung der Antwortzeit erhält das System eine negative Belohnung (Strafe).
Wo bekomme ich weiterführende Informationen?
Folgende Veröffentlichungen bieten eine gute Einführung in das Thema "Adaptive Systeme" und den Einsatz von KI für deren Realisierung:
- Danny Weyns: An Introduction to Self-Adaptive Systems: A Contemporary Software Engineering Perspective, John Wiley & Sons, 2020 [Link]
- Andreas Metzger, Clément Quinton, Zoltán Ádám Mann, Luciano Baresi, Klaus Pohl: Realizing self-adaptive systems via online reinforcement learning and feature-model-guided exploration. Computing 106(4): 1251-1272, Springer, 2024 [Link]
- Alexander Palm, Andreas Metzger, Klaus Pohl: Online Reinforcement Learning for Self-adaptive Information Systems. 32nd International Conference on Advanced Information Systems Engineering (CAiSE 2020): 169-184, Springer, 2020 [Link]