-
Einführung
- Marc Brooker ist ein Engineer bei AWS, der mit Datenbanken und Serverless-Systemen arbeitet, und betont die Bedeutung formaler Methoden im Software Engineering.
-
Die Bedeutung formaler Methoden
- Formale Methoden sind unerlässlich, um bei großen Systemen, verteilten Systemen und kritischen Low-Level-Systemen Zeit und Kosten zu sparen.
- Software Engineering ist eine Übung in der Optimierung von Zeit und Kosten.
- Formale Methoden senken die Kosten für Nacharbeit und behandeln Schnittstellenänderungen frühzeitig, wodurch Geschwindigkeit und Effizienz der Softwareentwicklung steigen.
-
Anwendungsbereich formaler Methoden
- Bei Software, die von sich schnell ändernden Nutzeranforderungen getrieben wird, kann der Wert formaler Methoden begrenzt sein.
- In großen, verteilten und Low-Level-Systemen reduzieren formale Methoden Nacharbeit und Bug-Dichte deutlich.
-
Formale Methoden und Werkzeuge
- Formale Methoden und automatisiertes Schließen umfassen verschiedene Werkzeuge und werden in den großskaligen Cloud-Systemen von AWS nützlich eingesetzt.
- Dazu gehören Spezifikationssprachen wie TLA+, P und Alloy sowie Model Checker, deterministische Simulationswerkzeuge und verifikationsorientierte Programmiersprachen.
-
Fazit
- Werkzeuge, die dabei helfen, in der Entwurfsphase über das Systemdesign nachzudenken, beschleunigen die Softwareentwicklung, senken Risiken und ermöglichen die Entwicklung optimaler Systeme.
- Für Engineers, die mit großen und komplexen Systemen arbeiten, sind formale Methoden Teil guter Engineering-Praxis.
1 Kommentare
Hacker-News-Kommentare
Die formale Verifikation von Software hängt stark vom Softwaretyp und vom Entwicklungsprozess ab. Die meisten Softwareprojekte sind nicht mit formalen Anforderungen kompatibel.
Die Behauptung, formale Methoden könnten die Komplexität von Software lösen, taucht häufig auf.
Es gibt zwei Hauptarten formaler Methoden: extrinsische Techniken, die vom Code getrennt sind, und intrinsische Techniken, die mit dem Code zusammenarbeiten.
Leichtgewichtige formale Methoden lassen sich zusammen mit der Codebasis pflegen und liefern mehr Erkenntnisse als Unit-Tests.
Formale Softwareverifikation ist nach wie vor sehr schwierig und nur in extremen Fällen lohnend.
Viele Artikel über formale Methoden wirken wie Lead-Generierung für Berater.
Eine der leichtgewichtigen formalen Methoden ist die Trace-Verifikation mit Linear Temporal Logic.
Moderne formale Methoden wie TLA+ und Alloy sind so leicht zu erlernen wie Python.