Kontraktssystem har kommit att spela en viktig roll i många aspekter av programvaruteknik. Detta har resulterat i ett brett spektrum av metoder för att verkställa avtal, allt från enkel förhandskontroll av Eiffel och kontroll av att villkoren uppfylls till lata, frivilliga och parallella genomförandestrategier. Var och en av dessa metoder har sina förtjänster, men var och en har krävt en grundutveckling av ett helt system för kontraktsövervakning. Vi presenterar en enhetlig strategi för att förstå denna variation, samtidigt som vi öppnar dörren till ännu oupptäckta strategier. Genom att observera att kontrakt i grunden handlar om kommunikation mellan ett program och en monitor, vi reframe kontrakt kontroll som kommunikation mellan samtidiga processer. Detta belyser de underliggande förbindelserna mellan vitt studerade genomförandestrategier, inklusive strikt och lat tillämpning samt samtidiga tillvägagångssätt, inklusive nya kontrakt och strategier. Vi visar hur var och en av dessa kan inbäddas i en kärnkalkyl, och demonstrera ett bevis (via simulering) på korrekthet för en sådan kodning. Slutligen visar vi att vår strategi föreslår nya övervakningsmetoder och kontrakt som inte tidigare varit uttryckliga. Beteendeprogramkontrakt, som ursprungligen infördes av Meyer (1992), har blivit en integrerad del av modern programmering, där de används för att specificera och säkerställa program korrekthet. I den första ordningen, funktionella inställning, programmerare skriva predikat (dvs. funktioner som tar en inmatning och returnera ett booleskt värde som ett resultat) för att kontrollera programegenskaper vid funktionsgränser: pre-villkor predikat tillämpas på funktionen indata; funktionen körs på sin ingång (om pre-villkor predikat innehar); och post-villkor predikat tillämpas på funktionsresultatet. Om antingen predikatet returnerar falskt, avslutas programmet med ett fel. Programmering är dock mer komplex: program använder högre orderfunktioner, effektiva operationer, massiva datastrukturer, lata utvärderingsmekanismer och mycket mer. Denna ytterligare komplexitet måste åtgärdas genom avtalssystemet: för högre orderfunktioner måste vi fördröja genomförandet av avtal (Findler & Felleisen, 2002) ; effektiv Denna forskning finansierades av National Science Foundation med bidragsnummer 1117635, 1217454, 1540276, 1518844, och National Security Agency. Kommissionens förordning (EG) nr 794/2004 av den 23 juli 2004 om tillämpningsföreskrifter för rådets förordning (EG) nr 659/1999 om tillämpningsföreskrifter för artikel 93 i fördraget om Europeiska unionens funktionssätt (EUT L 145, 30.4.2004, s. 1). Kommissionens genomförandeförordning (EU) nr 668/2014 av den 13 juni 2014 om tillämpningsföreskrifter för Europaparlamentets och rådets förordning (EU) nr 1151/2012 om kvalitetsordningar för jordbruksprodukter och livsmedel (EUT L 179, 19.6.2014, s. 1).
REF studerar en mängd olika strategier för genomförande av avtal, inklusive ivriga och lata, synkrona och parallella.
An extended account of contract monitoring strategies as patterns of communication
{'venue': 'J. Funct. Program.', 'journal': 'J. Funct. Program.', 'mag_field_of_study': ['Computer Science']}