45 resultados para Programación de ordenadores
Resumo:
En la búsqueda de dispositivos cada vez más eficientes, de larga duración y bajo coste de mantenimiento en el mundo de la iluminación, aparecen los LEDs. Estos pequeños dispositivos van poco a poco sustituyendo a las bombillas tradicionales de incandescencia, tomando un papel cada vez más importante entre las fuentes de iluminación. Las primeras funciones prácticas que tuvieron estos LEDs fueron como indicadores, y sus primeros usos fueron en pantallas de calculadoras, electrodomésticos, etcétera, y más adelante, con el desarrollo de nuevos materiales, se empezaron a utilizar como dispositivos de iluminación. Ha sido en estos últimos años cuando se ha producido un salto cuantitativo gracias a la aparición de los POWER LED (LEDs de potencia) o de alto brillo, que son los que han permitido ampliar el uso de estos dispositivos como fuentes de iluminación en, por ejemplo, hogares, alumbrado público, e incluso llegando a sustituir los faros halógenos de vehículos por iluminación LED en algunos modelos. Es por ello que mientras su potencia lumínica va aumentado, su rango de utilización también lo hace. Para caracterizar estas fuentes lumínicas y otras a las que se les pueden dar diferentes usos, se desarrolla este proyecto mediante el análisis de su espectro. Para ello, además, se hará un análisis del resto de instrumentación necesaria que forma parte del proyecto. Este análisis abarca el estudio del propio espectrómetro tanto a nivel de hardware como de software, que modificaremos según los intereses del proyecto. También se estudiará la fibra óptica y el driver para controlar los dispositivos LEDs de potencia, así como los propios LEDs. Para ello se medirán las características de estos LEDs y se compararán con las facilitadas por el fabricante. ABSTRACT. Searching for more efficient, long lasting an low-maintenance devices in lighting world, LEDs appear. These small devices are gradually replacing traditional incandescent bulbs. LEDs are taking an increasingly important role between the light sources. At the begining they were only used as indicators and their first use were in screens calculators, appliances, etc., and later, with the development of new materials, were progressively used as lighting devices. Nowadays a great development has happened in LED lighting with the apparition of the POWER LED or high bright. Power LEDs are allowed to extend the use of these devices as lighting sources for example for homes, street lighting, and even coming to replace halogen headlights LED lighting in vehicles of some models. That's the reason the more their lighting power increases the more their use increases too. The aim of this project is to characterize these light sources and others that can be given different uses by analyzing its spectrum. Moreover, necessary instruments will also be analysed. This study involves both hardware and software spectrometer analysis itself by modifying its software according to the interests of the project. Furthermore, optical fiber and the driver to control LED power devices will be studied by measuring LEDs characteristics and comparing with those provided by the manufacturer.
Resumo:
Este libro trata exactamente de lo que dice su título. Como primera impresión, a algunas personas puede parecerles innecesario publicar un texto sobre fundamentos en una época en que la informática ha llegado en su difusión casi a formar parte material del mobiliario hogareño. Además de este efecto distributivo sobre la sociedad, los espectaculares progresos tecnológicos han producido un crecimiento desbordante de la especialización. Los sistemas operativos, las bases de datos, los lenguajes concurrentes, la programación lógica, la inteligencia artificial, la arquitectura de ordenadores, las redes, las herramientas de ayuda para ingeniería de software y tantas otras más específicas e instrumentales son áreas de trabajo o técnicas que por sí solas requieren esfuerzos considerables por parte de quienes pretenden estudiar y seguir su evolución.
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:
Presenta una panorámica de las actuales estructuras, de ordenador, de las principales corrientes tecnológicas ya concretadas a nivel de producto tangible,de algunos aspectos y problemas de software, y de presente discusión acerca de las informáticas concentrada o repartida. Se supone que los asistentes son de muy dispar función profesional, pero todos saben ya qué es y cómo funciona un ordenador.
Resumo:
La finalidad última do codificación y decodificación es conseguir que el mensaje reconstituido sea idéntico al original. Sin la teoría de códigos los mensajes binarios se caracterizan por vectores o también por polinomios con coeficientes pertenecientes al cuerpo dé Galois GF [0,l]. Sobre los conceptos de código, código lineal, código cíclico,generación polinómica de códigos, distancia, síndrome, relaciones con los elementos de un cuerpo finito, detección y corrección, etc., el mejor autor de referencia sigue siendo Peterson
Resumo:
En este artículo presentamos las posibilidades que, desde un punto de vista didáctico, ofrece la programación en AutoLISP en la enseñanza de la geometría, en particular en el trazado y aplicación de curvas trocoidales. La idea original consistía en realizar un programa que crease un nuevo comando de AutoCAD capaz de trazar cualquier curva trocoidal –tanto particulares (evolventes y cicloides) como no particulares (epitrocoides, hipotrocoides o peritrocoides)–, con independencia de la situación del punto generador (alargadas, acortadas o normales). La elaboración del programa es relativamente simple. Para obtener todos los puntos de la curva es necesario aplicar siempre las mismas propiedades, lo que hace especialmente aconsejable la automatización del proceso. El programa realizado permite seleccionar sobre la pantalla generatriz y directriz, así como el punto que genera la curva. Se nos ofrece, asimismo, establecer el sentido de giro de la ruleta, la precisión de puntos hallados en cada ciclo (tantos como deseemos o como nuestro ordenador sea capaz de soportar), el número de vueltas y, por último, la posibilidad de apreciar, o no, la generación de la trocoide. Esta última opción permite observar, en la pantalla del ordenador, el giro de la generatriz sobre la directriz y la generación progresiva de la curva. Esta pequeña animación –contenida en un comando de AutoCAD– ha convertido un programa originalmente concebido para el trazado de curvas trocoidales, en una herramienta didáctica.
Resumo:
Esta exposición pretende dar una panorámica de la forma como se utilizan los ordenadores en la exploración de fenómenos físicos lejanos» Se realizan algunas precisiones para definir el alcance de la exposición. Así, por ejemplo, aunque en el campo de la exploración de fenómenos físicos lejanos se emplean muy diversos aparatos de cálculo y tratamiento de datos, no todos ellos son ordenadores. Solamente pueden denominarse ordenadores aquellos instrumentos que procesan información digital y que constan de una memoria programable, de un procesador que interpreta y ejecuta instrucciones de programa y de unidades de entrada-salida, aunque estas últimas sean muy elementales.
Resumo:
En este trabajo se describe el uso de un sistema de evaluación automática como herramienta de apoyo para el aprendizaje y seguimiento continuado de los alumnos de la asignatura de Fundamentos de Programación del primer curso de las titulaciones de los grados de Ingeniería en Tecnologías Industriales y de Ingeniería Química impartidos en la Escuela Técnica Superior de Ingenieros Industriales de la Universidad Politécnica de Madrid (ETSII-UPM) desde el curso 2010-11. El sistema de evaluación se implementa mediante uno de los módulos de la plataforma AulaWeb desarrollada en la UPM. Se analizan además los resultados obtenidos considerando que las calificaciones obtenidas en los ejercicios programados pueden tenerse en cuenta en la calificación final de la asignatura como parte de la evaluación continuada durante el periodo académico de acuerdo con la metodología propuesta en el Proceso de Bolonia para los estudios universitarios.
Resumo:
Los conjuntos bacterianos son sistemas dinámicos difíciles de modelar debido a que las bacterias colaboran e intercambian información entre sí. Estos microorganismos procariotas pueden tomar decisiones por mayoría e intercambiar información genética importante que, por ejemplo, las haga resistentes a un antibiótico. El proceso de conjugación consiste en el intercambio de un plásmido de una bacteria con otra, permitiendo así que se transfieran propiedades. Estudios recientes han demostrado que estos plásmidos pueden ser reprogramados artificialmente para que la bacteria que lo contenga realice una función específica [1]. Entre la multitud de aplicaciones que supone esta idea, el proyecto europeo PLASWIRES está intentando demostrar que es posible usar organismos vivos como computadores distribuidos en paralelo y plásmidos como conexión entre ellos mediante conjugación. Por tanto, mediante una correcta programación de un plásmido, se puede conseguir, por ejemplo, hacer que una colonia de bacterias haga la función de un antibiótico o detecte otros plásmidos peligrosos en bacterias virulentas. El proceso experimental para demostrar esta idea puede llegar a ser algo lento y tedioso, por lo que es necesario el uso de simuladores que predigan su comportamiento. Debido a que el proyecto PLASWIRES se basa en la conjugación bacteriana, surge la necesidad de un simulador que reproduzca esta operación. El presente trabajo surge debido a la deficiencia del simulador GRO para reproducir la conjugación. En este documento se detallan las modificaciones necesarias para que GRO pueda representar este proceso, así como analizar los datos obtenidos e intentar ajustar el modelo a los datos obtenidos por el Instituto de Biomedicina y Biotecnología de Cantabria (IBBTEC). ---ABSTRACT---Bacterial colonies are dynamical systems difficult to model because bacteria collaborate and exchange information with each other. These prokaryotic organisms can make decisions by majority and exchange important genetic information, for example, make them resistant to an antibiotic. The conjugation process is the exchange of a plasmid from one bacterium to another, allowing both to have the same properties. Recent studies have shown that these plasmids can be artificially reprogrammed to make the bacteria that contain it to perform a specific function [1]. Among the multitude of applications involved in this idea, the European project PLASWIRES is attempting to prove that it is possible to use living organisms as parallel and distributed computers with plasmids acting as connectors between them through conjugation. Thus, by properly programming a plasmid, you can get a colony of bacteria that work as an antibiotic or detect hazardous plasmids in virulent bacteria. The experimental process to prove this idea can be slow and tedious, so the use of simulators to predict their behavior is required. Since PLASWIRES project is based on bacterial conjugation, a simulator that can reproduce this operation is required. This work arises due to the absence of the conjugation process in the simulator GRO. This document details the changes made to GRO to represent this process, analyze the data and try to adjust the model to the data obtained by the Institute of Biomedicine and Biotechnology of Cantabria ( IBBTEC ). This project has two main objectives, the first is to add the functionality of intercellular communication by conjugation to the simulator GRO, and the second is to use the experimental data obtained by the IBBTEC. To do this, the following points should be followed: • Study of conjugation biology as a mechanism of intercellular communication. • Design and implementation of the algorithm that simulates conjugation. • Experimental validation and model adjust to the experimental data on rates of conjugation and bacterial growth.
Resumo:
Los lenguajes de programación son el idioma que los programadores usamos para comunicar a los computadores qué queremos que hagan. Desde el lenguaje ensamblador, que traduce una a una las instrucciones que interpreta un computador hasta lenguajes de alto nivel, se ha buscado desarrollar lenguajes más cercanos a la forma de pensar y expresarse de los humanos. Los lenguajes de programación lógicos como Prolog utilizan a su vez el lenguaje de la lógica de 1er orden de modo que el programador puede expresar las premisas del problema que se quiere resolver sin preocuparse del cómo se va a resolver dicho problema. La resolución del problema se equipara a encontrar una deducción del objetivo a alcanzar a partir de las premisas y equivale a lo que entendemos por la ejecución de un programa. Ciao es una implementación de Prolog (http://www.ciao-lang.org) y utiliza el método de resolución SLD, que realiza el recorrido de los árboles de decisión en profundidad(depth-first) lo que puede derivar en la ejecución de una rama de busqueda infinita (en un bucle infinito) sin llegar a dar respuestas. Ciao, al ser un sistema modular, permite la utilización de extensiones para implementar estrategias de resolución alternativas como la tabulación (OLDT). La tabulación es un método alternativo que se basa en memorizar las llamadas realizadas y sus respuestas para no repetir llamadas y poder usar las respuestas sin recomputar las llamadas. Algunos programas que con SLD entran en un bucle infinito, gracias a la tabulación dán todas las respuestas y termina. El modulo tabling es una implementación de tabulación mediante el algoritmo CHAT. Esta implementación es una versión beta que no tiene implementado un manejador de memoria. Entendemos que la gestión de memoria en el módulo de tabling tiene gran importancia, dado que la resolución con tabulación permite reducir el tiempo de computación (al no repetir llamadas), aumentando los requerimientos de memoria (para guardar las llamadas y las respuestas). Por lo tanto, el objetivo de este trabajo es implementar un mecanismo de gestión de la memoria en Ciao con el módulo tabling cargado. Para ello se ha realizado la implementación de: Un mecanismo de captura de errores que: detecta cuando el computador se queda sin memoria y activa la reinicialización del sitema. Un procedimiento que ajusta los punteros del modulo de tabling que apuntan a la WAM tras un proceso de realojo de algunas de las áreas de memoria de la WAM. Un gestor de memoria del modulo de tabling que detecta c realizar una ampliación de las áreas de memoria del modulo de tabling, realiza la solicitud de más memoria y realiza el ajuste de los punteros. Para ayudar al lector no familiarizado con este tema, describimos los datos que Ciao y el módulo de tabling alojan en las áreas de memoria dinámicas que queremos gestionar. Los casos de pruebas desarrollados para evaluar la implementación del gestor de memoria, ponen de manifiesto que: Disponer de un gestor de memoria dinámica permite la ejecución de programas en un mayor número de casos. La política de gestión de memoria incide en la velocidad de ejecución de los programas. ---ABSTRACT---Programming languages are the language that programmers use in order to communicate to computers what we want them to do. Starting from the assembly language, which translates one by one the instructions to the computer, and arriving to highly complex languages, programmers have tried to develop programming languages that resemble more closely the way of thinking and communicating of human beings. Logical programming languages, such as Prolog, use the language of logic of the first order so that programmers can express the premise of the problem that they want to solve without having to solve the problem itself. The solution to the problem is equal to finding a deduction of the objective to reach starting from the premises and corresponds to what is usually meant as the execution of a program. Ciao is an implementation of Prolog (http://www.ciao-lang.org) and uses the method of resolution SLD that carries out the path of the decision trees in depth (depth-frist). This can cause the execution of an infinite searching branch (an infinite loop) without getting to an answer. Since Ciao is a modular system, it allows the use of extensions to implement alternative resolution strategies, such as tabulation (OLDT). Tabulation is an alternative method that is based on the memorization of executions and their answers, in order to avoid the repetition of executions and to be able to use the answers without reexecutions. Some programs that get into an infinite loop with SLD are able to give all the answers and to finish thanks to tabulation. The tabling package is an implementation of tabulation through the algorithm CHAT. This implementation is a beta version which does not present a memory handler. The management of memory in the tabling package is highly important, since the solution with tabulation allows to reduce the system time (because it does not repeat executions) and increases the memory requirements (in order to save executions and answers). Therefore, the objective of this work is to implement a memory management mechanism in Ciao with the tabling package loaded. To achieve this goal, the following implementation were made: An error detection system that reveals when the computer is left without memory and activate the reinizialitation of the system. A procedure that adjusts the pointers of the tabling package which points to the WAM after a process of realloc of some of the WAM memory stacks. A memory manager of the tabling package that detects when it is necessary to expand the memory stacks of the tabling package, requests more memory, and adjusts the pointers. In order to help the readers who are not familiar with this topic, we described the data which Ciao and the tabling package host in the dynamic memory stacks that we want to manage. The test cases developed to evaluate the implementation of the memory manager show that: A manager for the dynamic memory allows the execution of programs in a larger number of cases. Memory management policy influences the program execution speed.
Resumo:
Programación de un software para el prediseño del sistema de potencia de un satélite de órbita baja. satellite power simulator
Resumo:
Estas notas que se publican a continuación corresponden a un curso de postgrado impartido durante el primer semestre del año 1983. El interés mostrado por los asistentes a dicho curso nos ha animado a escribir un resumen de las clases. Este libro supone un conocimiento te6rico de las ideas básicas del método de los elementos finitos. No obstante en una primera lección se resumen y ordenan aquellos aspectos mas importantes, que serán utilizados en lecciones sucesivas. En estas se desarrolla un programa de computador muy sencillo -sin complicaciones informáticas que obscurezcan la simplicidad del método- y se analiza de un modo detallado -en forma de organigramas y listados comentados- las distintas rutinas en lenguaje FORTRAN de este programa. Asimismo, y respetando el carácter elemental de la exposición se abren algunas posibilidades de ampliación y nuevos desarrollos del método. Algunos ejercicios y ejemplos al final de cada capítulo se espera permitan clarificar los puntos mas conflictivos del método. Finalmente se reúne en un apéndice, los distintos programas que se han mostrado en las sucesivas lecciones y que con objeto de que puedan ser procesados en microcomputadores se han traducido al lenguaje BASIC. Creemos y la experiencia del curso así nos la ha confirmado, que el método de elementos finitos se debe enseñar y aprender mediante la praxis y presentar los sucesivos desarrollos del método de un modo motivado como solución a problemas numéricos e informáticos que aparecen en su desarrollo. Si las lecciones que aquí se presentan permiten transmitir mejor estas ideas, los autores se sentirán más que recompensados por el trabajo que ha supuesto dar a luz a esta publicación.
Resumo:
El presente documento aborda la problemática surgida en torno al desarrollo de una plataforma para gestionar las guías docentes de la Universidad Politécnica de Madrid, centrándose en el uso de las tecnologías Javascript, así como de lo algoritmos, plugins y bibliotecas auxiliares creadas y utilizadas. Por último, se muestran los resultados obtenidos del análisis y puesta en práctica de lo expuesto en el documento, así como conclusiones y sugerencias de futuras líneas de trabajo para este mismo proyecto. ---ABSTRACT---This document explains the problems found when developing a web service whose purpose is the management of learning guides at \Universidad Politecnica de Madrid". This final thesis focus on the use of Javascript technologies and the plugins, algorithms and auxiliar libraries used and developed. Finally, results of the analysis, development of the ideas exposed in this document, and conclusions and future working lines are presented.
Resumo:
Este trabajo fin de grado, presenta una herramienta para experimentar con técnicas de la Programación Genética Guiada por Gramáticas. La mayor parte de los trabajos realizados hasta el momento en esta área, son demasiado restrictivos, ya que trabajan con gramáticas, y funciones fitness predefinidas dentro de las propias herramientas, por lo que solo son útiles sobre un único problema. Este trabajo se plantea el objetivo de presentar una herramienta mediante la cual todos los parámetros, gramáticas, individuos y funciones fitness, sean parametrizables. Es decir, una herramienta de carácter general, valida para cualquier tipo de problema que sea representable mediante una gramática libre de contexto. Para abordad el objetivo principal propuesto, se plantea un mecanismo para construir el árbol de derivación de los individuos de acuerdo a una gramática libre de contexto, y a partir de ahí, aplicar una serie de operadores genéticos guiados por gramáticas para ofrecer un resultado final, de acuerdo a una función fitness, que el usuario puede seleccionar antes de realizar la ejecución. La herramienta, también propone una medida de similitud entre los individuos pertenecientes a una determinada generación, que permite comparar los individuos desde el punto de vista de la información semántica que contienen. Con el objetivo de validar el trabajo realizado, se ha probado la herramienta con una gramática libre de contexto ya predefinida, y se exponen numerosos tipos de resultados de acuerdo a distintos parámetros de la aplicación, así como su comparación, para poder estudiar la velocidad e convergencia de los mismos. ---ABSTRACT---This final project presents a tool for working with algorithms related to Genetic Grammar Guided Programming. Most of the work done so far in this area is too restrictive, since they only work with predefined grammars, and fitness functions built within the tools themselves, so they are only useful on a single problem. The main objective of this tool is that all parameters, grammars, individuals and fitness functions, are can be easily modified thought the interface. In other words, a general tool valid for any type of problem that can be represented by a context-free grammar. To address the main objective proposed, the tool provides a mechanism to build the derivation tree of individuals according to a context-free grammar, and from there, applying a series of grammar guided genetic operators to deliver a final result, according to a fitness function, which the user can select before execution. The tool also offers a measure of similarity between individuals belonging to a certain generation, allowing comparison of individuals from the point of view of semantic information they contain. In order to validate the work done, the tool has been tested with a context-free grammar previously defined, and numerous types test have been run with different parameters of the application. The results are compared according to their speed convergence
Resumo:
En este proyecto se hace un análisis en profundidad de las técnicas de ataque a las redes de ordenadores conocidas como APTs (Advanced Persistent Threats), viendo cuál es el impacto que pueden llegar a tener en los equipos de una empresa y el posible robo de información y pérdida monetaria que puede llevar asociada. Para hacer esta introspección veremos qué técnicas utilizan los atacantes para introducir el malware en la red y también cómo dicho malware escala privilegios, obtiene información privilegiada y se mantiene oculto. Además, y cómo parte experimental de este proyecto se ha desarrollado una plataforma para la detección de malware de una red en base a las webs, URLs e IPs que visitan los nodos que la componen. Obtendremos esta visión gracias a la extracción de los logs y registros de DNS de consulta de la compañía, sobre los que realizaremos un análisis exhaustivo. Para poder inferir correctamente qué equipos están infectados o no se ha utilizado un algoritmo de desarrollo propio inspirado en la técnica Belief Propagation (“Propagación basada en creencia”) que ya ha sido usada antes por desarrolladores cómo los de los Álamos en Nuevo México (Estados Unidos) para fines similares a los que aquí se muestran. Además, para mejorar la velocidad de inferencia y el rendimiento del sistema se propone un algoritmo adaptado a la plataforma Hadoop de Apache, por lo que se modifica el paradigma de programación habitual y se busca un nuevo paradigma conocido como MapReduce que consiste en la división de la información en conceptos clave-valor. Por una parte, los algoritmos que existen basados en Belief Propagation para el descubrimiento de malware son propietarios y no han sido publicados completamente hasta la fecha, por otra parte, estos algoritmos aún no han sido adaptados a Hadoop ni a ningún modelo de programación distribuida aspecto que se abordará en este proyecto. No es propósito de este proyecto desarrollar una plataforma comercial o funcionalmente completa, sino estudiar el problema de las APTs y una implementación que demuestre que la plataforma mencionada es factible de implementar. Este proyecto abre, a su vez, un horizonte nuevo de investigación en el campo de la adaptación al modelo MapReduce de algoritmos del tipo Belief Propagation basados en la detección del malware mediante registros DNS. ABSTRACT. This project makes an in-depth investigation about problems related to APT in computer networks nowadays, seeing how much damage could they inflict on the hosts of a Company and how much monetary and information loss may they cause. In our investigation we will find what techniques are generally applied by attackers to inject malware into networks and how this malware escalates its privileges, extracts privileged information and stays hidden. As the main part of this Project, this paper shows how to develop and configure a platform that could detect malware from URLs and IPs visited by the hosts of the network. This information can be extracted from the logs and DNS query records of the Company, on which we will make an analysis in depth. A self-developed algorithm inspired on Belief Propagation technique has been used to infer which hosts are infected and which are not. This technique has been used before by developers of Los Alamos Lab (New Mexico, USA) for similar purposes. Moreover, this project proposes an algorithm adapted to Apache Hadoop Platform in order to improve the inference speed and system performance. This platform replaces the traditional coding paradigm by a new paradigm called MapReduce which splits and shares information among hosts and uses key-value tokens. On the one hand, existing algorithms based on Belief Propagation are part of owner software and they have not been published yet because they have been patented due to the huge economic benefits they could give. On the other hand these algorithms have neither been adapted to Hadoop nor to other distributed coding paradigms. This situation turn the challenge into a complicated problem and could lead to a dramatic increase of its installation difficulty on a client corporation. The purpose of this Project is to develop a complete and 100% functional brand platform. Herein, show a short summary of the APT problem will be presented and make an effort will be made to demonstrate the viability of an APT discovering platform. At the same time, this project opens up new horizons of investigation about adapting Belief Propagation algorithms to the MapReduce model and about malware detection with DNS records.