Distribuerade system är svåra att implementera på rätt sätt eftersom de måste hantera både konvergens och fel: maskiner kan krascha vid godtyckliga punkter och nätverk kan beställa om, släppa eller dubblera paket. Dessutom är deras beteende ofta alltför komplicerat för att tillåta uttömmande tester. Fel i dessa system har lett till förlust av kritiska data och oacceptabla driftsavbrott. Vi presenterar Verdi, en ram för att genomföra och formellt kontrollera distribuerade system i Coq. Verdi formaliserar olika nätverkssemantik med olika fel, och utvecklaren väljer den lämpligaste felmodellen vid kontroll av deras genomförande. Dessutom underlättar Verdi verifieringsbördan genom att göra det möjligt för utvecklaren att först verifiera sitt system enligt en idealiserad felmodell och sedan överföra de resulterande korrekthetsgarantierna till en mer realistisk felmodell utan någon ytterligare bevisbörda. För att visa Verdis användbarhet presenterar vi det första mekaniskt kontrollerade beviset på linjärisering av Raft-maskinreplikationsalgoritmen, samt verifierade implementationer av ett primärt backup-replikationssystem och ett nyckelvärdeslager. Dessa verifierade system ger liknande prestanda som okontrollerade motsvarigheter.
Verdi REF är ett ramverk för verifierade distribuerade system som fungerar under olika fel- och nätverksmodeller.
Verdi: a framework for implementing and formally verifying distributed systems
{'venue': 'PLDI 2015', 'journal': None, 'mag_field_of_study': ['Computer Science']}