Resumen:
|
[EN] 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 ...[+]
[EN] 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.
[-]
[ES] El grafo de dependencia de sistema (SDG) es una estructura de datos utilizada en el paradigma
imperativo para distintos análisis estáticos, y particularmente en la fragmentación de programas. Esta
técnica nos permite ...[+]
[ES] El grafo de dependencia de sistema (SDG) es una estructura de datos utilizada en el paradigma
imperativo para distintos análisis estáticos, y particularmente en la fragmentación de programas. Esta
técnica nos permite identificar la parte del programa (llamada fragmento) que influencia a una
determinada variable de interés. Gracias al SDG podemos producir fragmentos precisos para
programas interprecedurales. Desafortunadamente, el SDG no se puede utilizar en el paradigma
funcional debido a que algunas características de este formalismo no son consideradas (p.ej: ajuste de
patrones, funciones de alto nivel, expresiones compuestas, etc.) En este trabajo se propone la primera
adaptación del SDG a un lenguaje funcional teniendo en cuenta estas características. Se ha elegido
Erlang como lenguaje vehicular y se ha adaptado el algoritmo utilizado para producir fragmentos
precisos de programas interprocedurales Erlang. Como prueba de concepto, se ha implementado un
fragmentador para Erlang basado en estos SDGs
[-]
|