Software-Testen in der Zukunft - Interview mit Thomas Karl
Thomas Karl ist Head of Quality Transformation Services und Thought Leadership Portfolio Lead of Software Engineering für Deutschland, Österreich und...
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.
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.
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.
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.
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 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.
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.
Formale Methoden sind mathematisch fundierte Ansätze zur Spezifikation, Entwicklung und Verifikation von Software- und Hardwaresystemen. Sie verwenden Logik und mathematische Modelle, um die Korrektheit und Zuverlässigkeit von Software zu beweisen und Fehler bereits im Entwicklungsprozess zu vermeiden.
Formale Methoden sind wichtig, da sie eine hohe Genauigkeit und Sicherheit bieten, indem sie mathematische Beweise verwenden, um Fehler zu vermeiden. Sie minimieren das Risiko von Fehlern in sicherheitskritischen Systemen und ermöglichen eine strengere Kontrolle über die Funktionsweise und Integrität von Software.
Häufig verwendete formale Methoden sind Model Checking, Theorem Proving und temporale Logik. Model Checking überprüft systematisch alle möglichen Zustände eines Systems, während Theorem Proving mathematische Beweise nutzt, um logische Aussagen zu bestätigen. Temporale Logik untersucht die Korrektheit über Zeitabläufe hinweg.
Model Checking testet automatisch alle möglichen Zustände eines Systems, um Fehler zu finden, und eignet sich für kleinere, finite Systeme. Theorem Proving dagegen beweist mathematische Theoreme, um bestimmte Eigenschaften zu bestätigen, und ist für allgemeinere, aber oft komplexere Systeme geeignet.
Die Anwendung formaler Methoden kann herausfordernd sein, da sie viel mathematisches Fachwissen und hohe Rechenleistung erfordert. Außerdem sind die Werkzeuge oft komplex und zeitaufwendig, was die Anwendbarkeit auf große, komplexe Systeme einschränkt.
Model Checking ist eine formale Methode, die Zustandsräume eines Systems systematisch überprüft, um sicherzustellen, dass es keine unerwarteten oder unerwünschten Zustände gibt. Es wird oft in sicherheitskritischen Systemen angewendet, wo alle möglichen Szenarien überprüft werden müssen.
Formale Methoden sind besonders für sicherheits- und missionskritische Systeme geeignet, wie beispielsweise in der Luft- und Raumfahrt, Medizintechnik, Automobilindustrie und Nukleartechnik. Sie werden auch eingesetzt, wenn Software sehr hohe Zuverlässigkeitsanforderungen erfüllen muss.
Temporale Logiken sind logische Systeme, die es ermöglichen, zeitliche Abläufe und Zustände eines Systems zu analysieren. Sie werden oft im Model Checking verwendet, um sicherzustellen, dass Zustände zu bestimmten Zeiten erfüllt sind, und so die Korrektheit des zeitlichen Verhaltens zu bestätigen.
Es gibt mehrere Softwaretools, die formale Methoden unterstützen, darunter SPIN für Model Checking, Isabelle und Coq für Theorem Proving und TLA+ für die Spezifikation und Verifikation komplexer Systeme. Diese Tools bieten Werkzeuge zur Modellierung, Überprüfung und Beweisführung.
Formale Methoden könnten in der Zukunft eine größere Rolle spielen, insbesondere in Bereichen, die absolute Zuverlässigkeit erfordern. Obwohl ihre Anwendung derzeit durch hohen Aufwand und Komplexität eingeschränkt ist, könnten Verbesserungen in Tools und Hardware ihre Nutzung zunehmend praktikabel machen.
Thomas Karl ist Head of Quality Transformation Services und Thought Leadership Portfolio Lead of Software Engineering für Deutschland, Österreich und...
Cyber-Sicherheit ist heute wichtiger denn je. Hackerangriffe stehen auf der Tagesordnung. Ein Beispiel für deren potenziell verheerende Auswirkungen...
Die agile Transformation bringt Herausforderungen mit sich. Nach vielen Software-Test-Projekten, die wir begleitet haben, gibt es trotz all der...