Blog über Software, Mensch und Persönlicher Entwicklung

Korrektheit durch formale Methoden - Richard Seidl

Geschrieben von Richard Seidl | 15.11.2024

Formale Methoden sind entscheidend für die Gewährleistung der Softwarekorrektheit. Sie ermöglichen mathematische Beweise für die Fehlerfreiheit in sicherheitskritischen Systemen. Durch den Einsatz von Beweisassistenten und automatisierten Tools wird die Qualität der Software signifikant erhöht. Diese Methoden ergänzen herkömmliche Tests und bieten wertvolle Einblicke in die Zuverlässigkeit von Software.

Podcast zu formalen Methoden

In der neuesten Episode des Software Testing Podcasts feiern wir die World Quality Week. Ich spreche mit mit Lars und Bianca darüber, wie man Fehlerfreiheit in Software mathematisch beweisen kann und welche Tools dabei helfen. Bianca erklärt uns anhand von Beispielen aus der Finanz- und Automobilbranche, warum bestimmte Systeme absolute Fehlerfreiheit benötigen. Lars ergänzt das Gespräch mit Einblicken in formale Methoden und wie sie in der Praxis angewendet werden. Ein besonders interessantes Thema war, wie KI uns bei der Beweisführung unterstützen kann.

“Mit Tests kann ich Fehlerfreiheit nicht nachweisen. Es gibt einfach bestimmte Domänen, da brauche ich aber die Fehlerfreiheit und eben auch den Nachweis.” - Lars Hupel, Bianca Lutz

Lars Hupel ist Chefevangelist für digitale Währungen bei Giesecke+Devrient, einem internationalen Unternehmen für Sicherheitstechnologie. Im Rahmen dieser Tätigkeit hält und schreibt Lars zahlreiche Vorträge, Workshops und Artikel, um die Technik hinter Digitalwährungen einem breiten Publikum zugänglich zu machen. Mit einem Hintergrund als Softwareentwickler trägt Lars aber auch zur Produktentwicklung bei und vertritt das Unternehmen bei verschiedenen Industriegremien. Lars hat im Bereich Logik und Verifikation an der TU München promoviert und bringt diese Erkenntnisse ein, um die Produkte von Giesecke+Devrient noch sicherer zu machen.

Bianca Lutz ist Softwarearchitektin bei der Active Group GmbH und arbeitet von Berlin aus. Schon im Studium interessierte sie sich für formale Methoden und hat mit dem Beweisassistenten Isabelle/HOL gearbeitet. Aber auch technische Themen, wie Betriebssysteme und hier vor allem eingebettete Systeme, begeistern sie bis heute.  Sie war an verschiedenen wissenschaftlichen Publikationen beteiligt, ist Linux-Kernel-Contributor und hat im Rahmen ihrer Abschlussarbeit in Isabelles Archive of Formal Proofs veröffentlicht. Nach mehrjähriger Tätigkeit in der Versicherungsbranche, bei der sie es vor allem mit Legacy-Code zu tun hatte, wechselte sie 2022 ins Lager der Funktionalen Programmierung über.

Highlights der Episode

  • In Bereichen wie Finanzen und Medizin ist Fehlerfreiheit entscheidend, und formale Methoden können dabei helfen.
  • Formale Methoden nutzen mathematische Modelle und Beweisassistenten, um Softwarefehler zu vermeiden.
  • Microsoft nutzt automatisierte Tools, um Treiber auf Fehlerfreiheit zu überprüfen.
  • Formale Methoden sind keine Allheilmittel, sondern ergänzen andere Testmethoden.
  • Änderungen in der Software können zu aufwendigen Anpassungen in den Beweisen führen.

Softwarequalität und formale Methoden

Warum Fehlerfreiheit wichtig ist

Im Bereich des Softwaretestens gilt: Absolute Fehlerfreiheit ist schwer zu garantieren. Doch in bestimmten Branchen – etwa der Finanz-, Automobil- oder Medizintechnik – sind die Anforderungen an die Fehlerfreiheit besonders hoch, da bereits kleine Fehler drastische Konsequenzen haben können. Aus diesem Grund müssen Systeme in solchen Bereichen besonders sorgfältig geprüft und abgesichert werden.

Die Rolle der formalen Methoden

Tests allein reichen oft nicht aus, um vollständige Korrektheit in sicherheitskritischen Systemen zu gewährleisten. Formale Methoden kommen hier zum Einsatz und ermöglichen es, mathematisch rigorose Beweise für die Korrektheit von Software zu erbringen. Durch den Einsatz von Beweisassistenten wird sichergestellt, dass keine logischen Lücken in den Argumentationen und Überprüfungen existieren. Diese Methoden ergänzen herkömmliche Tests und steigern die Verlässlichkeit der Ergebnisse.

Praktische Anwendungen und Herausforderungen

In der Praxis zeigt sich, dass formale Methoden oft mit einem erheblichen Mehraufwand verbunden sind. Beispielsweise kann es erforderlich sein, bis zu zehn Zeilen Beweiscode für jede Zeile regulären Code zu schreiben. Dennoch existieren auch weniger aufwendige Ansätze wie Typsysteme oder Model Checker, die zwar weniger umfassend sind, aber dennoch wertvolle Erkenntnisse liefern und die Prüfqualität erhöhen.

Automatisierung und KI-Unterstützung

Automatisierung und Künstliche Intelligenz (KI) spielen eine zunehmend wichtige Rolle bei der Erstellung formaler Beweise. Einige moderne Tools, wie Isabel, nutzen bereits Machine-Learning-Algorithmen, um Beweise schneller zu generieren und den manuellen Aufwand erheblich zu reduzieren. Durch solche automatisierten Prozesse wird die Anwendung formaler Methoden effizienter und zugänglicher.

Fazit und Ausblick

Die Kombination aus Tests und formalen Methoden ist entscheidend, um höchste Softwarequalität zu gewährleisten. Diese Techniken bieten keine alleinige Lösung, jedoch eine wertvolle Ergänzung zu traditionellen Testverfahren. Fortschritte im Bereich der KI eröffnen neue Möglichkeiten, diese Methoden weiterzuentwickeln und noch breiter einsetzbar zu machen. Die Zukunft verspricht daher spannende Entwicklungen im Zusammenspiel von KI und formaler Verifikation.

Häufige Fragen zum Thema formalen Methoden