3 resultados para não-composicional
em Universidad Politécnica de Madrid
Resumo:
Las pruebas de software (Testing) son en la actualidad la técnica más utilizada para la validación y la evaluación de la calidad de un programa. El testing está integrado en todas las metodologías prácticas de desarrollo de software y juega un papel crucial en el éxito de cualquier proyecto de software. Desde las unidades de código más pequeñas a los componentes más complejos, su integración en un sistema de software y su despliegue a producción, todas las piezas de un producto de software deben ser probadas a fondo antes de que el producto de software pueda ser liberado a un entorno de producción. La mayor limitación del testing de software es que continúa siendo un conjunto de tareas manuales, representando una buena parte del coste total de desarrollo. En este escenario, la automatización resulta fundamental para aliviar estos altos costes. La generación automática de casos de pruebas (TCG, del inglés test case generation) es el proceso de generar automáticamente casos de prueba que logren un alto recubrimiento del programa. Entre la gran variedad de enfoques hacia la TCG, esta tesis se centra en un enfoque estructural de caja blanca, y más concretamente en una de las técnicas más utilizadas actualmente, la ejecución simbólica. En ejecución simbólica, el programa bajo pruebas es ejecutado con expresiones simbólicas como argumentos de entrada en lugar de valores concretos. Esta tesis se basa en un marco general para la generación automática de casos de prueba dirigido a programas imperativos orientados a objetos (Java, por ejemplo) y basado en programación lógica con restricciones (CLP, del inglés constraint logic programming). En este marco general, el programa imperativo bajo pruebas es primeramente traducido a un programa CLP equivalente, y luego dicho programa CLP es ejecutado simbólicamente utilizando los mecanismos de evaluación estándar de CLP, extendidos con operaciones especiales para el tratamiento de estructuras de datos dinámicas. Mejorar la escalabilidad y la eficiencia de la ejecución simbólica constituye un reto muy importante. Es bien sabido que la ejecución simbólica resulta impracticable debido al gran número de caminos de ejecución que deben ser explorados y a tamaño de las restricciones que se deben manipular. Además, la generación de casos de prueba mediante ejecución simbólica tiende a producir un número innecesariamente grande de casos de prueba cuando es aplicada a programas de tamaño medio o grande. Las contribuciones de esta tesis pueden ser resumidas como sigue. (1) Se desarrolla un enfoque composicional basado en CLP para la generación de casos de prueba, el cual busca aliviar el problema de la explosión de caminos interprocedimiento analizando de forma separada cada componente (p.ej. método) del programa bajo pruebas, almacenando los resultados y reutilizándolos incrementalmente hasta obtener resultados para el programa completo. También se ha desarrollado un enfoque composicional basado en especialización de programas (evaluación parcial) para la herramienta de ejecución simbólica Symbolic PathFinder (SPF). (2) Se propone una metodología para usar información del consumo de recursos del programa bajo pruebas para guiar la ejecución simbólica hacia aquellas partes del programa que satisfacen una determinada política de recursos, evitando la exploración de aquellas partes del programa que violan dicha política. (3) Se propone una metodología genérica para guiar la ejecución simbólica hacia las partes más interesantes del programa, la cual utiliza abstracciones como generadores de trazas para guiar la ejecución de acuerdo a criterios de selección estructurales. (4) Se propone un nuevo resolutor de restricciones, el cual maneja eficientemente restricciones sobre el uso de la memoria dinámica global (heap) durante ejecución simbólica, el cual mejora considerablemente el rendimiento de la técnica estándar utilizada para este propósito, la \lazy initialization". (5) Todas las técnicas propuestas han sido implementadas en el sistema PET (el enfoque composicional ha sido también implementado en la herramienta SPF). Mediante evaluación experimental se ha confirmado que todas ellas mejoran considerablemente la escalabilidad y eficiencia de la ejecución simbólica y la generación de casos de prueba. ABSTRACT Testing is nowadays the most used technique to validate software and assess its quality. It is integrated into all practical software development methodologies and plays a crucial role towards the success of any software project. From the smallest units of code to the most complex components and their integration into a software system and later deployment; all pieces of a software product must be tested thoroughly before a software product can be released. The main limitation of software testing is that it remains a mostly manual task, representing a large fraction of the total development cost. In this scenario, test automation is paramount to alleviate such high costs. Test case generation (TCG) is the process of automatically generating test inputs that achieve high coverage of the system under test. Among a wide variety of approaches to TCG, this thesis focuses on structural (white-box) TCG, where one of the most successful enabling techniques is symbolic execution. In symbolic execution, the program under test is executed with its input arguments being symbolic expressions rather than concrete values. This thesis relies on a previously developed constraint-based TCG framework for imperative object-oriented programs (e.g., Java), in which the imperative program under test is first translated into an equivalent constraint logic program, and then such translated program is symbolically executed by relying on standard evaluation mechanisms of Constraint Logic Programming (CLP), extended with special treatment for dynamically allocated data structures. Improving the scalability and efficiency of symbolic execution constitutes a major challenge. It is well known that symbolic execution quickly becomes impractical due to the large number of paths that must be explored and the size of the constraints that must be handled. Moreover, symbolic execution-based TCG tends to produce an unnecessarily large number of test cases when applied to medium or large programs. The contributions of this dissertation can be summarized as follows. (1) A compositional approach to CLP-based TCG is developed which overcomes the inter-procedural path explosion by separately analyzing each component (method) in a program under test, stowing the results as method summaries and incrementally reusing them to obtain whole-program results. A similar compositional strategy that relies on program specialization is also developed for the state-of-the-art symbolic execution tool Symbolic PathFinder (SPF). (2) Resource-driven TCG is proposed as a methodology to use resource consumption information to drive symbolic execution towards those parts of the program under test that comply with a user-provided resource policy, avoiding the exploration of those parts of the program that violate such policy. (3) A generic methodology to guide symbolic execution towards the most interesting parts of a program is proposed, which uses abstractions as oracles to steer symbolic execution through those parts of the program under test that interest the programmer/tester most. (4) A new heap-constraint solver is proposed, which efficiently handles heap-related constraints and aliasing of references during symbolic execution and greatly outperforms the state-of-the-art standard technique known as lazy initialization. (5) All techniques above have been implemented in the PET system (and some of them in the SPF tool). Experimental evaluation has confirmed that they considerably help towards a more scalable and efficient symbolic execution and TCG.
Resumo:
El objetivo de este proyecto es investigar la viabilidad del almacenamiento de CO2 en un acuífero salino profundo ubicado en el margen suroccidental de la Cuenca del Guadalquivir. Este proyecto está destinado a una operación industrial con tasas de emisión de CO2 superiores a medio millón de toneladas anuales. Se ha construido un modelo geológico de la formación almacén en Petrel y se ha simulado la inyección utilizando la versión composicional de ECLIPSE. El objetivo es inyectar CO2 manteniendo una tasa de inyección constante durante 30 años, el máximo periodo permitido por la legislación española sobre almacenamiento geológico de CO2. La cantidad de CO2 inyectada en cada uno de los casos ha sido determinada. Los resultados parecen indicar que la inyección de CO2 a escala industrial podría ser viable, aunque la viabilidad del proyecto podría verse comprometida por la escasa profundidad a la que se encuentra el contacto entre la formación almacén y el sello lateral. Antes de seguir adelante con el desarrollo del proyecto sería conveniente determinar mejor la continuidad lateral de la formación almacén y sus condiciones de sello. ABSTRACT The aim of this project is to investigate the feasibility of CO2 geological storage in a deep saline aquifer located onshore in the southwestern margin of Guadalquivir Basin. The project is addressed for an industrial scale operation with CO2 emission rates higher than half a million tons per year. A geological model of the target reservoir was built in Petrel and injection simulations were performed with the compositional version of ECLIPSE. The purpose is to inject CO2 at constant rate during 30 years, the maximum period allowed by the Spanish law on carbon dioxide geological storage. The amount of CO2 injected in each studied scenario has been determined. Results suggest that CO2 injection at industrial scale could be viable, but the project feasibility could be endangered by the shallow depth of the contact between the target reservoir and the lateral seal. Prior to injection, further work should include ascertaining the reservoir’s lateral continuity and better determination of its sealing conditions
Resumo:
Este Trabajo fin de grado ha tomado como punto de partida el escenario y los casos de uso que han sido seleccionados para el demostrador ("live demo") del proyecto europeo de I+D+I FI-WARE para, a través del diseño y de la implementación del conjunto de widgets y operadores que forman parte de dicho demostrador, deducir los principios subyacentes al Desarrollo sistemático de los elementos composicionales que conforman un mashup de aplicaciones Web 2.0. En concreto, con el escenario escogido se quiere demostrar, en un contexto de Smart Cities, como puede monitorizarse el estado y la geolocalización de un conjunto de máquinas de vending y de los técnicos y reponedores que les dan soporte. Este trabajo fin de grado se ocupa, en concreto, de crear todos los componentes de interfaz necesarios para poder ofrecer un mashup de aplicación que ofrezca un cuadro de mando personalizable para llevar a cabo la monitorización y el control de máquinas de vending, técnicos y reponedores. Teniendo en cuenta el documento de casos de uso para ese escenario, se hizo una revisión de los diferentes widgets y operadores que había que diseñar y desarrollar. El conjunto inicial de widgets se mantuvo invariable, ya que las vistas que hay que mostrar deben ser las que se especifican en el documento anteriormente citado. No obstante, los operadores necesarios para el mashup han ido cambiando a lo largo del desarrollo como consecuencia de las necesidades de los tipos de datos tratados y de las características propias de la plataforma utilizada. El diseño del mashup se ha dividido en dos tipos de diseños distintos: Diseño de vistas: Es un disño de alto nivel donde se pueden observar las distintas vistas que vería el usuario en cada uno de los widgets (los operadores no tienen vista). Diseño de interacciones: Es un diseño de alto nivel donde se representa esquemáticamente el ujo de datos entre los elementos composicionales del mashup (tanto widgets como operadores). Al mismo tiempo que se planteaba el diseño del mashup, y como consecuencia de la experiencia ganada, se han podido ir realizando trabajos como la creación de la "Guía de desarrollo de widgets y operadores" y la "Guía de estilo para el desarrollo de widgets y operadores".Estos documentos, por su importancia, dan pie al título del presente trabajo ya que suponen una ayuda metodológica al desarrollo sistemático de elementos composicionales para mashup de aplicaciones. Durante ese periódo, simultaneamente, se pudieron encontrar y consultar diferentes fuentes de información que completan el "Estado del arte" y el documento de "Principios de diseño de aplicaciones composicionales orientadas a mashups" y se realizaron varias herramientas que facilitan la tarea del programador de crear un nuevo widget u operador desde cero. Entre estas últimas, destacan: una herramienta para crear y mantener la estructura de directorios y archivos de un widget y de un operador; y una herramienta que empaqueta todos los ficheros del widget u operador en un solo fichero WGT, dejándolo preparado para ser desplegado en la plataforma. La mayor parte del trabajo ha consistido en la implementación de los widgets y operadores. Los widgets implementados son los siguientes: Map Viewer. Issues List. Technicians List. Technicians Info. Los operadores implementados son los siguientes: Poi2Issue Issue2Poi Poi2vCard Vcard2Poi TechnicianSource IssuesSource También se han realizado tres tipos de tests: unitarios, de integracion y de sistema. Además se ha creado documentación de cada elemento composicional para el usuario. En dicha documentación se explica cuales son las funcionalidades de cada uno de los elementos composicionales y cuales son las capacidades de conexión con otros elementos. El resultado de mi trabajo puede observarse en: http://www.youtube.com/watch?v=r8 Vv ehJSw