Abstrakt. Moderna programvarusystem, som ofta är samtidiga och manipulerar komplexa datastrukturer måste vara extremt tillförlitliga. Vi presenterar en ny ram baserad på symboliskt utförande, för automatisk kontroll av sådana system. Vi tillhandahåller en dubbel generalisering av traditionella symboliska avrättningsbaserade metoder. För det första definierar vi en källa till källöversättning till instrument ett program, vilket gör det möjligt för standard modell kontroller att utföra symboliskt utförande av programmet. För det andra ger vi en ny symbolisk exekveringsalgoritm som hanterar dynamiskt fördelade strukturer (t.ex. listor och träd), metodförutsättningar (t.ex. acyklicitet), data (t.ex. heltal och strängar) och konvergens. Programmets instrumentering gör det möjligt för en modellkontroll att automatiskt utforska olika programhopkonfigurationer och manipulera logiska formler på programdata (med hjälp av ett beslutsförfarande). Vi illustrerar två tillämpningar av vårt ramverk: att kontrollera riktigheten hos flertrådade program som tar indata från obundna domäner med komplex struktur och generering av icke-isomorfa testingångar som uppfyller ett testkriterium. Vår implementering för Java använder Java PathFinder-modellen checker.
Symbolisk körning för modellkontroll av Javaprogram har föreslagits i REF.
Generalized Symbolic Execution for Model Checking and Testing
{'venue': 'In Proceedings of the Ninth International Conference on Tools and Algorithms for the Construction and Analysis of Systems', 'journal': None, 'mag_field_of_study': ['Computer Science']}