Registro:
Documento: | Tesis Doctoral |
Título: | Análisis estático de programas .NET. |
Título alternativo: | Static analysis of .NET programs. |
Autor: | Zoppi, Edgardo Julio |
Editor: | Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales |
Lugar de trabajo: | Universidad de Buenos Aires - CONICET. Instituto de Investigación en Ciencias de la Computación (ICC)
|
Publicación en la Web: | 2022-03-29 |
Fecha de defensa: | 2019-05-22 |
Fecha en portada: | 2019 |
Grado Obtenido: | Doctorado |
Título Obtenido: | Doctor de la Universidad de Buenos Aires en el área de Ciencias de la Computación |
Departamento Docente: | Departamento de Computación |
Director: | Garbervetsky, Diego David |
Consejero: | Braberman, Víctor Adrián |
Jurado: | Gertz, Matthew; Aguirre, Nazareno Matías; D'Argenio, Pedro Rubén |
Idioma: | Inglés |
Palabras clave: | ANALISIS; PROGRAMA; ESTATICO; DISTRIBUIDO; INCREMENTAL; CALL GRAPH; .NET; FRAMEWORK; BYTECODE; CODIGO DE TRES DIRECCIONES; CONTROL-FLOW; DATA-FLOW; NUBE; BIG DATAANALYSIS; PROGRAM; STATIC; DISTRIBUTED; INCREMENTAL; CALL GRAPH; .NET; FRAMEWORK; BYTECODE; THREE-ADDRESS CODE; CONTROL-FLOW; DATA-FLOW; CLOUD; BIGDATA |
Formato: | PDF |
Handle: |
http://hdl.handle.net/20.500.12110/tesis_n6970_Zoppi |
PDF: | https://bibliotecadigital.exactas.uba.ar/download/tesis/tesis_n6970_Zoppi.pdf |
Registro: | https://bibliotecadigital.exactas.uba.ar/collection/tesis/document/tesis_n6970_Zoppi |
Ubicación: | COM 006970 |
Derechos de Acceso: | Esta obra puede ser leída, grabada y utilizada con fines de estudio, investigación y docencia. Es necesario el reconocimiento de autoría mediante la cita correspondiente. Zoppi, Edgardo Julio. (2019). Análisis estático de programas .NET.. (Tesis Doctoral. Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales). Recuperado de http://hdl.handle.net/20.500.12110/tesis_n6970_Zoppi |
Resumen:
En esta tesis presentamos el diseño e implementación de una amplia gama de análisis estáticos para la plataforma .NET, con foco en la escalabilidad. Nos concentramos en .NET dada su gran popularidad en la industria y el amplio conjunto de características que provee, pertenecientes a los paradigmas orientado a objetos y funcional, incluyendo programación concurrente y la manipulación de bajo nivel de punteros. La combinación de todas estas características hacen del análisis estático un desafío. Por un lado, presentamos un framework de análisis estático distribuido de programa completo, diseñado para escalar con el tamaño de la entrada. Nuestro enfoque está basado en el modelo de programación con actores para ser ejecutado en la nube. Nuestra decisión de utilizar una red de computadoras en la nube provee un grado de elasticidad para recursos de CPU, memoria y almacenamiento. Para demostrar el potencial de nuestra técnica, mostramos cómo puede ser implementado un análisis de call graph típico en una configuración distribuida. Además, extendemos nuestro análisis para soportar actualizaciones incrementales del código fuente y mostramos cómo los resultados computados previamente pueden ser actualizados sin tener que volver a calcularlos de cero. Por otro lado, presentamos un framework de análisis estático de programas y herramientas específicamente diseñado para la plataforma .NET. Este framework provee muchas funcionalidades, incluyendo algunas representaciones intermedias como el código de tres direcciones, adecuado para la implementación de un análisis estático, así como también provee una amplia gama de análisis y transformaciones como son la inferencia de tipos, los análisis de control-flow y data-flow, y la construcción de call graph y points-to graph, entre otros. No sabemos de ningún otro framework de análisis estático de código públicamente disponible para la comunidad .NET que provea este tipo de funcionalidades. Para demostrar las capacidades de nuestro framework, presentamos también algunas aplicaciones cliente que aprovechan sus funcionalidades, como un análisis de optimización de consultas Big Data para detectar automáticamente columnas no utilizadas y dependencias entre tablas de entrada y salida de operadores definidos por el usuario desarrollados en algún lenguaje de la plataforma .NET como C#.
Abstract:
In this thesis we present the design and implementation of a wide range of static analyses for the .NET platform, with focus in scalability. We target .NET given its popularity in the industry and the rich set of features it provides, ranging from object-oriented to functional paradigms, including concurrent programming and low-level pointer manipulation. The combination of all these features make static analysis very challenging. On the one hand, we present a distributed, whole-program static analysis framework that is designed to scale with the size of the input. Our approach is based on the actor programming model and is deployed in the cloud. Our reliance on a cloud cluster provides a degree of elasticity for CPU, memory and storage resources. To demonstrate the potential of our technique, we show how a typical call graph analysis can be implemented in a distributed setting. In addition, we extend our analysis to support incremental source code updates and show how the previously computed results can be updated without having to recompute them from scratch. On the other hand, we present a static program analysis framework and tools specifically designed for the .NET platform. It provides many features, including a few intermediate code representations such as a three-address code suitable for implementing a static analysis on top of it, and a rich set of analyses and transformations such as type inference, control-flow and data-flow analyses, and call graph and points-to graph construction, among others. We don’t know of any other static analysis framework publicly available to the .NET community providing these kind of features. To demonstrate the capabilities of our framework, we also present a few client applications that take advantage of its features, such as a Big Data query optimization analysis to automatically detect unused columns and dependencies between input and output tables of user-defined operators written in a .NET-based programming language like C#.
Citación:
---------- APA ----------
Zoppi, Edgardo Julio. (2019). Análisis estático de programas .NET.. (Tesis Doctoral. Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales.). Recuperado de https://hdl.handle.net/20.500.12110/tesis_n6970_Zoppi
---------- CHICAGO ----------
Zoppi, Edgardo Julio. "Análisis estático de programas .NET.". Tesis Doctoral, Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales, 2019.https://hdl.handle.net/20.500.12110/tesis_n6970_Zoppi
Estadísticas:
Descargas totales desde :
Descargas mensuales
https://bibliotecadigital.exactas.uba.ar/download/tesis/tesis_n6970_Zoppi.pdf