Fehlerinjektion (FI) ist eine experimentelle Methode zur Bewertung von Softwarerobustheit, bei der Software gezielt fehlerhaften Eingaben und widrigen Betriebsbedingungen, gemäß spezifizierter Fehlermodelle, ausgesetzt wird. Mit zunehmend paralleler Hardware wird die Ausführung von Software zunehmend nebenläufig. Mit der Bestrebung das Potenzial dieser zunehmend parallelen und vernetzten Systeme auszuschöpfen, wächst die Komplexität des gesamten Softwarestacks über hardwarenahe Schichten wie Betriebsysteme, Treiber und Netzwerkprotokolle bis hin zu Middleware und verteilten Anwendungen. In der Folge ändern sich die Fehlermanifestationen, denen Softwarekomponenten in dieser geänderten Umgebung ausgesetzt sind, in einer Weise, die durch jeher zur Anwendung kommenden Fehlermodelle nicht abgedeckt wird.
Mit dem Ziel dieser Entwicklung entgegenzuwirken, entwerfe ich im Rahmen meiner Arbeit Fehlermodelle höherer Ordnung durch Kombination bestehender Fehlermodelle. Um die Nutzbarkeit dieser Modelle vergleichend bewerten zu können, entwickle ich vier Effizienzmetriken, anhand derer ich Modelle höherer Ordnung mit herkömmlichen Modellen vergleiche. Das Ergebnis der Studie zeigt, dass Modelle höherer Ordnung Robustheitsschwächen aufdecken, die bei der Verwendung herkömmlicher Modelle unentdeckt bleiben, was ihre Anwendung bei der Robustheitsbewertung moderner Softwaresysteme nahelegt. Wenngleich sich der Entwicklungsaufwand für Modelle höherer Ordnung in Grenzen hält, führt ihre Anwendung zu einer kombinatorischen Explosion der Anzahl möglicher Fehlerzustände und, gravierender, zu einer Mehrdeutigkeit der experimentellen Ergebnisse, die eine höhere Anzahl von Tests zwingend erfordert um die Aussagekraft der Bewertung zu erhalten.
Um den so mit der Verwendung von Modellen höherer Ordnung einhergehenden zeitlichen Mehraufwand bei der Bewertung zu mindern, verfolge ich einen Ansatz zur nebenläufigen Ausführung von Experimenten auf paralleler Hardware. Obwohl der Ansatz die gewünschte Durchsatzsteigerung erzielt, zeigen die Ergebnisse auch, dass er bei unachtsamer Anwendung die metrologische Kompatibilität der Ergebnisse kompromittiert. Um den ursächlichen Ressourcenkonflikten entgegenzuwirken, stelle ich einen Ansatz zur Kalibrierung von Zeitbeschränkungen zur Fehlerdetektion vor, der diese Probleme vermeidet.
Die Umgebung zur Durchführung nebenläufiger Experimente basiert auf einem im Rahmen meiner Arbeit entwickelten generischen Framework für Fehlerinjektionen, das für eine Vielzahl von Zielsystemen anwendbar ist und unter einer Open-Source-Lizenz veröffentlicht wurde. | German |