Teil 2: Machine Learning und Requirements-Engineering – Doch wer lernt von wem?

Machine Learning und künstliche Intelligenz gelten als zwei der Zukunftsthemen schlechthin. Intelligente Algorithmen beeinflussen unseren Alltag mit wachsender Geschwindigkeit in einem immer größeren Ausmaß. Doch treffen sie auch bereits auf Requirements-Engineering? Ich dürfte das Thema mit meinem Kurzvortrag mit obigem Titel auf unserer hauseigenen Konferenz, den SOPHIST DAYS 2017 selbst beleuchten. Erfahren Sie selbst, was ein Roboter, der Pancakes wenden kann, mit unserer Disziplin zu tun hat!

Eröffnet habe ich meinen Vortrag mit eben jedem Roboter, entwickelt von Dr. Petar Kormushev. Seine Maschine lernt selbständig einen Pancake mithilfe einer Pfanne in die Luft zu werfen, um 180° rotieren zu lassen und diesen anschließend wieder zu fangen. Allerdings wurde der Roboter nicht explizit für diese Aufgabe parametrisiert, sondern nur, wie er selbst die nötige Bewegung erlernen kann. Die hierfür implementierte Form maschinellen Lernens nennt sich bestärkendes Lernen und ist prinzipiell mit vielen Lernprozessen die auch beim Menschen auftreten vergleichbar.

 

 

Diese Form maschinellen Lernens basiert auf folgendem Prinzip: Ein Akteur (Agent genannt in der Fachsprache) befindet sich innerhalb einer Umgebung, welche sich dem Akteur in Form von Zuständen offenbart.. Durch Aktionen kann der Akteur nun diese Zustände seiner Umgebung beeinflussen. Er führt eine Aktion aus und erhält Rückmeldung über die Zustandsänderung seiner Umgebung; in diesem Fall zum Beispiel die Positionsdaten des Pfannkuchens fern seiner Pfanne. Aus diesem geänderten Zustand ergibt sich nun für den Akteur der sogenannte „Reward“. Der Reward gibt an, wie nahe die aktuellen Zustände der Umgebung dem Ziel sind, welches der Akteur durch seine Aktionen erreichen möchte. Der Reward wäre also maximal, wenn der Pfannkuchen sich in der Luft befunden hat und um 180° rotiert in der Pfanne liegt. Ist der Reward gering, liegt der Pfannkuchen womöglich auf dem Boden und der Akteur muss nun versuchen seine Aktionen zum Besseren zu verändern. Der Lernprozess liegt nun darin, aus den Veränderungen dieser Aktionen Regeln abzuleiten, die beschreiben bei welcher Veränderung der Reward, also die Zielerreichung, sich verbessert und in welchem Fall nicht.

Doch wo trifft maschinelles Lernen nun auf Requirements-Engineering?

In meinem Vortrag habe ich zwei spannende Ansätze von Forschern verschiedener Universitäten vorgestellt, die versucht haben, Teilaufgaben des Requirements Engineerings mit ähnlichen Typen von selbstlernenden Algorithmen zu verknüpfen:

Das Team um Paolo Avesani von der Universität Trient hat in dem Paper „Supporting the Requirements Prioritizaion Process. A Machine Learning Approach“ einen Ansatz vorgestellt, der sich mit der Priorisierung, also der Ordnung von Anforderungen nach Wichtigkeit beschäftigt. Diese Teilaufgabe des Requirements-Engineering spielt eine große Rolle in beispielsweise der Vertragsverhandlung von Anforderungen und in der Planung des Entwicklungszyklus eines Produkts.

Die Aufgabe des entwickelten Algorithmus war nun zu erlernen, welche Anforderungen in der Entwicklung eines Systems von hoher und welche von nachranginger Bedeutung sind.

Dieser Lernprozess gestaltete sich wie folgt: Der Algorithmus wählte selbst zwei Anforderungen aus, die er einem Stakeholder des Systems vorlegte. Dieser klassifizierte nun eine der Anforderungen als wichtiger und die andere Anforderung als weniger wichtig. Auf Basis dieser Auswahl wiederum wählte die Software erneut zwei Anforderungen aus, um deren Priorisierung der Stakeholder gebeten wurde.

