Detta dokument gav två huvudsakliga bidrag: det definierade systemberoende grafer (SDG), som utvidgade program beroende grafer (PDG) [31, 17] för att införliva samlingar av förfaranden (med förfarande samtal) snarare än bara monolitiska program. Den definierade sedan en interprocedural slicing algoritm som identifierar de komponenter i SDG som kan påverka värdena för de variabler som definieras vid eller används vid en given programpunkt, och / eller hur ofta  till utför. Det nya med algoritmen var att den korrekt förklarar den anropande kontexten av en så kallad procedur, vilket förbättrar tekniken för interprocedural slicing algoritm som hade presenterats i Mark Weisers seminal papper om program slicing [47, 48]. Tidningens resultat utgör en del av David Binkleys doktorsavhandling [6], och en tidskriftsversion av tidningen publicerades i TOPLAS [20]. SDG omfattas av ett amerikanskt patent [40]; algoritmer för framåt- och bakåtskärning var en del av den ursprungliga patentansökan som lämnades in, men Wisconsin Alumni Research Foundation beslutade att tillräckligt med pengar hade spenderats när patentkontoret var övertygat om att Claim 1 (SDG) var patenterbar. De datastrukturer och skär algoritmer som beskrivs i papperet används i en kommersiell produkt, CodeSurfer R, ett verktyg för kod förståelse och inspektion som stöder surfning och skärning av beroende grafer. CodeSurfer finns tillgänglig från GrammaTech, Inc. (se http://www.grammatech.com/products/codesurfer/). (Den skärningsalgoritm som används i CodeSurfer baseras faktiskt på den förbättrade metod som beskrivs i [23].) PLDI 88 papper var noga med att ange vad skivning problem det inte löste, dvs. att producera en skiva som är en körbar projektion av det ursprungliga programmet. Anledningen har att göra med flera samtal till samma förfarande: i allmänhet kan en skiva innehålla mer än ett sådant samtal, och vid varje, en annan delmängd av förfarandets parametrar kan vara i biten. En utökad slicing algoritm som tar itu med detta parameter-mismatch problem gavs senare av Binkley [7]. PLDI 88 papper var soffad i termer av ett mycket enkelt programmeringsspråk. Emellertid kan man tänka på SDGs som en klass av program representationer: att representera program i olika programmeringsspråk, man använder olika varianter av PDGs som innehåller noder och kanter som fångar funktioner och konstruktioner av språket. Frågan om hur man skapar lämpliga mål/mål för hållbar utveckling är verkligen ortogonal när det gäller frågan om hur man skär dem. Det har gjorts betydande arbete på hur man bygger beroende grafer för de funktioner och konstruktioner som finns i verkliga programmeringsspråk, Design och genomförande (1979-1999) År av ACM/SIGPLAN Conference on Programmering Language Numera skulle den interprocedural-slicing metod PLDI 88 papper kallas en "kontextkänslig" interprocedural-slicing metod. I allmänhet är en kontextkänslig analys en analys där analysen av ett kallat förfarande är "känslig" för det sammanhang i vilket det kallas. En kontextkänslig analys fångar det faktum att samtal till ett förfarande genom olika call platser kan ha olika effekter på programmets utförande tillstånd. Allmänna ramar för kontextkänslig programanalys fanns redan 1988 [13, 45], även om vi inte var medvetna om dem vid den tidpunkten. Vårt arbete påverkades mer av Kastens algoritm för att bygga en samling samarbetsvilliga finita-state maskiner för att utvärdera härledning träd av attribut grammatik [24] (se nedan). De två andra tidningarna i sessionen på PLDI 88 där vårt papper presenterades [8, 12] förebildade faktiskt en stor riktning som vårt arbete skulle ta därefter: Callahan presenterade en kontextkänslig algoritm för en viss typ av dataflöde-analys problem [8]; Cooper och Kennedy presenterade en graf-tillgänglig algoritm för att hitta förfaranden MayMod och MayUse uppsättningar (som sammanfattar möjliga sidoeffekter av förfaranden samtal på globala variabler) [12]. Senare arbete av Horwitz, Reps, och medarbetare visade hur många dataflöde-analys problem liknande den som Callahan adresserade kunde omvandlas till grafåtkomlighet problem på ett sätt som liknar den teknik som används i Cooper-Kennedy papper-och sedan lösas med hjälp av algoritmer som mycket liknar Horwitz-Reps-Binkley interprocedural-slicing algoritm. Även om de tre dokumenten lades fram under samma och en halv timmes session på PLDI 88, förekom dock inte handlingen att kombinera deras tekniker på ytterligare sex år. I tidningen PLDI 88 påpekades en överensstämmelse mellan ett programs callstruktur och en kontextfri grammatik, och mellan det intraprocedurala transitiva beroendet mellan en PDG:s parametern noder och beroendet mellan attribut i en attribut grammatik [25]. Vårt papper utnyttjade denna korrespondens för att beräkna sammanfattande kanter som lades till SDG vid call platser för att fånga vissa transitiva beroenden. De transitiva beroenden av intresse är mycket lik de transitiva beroenden fångas av de karakteristiska grafer av ett attribut grammatik nonterminaler; algoritmen för att identifiera sammanfattande kanter inspirerades av de två första passen av algoritmen för att skapa "TDS grafer" som används för att definiera klassen av beställda attribut grammatiker [24]. Detta ACM SIGPLAN 229 Bäst av PLDI 1979
Även om BDG kan hantera mönstermatchning, sammansatta uttryck och alla konstruktioner som finns i Erlang, har det samma problem som tidigare tillvägagångssätt: bristen på de sammanfattande kanter REF som används i SDG innebär en förlust av precision.
Interprocedural slicing using dependence graphs
{'venue': 'SIGP', 'journal': None, 'mag_field_of_study': ['Computer Science']}