Abstrakt. Data abstraction är avgörande för byggandet av modulprogram, eftersom det säkerställer att interna förändringar i en modul inte sprids till andra moduler. I objektorienterade program, klasser vanligtvis genomdriva data abstraktion genom att ge tillgång till sitt inre tillstånd endast genom metoder. Genom att använda metodanrop i metodkontrakt kan datauttaget utvidgas till specifikationer. I detta dokument måste de metoder som används för detta ändamål vara fria från biverkningar och kallas rena metoder. Vi presenterar en strategi för automatisk verifiering av objektorienterade program som använder rena metoder för data abstraktion. Hörnstenen i vår strategi är lösningen på problemet med utformningen, dvs. Kundkoden måste kunna avgöra om statsförändringar påverkar returvärdena för rena metoder. Mer specifikt utökar vi varje metodkontrakt med ett metodavtryck, en övre gräns på minnesplatserna som läses eller skrivs med motsvarande metod. Fotavtryck anges med hjälp av dynamiska ramar, speciella rena metoder som returnerar uppsättningar av minnesplatser. Tack vare denna abstraktion kan implementationer utvecklas oberoende av specifikationer, löst kopplade endast av rena funktioner. Vi implementerade detta tillvägagångssätt i en anpassad uppbyggnad av Spec# program kontrollant, och använde det för att automatiskt verifiera flera utmanande program, inklusive iterator och observatörsmönster. Kontrollören själv och de exempel som visas i detta dokument kan laddas ner från författarnas hemsida [1].
I detta dokument utökar vi lösningen som beskrivs i REF för att hantera samtidiga program.
An automatic verifier for java-like programs based on dynamic frames
{'venue': 'In Proceedings of FASE, volume 4961 of LNCS', 'journal': None, 'mag_field_of_study': ['Computer Science']}