Nachdem die Stakeholder nun 60 solcher Paare gegeneinander priorisiert hatten, hat der Algorithmus erlernt, die Spezifikation aus 40 Anforderungen mit einer Präzision von ca. 96% zu priorisieren. Das bedeutet, dass ca. 4% der Anforderungen der maschinellen Priorisierung entweder zu hoch oder zu niedrig priorisiert waren. Die Forscher vergleichen dieses Ergebnis in ihrem Paper mit dem händischen Vergleich aller möglichen Paarkombinationen, was natürlich fern von einem realistischen Vorgehen ist. Dennoch lässt der Ansatz erste Schritte in der maschinellen Analyse Anforderungssemantik erkennen und könnte Nährboden für ausgefeiltere oder spezialisiertere Lösungen bieten.

Der zweite Forschungsgegenstand, welchen ich in meinem Vortag vorgestellt habe, stammt von Wissenschaftlern der Universität Hamburg, und wurde auf der diesjährigen RE’17 in Lissabon vorgestellt: Erstmalig wurde auf dieser Konferenz ein „Data-Track“ also eine Vortragsreihe zum Thema Daten eingeführt. Im Zuge dieser wurden verschiedene Challenges ausgerufen, von denen sich die Wissenschaftler Zijad Kurtanović und Walid Maalej von der Universität Hamburg einer angenommen haben.

Für diese Challenge wurde ein Datensatz aus Anforderungen verschiedenen Typs (funktional, nicht-funktional) und von variierender Qualität bereitgestellt.   ( http://re2017.org/pages/submission/data_papers/)     Die Aufgabe bestand nun darin, diese Anforderungen automatisiert in funktionale Anforderungen, also Anforderungen die ein Verhalten des Systems beschreiben, und nicht-funktionale Anforderungen, also Anforderungen an Eigenschaften eines Systems, zu klassifizieren.

Auch hier wurde ein Algorithmus entwickelt, dem zunächst Anforderungen mitsamt ihrer Einordnung in funktionale und nicht-funktionale Anforderungen vorgelegt wurden. Nach dieser Lernphase konnte der Algorithmus ebenfalls wieder diese Einordnung selbständig vornehmen. Die besten Ergebnisse erzielten die Forscher, wenn sie dem Algorithmus in der Lernphase ebenfalls die linguistischen Merkmale vorgaben, anhand derer die Anforderung in die respektive Kategorie eingeordnet wurde. Unter dieser Prämisse konnten die beiden Forscher Ergebnisse von ca. 92% Präzision und ca. 92% Recall vorweisen. Dies bedeutet, dass ca. 92% der Klassifikationen des Algorithmus richtig waren und ebenfalls ca. 92% der richtigen Einordnungen pro Kategorie gefunden wurden.

Diese ersten Ansätze, maschinelles Lernen auch in eine Tätigkeit von so hohem menschlichen Anteil wie Requirements Engineering einzubinden sind bisher nicht praxis-, geschweige denn alltagstauglich. Dennoch zeigen sie, dass die prinzipiellen Schnittpunkte der Verknüpfung der beiden Thematiken durchaus existieren und könnten eine Grundlage für die Entwicklung neuer und verbesserter Ansätze bieten. Und vor einigen Jahren hätte auch noch niemand erwartet, den Computer in seiner Hosentasche nach dem Wetter zu fragen. Wir sind gespannt!

Teil 1: Was ist, kann und macht Machine Learning? Und was macht es für den REler so interessant?

Quellen:

https://pdfs.semanticscholar.org/f7de/73d536a4896bcadcaa4ce8b08ee4f040e776.pdf

https://mast.informatik.uni-hamburg.de/wp-content/uploads/2017/07/2017_RE_DataChallenge_NFR_Classification_preprint.pdf

Video:

Dr. Petar Kormushev: Robot learns to flip pancakes

Bildquelle:

Titel: Bad-code Stockfoto
Quelle: iStockphoto
Autor: tzahiV

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert