74 resultados para Testing Source Code Generation
Resumo:
La motivación de esta tesis es el desarrollo de una herramienta de optimización automática para la mejora del rendimiento de formas aerodinámicas enfocado en la industria aeronáutica. Este trabajo cubre varios aspectos esenciales, desde el empleo de Non-Uniform Rational B-Splines (NURBS), al cálculo de gradientes utilizando la metodología del adjunto continuo, el uso de b-splines volumétricas como parámetros de diseño, el tratamiento de la malla en las intersecciones, y no menos importante, la adaptación de los algoritmos de la dinámica de fluidos computacional (CFD) en arquitecturas hardware de alto paralelismo, como las tarjetas gráficas, para acelerar el proceso de optimización. La metodología adjunta ha posibilitado que los métodos de optimización basados en gradientes sean una alternativa prometedora para la mejora de la eficiencia aerodinámica de los aviones. La formulación del adjunto permite calcular los gradientes de una función de coste, como la resistencia aerodinámica o la sustentación, independientemente del número de variables de diseño, a un coste computacional equivalente a una simulación CFD. Sin embargo, existen problemas prácticos que han imposibilitado su aplicación en la industria, que se pueden resumir en: integrabilidad, rendimiento computacional y robustez de la solución adjunta. Este trabajo aborda estas contrariedades y las analiza en casos prácticos. Como resumen, las contribuciones de esta tesis son: • El uso de NURBS como variables de diseño en un bucle de automático de optimización, aplicado a la mejora del rendimiento aerodinámico de alas en régimen transónico. • El desarrollo de algoritmos de inversión de punto, para calcular las coordenadas paramétricas de las coordenadas espaciales, para ligar los vértices de malla a las NURBS. • El uso y validación de la formulación adjunta para el calculo de los gradientes, a partir de las sensibilidades de la solución adjunta, comparado con diferencias finitas. • Se ofrece una estrategia para utilizar la geometría CAD, en forma de parches NURBS, para tratar las intersecciones, como el ala-fuselaje. • No existen muchas alternativas de librerías NURBS viables. En este trabajo se ha desarrollado una librería, DOMINO NURBS, y se ofrece a la comunidad como código libre y abierto. • También se ha implementado un código CFD en tarjeta gráfica, para realizar una valoración de cómo se puede adaptar un código sobre malla no estructurada a arquitecturas paralelas. • Finalmente, se propone una metodología, basada en la función de Green, como una forma eficiente de paralelizar simulaciones numéricas. Esta tesis ha sido apoyada por las actividades realizadas por el Área de Dinámica da Fluidos del Instituto Nacional de Técnica Aeroespacial (INTA), a través de numerosos proyectos de financiación nacional: DOMINO, SIMUMAT, y CORESFMULAERO. También ha estado en consonancia con las actividades realizadas por el departamento de Métodos y Herramientas de Airbus España y con el grupo Investigación y Tecnología Aeronáutica Europeo (GARTEUR), AG/52. ABSTRACT The motivation of this work is the development of an automatic optimization strategy for large scale shape optimization problems that arise in the aeronautics industry to improve the aerodynamic performance; covering several aspects from the use of Non-Uniform Rational B-Splines (NURBS), the calculation of the gradients with the continuous adjoint formulation, the development of volumetric b-splines parameterization, mesh adaptation and intersection handling, to the adaptation of Computational Fluid Dynamics (CFD) algorithms to take advantage of highly parallel architectures in order to speed up the optimization process. With the development of the adjoint formulation, gradient-based methods for aerodynamic optimization become a promising approach to improve the aerodynamic performance of aircraft designs. The adjoint methodology allows the evaluation the gradients to all design variables of a cost function, such as drag or lift, at the equivalent cost of more or less one CFD simulation. However, some practical problems have been delaying its full implementation to the industry, which can be summarized as: integrability, computer performance, and adjoint robustness. This work tackles some of these issues and analyse them in well-known test cases. As summary, the contributions comprises: • The employment of NURBS as design variables in an automatic optimization loop for the improvement of the aerodynamic performance of aircraft wings in transonic regimen. • The development of point inversion algorithms to calculate the NURBS parametric coordinates from the space coordinates, to link with the computational grid vertex. • The use and validation of the adjoint formulation to calculate the gradients from the surface sensitivities in an automatic optimization loop and evaluate its reliability, compared with finite differences. • This work proposes some algorithms that take advantage of the underlying CAD geometry description, in the form of NURBS patches, to handle intersections and mesh adaptations. • There are not many usable libraries for NURBS available. In this work an open source library DOMINO NURBS has been developed and is offered to the community as free, open source code. • The implementation of a transonic CFD solver from scratch in a graphic card, for an assessment of the implementability of conventional CFD solvers for unstructured grids to highly parallel architectures. • Finally, this research proposes the use of the Green's function as an efficient paralellization scheme of numerical solvers. The presented work has been supported by the activities carried out at the Fluid Dynamics branch of the National Institute for Aerospace Technology (INTA) through national founding research projects: DOMINO, SIMUMAT, and CORESIMULAERO; in line with the activities carried out by the Methods and Tools and Flight Physics department at Airbus and the Group for Aeronautical Research and Technology in Europe (GARTEUR) action group AG/52.
Resumo:
Las metodologías de desarrollo ágiles han sufrido un gran auge en entornos industriales durante los últimos años debido a la rapidez y fiabilidad de los procesos de desarrollo que proponen. La filosofía DevOps y específicamente las metodologías derivadas de ella como Continuous Delivery o Continuous Deployment promueven la gestión completamente automatizada del ciclo de vida de las aplicaciones, desde el código fuente a las aplicaciones ejecutándose en entornos de producción. La automatización se ve como un medio para producir procesos repetibles, fiables y rápidos. Sin embargo, no todas las partes de las metodologías Continuous están completamente automatizadas. En particular, la gestión de la configuración de los parámetros de ejecución es un problema que ha sido acrecentado por la elasticidad y escalabilidad que proporcionan las tecnologías de computación en la nube. La mayoría de las herramientas de despliegue actuales pueden automatizar el despliegue de la configuración de parámetros de ejecución, pero no ofrecen soporte a la hora de fijar esos parámetros o de validar los ficheros que despliegan, principalmente debido al gran abanico de opciones de configuración y el hecho de que el valor de muchos de esos parámetros es fijado en base a preferencias expresadas por el usuario. Esto hecho hace que pueda parecer que cualquier solución al problema debe estar ajustada a una aplicación específica en lugar de ofrecer una solución general. Con el objetivo de solucionar este problema, propongo un modelo de configuración que puede ser inferido a partir de instancias de configuración existentes y que puede reflejar las preferencias de los usuarios para ser usado para facilitar los procesos de configuración. El modelo de configuración puede ser usado como la base de un proceso de configuración interactivo capaz de guiar a un operador humano a través de la configuración de una aplicación para su despliegue en un entorno determinado o para detectar cambios de configuración automáticamente y producir una configuración válida que se ajuste a esos cambios. Además, el modelo de configuración debería ser gestionado como si se tratase de cualquier otro artefacto software y debería ser incorporado a las prácticas de gestión habituales. Por eso también propongo un modelo de gestión de servicios que incluya información relativa a la configuración de parámetros de ejecución y que además es capaz de describir y gestionar propuestas arquitectónicas actuales tales como los arquitecturas de microservicios. ABSTRACT Agile development methodologies have risen in popularity within the industry in recent years due to the speed and reliability of the processes they propose. The DevOps philosophy and specifically the methodologies derived from it such as Continuous Delivery and Continuous Deployment push for a totally automated management of the application lifecycle, from the source code to the software running in production environment. Automation in this regard is used as a means to produce repeatable, reliable and fast processes. However, not all parts of the Continuous methodologies are completely automatized. In particular, management of runtime parameter configuration is a problem that has increased its impact in deployment process due to the scalability and elasticity provided by cloud technologies. Most deployment tools nowadays can automate the deployment of runtime parameter configuration, but they offer no support for parameter setting o configuration validation, as the range of different configuration options and the fact that the value of many of those parameters is based on user preference seems to imply that any solution to the problem will have to be tailored to a specific application. With the aim to solve this problem I propose a configuration model that can be inferred from existing configurations and reflect user preferences in order to ease the configuration process. The configuration model can be used as the base of an interactive configuration process capable of guiding a human operator through the configuration of an application for its deployment in a specific environment or to automatically detect configuration changes and produce valid runtime parameter configurations that take into account those changes. Additionally, the configuration model should be managed as any other software artefact and should be incorporated into current management practices. I also propose a service management model that includes the configuration information and that is able to describe and manage current architectural practices such as the microservices architecture.
Resumo:
Este proyecto fin de grado presenta dos herramientas, Papify y Papify-Viewer, para medir y visualizar, respectivamente, las prestaciones a bajo nivel de especificaciones RVC-CAL basándose en eventos hardware. RVC-CAL es un lenguaje de flujo de datos estandarizado por MPEG y utilizado para definir herramientas relacionadas con la codificación de vídeo. La estructura de los programas descritos en RVC-CAL se basa en unidades funcionales llamadas actores, que a su vez se subdividen en funciones o procedimientos llamados acciones. ORCC (Open RVC-CAL Compiler) es un compilador de código abierto que utiliza como entrada descripciones RVC-CAL y genera a partir de ellas código fuente en un lenguaje dado, como por ejemplo C. Internamente, el compilador ORCC se divide en tres etapas distinguibles: front-end, middle-end y back-end. La implementación de Papify consiste en modificar la etapa del back-end del compilador, encargada de la generación de código, de modo tal que los actores, al ser traducidos a lenguaje C, queden instrumentados con PAPI (Performance Application Programing Interface), una herramienta utilizada como interfaz a los registros contadores de rendimiento (PMC) de los procesadores. Además, también se modifica el front-end para permitir identificar cierto tipo de anotaciones en las descripciones RVC-CAL, utilizadas para que el diseñador pueda indicar qué actores o acciones en particular se desean analizar. Los actores instrumentados, además de conservar su funcionalidad original, generan una serie de ficheros que contienen datos sobre los distintos eventos hardware que suceden a lo largo de su ejecución. Los eventos incluidos en estos ficheros son configurables dentro de las anotaciones previamente mencionadas. La segunda herramienta, Papify-Viewer, utiliza los datos generados por Papify y los procesa, obteniendo una representación visual de la información a dos niveles: por un lado, representa cronológicamente la ejecución de la aplicación, distinguiendo cada uno de los actores a lo largo de la misma. Por otro lado, genera estadísticas sobre la cantidad de eventos disparados por acción, actor o núcleo de ejecución y las representa mediante gráficos de barra. Ambas herramientas pueden ser utilizadas en conjunto para verificar el funcionamiento del programa, balancear la carga de los actores o la distribución por núcleos de los mismos, mejorar el rendimiento y diagnosticar problemas. ABSTRACT. This diploma project presents two tools, Papify and Papify-Viewer, used to measure and visualize the low level performance of RVC-CAL specifications based on hardware events. RVC-CAL is a dataflow language standardized by MPEG which is used to define video codec tools. The structure of the applications described in RVC-CAL is based on functional units called actors, which are in turn divided into smaller procedures called actions. ORCC (Open RVC-CAL Compiler) is an open-source compiler capable of transforming RVC-CAL descriptions into source code in a given language, such as C. Internally, the compiler is divided into three distinguishable stages: front-end, middle-end and back-end. Papify’s implementation consists of modifying the compiler’s back-end stage, which is responsible for generating the final source code, so that translated actors in C code are now instrumented with PAPI (Performance Application Programming Interface), a tool that provides an interface to the microprocessor’s performance monitoring counters (PMC). In addition, the front-end is also modified in such a way that allows identification of a certain type of annotations in the RVC-CAL descriptions, allowing the designer to set the actors or actions to be included in the measurement. Besides preserving their initial behavior, the instrumented actors will also generate a set of files containing data about the different events triggered throughout the program’s execution. The events included in these files can be configured inside the previously mentioned annotations. The second tool, Papify-Viewer, makes use of the files generated by Papify to process them and provide a visual representation of the information in two different ways: on one hand, a chronological representation of the application’s execution where each actor has its own timeline. On the other hand, statistical information is generated about the amount of triggered events per action, actor or core. Both tools can be used together to assert the normal functioning of the program, balance the load between actors or cores, improve performance and identify problems.
Resumo:
La evolución de las redes eléctricas se dirige hacia lo que se conoce como “Smart Grids” o “Redes Eléctricas Inteligentes”. Estas “Smart Grids” se componen de subestaciones eléctricas, que a su vez se componen de unos dispositivos llamados IEDs (Dispositivos Electrónicos Inteligentes – Intelligent Electronic Devices). El diseño de IEDs se encuentra definido en la norma IEC 61850, que especifica además un Lenguaje de Configuración de Subestaciones (Substation Configuration Language SCL) para la definición de la configuración de subestaciones y sus IEDs. Hoy en día, este estándar internacional no sólo se utiliza para diseñar correctamente IEDs y asegurar su interoperabilidad, sino que también se utiliza para el diseño de otros dispositivos de la red eléctrica, como por ejemplo, medidores inteligentes. Sin embargo, aunque existe una tendencia cada vez mayor del uso de este estándar, la comprensión y el manejo del mismo resulta difícil debido al gran volumen de información que lo compone y del nivel de detalle que utiliza, por lo que su uso para el diseño de IEDs se hace tedioso sin la ayuda de un soporte software. Es por ello que, para facilitar la aplicación del estándar IEC 61850 en el diseño de IEDs se han desarrollado herramientas como “Visual SCL”, “SCL Explorer” o “61850 SCLVisual Design Tool”. En concreto, “61850 SCLVisual Design Tool” es una herramienta gráfica para el modelado de subestaciones electricas, generada mediante el uso de los frameworks Eclipse Modeling Framework (EMF) y Epsilon Generative Modeling Technologies (GMT) y desarrollada por el grupo de investigación SYST de la UPM. El objetivo de este proyecto es añadir una nueva funcionalidad a la herramienta “61850 Visual SCL DesignTool”. Esta nueva funcionalidad consiste en la generación automática de un fichero de configuración de subestaciones eléctricas según el estándar IEC 61850 a partir de de una herramienta de diseño gráfico. Este fichero, se denomina SCD (Substation Configuration Description), y se trata de un fichero XML conforme a un esquema XSD (XML Schema Definition) mediante el que se define el lenguaje de configuración de subestaciones SCL del IEC 61850. Para el desarrollo de este proyecto, es necesario el estudio del lenguaje para la configuración de subestaciones SCL, así como del lenguaje gráfico específico de dominio definido por la herramienta “61850 SCLVisual Design Tool”, la estructura de los ficheros SCD, y finalmente, del lenguaje EGL (Epsilon Generation Language) para la transformación y generación automática de código a partir de modelos EMF. ABSTRACT Electrical networks are evolving to “Smart Grids”. Smart Grids are composed of electrical substations that in turn are composed of devices called IEDs (Intelligent Electronic Devices). The design of IEDs is defined by the IEC 61850 standard, which also specifies a Substation Configuration Languaje (SCL) used to define the configuration of substations and their IEDs. Nowadays, this international standard is not only used to design properly IEDs and guarantee their interoperability, but it is also used to design different electrical network devices, such as, smart meters. However, although the use of this standard is growing, its compression as well as its management, is still difficult due to its large volume of information and its level of detail. As a result, designing IEDs becomes a tedious task without a software support. As a consequence of this, in order to make easier the application of the IEC 61850 standard while designing IEDs, some software tools have been developed, such as: “Visual SCL”, “SCL Explorer” or “61850 SCLVisual Design Tool”. In particular, “61850 SCLVisual Design Tool” is a graphical tool used to make electrical substations models, and developed with the Eclipse Modeling Framework (EMF) and Epsilon Generative Modeling Technologies (GMT) by the research group SYST of the UPM. The aim of this project is to add a new functionality to “61850 Visual SCL DesignTool”. This new functionality consists of the automatic code generation of a substation configuration file according to the IEC 61850 standard. This file is called SCD (Substation Configuration Description), and it is a XML file that follows a XSD (XML Schema Definition) that defines the Substation Configuration Language (SCL) of the IEC 61850. In order to develop this project, it is necessary to study the Substation Configuration Language (SCL), the domain-specific graphical languaje defined by the tool “61850 SCLVisual Design Tool”, the structure of a SCD file, and the Epsilon Generation Language (EGL) used for the automatic code generation from EMF models
Resumo:
With the ever growing trend of smart phones and tablets, Android is becoming more and more popular everyday. With more than one billion active users i to date, Android is the leading technology in smart phone arena. In addition to that, Android also runs on Android TV, Android smart watches and cars. Therefore, in recent years, Android applications have become one of the major development sectors in software industry. As of mid 2013, the number of published applications on Google Play had exceeded one million and the cumulative number of downloads was more than 50 billionii. A 2013 survey also revealed that 71% of the mobile application developers work on developing Android applicationsiii. Considering this size of Android applications, it is quite evident that people rely on these applications on a daily basis for the completion of simple tasks like keeping track of weather to rather complex tasks like managing one’s bank accounts. Hence, like every other kind of code, Android code also needs to be verified in order to work properly and achieve a certain confidence level. Because of the gigantic size of the number of applications, it becomes really hard to manually test Android applications specially when it has to be verified for various versions of the OS and also, various device configurations such as different screen sizes and different hardware availability. Hence, recently there has been a lot of work on developing different testing methods for Android applications in Computer Science fraternity. The model of Android attracts researchers because of its open source nature. It makes the whole research model more streamlined when the code for both, application and the platform are readily available to analyze. And hence, there has been a great deal of research in testing and static analysis of Android applications. A great deal of this research has been focused on the input test generation for Android applications. Hence, there are a several testing tools available now, which focus on automatic generation of test cases for Android applications. These tools differ with one another on the basis of their strategies and heuristics used for this generation of test cases. But there is still very little work done on the comparison of these testing tools and the strategies they use. Recently, some research work has been carried outiv in this regard that compared the performance of various available tools with respect to their respective code coverage, fault detection, ability to work on multiple platforms and their ease of use. It was done, by running these tools on a total of 60 real world Android applications. The results of this research showed that although effective, these strategies being used by the tools, also face limitations and hence, have room for improvement. The purpose of this thesis is to extend this research into a more specific and attribute-‐ oriented way. Attributes refer to the tasks that can be completed using the Android platform. It can be anything ranging from a basic system call for receiving an SMS to more complex tasks like sending the user to another application from the current one. The idea is to develop a benchmark for Android testing tools, which is based on the performance related to these attributes. This will allow the comparison of these tools with respect to these attributes. For example, if there is an application that plays some audio file, will the testing tool be able to generate a test input that will warrant the execution of this audio file? Using multiple applications using different attributes, it can be visualized that which testing tool is more useful for which kinds of attributes. In this thesis, it was decided that 9 attributes covering the basic nature of tasks, will be targeted for the assessment of three testing tools. Later this can be done for much more attributes to compare even more testing tools. The aim of this work is to show that this approach is effective and can be used on a much larger scale. One of the flagship features of this work, which also differentiates it with the previous work, is that the applications used, are all specially made for this research. The reason for doing that is to analyze just that specific attribute in isolation, which the application is focused on, and not allow the tool to get bottlenecked by something trivial, which is not the main attribute under testing. This means 9 applications, each focused on one specific attribute. The main contributions of this thesis are: A summary of the three existing testing tools and their respective techniques for automatic test input generation of Android Applications. • A detailed study of the usage of these testing tools using the 9 applications specially designed and developed for this study. • The analysis of the obtained results of the study carried out. And a comparison of the performance of the selected tools.
Resumo:
Abstraction-Carrying Code (ACC) has recently been proposed as a framework for mobile code safety in which the code supplier provides a program together with an abstraction whose validity entails compliance with a predefined safety policy. The abstraction plays thus the role of safety certifícate and its generation is carried out automatically by a fixed-point analyzer. The advantage of providing a (fixedpoint) abstraction to the code consumer is that its validity is checked in a single pass of an abstract interpretation-based checker. A main challenge is to reduce the size of certificates as much as possible while at the same time not increasing checking time. In this paper, we first introduce the notion of reduced certifícate which characterizes the subset of the abstraction which a checker needs in order to validate (and re-construct) the full certifícate in a single pass. Based on this notion, we then instrument a generic analysis algorithm with the necessary extensions in order to identify the information relevant to the checker.
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:
La fusión nuclear es, hoy en día, una alternativa energética a la que la comunidad internacional dedica mucho esfuerzo. El objetivo es el de generar entre diez y cincuenta veces más energía que la que consume mediante reacciones de fusión que se producirán en una mezcla de deuterio (D) y tritio (T) en forma de plasma a doscientos millones de grados centígrados. En los futuros reactores nucleares de fusión será necesario producir el tritio utilizado como combustible en el propio reactor termonuclear. Este hecho supone dar un paso más que las actuales máquinas experimentales dedicadas fundamentalmente al estudio de la física del plasma. Así pues, el tritio, en un reactor de fusión, se produce en sus envolturas regeneradoras cuya misión fundamental es la de blindaje neutrónico, producir y recuperar tritio (fuel para la reacción DT del plasma) y por último convertir la energía de los neutrones en calor. Existen diferentes conceptos de envolturas que pueden ser sólidas o líquidas. Las primeras se basan en cerámicas de litio (Li2O, Li4SiO4, Li2TiO3, Li2ZrO3) y multiplicadores neutrónicos de Be, necesarios para conseguir la cantidad adecuada de tritio. Los segundos se basan en el uso de metales líquidos o sales fundidas (Li, LiPb, FLIBE, FLINABE) con multiplicadores neutrónicos de Be o el propio Pb en el caso de LiPb. Los materiales estructurales pasan por aceros ferrítico-martensíticos de baja activación, aleaciones de vanadio o incluso SiCf/SiC. Cada uno de los diferentes conceptos de envoltura tendrá una problemática asociada que se estudiará en el reactor experimental ITER (del inglés, “International Thermonuclear Experimental Reactor”). Sin embargo, ITER no puede responder las cuestiones asociadas al daño de materiales y el efecto de la radiación neutrónica en las diferentes funciones de las envolturas regeneradoras. Como referencia, la primera pared de un reactor de fusión de 4000MW recibiría 30 dpa/año (valores para Fe-56) mientras que en ITER se conseguirían <10 dpa en toda su vida útil. Esta tesis se encuadra en el acuerdo bilateral entre Europa y Japón denominado “Broader Approach Agreement “(BA) (2007-2017) en el cual España juega un papel destacable. Estos proyectos, complementarios con ITER, son el acelerador para pruebas de materiales IFMIF (del inglés, “International Fusion Materials Irradiation Facility”) y el dispositivo de fusión JT-60SA. Así, los efectos de la irradiación de materiales en materiales candidatos para reactores de fusión se estudiarán en IFMIF. El objetivo de esta tesis es el diseño de un módulo de IFMIF para irradiación de envolturas regeneradoras basadas en metales líquidos para reactores de fusión. El módulo se llamará LBVM (del inglés, “Liquid Breeder Validation Module”). La propuesta surge de la necesidad de irradiar materiales funcionales para envolturas regeneradoras líquidas para reactores de fusión debido a que el diseño conceptual de IFMIF no contaba con esta utilidad. Con objeto de analizar la viabilidad de la presente propuesta, se han realizado cálculos neutrónicos para evaluar la idoneidad de llevar a cabo experimentos relacionados con envolturas líquidas en IFMIF. Así, se han considerado diferentes candidatos a materiales funcionales de envolturas regeneradoras: Fe (base de los materiales estructurales), SiC (material candidato para los FCI´s (del inglés, “Flow Channel Inserts”) en una envoltura regeneradora líquida, SiO2 (candidato para recubrimientos antipermeación), CaO (candidato para recubrimientos aislantes), Al2O3 (candidato para recubrimientos antipermeación y aislantes) y AlN (material candidato para recubrimientos aislantes). En cada uno de estos materiales se han calculado los parámetros de irradiación más significativos (dpa, H/dpa y He/dpa) en diferentes posiciones de IFMIF. Estos valores se han comparado con los esperados en la primera pared y en la zona regeneradora de tritio de un reactor de fusión. Para ello se ha elegido un reactor tipo HCLL (del inglés, “Helium Cooled Lithium Lead”) por tratarse de uno de los más prometedores. Además, los valores también se han comparado con los que se obtendrían en un reactor rápido de fisión puesto que la mayoría de las irradiaciones actuales se hacen en reactores de este tipo. Como conclusión al análisis de viabilidad, se puede decir que los materiales funcionales para mantos regeneradores líquidos podrían probarse en la zona de medio flujo de IFMIF donde se obtendrían ratios de H/dpa y He/dpa muy parecidos a los esperados en las zonas más irradiadas de un reactor de fusión. Además, con el objetivo de ajustar todavía más los valores, se propone el uso de un moderador de W (a considerar en algunas campañas de irradiación solamente debido a que su uso hace que los valores de dpa totales disminuyan). Los valores obtenidos para un reactor de fisión refuerzan la idea de la necesidad del LBVM, ya que los valores obtenidos de H/dpa y He/dpa son muy inferiores a los esperados en fusión y, por lo tanto, no representativos. Una vez demostrada la idoneidad de IFMIF para irradiar envolturas regeneradoras líquidas, y del estudio de la problemática asociada a las envolturas líquidas, también incluida en esta tesis, se proponen tres tipos de experimentos diferentes como base de diseño del LBVM. Éstos se orientan en las necesidades de un reactor tipo HCLL aunque a lo largo de la tesis se discute la aplicabilidad para otros reactores e incluso se proponen experimentos adicionales. Así, la capacidad experimental del módulo estaría centrada en el estudio del comportamiento de litio plomo, permeación de tritio, corrosión y compatibilidad de materiales. Para cada uno de los experimentos se propone un esquema experimental, se definen las condiciones necesarias en el módulo y la instrumentación requerida para controlar y diagnosticar las cápsulas experimentales. Para llevar a cabo los experimentos propuestos se propone el LBVM, ubicado en la zona de medio flujo de IFMIF, en su celda caliente, y con capacidad para 16 cápsulas experimentales. Cada cápsula (24-22 mm de diámetro y 80 mm de altura) contendrá la aleación eutéctica LiPb (hasta 50 mm de la altura de la cápsula) en contacto con diferentes muestras de materiales. Ésta irá soportada en el interior de tubos de acero por los que circulará un gas de purga (He), necesario para arrastrar el tritio generado en el eutéctico y permeado a través de las paredes de las cápsulas (continuamente, durante irradiación). Estos tubos, a su vez, se instalarán en una carcasa también de acero que proporcionará soporte y refrigeración tanto a los tubos como a sus cápsulas experimentales interiores. El módulo, en su conjunto, permitirá la extracción de las señales experimentales y el gas de purga. Así, a través de la estación de medida de tritio y el sistema de control, se obtendrán los datos experimentales para su análisis y extracción de conclusiones experimentales. Además del análisis de datos experimentales, algunas de estas señales tendrán una función de seguridad y por tanto jugarán un papel primordial en la operación del módulo. Para el correcto funcionamiento de las cápsulas y poder controlar su temperatura, cada cápsula se equipará con un calentador eléctrico y por tanto el módulo requerirá también ser conectado a la alimentación eléctrica. El diseño del módulo y su lógica de operación se describe en detalle en esta tesis. La justificación técnica de cada una de las partes que componen el módulo se ha realizado con soporte de cálculos de transporte de tritio, termohidráulicos y mecánicos. Una de las principales conclusiones de los cálculos de transporte de tritio es que es perfectamente viable medir el tritio permeado en las cápsulas mediante cámaras de ionización y contadores proporcionales comerciales, con sensibilidades en el orden de 10-9 Bq/m3. Los resultados son aplicables a todos los experimentos, incluso si son cápsulas a bajas temperaturas o si llevan recubrimientos antipermeación. Desde un punto de vista de seguridad, el conocimiento de la cantidad de tritio que está siendo transportada con el gas de purga puede ser usado para detectar de ciertos problemas que puedan estar sucediendo en el módulo como por ejemplo, la rotura de una cápsula. Además, es necesario conocer el balance de tritio de la instalación. Las pérdidas esperadas el refrigerante y la celda caliente de IFMIF se pueden considerar despreciables para condiciones normales de funcionamiento. Los cálculos termohidráulicos se han realizado con el objetivo de optimizar el diseño de las cápsulas experimentales y el LBVM de manera que se pueda cumplir el principal requisito del módulo que es llevar a cabo los experimentos a temperaturas comprendidas entre 300-550ºC. Para ello, se ha dimensionado la refrigeración necesaria del módulo y evaluado la geometría de las cápsulas, tubos experimentales y la zona experimental del contenedor. Como consecuencia de los análisis realizados, se han elegido cápsulas y tubos cilíndricos instalados en compartimentos cilíndricos debido a su buen comportamiento mecánico (las tensiones debidas a la presión de los fluidos se ven reducidas significativamente con una geometría cilíndrica en lugar de prismática) y térmico (uniformidad de temperatura en las paredes de los tubos y cápsulas). Se han obtenido campos de presión, temperatura y velocidad en diferentes zonas críticas del módulo concluyendo que la presente propuesta es factible. Cabe destacar que el uso de códigos fluidodinámicos (e.g. ANSYS-CFX, utilizado en esta tesis) para el diseño de cápsulas experimentales de IFMIF no es directo. La razón de ello es que los modelos de turbulencia tienden a subestimar la temperatura de pared en mini canales de helio sometidos a altos flujos de calor debido al cambio de las propiedades del fluido cerca de la pared. Los diferentes modelos de turbulencia presentes en dicho código han tenido que ser estudiados con detalle y validados con resultados experimentales. El modelo SST (del inglés, “Shear Stress Transport Model”) para turbulencia en transición ha sido identificado como adecuado para simular el comportamiento del helio de refrigeración y la temperatura en las paredes de las cápsulas experimentales. Con la geometría propuesta y los valores principales de refrigeración y purga definidos, se ha analizado el comportamiento mecánico de cada uno de los tubos experimentales que contendrá el módulo. Los resultados de tensiones obtenidos, han sido comparados con los valores máximos recomendados en códigos de diseño estructural como el SDC-IC (del inglés, “Structural Design Criteria for ITER Components”) para así evaluar el grado de protección contra el colapso plástico. La conclusión del estudio muestra que la propuesta es mecánicamente robusta. El LBVM implica el uso de metales líquidos y la generación de tritio además del riesgo asociado a la activación neutrónica. Por ello, se han estudiado los riesgos asociados al uso de metales líquidos y el tritio. Además, se ha incluido una evaluación preliminar de los riesgos radiológicos asociados a la activación de materiales y el calor residual en el módulo después de la irradiación así como un escenario de pérdida de refrigerante. Los riesgos asociados al módulo de naturaleza convencional están asociados al manejo de metales líquidos cuyas reacciones con aire o agua se asocian con emisión de aerosoles y probabilidad de fuego. De entre los riesgos nucleares destacan la generación de gases radiactivos como el tritio u otros radioisótopos volátiles como el Po-210. No se espera que el módulo suponga un impacto medioambiental asociado a posibles escapes. Sin embargo, es necesario un manejo adecuado tanto de las cápsulas experimentales como del módulo contenedor así como de las líneas de purga durante operación. Después de un día de después de la parada, tras un año de irradiación, tendremos una dosis de contacto de 7000 Sv/h en la zona experimental del contenedor, 2300 Sv/h en la cápsula y 25 Sv/h en el LiPb. El uso por lo tanto de manipulación remota está previsto para el manejo del módulo irradiado. Por último, en esta tesis se ha estudiado también las posibilidades existentes para la fabricación del módulo. De entre las técnicas propuestas, destacan la electroerosión, soldaduras por haz de electrones o por soldadura láser. Las bases para el diseño final del LBVM han sido pues establecidas en el marco de este trabajo y han sido incluidas en el diseño intermedio de IFMIF, que será desarrollado en el futuro, como parte del diseño final de la instalación IFMIF. ABSTRACT Nuclear fusion is, today, an alternative energy source to which the international community devotes a great effort. The goal is to generate 10 to 50 times more energy than the input power by means of fusion reactions that occur in deuterium (D) and tritium (T) plasma at two hundred million degrees Celsius. In the future commercial reactors it will be necessary to breed the tritium used as fuel in situ, by the reactor itself. This constitutes a step further from current experimental machines dedicated mainly to the study of the plasma physics. Therefore, tritium, in fusion reactors, will be produced in the so-called breeder blankets whose primary mission is to provide neutron shielding, produce and recover tritium and convert the neutron energy into heat. There are different concepts of breeding blankets that can be separated into two main categories: solids or liquids. The former are based on ceramics containing lithium as Li2O , Li4SiO4 , Li2TiO3 , Li2ZrO3 and Be, used as a neutron multiplier, required to achieve the required amount of tritium. The liquid concepts are based on molten salts or liquid metals as pure Li, LiPb, FLIBE or FLINABE. These blankets use, as neutron multipliers, Be or Pb (in the case of the concepts based on LiPb). Proposed structural materials comprise various options, always with low activation characteristics, as low activation ferritic-martensitic steels, vanadium alloys or even SiCf/SiC. Each concept of breeding blanket has specific challenges that will be studied in the experimental reactor ITER (International Thermonuclear Experimental Reactor). However, ITER cannot answer questions associated to material damage and the effect of neutron radiation in the different breeding blankets functions and performance. As a reference, the first wall of a fusion reactor of 4000 MW will receive about 30 dpa / year (values for Fe-56) , while values expected in ITER would be <10 dpa in its entire lifetime. Consequently, the irradiation effects on candidate materials for fusion reactors will be studied in IFMIF (International Fusion Material Irradiation Facility). This thesis fits in the framework of the bilateral agreement among Europe and Japan which is called “Broader Approach Agreement “(BA) (2007-2017) where Spain plays a key role. These projects, complementary to ITER, are mainly IFMIF and the fusion facility JT-60SA. The purpose of this thesis is the design of an irradiation module to test candidate materials for breeding blankets in IFMIF, the so-called Liquid Breeder Validation Module (LBVM). This proposal is born from the fact that this option was not considered in the conceptual design of the facility. As a first step, in order to study the feasibility of this proposal, neutronic calculations have been performed to estimate irradiation parameters in different materials foreseen for liquid breeding blankets. Various functional materials were considered: Fe (base of structural materials), SiC (candidate material for flow channel inserts, SiO2 (candidate for antipermeation coatings), CaO (candidate for insulating coatings), Al2O3 (candidate for antipermeation and insulating coatings) and AlN (candidate for insulation coating material). For each material, the most significant irradiation parameters have been calculated (dpa, H/dpa and He/dpa) in different positions of IFMIF. These values were compared to those expected in the first wall and breeding zone of a fusion reactor. For this exercise, a HCLL (Helium Cooled Lithium Lead) type was selected as it is one of the most promising options. In addition, estimated values were also compared with those obtained in a fast fission reactor since most of existing irradiations have been made in these installations. The main conclusion of this study is that the medium flux area of IFMIF offers a good irradiation environment to irradiate functional materials for liquid breeding blankets. The obtained ratios of H/dpa and He/dpa are very similar to those expected in the most irradiated areas of a fusion reactor. Moreover, with the aim of bringing the values further close, the use of a W moderator is proposed to be used only in some experimental campaigns (as obviously, the total amount of dpa decreases). The values of ratios obtained for a fission reactor, much lower than in a fusion reactor, reinforce the need of LBVM for IFMIF. Having demonstrated the suitability of IFMIF to irradiate functional materials for liquid breeding blankets, and an analysis of the main problems associated to each type of liquid breeding blanket, also presented in this thesis, three different experiments are proposed as basis for the design of the LBVM. These experiments are dedicated to the needs of a blanket HCLL type although the applicability of the module for other blankets is also discussed. Therefore, the experimental capability of the module is focused on the study of the behavior of the eutectic alloy LiPb, tritium permeation, corrosion and material compatibility. For each of the experiments proposed an experimental scheme is given explaining the different module conditions and defining the required instrumentation to control and monitor the experimental capsules. In order to carry out the proposed experiments, the LBVM is proposed, located in the medium flux area of the IFMIF hot cell, with capability of up to 16 experimental capsules. Each capsule (24-22 mm of diameter, 80 mm high) will contain the eutectic allow LiPb (up to 50 mm of capsule high) in contact with different material specimens. They will be supported inside rigs or steel pipes. Helium will be used as purge gas, to sweep the tritium generated in the eutectic and permeated through the capsule walls (continuously, during irradiation). These tubes, will be installed in a steel container providing support and cooling for the tubes and hence the inner experimental capsules. The experimental data will consist of on line monitoring signals and the analysis of purge gas by the tritium measurement station. In addition to the experimental signals, the module will produce signals having a safety function and therefore playing a major role in the operation of the module. For an adequate operation of the capsules and to control its temperature, each capsule will be equipped with an electrical heater so the module will to be connected to an electrical power supply. The technical justification behind the dimensioning of each of these parts forming the module is presented supported by tritium transport calculations, thermalhydraulic and structural analysis. One of the main conclusions of the tritium transport calculations is that the measure of the permeated tritium is perfectly achievable by commercial ionization chambers and proportional counters with sensitivity of 10-9 Bq/m3. The results are applicable to all experiments, even to low temperature capsules or to the ones using antipermeation coatings. From a safety point of view, the knowledge of the amount of tritium being swept by the purge gas is a clear indicator of certain problems that may be occurring in the module such a capsule rupture. In addition, the tritium balance in the installation should be known. Losses of purge gas permeated into the refrigerant and the hot cell itself through the container have been assessed concluding that they are negligible for normal operation. Thermal hydraulic calculations were performed in order to optimize the design of experimental capsules and LBVM to fulfill one of the main requirements of the module: to perform experiments at uniform temperatures between 300-550ºC. The necessary cooling of the module and the geometry of the capsules, rigs and testing area of the container were dimensioned. As a result of the analyses, cylindrical capsules and rigs in cylindrical compartments were selected because of their good mechanical behavior (stresses due to fluid pressure are reduced significantly with a cylindrical shape rather than prismatic) and thermal (temperature uniformity in the walls of the tubes and capsules). Fields of pressure, temperature and velocity in different critical areas of the module were obtained concluding that the proposal is feasible. It is important to mention that the use of fluid dynamic codes as ANSYS-CFX (used in this thesis) for designing experimental capsules for IFMIF is not direct. The reason for this is that, under strongly heated helium mini channels, turbulence models tend to underestimate the wall temperature because of the change of helium properties near the wall. Therefore, the different code turbulence models had to be studied in detail and validated against experimental results. ANSYS-CFX SST (Shear Stress Transport Model) for transitional turbulence model has been identified among many others as the suitable one for modeling the cooling helium and the temperature on the walls of experimental capsules. Once the geometry and the main purge and cooling parameters have been defined, the mechanical behavior of each experimental tube or rig including capsules is analyzed. Resulting stresses are compared with the maximum values recommended by applicable structural design codes such as the SDC- IC (Structural Design Criteria for ITER Components) in order to assess the degree of protection against plastic collapse. The conclusion shows that the proposal is mechanically robust. The LBVM involves the use of liquid metals, tritium and the risk associated with neutron activation. The risks related with the handling of liquid metals and tritium are studied in this thesis. In addition, the radiological risks associated with the activation of materials in the module and the residual heat after irradiation are evaluated, including a scenario of loss of coolant. Among the identified conventional risks associated with the module highlights the handling of liquid metals which reactions with water or air are accompanied by the emission of aerosols and fire probability. Regarding the nuclear risks, the generation of radioactive gases such as tritium or volatile radioisotopes such as Po-210 is the main hazard to be considered. An environmental impact associated to possible releases is not expected. Nevertheless, an appropriate handling of capsules, experimental tubes, and container including purge lines is required. After one day after shutdown and one year of irradiation, the experimental area of the module will present a contact dose rate of about 7000 Sv/h, 2300 Sv/h in the experimental capsules and 25 Sv/h in the LiPb. Therefore, the use of remote handling is envisaged for the irradiated module. Finally, the different possibilities for the module manufacturing have been studied. Among the proposed techniques highlights the electro discharge machining, brazing, electron beam welding or laser welding. The bases for the final design of the LBVM have been included in the framework of the this work and included in the intermediate design report of IFMIF which will be developed in future, as part of the IFMIF facility final design.
Resumo:
Proof-Carrying Code (PCC) is a general approach to mobile code safety in which programs are augmented with a certificate (or proof). The intended benefit is that the program consumer can locally validate the certificate w.r.t. the "untrustcd" program by means of a certificate checker a process which should be much simpler, efficient, and automatic than generating the original proof. The practical uptake of PCC greatly depends on the existence of a variety of enabling technologies which allow both proving programs correct and replacing a costly verification process by an efficient checking proceduri on th( consumer side. In this work we propose Abstraction- Carrying Code (ACC), a novel approach which uses abstract interpretation as enabling technology. We argue that the large body of applications of abstract interpretation to program verification is amenable to the overall PCC scheme. In particular, we rely on an expressive class of safely policies which can be defined over different abstract domains. We use an abstraction (or abstract model) of the program computed by standard static analyzers as a certificate. The validity of the abstraction on ihe consumer side is checked in a single pass by a very efficient and specialized abstract-interpreter. We believe that ACC brings the expressiveness, flexibility and automation which is inherent in abstract interpretation techniques to the area of mobile code safety.
Resumo:
There exists an interest in performing pin-by-pin calculations coupled with thermal hydraulics so as to improve the accuracy of nuclear reactor analysis. In the framework of the EU NURISP project, INRNE and UPM have generated an experimental version of a few group diffusion cross sections library with discontinuity factors intended for VVER analysis at the pin level with the COBAYA3 code. The transport code APOLLO2 was used to perform the branching calculations. As a first proof of principle the library was created for fresh fuel and covers almost the full parameter space of steady state and transient conditions. The main objective is to test the calculation schemes and post-processing procedures, including multi-pin branching calculations. Two library options are being studied: one based on linear table interpolation and another one using a functional fitting of the cross sections. The libraries generated with APOLLO2 have been tested with the pin-by-pin diffusion model in COBAYA3 including discontinuity factors; first comparing 2D results against the APOLLO2 reference solutions and afterwards using the libraries to compute a 3D assembly problem coupled with a simplified thermal-hydraulic model.
Resumo:
We propose an analysis for detecting procedures and goals that are deterministic (i.e., that produce at most one solution at most once),or predicates whose clause tests are mutually exclusive (which implies that at most one of their clauses will succeed) even if they are not deterministic. The analysis takes advantage of the pruning operator in order to improve the detection of mutual exclusion and determinacy. It also supports arithmetic equations and disequations, as well as equations and disequations on terms,for which we give a complete satisfiability testing algorithm, w.r.t. available type information. Information about determinacy can be used for program debugging and optimization, resource consumption and granularity control, abstraction carrying code, etc. We have implemented the analysis and integrated it in the CiaoPP system, which also infers automatically the mode and type information that our analysis takes as input. Experiments performed on this implementation show that the analysis is fairly accurate and efficient.
Resumo:
El objetivo de este proyecto es diseñar un sistema capaz de controlar la velocidad de rotación de un motor DC en función del valor de temperatura obtenido de un sensor. Para ello se generará con un microcontrolador una señal PWM, cuyo ciclo de trabajo estará en función de la temperatura medida. En lo que respecta a la fase de diseño, hay dos partes claramente diferenciadas, relativas al hardware y al software. En cuanto al diseño del hardware puede hacerse a su vez una división en dos partes. En primer lugar, hubo que diseñar la circuitería necesaria para adaptar los niveles de tensión entregados por el sensor de temperatura a los niveles requeridos por ADC, requerido para digitalizar la información para su posterior procesamiento por parte del microcontrolador. Por tanto hubo que diseñar capaz de corregir el offset y la pendiente de la función tensión-temperatura del sensor, a fin de adaptarlo al rango de tensión requerido por el ADC. Por otro lado, hubo que diseñar el circuito encargado de controlar la velocidad de rotación del motor. Este circuito estará basado en un transistor MOSFET en conmutación, controlado mediante una señal PWM como se mencionó anteriormente. De esta manera, al variar el ciclo de trabajo de la señal PWM, variará de manera proporcional la tensión que cae en el motor, y por tanto su velocidad de rotación. En cuanto al diseño del software, se programó el microcontrolador para que generase una señal PWM en uno de sus pines en función del valor entregado por el ADC, a cuya entrada está conectada la tensión obtenida del circuito creado para adaptar la tensión generada por el sensor. Así mismo, se utiliza el microcontrolador para representar el valor de temperatura obtenido en una pantalla LCD. Para este proyecto se eligió una placa de desarrollo mbed, que incluye el microcontrolador integrado, debido a que facilita la tarea del prototipado. Posteriormente se procedió a la integración de ambas partes, y testeado del sistema para comprobar su correcto funcionamiento. Puesto que el resultado depende de la temperatura medida, fue necesario simular variaciones en ésta, para así comprobar los resultados obtenidos a distintas temperaturas. Para este propósito se empleó una bomba de aire caliente. Una vez comprobado el funcionamiento, como último paso se diseñó la placa de circuito impreso. Como conclusión, se consiguió desarrollar un sistema con un nivel de exactitud y precisión aceptable, en base a las limitaciones del sistema. SUMMARY: It is obvious that day by day people’s daily life depends more on technology and science. Tasks tend to be done automatically, making them simpler and as a result, user life is more comfortable. Every single task that can be controlled has an electronic system behind. In this project, a control system based on a microcontroller was designed for a fan, allowing it to go faster when temperature rises or slowing down as the environment gets colder. For this purpose, a microcontroller was programmed to generate a signal, to control the rotation speed of the fan depending on the data acquired from a temperature sensor. After testing the whole design developed in the laboratory, the next step taken was to build a prototype, which allows future improvements in the system that are discussed in the corresponding section of the thesis.
Resumo:
Abstraction-Carrying Code (ACC) has recently been proposed as a framework for mobile code safety in which the code supplier provides a program together with an abstraction whose validity entails compliance with a predefined safety policy. The abstraction plays thus the role of safety certifícate and its generation is carried out automatically by a fixed-point analyzer. The advantage of providing a (fixedpoint) abstraction to the code consumer is that its validity is checked in a single pass of an abstract interpretation-based checker. A main challenge is to reduce the size of certificates as much as possible while at the same time not increasing checking time. We introduce the notion of reduced certifícate which characterizes the subset of the abstraction which a checker needs in order to validate (and re-construct) the full certifícate in a single pass. Based on this notion, we instrument a generic analysis algorithm with the necessary extensions in order to identify the information relevant to the checker. We also provide a correct checking algorithm together with sufficient conditions for ensuring its completeness. The experimental results within the CiaoPP system show that our proposal is able to greatly reduce the size of certificates in practice.
Resumo:
Proof-Carrying Code (PCC) is a general approach to mobile code safety in which programs are augmented with a certifícate (or proof). The practical uptake of PCC greatly depends on the existence of a variety of enabling technologies which allow both to prove programs correct and to replace a costly verification process by an efñcient checking procedure on the consumer side. In this work we propose Abstraction-Carrying Code (ACC), a novel approach which uses abstract interpretation as enabling technology. We argüe that the large body of applications of abstract interpretation to program verification is amenable to the overall PCC scheme. In particular, we rely on an expressive class of safety policies which can be defined over different abstract domains. We use an abstraction (or abstract model) of the program computed by standard static analyzers as a certifícate. The validity of the abstraction on the consumer side is checked in a single-pass by a very efficient and specialized abstract-interpreter. We believe that ACC brings the expressiveness, flexibility and automation which is inherent in abstract interpretation techniques to the área of mobile code safety. We have implemented and benchmarked ACC within the Ciao system preprocessor. The experimental results show that the checking phase is indeed faster than the proof generation phase, and that the sizes of certificates are reasonable.
Resumo:
Abstraction-Carrying Code (ACC) is a framework for mobile code safety in which the code supplier provides a program together with an abstraction (or abstract model of the program) whose validity entails compliance with a predefined safety policy. The abstraction plays thus the role of safety certificate and its generation is carried out automatically by a fixed-point analyzer. The advantage of providing a (fixed-point) abstraction to the code consumer is that its validity is checked in a single pass (i.e., one iteration) of an abstract interpretation-based checker. A main challenge to make ACC useful in practice is to reduce the size of certificates as much as possible, while at the same time not increasing checking time. Intuitively, we only include in the certificate the information which the checker is unable to reproduce without iterating. We introduce the notion of reduced certifícate which characterizes the subset of the abstraction which a checker needs in order to validate (and re-construct) the full certificate in a single pass. Based on this notion, we show how to instrument a generic analysis algorithm with the necessary extensions in order to identify the information relevant to the checker.