mirror of
https://github.com/jackyzha0/quartz.git
synced 2025-12-27 14:54:05 -06:00
2.0 KiB
2.0 KiB
| title | tags | date | draft | |
|---|---|---|---|---|
| Formale Methoden im Softwareentwurf |
|
2024-02-13 | false |
Eine Zusammenfassung der Inhalte der Vorlesung Formale Methoden im Softwareentwurf aus dem Sommersemester 2022.
Inhalt:
-
Modellierung reaktiver Systeme & Transitionssysteme
- Endliche Automaten bestehen aus Zuständen, Zustandsübergängen, Start- und Endzuständen.
- Transitionssysteme erweitern Automaten, indem sie Zustände ohne Endzustand und mit Aktionen modellieren.
- Datenabhängige Systeme enthalten typisierte Variablen, Variablenbelegungen und Transitionen mit Bedingungen.
-
Nebenläufigkeit & Kommunikation
- Parallele Systeme werden mit dem Operator „||“ kombiniert.
- Verschränkung (Interleaving) modelliert konkurrierende Prozesse ohne Kommunikation.
- Kanalsysteme ermöglichen Kommunikation über Nachrichtenpuffer (FIFO-Speicher).
-
Temporale Logik (LTL) & Model Checking
- LTL (Linear Temporal Logic) erlaubt Aussagen über zeitliches Verhalten eines Systems.
- Model Checking überprüft ob ein System die spezifizierten LTL-Formeln erfüllt.
-
Promela & SPIN Model Checker
- Promela (Process Meta-Language) dient zur Modellierung nebenläufiger Systeme.
- Verifikation mit SPIN (Simple Promela Interpreter) prüft auf Deadlocks, Race Conditions & Safety-Eigenschaften.
- Korrektheitseigenschaften können mit Assertions und Meta Labels überprüft werden.
-
Java Modeling Language (JML) & KeY Theorembeweiser
- JML ist eine Spezifikationssprache für Java, um formale Verträge für Methoden zu definieren.
- KeY ist ein Theorembeweiser für die Verifikation von Java-Programmen mit dynamischer Logik.