Software Reliability

Organisatorisches

„Software Reliability“ ist ein interdisziplinärer Kurs, der sich an Studierende mit Interesse an Statistik und/oder Wirtschaftsinformatik wendet.

Bachelor-Studierende können das (VWL-)Modul RUW-83410 (Software Reliability) als Modul des Vertiefungsbereichs wählen. Das Modul kann auch im Rahmen des Studienbereichs „Quantitative Methoden der Wirtschafts- und Sozialwissenschaften“ belegt werden.

Für das Sommersemester 2026 ist der vorgesehene Termin freitags von 16:30 bis 18 Uhr im Raum LG 0.222/0.223. Während des ersten Termins (Freitag, 17.04.2026 von 16:30 Uhr bis 18 Uhr im Raum LG 0.222/0.223) kann ggf. über eine Verschiebung des Zeitslots entschieden werden. Auch eine geblockte Abhaltung der Veranstaltung ist denkbar. Deshalb wurde der Raum in campo ab dem 24.04. vorsorglich auch bereits für den Slot von 15 Uhr bis 16:30 Uhr gebucht.

Während die Folien und die meisten der zur Lektüre empfohlenen Artikel und Buchkapitel in englischer Sprache sind, ist die Unterrichtssprache Deutsch.

Der Erwerb der 5 ECTS erfolgt mittels einer 30-minütigen mündlichen Prüfung über die Kursinhalte; bei dieser kann jeder Studierende wählen, ob er oder sie die Prüfung auf Deutsch oder Englisch abhalten möchte.

Einführung

20. November 2018: Über einen Zeitraum von über 6 Stunden waren Facebook und Instagram für Nutzer in Europa, in den USA und in Südamerika nicht erreichbar. Die Ursache: ein Softwarefehler.

Derartige Ereignisse beleuchten das Ausmaß, in dem wir vom richtigen Verhalten Software-gesteuerter Systeme abhängen. In diesem Kurs diskutieren wir berühmte Versagensfälle und ihre Ursachen und lernen Techniken zur Erreichung einer höheren Softwarequalität kennen. Wie kann man während der Entwicklung Fehler im Softwarecode vermeiden? Wie sollten wir Software testen, um diejenigen Fehler zu finden, die sich doch eingeschlichen haben? Welche statistischen Techniken können wir nutzen, um die Zuverlässigkeit der Software abzuschätzen oder zu prognostizieren? Und wie kann man Versagensfälle verhindern, selbst wenn die Software noch Fehler enthält?

Lernziele

Nach Absolvierung des Kurses

  • kennen Sie Ursachen von unzuverlässiger Software sowie Methoden zur Erreichung einer höheren Zuverlässigkeit;
  • wissen Sie, weshalb ein einfacher Neustart Ihres Computers nach dem Auftreten von Problemen helfen oder sogar zukünftige Versagensfälle verhindern kann;
  • können Sie mittels verschiedener White-Box- und Black-Box-Verfahren Testfälle für Software erstellen;
  • kennen Sie verschiedenste Wartezeitverteilungen (z.B. Hypoexponential-, Erlang-, Gamma-,  Weibull- und Pareto-Verteilung) und deren Eigenschaften;
  • wissen Sie, wie man das Verhalten von Software-basierten Systemen mithilfe von Markov- und Semi-Markov-Modellen modelliert und Qualitätsmetriken wie Zuverlässigkeit und Verfügbarkeit aus diesen ableitet;
  • sind Sie in der Lage, die Annahmen, Stärken und Schwächen verschiedener Ansätze zur Evaluierung und Prognose der Softwarezuverlässigkeit zu vergleichen und zu diskutieren.

Themen

Zu den im Kurs besprochenen Themengebieten gehören die Folgenden:

  • Berühmte Softwareversagensfälle – und was wir von ihnen lernen können
  • Auftritt der Schurken: Fehler, interne Fehlzustände und Versagensfälle
  • Wissen was man tut: Softwareentwicklungsprozessmodelle
  • „Traveling without moving“: statische Softwaretests
  • „If it works, break it“: dynamische Softwaretests
  • Wie ein Fisch im Wasser: Schätzung der Fehleranzahl mit „Capture-Recapture“-Ansätzen
  • „It’s getting better all the time“: Softwarezuverlässigkeitswachstumsmodelle
  • „A bug’s life“: Fehlermanagement
  • Mit Unzulänglichkeiten leben: Softwarefehlertoleranz

Literatur

Neben Forschungsartikeln umfasst die zur Lektüre empfohlene Literatur einzelne Abschnitte oder Kapitel der folgenden Bücher:

  • C. Ghezzi, M. Jazayeri und D. Mandrioli, Fundamentals of Software Engineering. Prentice-Hall, 2. Auflage, 2003.
  • M. R. Lyu, Hrsg., Handbook of Software Reliability Engineering. IEEE Computer Society, 1995.
  • P. Mertens und S. Rässler, Hrsg., Prognoserechnung. Springer/Physica, 7. Auflage, 2012.
  • J. D. Musa, Software Reliability Engineering. McGraw-Hill, 1999.
  • M. Roper, Software Testing. McGraw-Hill, 1994.
  • D. P. Siewiorek und R. S. Swarz, Reliable Computer Systems: Design and Evaluation. AK Peters, 3. Auflage, 1998.
  • A. Spillner und T. Linz, Basiswissen Softwaretest. dpunkt.verlag, 7. Auflage, 2024.
  • E. Wallmüller, Software Quality Engineering. Hanser, 3. Auflage, 2011.

StudOn

Hier gelangen Sie zur StudOn-Webseite des Kurses.

Kontaktperson

Bei Fragen zum Kurs wenden Sie sich bitte an Prof. Dr. Michael Grottke.