System dependence graphs in sequential Erlang

The system dependence graph (SDG) is a data structure used in the imperative paradigm for different static analysis, and particularly, for program slicing. Program slicing allows us to determine the part of a program (called slice) that influences a given variable of interest. Thanks to the SDG, we...

Full description

Bibliographic Details
Authors: Silva, Josep|||0000-0001-5096-0008, Tamarit Muñoz, Salvador, Tomás Franco, César
Format: book part
Publication Date:2012
Country:España
Institution:Universitat Politècnica de València (UPV)
Repository:RiuNet. Repositorio Institucional de la Universitat Politécnica de Valéncia
Language:English
OAI Identifier:oai:riunet.upv.es:10251/35768
Online Access:https://riunet.upv.es/handle/10251/35768
Access Level:Open access
Keyword:LENGUAJES Y SISTEMAS INFORMATICOS
Description
Summary:The system dependence graph (SDG) is a data structure used in the imperative paradigm for different static analysis, and particularly, for program slicing. Program slicing allows us to determine the part of a program (called slice) that influences a given variable of interest. Thanks to the SDG, we can produce precise slices for interprocedural programs. Unfortunately, the SDG cannot be used in the functional paradigm due to important features that are not considered in this formalism (e.g., pattern matching, higher-order, composite expressions, etc.). In this work we propose the first adaptation of the SDG to a functional language facing these problems. We take Erlang as the host language and we adapt the algorithms used to slice the SDG to produce precise slices of Erlang interprocedural programs. As a proof-of-concept, we have implemented a program slicer for Erlang based on our SDGs.