Resumen:
|
[ES] La fragmentación de programas es una técnica de análisis de software muy útil en muchos ámbitos relacionados con la ingeniería del software, especialmente en la depuración de código. No obstante, a pesar de lo beneficiosa ...[+]
[ES] La fragmentación de programas es una técnica de análisis de software muy útil en muchos ámbitos relacionados con la ingeniería del software, especialmente en la depuración de código. No obstante, a pesar de lo beneficiosa que puede llegar a ser, no todos los lenguajes de programación disponen de un fragmentador público que aborde la totalidad del lenguaje y que integre los últimos avances en esta técnica. En el caso de Java sí existen herramientas de análisis estático comerciales como CodeSonar. Sin embargo, aunque también existen herramientas de libre acceso como Indus, WALA, Kaveri, etc., ninguna de estas está suficientemente actualizada, o incluso son dependientes de otras o de algunos entornos de desarrollo, como puede ser Eclipse. Disponer de un fragmentador de código puede facilitar en gran medida tareas relacionadas con la ingeniería del software. En el caso de la depuración de código, por ejemplo, un error obtenido en un punto cualquiera del programa es mucho más sencillo de identificar si se consiguen descartar algunas partes del programa que se sabe a ciencia cierta que no tienen relevancia alguna en el error obtenido, optimizando tiempo y recursos. Lo que se pretende en el presente trabajo es diseñar y desarrollar desde cero una herramienta de fragmentación de código estática que sea pública, actualizada y de libre acceso para el lenguaje Java. Esto incluye todo el ciclo de desarrollo: Desde el diseño conceptual, pasando por el análisis del código, la construcción de diversas representaciones necesarias como el CFG (Control Flow Graph), PDG (Program Dependence Graph) y SDG (System Dependence Graph), entre otros, hasta la obtención del fragmento y su exportación a fichero. Todo ello tratando de desarrollar una herramienta robusta, mantenible y extensible, de forma que se pueda actualizar y ampliar su funcionalidad de forma fácil y sencilla en el futuro.
[-]
[EN] Program slicing is a program analysis technique that is useful in many areas related to software
engineering, especially in program debugging. However, despite its benefits, not all programming
languages have a ...[+]
[EN] Program slicing is a program analysis technique that is useful in many areas related to software
engineering, especially in program debugging. However, despite its benefits, not all programming
languages have a public and up-to-date program slicer.
In case of Java, there do exist commercial, static analysis tools like CodeSonar. However,
although some freely available tools also exist, like Indus, WALA, Kaveri, etc., none of them is
up-to-date, or even they depend on others or some development environments like Eclipse.
Having a program slicer can simplify some tasks related to software engineering. In case of
code debugging, for example, an error obtained in any point of the program can be traced more
easily if some certainly irrelevant parts of the program can be discarded, optimizing time and
resources.
The aim of this work is to design and develop a public, up-to-date and freely accesible static
program slicing tool from scratch, for the Java language. That includes the whole development
cycle: From the conceptual design, through code analysis, graph building such as CFG (Control
Flow Graph), PDG (Program Dependence Graph) and SDG (System Dependence Graph), among
others, to the computation of the final fragment and its exportation. All of this trying to develop
a robust, maintenable and extensible tool, that can be updated and extended in the future.
[-]
[CA] La fragmentació de programes és una técnica d’anàlisi de software molt útil en molts àmbits relacionats amb l’enginyeria software, especialment en la depuració de codi. No obstant, tot i lo beneficiosa que pot arribar ...[+]
[CA] La fragmentació de programes és una técnica d’anàlisi de software molt útil en molts àmbits relacionats amb l’enginyeria software, especialment en la depuració de codi. No obstant, tot i lo beneficiosa que pot arribar a ser, no tots els llenguatges de programació disponen d’un fragmentador públic que aborde la totalitat del llenguatge i que integre els últims avanços d’aquesta tècnica. En el cas de Java, sí existeixen ferramentes d’anàlisi estàtic comercials com CodeSurfer. No obstant, encara que existeixen algunes ferramentas de lliure accés com Indus, WALA, Kaveri, etc. ningú d’aquestes está completament actualitzada, o dependeixen d’altres ferramentas o d’algú entorn de desenvolupament com Eclipse. Disposar d’un fragmentador de codi pot facilitar molt algunes tasques relacionades amb la engenyeria del software. En el cas de la depuració de codi, per example, un error obtingut en qualsevol punt del programa és molt més senzill d’identificar si es consegueix descartar altres parts del programa que es sap que no tenen rellev`ancia, optimitzant el temps i els recursos. En aquest treball es pretén disenyar i desenvolupar desde zero una ferramenta de fragmentació de codi estática que siga pública, actualitzada i de lliure accés per a Java. Aquest inclou tot el cicle de desenvolupament: desde el diseny conceptual, pasant per l’análisi del codi, la construcció de diverses representacions necesarias com el CFG (Control Flow Graph), PDG (Program Dependence Graph) y SDG (System Dependence Graph), entre altres, fins i la obtenció del fragment i la seua exportació. Tot així tratant de desenvolupar una ferramenta robusta, mantenible y extensible que es puga actualitzar i ampliar la seua funcionalitat de manera fàcil y senzilla en el futur.
[-]
|