Under de senaste åren har intresset ökat för användning av symbolisk exekvering - en programanalysteknik som utvecklades för mer än tre decennier sedan för att analysera programutförandevägar. Att skala symboliskt utförande och andra vägkänsliga analystekniker till stora system är fortfarande en utmaning trots de senaste algoritmiska och tekniska framstegen. Ett alternativ till att lösa problemet med skalbarhet är att minska analysens omfattning. En metod som är allmänt studerad i samband med regressionsanalys är att analysera skillnaderna mellan två relaterade programversioner. Även om ett sådant tillvägagångssätt är intuitivt i teorin, hitta effektiva och exakta sätt att identifiera programskillnader, och karakterisera deras effekter på hur programmet utför har visat sig utmanande i praktiken. I denna uppsats presenterar vi Directed Incremental Symbolic Execution (DiSE), en ny teknik för att upptäcka och karakterisera effekterna av programändringar. Nyheten med DiSE är att kombinera effektiviteten av statiska analystekniker för att beräkna programskillnad information med precisionen av symboliskt utförande för att utforska programutförande vägar och generera sökvägar som påverkas av skillnaderna. DiSE är en kompletterande teknik till andra reduktions- eller begränsningstekniker som utvecklats för att förbättra symboliskt utförande. Dessutom kräver DiSE inte analysresultat som ska föras vidare eftersom programvaran endast utvecklar källkoden för två relaterade programversioner krävs. En fallstudie av vårt genomförande av DiSE illustrerar dess effektivitet när det gäller att upptäcka och karakterisera effekterna av programändringar.
Riktad inkrementell symbolisk körning REF introducerade idén om att använda en statisk analys för effektivare symboliskt utförande i samband med förändring, t.ex. för regressionskontroll.
Directed incremental symbolic execution
{'venue': "PLDI '11", 'journal': None, 'mag_field_of_study': ['Computer Science']}