816 resultados para ANTLR, Framework .NET, ingegneria del software, FormulaG, interpreti, linguaggi formali, WPF
Resumo:
Un plan para organizar las enseñanzas de la ingeniería del software en las titulaciones de informática de la URJC. Nowadays both industry and academic environments are showing a lot of interest in the Software Engineering discipline. Therefore, it is a challenge for universities to provide students with appropriate training in this area, preparing them for their future professional practice. There are many difficulties to provide that training. The outstanding ones are: the Software Engineering area is too broad and class hours are scarce; the discipline requires a high level of abstraction; it is difficult to reproduce real world situations in the classroom to provide a practical learning environment; the number of students per professor is very high (at least in Spain); companies develop software with a maturity level rarely over level 2 of the CMM for Software (again, at least in Spain) as opposed to what is taught at the University. Besides, there are different levels and study plans, making more difficult to structure the contents to teach in each term and degree. In this paper we present a plan for teaching Software Engineering trying to overcome some of the difficulties above.
Resumo:
El presente Trabajo de Fin de Grado (TFG) es el resultado de la necesidad de la seguridad en la construcción del software ya que es uno de los mayores problemas con que se enfrenta hoy la industria debido a la baja calidad de la misma tanto en software de Sistema Operativo, como empotrado y de aplicaciones. La creciente dependencia de software para que se hagan trabajos críticos significa que el valor del software ya no reside únicamente en su capacidad para mejorar o mantener la productividad y la eficiencia. En lugar de ello, su valor también se deriva de su capacidad para continuar operando de forma fiable incluso de cara de los eventos que la amenazan. La capacidad de confiar en que el software seguirá siendo fiable en cualquier circunstancia, con un nivel de confianza justificada, es el objetivo de la seguridad del software. Seguridad del software es importante porque muchas funciones críticas son completamente dependientes del software. Esto hace que el software sea un objetivo de valor muy alto para los atacantes, cuyos motivos pueden ser maliciosos, penales, contenciosos, competitivos, o de naturaleza terrorista. Existen fuentes muy importantes de mejores prácticas, métodos y herramientas para mejorar desde los requisitos en sus aspectos no funcionales, ciclo de vida del software seguro, pasando por la dirección de proyectos hasta su desarrollo, pruebas y despliegue que debe ser tenido en cuenta por los desarrolladores. Este trabajo se centra fundamentalmente en elaborar una guía de mejores prácticas con la información existente CERT, CMMI, Mitre, Cigital, HP, y otras fuentes. También se plantea desarrollar un caso práctico sobre una aplicación dinámica o estática con el fin de explotar sus vulnerabilidades.---ABSTRACT---This Final Project Grade (TFG) is the result of the need for security in software construction as it is one of the biggest problems facing the industry today due to the low quality of it both OS software, embedded software and applications software. The increasing reliance on software for critical jobs means that the value of the software no longer resides solely in its capacity to improve or maintain productivity and efficiency. Instead, its value also stems from its ability to continue to operate reliably even when facing events that threaten it. The ability to trust that the software will remain reliable in all circumstances, with justified confidence level is the goal of software security. The security in software is important because many critical functions are completely dependent of the software. This makes the software to be a very high value target for attackers, whose motives may be by a malicious, by crime, for litigating, by competitiveness or by a terrorist nature. There are very important sources of best practices, methods and tools to improve the requirements in their non-functional aspects, the software life cycle with security in mind, from project management to its phases (development, testing and deployment) which should be taken into account by the developers. This paper focuses primarily on developing a best practice guide with existing information from CERT, CMMI, Mitre, Cigital, HP, and other organizations. It also aims to develop a case study on a dynamic or static application in order to exploit their vulnerabilities.
Resumo:
El software ha obtenido en la actualidad una gran importancia en todos los ámbitos de la vida cotidiana. Es indudable que la calidad del software juega un papel fundamental en todo desarrollo informático, aunque en ocasiones no se le presta la suficiente atención, quizás debido a los relativamente escasos trabajos relacionados con este tema desarrollados hasta la fecha. En el presente trabajo, se plantea la necesidad de un modelo de calidad completo. Para cubrir esta necesidad se presenta un nuevo modelo de calidad, obtenido tras un estudio pormenorizado de los modelos de calidad existentes, centrado en el paradigma orientado a objetos. Este modelo de calidad muestra cómo la calidad del software se descompone en una serie de factores y éstos, a su vez, se descomponen en un conjunto de criterios medibles utilizando medidas. El modelo incluye un amplio conjunto de medidas, diseñadas especialmente para su aplicación dentro del paradigma orientado a objetos. Para completar el modelo, se ha diseñado un sencillo método de aplicación de este modelo de calidad para que pueda ser utilizado de una forma simple por los desarrolladores de sistemas informáticos orientados a objetos. El modelo de calidad definido se ha validado realizando un juego de experimentos. Estos experimentos han consistido en la aplicación del modelo sobre una serie de desarrollos orientados a objetos. Los resultados obtenidos han demostrado su utilidad práctica para determinar tanto la calidad global de los sistemas, como para identificar aquellas partes del sistema susceptibles de ser mejoradas. Con este trabajo, se llena un importante hueco existente en esta área, pues, en primer lugar, no existen modelos de calidad completos para la orientación a objetos. En segundo lugar, aunque hay medidas para la orientación a objetos, no se han asociado a los atributos que determinan la calidad del software, por lo que su utilidad, tal cual fueron definidas, resulta bastante cuestionable. Para finalizar, nunca se ha asociado un modelo de calidad con una método de aplicación, por lo que su utilidad quedaba considerablemente mermada, quedando a expensas de la habilidad y experiencia del Ingeniero del Software que lo utilizara.
Resumo:
En la actualidad existe una gran expectación ante la introducción de nuevas herramientas y métodos para el desarrollo de productos software, que permitirán en un futuro próximo un planteamiento de ingeniería del proceso de producción software. Las nuevas metodologías que empiezan a esbozarse suponen un enfoque integral del problema abarcando todas las fases del esquema productivo. Sin embargo el grado de automatización conseguido en el proceso de construcción de sistemas es muy bajo y éste está centrado en las últimas fases del ciclo de vida del software, consiguiéndose así una reducción poco significativa de sus costes y, lo que es aún más importante, sin garantizar la calidad de los productos software obtenidos. Esta tesis define una metodología de desarrollo software estructurada que se puede automatizar, es decir una metodología CASE. La metodología que se presenta se ajusta al modelo de ciclo de desarrollo CASE, que consta de las fases de análisis, diseño y pruebas; siendo su ámbito de aplicación los sistemas de información. Se establecen inicialmente los principios básicos sobre los que la metodología CASE se asienta. Posteriormente, y puesto que la metodología se inicia con la fijación de los objetivos de la empresa que demanda un sistema informático, se emplean técnicas que sirvan de recogida y validación de la información, que proporcionan a la vez un lenguaje de comunicación fácil entre usuarios finales e informáticos. Además, estas mismas técnicas detallarán de una manera completa, consistente y sin ambigüedad todos los requisitos del sistema. Asimismo, se presentan un conjunto de técnicas y algoritmos para conseguir que desde la especificación de requisitos del sistema se logre una automatización tanto del diseño lógico del Modelo de Procesos como del Modelo de Datos, validados ambos conforme a la especificación de requisitos previa. Por último se definen unos procedimientos formales que indican el conjunto de actividades a realizar en el proceso de construcción y cómo llevarlas a cabo, consiguiendo de esta manera una integridad en las distintas etapas del proceso de desarrollo.---ABSTRACT---Nowdays there is a great expectation with regard to the introduction of new tools and methods for the software products development that, in the very near future will allow, an engineering approach in the software development process. New methodologies, just emerging, imply an integral approach to the problem, including all the productive scheme stages. However, the automatization degree obtained in the systems construction process is very low and focused on the last phases of the software lifecycle, which means that the costs reduction obtained is irrelevant and, which is more important, the quality of the software products is not guaranteed. This thesis defines an structured software development methodology that can be automated, that is a CASE methodology. Such a methodology is adapted to the CASE development cycle-model, which consists in analysis, design and testing phases, being the information systems its field of application. Firstly, we present the basic principies on which CASE methodology is based. Secondly, since the methodology starts from fixing the objectives of the company demanding the automatization system, we use some techniques that are useful for gathering and validating the information, being at the same time an easy communication language between end-users and developers. Indeed, these same techniques will detail completely, consistently and non ambiguously all the system requirements. Likewise, a set of techniques and algorithms are shown in order to obtain, from the system requirements specification, an automatization of the Process Model logical design, and of the Data Model logical design. Those two models are validated according to the previous requirement specification. Finally, we define several formal procedures that suggest which set of activities to be accomplished in the construction process, and how to carry them out, getting in this way integrity and completness for the different stages of the development process.
Resumo:
En esta Tesis se plantea una nueva forma de entender la evacuación apoyándonos en tecnologías existentes y accesibles que nos permitirán ver este proceso como un ente dinámico. Se trata de una metodología que implica no solo el uso de herramientas de análisis que permitan la definición de planes de evacuación en tiempo real, sino que también se apunta hacia la creación de una infraestructura física que permita alimentar con información actualizada al sistema de forma que, según la situación y la evolución de la emergencia, sea posible realizar planes alternativos que se adapten a las nuevas circunstancias. En base a esto, el sistema asimilará toda esa información y aportará soluciones que faciliten la toma de decisiones durante toda la evolución del incidente. Las aportaciones originales de esta Tesis son múltiples y muy variadas, pudiéndolas resumir en los siguientes puntos: 1. Estudio completo del estado del arte: a. Detección y análisis de diferentes proyectos a nivel internacional que de forma parcial tratan algunos aspectos desarrollados en la Tesis. b. Completo estudio a nivel mundial del software desarrollado total o parcialmente para la simulación del comportamiento humano y análisis de procesos de evacuación. Se ha generado una base de datos que cataloga de forma exhaustiva estas aplicaciones, permitiendo realizar un completo análisis y posibilitando la evolución futura de los contenidos de la misma. En la tesis se han analizado casi un centenar de desarrollos, pero el objetivo es seguir completando esta base de datos debido a la gran utilidad y a las importantes posibilidades que ofrece. 2. Desarrollo de un importante capítulo que trata sobre la posibilidad de utilizar entornos virtuales como alternativa intermedia al uso de simuladores y simulacros. En esta sección se divide en dos bloques: a. Ensayos en entornos reales y virtuales. b. Ensayos en entornos virtuales (pruebas realizadas con varios entornos virtuales). 3. Desarrollo de e-Flow net design: paquete de herramientas desarrolladas sobre Rhinoceros para el diseño de la red de evacuación basada en los elementos definidos en la tesis: Nodes, paths, Relations y Areas. 4. Desarrollo de e-Flow Simulator: Conjunto de herramientas que transforman Rhinoceros en un simulador 3D de comportamiento humano. Este simulador, de desarrollo propio, incorpora un novedoso algoritmo de comportamiento a nivel de individuo que incluye aspectos que no se han encontrado en otros simuladores. Esta herramienta permite realizar simulaciones programadas de grupos de individuos cuyo comportamiento se basa en el análisis del entorno y en la presencia de referencias dinámicas. Incluye otras importantes novedades como por ejemplo: herramientas para análisis de la señalización, elementos de señalización dinámica, incorporación sencilla de obstáculos, etc. También se ha creado una herramienta que posibilita la implementación del movimiento del propio escenario simulando la oscilación del mismo, con objeto de reflejar la influencia del movimiento del buque en el desplazamiento de los individuos. 5. En una fase avanzada del desarrollo, se incorporó la posibilidad de generar un vídeo de toda la simulación, momento a partir del cual, se han documentado todas las pruebas (y se continúan documentando) en una base de datos que recoge todas las características de las simulaciones, los problemas detectados, etc. Estas pruebas constituyen, en el momento en que se ha cerrado la redacción de la Tesis, un total de 81 GB de datos. Generación y análisis de rutas en base a la red de evacuación creada con e-Flow Net design y las simulaciones realizadas con e-Flow Net simulator. a. Análisis para la optimización de la configuración de la red en base a los nodos por área existentes. b. Definición de procesos previos al cálculo de rutas posibles. c. Cálculo de rutas: i. Análisis de los diferentes algoritmos que existen en la actualidad para la optimización de rutas. ii. Desarrollo de una nueva familia de algoritmos que he denominado “Minimum Decision Algorithm (MDA)”, siendo los algoritmos que componen esta familia: 1. MDA básico. 2. MDA mínimo. 3. MDA de no interferencia espacial. 4. MDA de expansión. 5. MDA de expansión ordenada para un único origen. 6. MDA de expansión ordenada. iii. Todos estos algoritmos se han implementado en la aplicación e-Flow creada en la Tesis para el análisis de rutas y que constituye el núcleo del Sistema de Ayuda al Capitán. d. Determinación de las alternativas para el plan de evacuación. Tras la definición de las rutas posibles, se describen diferentes procesos existentes de análisis por ponderación en base a criterios, para pasar finalmente a definir el método de desarrollo propio propuesto en esta Tesis y cuyo objetivo es responder en base a la población de rutas posibles obtenidas mediante los algoritmos MDA, qué combinación de rutas constituyen el Plan o Planes más adecuados para cada situación. La metodología creada para la selección de combinaciones de rutas que determinan un Plan completo, se basa en cuatro criterios básicos que tras su aplicación ofrecen las mejores alternativas. En esta fase también se incluye un complejo análisis de evolución temporal que incorpora novedosas definiciones y formulaciones. e. Derivado de la definición de la metodología creada en esta Tesis para la realización de los análisis de evolución temporal, se ha podido definir un nuevo teorema matemático que se ha bautizado como “Familia de cuadriláteros de área constante”. 7. Especificación de la infraestructura física del Sistema de Ayuda al Capitán: parte fundamental de sistema es la infraestructura física sobre la que se sustentaría. Esta infraestructura estaría compuesta por sensores, actuadores, aplicaciones para dispositivos móviles, etc. En este capítulo se analizan los diferentes elementos que la constituirían y las tecnologías implicadas. 8. Especificación de la infraestructura de servicios. 9. Creación del Blog Virtual Environments (http://epcinnova-virtualenvironments.blogspot.com.es/) en el que se han publicado todas las pruebas realizadas en el capítulo que analiza los entornos virtuales como alternativa a los simuladores y a los ensayos en laboratorio o los simulacros, incluyendo en muchos casos la posibilidad de que el visitante del blog pueda realizar la simulación en el entorno virtual. Este blog también incluye otras secciones que se han trabajado durante la Tesis: • Recopilación de diferentes entornos virtuales existentes. • Diagrama que recopila información sobre accidentes tanto en el ámbito marítimo como en el terrestre (en desarrollo). • Esquema propuesto para el acopio de información obtenida a partir de un simulacro. 10. Esta Tesis es la base para el proyecto e-Flow (nombre de una de las aplicaciones que desarrolladas en esta obra), un proyecto en el que el autor de esta Tesis ha trabajado como Project Manager. En el proyecto participa un consorcio de empresas y la UPM, y tiene como objetivo trasladar a la realidad gran parte de los planteamientos e ideas presentadas en esta Tesis. Este proyecto incluye el desarrollo de la infraestructura física y de servicios que permitirán, entre otras cosas, implementar en infraestructuras complejas una plataforma que posibilita la evacuación dinámica y un control ubicuo de los sistemas de monitorización y actuación implementados. En estos momentos se está finalizando el proyecto, cuyo objetivo final es la implementación de un piloto en un Hospital. También destacamos los siguientes avances a nivel de difusión científico-tecnológico: • Ponencia en el “52 congreso de la Ingeniería Naval en España” presentando un artículo “e-Flow- Sistema integral inteligente de soporte a la evacuación”. En este artículo se trata tanto el proyecto e-Flow del que soy Project Manager, como esta Tesis Doctoral, al ser temas estrechamente vinculados. En 2014 se publicó en dos números de la Revista Ingeniería Naval el artículo presentado a estas jornadas. • Co-autor en el artículo “E-Flow: A communication system for user notification in dynamic evacuation scenarios” presentado en el 7th International Conference on Ubicuous Computing & Ambient Intelligence (UCAMI) celebrado en Costa Rica. Por último, una de las aportaciones más interesantes, es la definición de un gran número de líneas de investigación futuras en base a todos los avances realizados en esta Tesis. ABSTRACT With this Thesis a new approach for understanding evacuation process is considered, taking advantage of the existing and open technologies that will allow this process to be interpreted as a dynamic entity. The methodology involves not only tools that allows on.-time evacuation plans, but also creates a physical insfrastructure that makes possible to feed the system with information on real time so, considering in each moment the real situation as well as the specific emergency development it will be feasible to generate alternative plans that responds to the current emergency situation. In this respect, the system will store all this information and will feedback with solutions that will help the decision making along the evacuation process. The innovative and singular contributions of this Thesis are numerous and rich, summarised as follows: 1.- Complete state-of-art study: a. Detection and analysis of different projects on an international level that, although partially, deal with some aspects developed in this Thesis. b. Thorough study at a international level of the developed software - total or partially done - for the simulation of the human behaviour and evacuation processes analysis. A database has been generated that classifies in detail these applications allowing to perform a full analysis and leading to future evolution of its contents. Within the Thesis work, almost a hundred of developments have been analysed but the purpose is to keep up updating this database due to the broad applications and possibilities that it involves. 2. Development of an important chapter that studies the possibility of using virtual scenarios as mid-term alternative for the use of simulations. This section is divided in two blocks: a. Trials in virtual and real scenarios b. Trials in virutal scenarios (trials performed with several ones). 3. E-Flow net design development: Set of tools developed under Rhinoceros for the evacuation net design based on the elements defined in the Thesis: Nodes, Paths, Relations, Areas 4. E-Flow simulator development: Set of tools that uses Rhinoceros as a 3D simulator of human behaviour. This simulator, of my own design, includes a new and original algorithm of human behaviour that involves aspects that are not found in other simulators. This tool allows to perform groups programmed simulations which behaviour is based on their enviroment analysis and presence of dynamic references. It includes other important innovations as for example: tools for signals analysis, dynamic signal elements, easy obstacle adding etc... More over, a tool that allows the own scenario movement implementation has been created by simulating the own oscillation movement, with the purpose of playing the vessel movement's influences in the individuals' displacements. 5. In an advanced stage of the development, the possibility of generating a video recording of all the simulation was also integrated, then from that moment all tests have been filed (and keep on doing so) in a database that collects all simulation characteristics, failures detected, etc. These stored tests amounts to a total of 81 GB at the moment of finishing the Thesis work. Generation and analysis of paths regarding the evacuation net created with E-Flow design and the simulations performed with E-Flow net Simulator. a. Analysis for the optimisation of the network configuration based in the existing nodes per area. b. Definition of the processes previous to the calculation of the feasible paths c. Paths calculation: i. Analysis of the different algorithms on existance nowadays for the routes optimisation. ii. Development of a new family of algorithms that I have called “Minimum Decision Algorithm (MDA)”, being composed of: 1. MDA basic 2. MDA minimum 3. MDA of not spacial interference 4. MDA of expansion (es de extenderse) o enlargement ( es de crecimiento) 5. MDA of organised expansion for a single origin (of organised enlargement for a single origin) 6. MDA of organised expansion (of organised enlargement) iii. All these algorithms have been implemented in the E-Flow application created in the Thesis dfor the routes analysis and it is the core of the Captain's support system. d. Determination of the alternatives for the evacuation plan. After defining all possible paths, different processes of analysis existing for weighing-based criteria are described, thus to end defining the own development method proposed in this Thesis and that aims to respond in an agreggation of possible routes basis obtained by means of the MDA algorithms what is the routes' combination more suitable for the Plan or Plans in every situation. The methodology created fot the selection of the combinations of routes that determine a complete Plan is baesd in four basic criteria that after applying, offer the best alternatives. In this stage a complex analysis of the progress along time is also included, that adds original and innovative defintions and formulations. e. Originated from the methodology created in this Thesis for the perfoming of the analysy of the progress along time, a new mathematic theorem has been defined, that has been called as "Family of quadrilateral of constant area". 7. Specification of the physiscal infrastructure of the Captain's help system: essential part is this physical infrastructure that will support it. This system will be made of sensors, actuators, apps for mobile devices etc... Within this chapter the different elements and technologies that make up this infrastructure will be studied. 8. Specification for the services infrastructure. 9. Start up of the Blog. " Virtual Environments (http://epcinnova-virtualenvironments.blogspot.com.es/)" in which all tests performed have been published in terms of analysis of the virtual enviroments as alternative to the simulators as well as to the laboratory experiments or simulations, including in most of the cases the possibility that the visitor can perform the simulation within the virtual enviroment. This blog also includes other sections that have been worked along and within this Thesis: - Collection of different virtual scenarios existent. - Schema that gathers information concerning accidents for maritime and terrestrial areas (under development) - Schema proposed for the collecting of information obtained from a simulation. 10. This Thesis is the basis of the E-Flow project (name of one of the applications developed in this work), a project in which the Thesis' author has worked in as Project Manager. In the project takes part a consortium of firms as well as the UPM and the aim is to bring to real life most part of the approaches and ideas contained in this Thesis. This project includes the development of the physical infrastructure as well as the services that will allow, among others, implement in complex infrastrucutres a platform that will make possible a dynamic evacuation and a continuous control of the monitoring and acting systems implemented. At the moment the project is getting to an end which goal is the implementation of a pilot project in a Hospital. We also would like to highlight the following advances concerning the scientific-technology divulgation: • Talk in the " 52th Congress of the Naval Engineering in Spain" with the article "E-Flow . Intelligent system integrated for supporting evacuation". This paper is about project E-Flow which I am Project Manager of, as well as this Thesis for the Doctorate, being both closely related. Two papers published In 2014 in the Naval Engineering Magazine. • Co-author in the article “E-Flow: A communication system for user notification in dynamic evacuation scenarios” [17] introduced in the 7th International Conference on Ubicuous Computing & Ambient Intelligence (UCAMI) held in Costa Rica. Last, but not least, one of the more interesting contributions is the defintion of several lines of research in the future, based on the advances made in this Thesis.
Resumo:
A gene expression atlas is an essential resource to quantify and understand the multiscale processes of embryogenesis in time and space. The automated reconstruction of a prototypic 4D atlas for vertebrate early embryos, using multicolor fluorescence in situ hybridization with nuclear counterstain, requires dedicated computational strategies. To this goal, we designed an original methodological framework implemented in a software tool called Match-IT. With only minimal human supervision, our system is able to gather gene expression patterns observed in different analyzed embryos with phenotypic variability and map them onto a series of common 3D templates over time, creating a 4D atlas. This framework was used to construct an atlas composed of 6 gene expression templates from a cohort of zebrafish early embryos spanning 6 developmental stages from 4 to 6.3 hpf (hours post fertilization). They included 53 specimens, 181,415 detected cell nuclei and the segmentation of 98 gene expression patterns observed in 3D for 9 different genes. In addition, an interactive visualization software, Atlas-IT, was developed to inspect, supervise and analyze the atlas. Match-IT and Atlas-IT, including user manuals, representative datasets and video tutorials, are publicly and freely available online. We also propose computational methods and tools for the quantitative assessment of the gene expression templates at the cellular scale, with the identification, visualization and analysis of coexpression patterns, synexpression groups and their dynamics through developmental stages.
Resumo:
El presente documento es la memoria del proyecto BADELEWeb, un software desarrollado con el objetivo de mejorar la gestión y el aprovechamiento de la base de datos de contenidos lingüísticos denominada BADELE. Este software ofrece desde el manejo básico de la base de datos a la explotación más detallada mediante la ejecución de consultas sobre funciones lingüísticas. Además, como parte del proyecto se incluye una interfaz que permite el aprovechamiento, por parte de un usuario, de ese recubrimiento. En este documento se presentan los aspectos teóricos necesarios para el desarrollo del proyecto, y la descripción de la funcionalidad que el software debe tener, así como una descripción técnica del desarrollo realizado. Posteriormente se presentan los resultados obtenidos en el proyecto para terminar con una visión de posibles mejoras que se pueden realizar en un futuro. Como anexo se incluye un manual con instrucciones para la instalación del software por parte de un administrador de sistemas para su utilización posterior.
Resumo:
This summary presents a methodology for supporting the development of AOSAs following the MDD paradigm. This new methodology is called PRISMA and allows the code generation from models which specify functional and non-functional requirements.
Resumo:
Este artículo presenta el análisis de los resultados obtenidos al aplicar TSPi en el desarrollo de un proyecto software en una microempresa desde el punto de vista de la calidad y la productividad. La organización en estudio necesitaba mejorar la calidad de sus procesos pero no contaba con los recursos económicos que requieren modelos como CMMI-DEV. Por esta razón, se decidió utilizar un proceso adaptado a la organización basado en TSPi, observándose una reducción en la desviación de las estimaciones, un incremento en la productividad, y una mejora en la calidad.---ABSTRACT---This article shows the benefits of developing a software project using TSPi in a “Very Small Enterprise” based in quality and productivity measures. An adapted process from the current process based on the TSPi was defined and the team was trained in it. The workaround began by gathering historical data from previous projects in order to get a measurement repository, and then the project metrics were collected. Finally, the process, product and quality improvements were verified.
Resumo:
Varios grupos de la Universidad Politécnica de Madrid se encuentran actualmente desarrollando un micro-satélite de experimentación bajo el proyecto UPMSat-2, sucesor de otro exitoso proyecto similar, el UPM-Sat 1. Bajo este marco la autora del presente documento ha llevado a cabo la realización de tres tareas fundamentales para hacer posible la puesta en órbita de dicho satélite. Las tareas principales definidas como alcance de este proyecto pretenden facilitar el uso de la memoria no volátil del computador de a bordo y comprobar el funcionamiento de todos los sistemas del satélite. Por ello se ha realizado el arranque desde la memoria no volátil junto con un manejador para el uso de la misma y un conjunto de pruebas de validación del software e integración del hardware. La satisfacción con los resultados obtenidos ha hecho posible la inclusión del software y pruebas desarrolladas al conjunto de todo el software del proyecto UPMSat-2, contribuyendo así a la capacidad del satélite para ser puesto en órbita.---ABSTRACT---UPMSat-2, the successor of UPM-Sat 1, is a joint project for the development of a micro-satellite for experimentation, which is being carried out by various research groups at Universidad Politécnica de Madrid. The author of this document has developed three main tasks to make possible the correct operation of this satellite during the duration of its mission. The scope of the present work is to enable the use of the on-board computer’s non-volatile memory and the development of a software to test that the satellite’s subsystems are working properly. To this end, the non-volatile memory’s boot sequence has been implemented together with the driver to use such memory, and a series of validation and integration tests for the software and the hardware. The results of the this work have been satisfactory, therefore they have been included in UPMSat-2’s software, contributing this way to the capacity of the satellite to carry out its mission.
Resumo:
La Ingeniería de Pruebas está especializada en la verificación y validación del Software,y formalmente se define como: “Proceso de desarrollo que emplea métodos rigurosos para evaluar la corrección y calidad del producto a lo largo de todo su ciclo de vida” [3]. Este proceso comprende un conjunto de métodos, procedimientos y técnicas formalmente definidas las cuales, usadas de forma sistemática, facilitan la identificación de la mayor cantidad de errores y fallos posibles de un software. Un software que pase un proceso riguroso de pruebas es un producto de calidad que seguramente facilitará la labor del Ingeniero de Software en la corrección de futuras incidencias, algunas de ellas generadas tras la implantación en el entorno real. Este proceso constituye un área de la Ingeniería del Software y una especialidad por tanto, de la misma. De forma simple, la consecución de una correcta Verificación y Validación del Software requiere de algunas actividades imprescindibles como: - Realizar un plan de pruebas del proyecto. - Actualizar dicho plan y corregirlo en caso necesario. - Revisar los documentos de análisis de requisitos. - Ejecutar las pruebas en las diferentes fases del desarrollo del proyecto. - Documentar el diseño y la ejecución de las pruebas. - Generar documentos con los resultados y anomalías de las pruebas ya ejecutadas. Actualmente, la Ingeniería de Pruebas no es muy reconocida como área de trabajo independiente sino más bien, un área inmersa dentro de la Ingeniería de Software. En el entorno laboral existe el perfil de Ingeniero de Pruebas, sin embargo pocos ingenieros de software tienen claro querer ser Ingenieros de Pruebas (probadores o testers) debido a que nunca han tenido la oportunidad de enfrentarse a actividades prácticas reales dentro de los centros de estudios universitarios donde cursan la carrera. Al ser un área de inherente ejercicio profesional, la parte correspondiente de la Ingeniería de Pruebas suele enfocarse desde un punto de vista teórico más que práctico. Hay muchas herramientas para la creación de pruebas y de ayuda para los ingenieros de pruebas, pero la mayoría son de pago o hechas a medida para grandes empresas que necesitan dicho software. Normalmente la gente conoce lo que es la Ingeniería de Pruebas únicamente cuando se empieza a adquirir experiencia en dicha área en el ejercicio profesional dentro de una empresa. Con lo cual, el acercamiento durante la carrera no necesariamente le ha ofrecido al profesional en Ingeniería, la oportunidad de trabajar en esta rama de la Ingeniería del Software y en algunos casos, NOVATests: Metodología y herramienta software de apoyo para los Ingenieros de Prueba Junior 4 los recién egresados comienzan su vida profesional con algún desconocimiento en este sentido. Es por el conjunto de estas razones, que mi intención en este proyecto es proponer una metodología y una herramienta software de apoyo a dicha metodología, para que los estudiantes de carreras de Ingeniería Software y afines, e ingenieros recién egresados con poca experiencia o ninguna en esta área (Ingenieros de Pruebas Junior), puedan poner en práctica las actividades de la Ingeniería de Pruebas dentro de un entorno lo más cercano posible al ejercicio de la labor profesional. De esta forma, podrían desarrollar las tareas propias de dicha área de una manera fácil e intuitiva, favoreciendo un mayor conocimiento y experiencia de la misma. ABSTRACT The software engineering is specialized in the verification and validation of Software and it is formally defined as: “Development process which by strict methods evaluates and corrects the quality of the product along its lifecycle”. This process contains a number of methods, procedures and techniques formally defined which used systematically make easier the identification of the highest quantity of error and failures within a Software. A software going through this rigorous process of tests will become a quality product that will help the software engineer`s work while correcting incidences. Some of them probably generated after the deployment in a real environment. This process belongs to the Software engineering and therefore it is a specialization itself. Simplifying, the correct verification and validation of a software requires some essential activities such as: -Create a Test Plan of the project - Update this Test Plan and correct if necessary - Check Requirement’s specification documents -Execute the different tests among all the phases of the project - Create the pertinent documentation about design and execution of these tests. - Generate the result documents and all the possible incidences the tests could contain. Currently, the Test engineering is not recognized as a work area but an area immerse within the Software engineering. The professional environment includes the role of Test engineer, but only a few software engineers have clear to become Test engineers (testers) because they have never had the chance to face this activities within the university study centers where they take study of this degree. Since there are little professional environments, this area is focused from a theoretical way instead of a more practical vision. There are plenty of tools helping the Test engineer, but most of them are paid tools or bespoke tools for big companies in need of this software. Usually people know what test engineering is by starting working on it and not before, when people start acquiring experience in this field within a company. Therefore, the degree studied have not approach this field of the Software engineering before and in some cases the graduated students start working without any knowledge in this area. Because of this reasons explained, it is my intention to propose this Project: a methodology and a software tool supporting this methodology so the students of software engineering and similar ones but also graduated students with little experience in this area (Junior Test Engineers), can afford practice in this field and get used to the activities related with the test engineering. Because of this they will be able to carry out the proper tasks of this area easier, enforcing higher and better knowledge and experience of it.
Resumo:
Uno de los aspectos que ha cobrado mayor protagonismo desde la aplicación del Espacio Europeo de Educación Superior (EEES) es la atención tutorial al alumno como forma de incidir positivamente en su proceso de aprendizaje. Por ello, dentro del campo de la innovación educativa se están definiendo metodologías docentes y herramientas TIC de apoyo a la acción tutorial. Estas metodologías y herramientas pretenden mejorar el servicio de atención a los alumnos contribuyendo entre otros aspectos a la sistematización de tareas implicadas en la acción tutorial y a la automatización de algunas de ellas mediante la utilización de herramientas informáticas. Este trabajo propone la utilización en el marco del EEES de una metodología de acción tutorial apoyada en herramientas TIC para la reserva y atención de tutorías, en concreto, la herramienta TutorialAction, que facilita la reserva de tutorías por parte del alumno y el registro de las mismas por parte del profesor. La investigación ha tenido como objetivos, en primer lugar, poner a disposición de alumnos y profesores la metodología y herramienta software definidas explorando aspectos de interés sobre la acción tutorial que permitan afinar ambas, y en segundo lugar determinar la influencia de la acción tutorial en el rendimiento académico en consonancia con el EEES. La muestra analizada corresponde a estudiantes y profesores del Grado en Ingeniería del Software de la Universidad Politécnica de Madrid durante los cursos académicos 2011-12 y 2012-13. Los instrumentos utilizados en la investigación han incluido dos cuestionarios, uno orientado a conocer la opinión de los alumnos y otro la de los profesores; así como los datos registrados por la herramienta TutorialAction sobre reserva, asistencia y atención de tutorías y las calificaciones obtenidas por los alumnos que componen la muestra. Los resultados obtenidos reflejan una mayor asistencia a tutorías en las asignaturas objeto de estudio y una valoración positiva sobre la utilización de la herramienta TutorialAction. Los resultados también han permitido identificar aspectos como la duración media de tutorías, el tipo de tutorías predominante, así como su periodicidad. Por otra parte, en línea con los objetivos de esta investigación se ha encontrado una correlación moderada, positiva y significativa entre la asistencia a tutorías y la calificación obtenida por los alumnos. Estos resultados permiten concluir que la metodología y herramienta presentadas en este trabajo resultan de utilidad para implementar una acción tutorial de calidad entre profesor y alumno en el marco del EEES, así como que la asistencia a tutorías constituye un factor relevante que incide positivamente en los resultados académicos del alumno.
Resumo:
La usabilidad es uno de los aspectos más importantes de la calidad del software para sistemas software interactivos. A pesar de ello, la Ingeniería del Software (IS) se ha centrado históricamente en problemas de funcionalidad y de persistencia, relegando a un segundo plano aspectos de la interacción con el usuario, y más concretamente, de la usabilidad. Ha sido principalmente la comunidad Interacción Persona-Ordenador (IPO) la que ha propuesto recomendaciones para mejorar la usabilidad. En estudios recientes se ha encontrado una relación entre algunas de las recomendaciones de usabilidad propuestas por la comunidad IPO y la funcionalidad de un sistema software. Estas recomendaciones se conocen como Características Funcionales de Usabilidad (CFU), divididas en subtipos más especializados llamados Mecanismos de Usabilidad (MU). Estos estudios han propuesto unas Guías para la Educción de Requisitos por cada mecanismo de usabilidad (GERMU). Posteriormente, se continúan los estudios y con base al repositorio de conocimiento suministrado por las GERMUs, se proponen diseños de más bajo nivel e implementación que facilite la incorporación de un MU en un sistema software. Los resultados se formalizaron en lo que se llamo Patrón de Programación de Usabilidad (PPU). El presente trabajo de investigación se centra en evaluar el impacto debido a la incorporación de mecanismos de usabilidad en el desarrollo de un sistema software. Concretamente el MU Abortar Operación (MU AO), el MU Retroalimentación del Progreso (MU RP) y MU Preferencias (MU P), tanto a nivel de requisitos como a nivel de implementación. Para satisfacer este objetivo, en esta investigación se aborda el desarrollo de un sistema software desde la actividad de educción de requisitos hasta la implementación. Para la actividad de requisitos se hace uso de la GERMU AO, GERMU RP y la GERMU P. La construcción del sistema sigue el modelo incremental. En cada incremento se construye un conjunto de casos de uso junto con uno o varios MUs. Para incorporar cada MU en implementación, se hace uso del PPU Abortar Operación (PPU AO), PPU Retroalimentación del Progreso (PPU RP) y PPU Preferencias (PPU P). En el primer incremento se incorpora el PPU AO, en el segundo el PPU RP, en el tercer incremento PPU P, y en el último incremento, se añaden los restantes casos de uso junto con los tres PPUs al sistema. Tanto en la actividad de requisitos, como en la construcción de cada incremento se evalúa el impacto de la incorporación de tales PPUs. Cada evaluación proporciona datos que pueden dar una estimación del esfuerzo requerido para incorporar cada PPU en las distintas actividades del desarrollo del sistema. Como resultado de la experiencia del uso de los diferentes artefactos relacionados en esta investigación se obtienen propuestas de mejoras para los PPUs, y adicionalmente para las GERMUs.
Resumo:
Los sistemas empotrados han sido concebidos tradicionalmente como sistemas de procesamiento específicos que realizan una tarea fija durante toda su vida útil. Para cumplir con requisitos estrictos de coste, tamaño y peso, el equipo de diseño debe optimizar su funcionamiento para condiciones muy específicas. Sin embargo, la demanda de mayor versatilidad, un funcionamiento más inteligente y, en definitiva, una mayor capacidad de procesamiento comenzaron a chocar con estas limitaciones, agravado por la incertidumbre asociada a entornos de operación cada vez más dinámicos donde comenzaban a ser desplegados progresivamente. Esto trajo como resultado una necesidad creciente de que los sistemas pudieran responder por si solos a eventos inesperados en tiempo diseño tales como: cambios en las características de los datos de entrada y el entorno del sistema en general; cambios en la propia plataforma de cómputo, por ejemplo debido a fallos o defectos de fabricación; y cambios en las propias especificaciones funcionales causados por unos objetivos del sistema dinámicos y cambiantes. Como consecuencia, la complejidad del sistema aumenta, pero a cambio se habilita progresivamente una capacidad de adaptación autónoma sin intervención humana a lo largo de la vida útil, permitiendo que tomen sus propias decisiones en tiempo de ejecución. Éstos sistemas se conocen, en general, como sistemas auto-adaptativos y tienen, entre otras características, las de auto-configuración, auto-optimización y auto-reparación. Típicamente, la parte soft de un sistema es mayoritariamente la única utilizada para proporcionar algunas capacidades de adaptación a un sistema. Sin embargo, la proporción rendimiento/potencia en dispositivos software como microprocesadores en muchas ocasiones no es adecuada para sistemas empotrados. En este escenario, el aumento resultante en la complejidad de las aplicaciones está siendo abordado parcialmente mediante un aumento en la complejidad de los dispositivos en forma de multi/many-cores; pero desafortunadamente, esto hace que el consumo de potencia también aumente. Además, la mejora en metodologías de diseño no ha sido acorde como para poder utilizar toda la capacidad de cómputo disponible proporcionada por los núcleos. Por todo ello, no se están satisfaciendo adecuadamente las demandas de cómputo que imponen las nuevas aplicaciones. La solución tradicional para mejorar la proporción rendimiento/potencia ha sido el cambio a unas especificaciones hardware, principalmente usando ASICs. Sin embargo, los costes de un ASIC son altamente prohibitivos excepto en algunos casos de producción en masa y además la naturaleza estática de su estructura complica la solución a las necesidades de adaptación. Los avances en tecnologías de fabricación han hecho que la FPGA, una vez lenta y pequeña, usada como glue logic en sistemas mayores, haya crecido hasta convertirse en un dispositivo de cómputo reconfigurable de gran potencia, con una cantidad enorme de recursos lógicos computacionales y cores hardware empotrados de procesamiento de señal y de propósito general. Sus capacidades de reconfiguración han permitido combinar la flexibilidad propia del software con el rendimiento del procesamiento en hardware, lo que tiene la potencialidad de provocar un cambio de paradigma en arquitectura de computadores, pues el hardware no puede ya ser considerado más como estático. El motivo es que como en el caso de las FPGAs basadas en tecnología SRAM, la reconfiguración parcial dinámica (DPR, Dynamic Partial Reconfiguration) es posible. Esto significa que se puede modificar (reconfigurar) un subconjunto de los recursos computacionales en tiempo de ejecución mientras el resto permanecen activos. Además, este proceso de reconfiguración puede ser ejecutado internamente por el propio dispositivo. El avance tecnológico en dispositivos hardware reconfigurables se encuentra recogido bajo el campo conocido como Computación Reconfigurable (RC, Reconfigurable Computing). Uno de los campos de aplicación más exóticos y menos convencionales que ha posibilitado la computación reconfigurable es el conocido como Hardware Evolutivo (EHW, Evolvable Hardware), en el cual se encuentra enmarcada esta tesis. La idea principal del concepto consiste en convertir hardware que es adaptable a través de reconfiguración en una entidad evolutiva sujeta a las fuerzas de un proceso evolutivo inspirado en el de las especies biológicas naturales, que guía la dirección del cambio. Es una aplicación más del campo de la Computación Evolutiva (EC, Evolutionary Computation), que comprende una serie de algoritmos de optimización global conocidos como Algoritmos Evolutivos (EA, Evolutionary Algorithms), y que son considerados como algoritmos universales de resolución de problemas. En analogía al proceso biológico de la evolución, en el hardware evolutivo el sujeto de la evolución es una población de circuitos que intenta adaptarse a su entorno mediante una adecuación progresiva generación tras generación. Los individuos pasan a ser configuraciones de circuitos en forma de bitstreams caracterizados por descripciones de circuitos reconfigurables. Seleccionando aquellos que se comportan mejor, es decir, que tienen una mejor adecuación (o fitness) después de ser evaluados, y usándolos como padres de la siguiente generación, el algoritmo evolutivo crea una nueva población hija usando operadores genéticos como la mutación y la recombinación. Según se van sucediendo generaciones, se espera que la población en conjunto se aproxime a la solución óptima al problema de encontrar una configuración del circuito adecuada que satisfaga las especificaciones. El estado de la tecnología de reconfiguración después de que la familia de FPGAs XC6200 de Xilinx fuera retirada y reemplazada por las familias Virtex a finales de los 90, supuso un gran obstáculo para el avance en hardware evolutivo; formatos de bitstream cerrados (no conocidos públicamente); dependencia de herramientas del fabricante con soporte limitado de DPR; una velocidad de reconfiguración lenta; y el hecho de que modificaciones aleatorias del bitstream pudieran resultar peligrosas para la integridad del dispositivo, son algunas de estas razones. Sin embargo, una propuesta a principios de los años 2000 permitió mantener la investigación en el campo mientras la tecnología de DPR continuaba madurando, el Circuito Virtual Reconfigurable (VRC, Virtual Reconfigurable Circuit). En esencia, un VRC en una FPGA es una capa virtual que actúa como un circuito reconfigurable de aplicación específica sobre la estructura nativa de la FPGA que reduce la complejidad del proceso reconfiguración y aumenta su velocidad (comparada con la reconfiguración nativa). Es un array de nodos computacionales especificados usando descripciones HDL estándar que define recursos reconfigurables ad-hoc: multiplexores de rutado y un conjunto de elementos de procesamiento configurables, cada uno de los cuales tiene implementadas todas las funciones requeridas, que pueden seleccionarse a través de multiplexores tal y como ocurre en una ALU de un microprocesador. Un registro grande actúa como memoria de configuración, por lo que la reconfiguración del VRC es muy rápida ya que tan sólo implica la escritura de este registro, el cual controla las señales de selección del conjunto de multiplexores. Sin embargo, esta capa virtual provoca: un incremento de área debido a la implementación simultánea de cada función en cada nodo del array más los multiplexores y un aumento del retardo debido a los multiplexores, reduciendo la frecuencia de funcionamiento máxima. La naturaleza del hardware evolutivo, capaz de optimizar su propio comportamiento computacional, le convierten en un buen candidato para avanzar en la investigación sobre sistemas auto-adaptativos. Combinar un sustrato de cómputo auto-reconfigurable capaz de ser modificado dinámicamente en tiempo de ejecución con un algoritmo empotrado que proporcione una dirección de cambio, puede ayudar a satisfacer los requisitos de adaptación autónoma de sistemas empotrados basados en FPGA. La propuesta principal de esta tesis está por tanto dirigida a contribuir a la auto-adaptación del hardware de procesamiento de sistemas empotrados basados en FPGA mediante hardware evolutivo. Esto se ha abordado considerando que el comportamiento computacional de un sistema puede ser modificado cambiando cualquiera de sus dos partes constitutivas: una estructura hard subyacente y un conjunto de parámetros soft. De esta distinción, se derivan dos lineas de trabajo. Por un lado, auto-adaptación paramétrica, y por otro auto-adaptación estructural. El objetivo perseguido en el caso de la auto-adaptación paramétrica es la implementación de técnicas de optimización evolutiva complejas en sistemas empotrados con recursos limitados para la adaptación paramétrica online de circuitos de procesamiento de señal. La aplicación seleccionada como prueba de concepto es la optimización para tipos muy específicos de imágenes de los coeficientes de los filtros de transformadas wavelet discretas (DWT, DiscreteWavelet Transform), orientada a la compresión de imágenes. Por tanto, el objetivo requerido de la evolución es una compresión adaptativa y más eficiente comparada con los procedimientos estándar. El principal reto radica en reducir la necesidad de recursos de supercomputación para el proceso de optimización propuesto en trabajos previos, de modo que se adecúe para la ejecución en sistemas empotrados. En cuanto a la auto-adaptación estructural, el objetivo de la tesis es la implementación de circuitos auto-adaptativos en sistemas evolutivos basados en FPGA mediante un uso eficiente de sus capacidades de reconfiguración nativas. En este caso, la prueba de concepto es la evolución de tareas de procesamiento de imagen tales como el filtrado de tipos desconocidos y cambiantes de ruido y la detección de bordes en la imagen. En general, el objetivo es la evolución en tiempo de ejecución de tareas de procesamiento de imagen desconocidas en tiempo de diseño (dentro de un cierto grado de complejidad). En este caso, el objetivo de la propuesta es la incorporación de DPR en EHW para evolucionar la arquitectura de un array sistólico adaptable mediante reconfiguración cuya capacidad de evolución no había sido estudiada previamente. Para conseguir los dos objetivos mencionados, esta tesis propone originalmente una plataforma evolutiva que integra un motor de adaptación (AE, Adaptation Engine), un motor de reconfiguración (RE, Reconfiguration Engine) y un motor computacional (CE, Computing Engine) adaptable. El el caso de adaptación paramétrica, la plataforma propuesta está caracterizada por: • un CE caracterizado por un núcleo de procesamiento hardware de DWT adaptable mediante registros reconfigurables que contienen los coeficientes de los filtros wavelet • un algoritmo evolutivo como AE que busca filtros wavelet candidatos a través de un proceso de optimización paramétrica desarrollado específicamente para sistemas caracterizados por recursos de procesamiento limitados • un nuevo operador de mutación simplificado para el algoritmo evolutivo utilizado, que junto con un mecanismo de evaluación rápida de filtros wavelet candidatos derivado de la literatura actual, asegura la viabilidad de la búsqueda evolutiva asociada a la adaptación de wavelets. En el caso de adaptación estructural, la plataforma propuesta toma la forma de: • un CE basado en una plantilla de array sistólico reconfigurable de 2 dimensiones compuesto de nodos de procesamiento reconfigurables • un algoritmo evolutivo como AE que busca configuraciones candidatas del array usando un conjunto de funcionalidades de procesamiento para los nodos disponible en una biblioteca accesible en tiempo de ejecución • un RE hardware que explota la capacidad de reconfiguración nativa de las FPGAs haciendo un uso eficiente de los recursos reconfigurables del dispositivo para cambiar el comportamiento del CE en tiempo de ejecución • una biblioteca de elementos de procesamiento reconfigurables caracterizada por bitstreams parciales independientes de la posición, usados como el conjunto de configuraciones disponibles para los nodos de procesamiento del array Las contribuciones principales de esta tesis se pueden resumir en la siguiente lista: • Una plataforma evolutiva basada en FPGA para la auto-adaptación paramétrica y estructural de sistemas empotrados compuesta por un motor computacional (CE), un motor de adaptación (AE) evolutivo y un motor de reconfiguración (RE). Esta plataforma se ha desarrollado y particularizado para los casos de auto-adaptación paramétrica y estructural. • En cuanto a la auto-adaptación paramétrica, las contribuciones principales son: – Un motor computacional adaptable mediante registros que permite la adaptación paramétrica de los coeficientes de una implementación hardware adaptativa de un núcleo de DWT. – Un motor de adaptación basado en un algoritmo evolutivo desarrollado específicamente para optimización numérica, aplicada a los coeficientes de filtros wavelet en sistemas empotrados con recursos limitados. – Un núcleo IP de DWT auto-adaptativo en tiempo de ejecución para sistemas empotrados que permite la optimización online del rendimiento de la transformada para compresión de imágenes en entornos específicos de despliegue, caracterizados por tipos diferentes de señal de entrada. – Un modelo software y una implementación hardware de una herramienta para la construcción evolutiva automática de transformadas wavelet específicas. • Por último, en cuanto a la auto-adaptación estructural, las contribuciones principales son: – Un motor computacional adaptable mediante reconfiguración nativa de FPGAs caracterizado por una plantilla de array sistólico en dos dimensiones de nodos de procesamiento reconfigurables. Es posible mapear diferentes tareas de cómputo en el array usando una biblioteca de elementos sencillos de procesamiento reconfigurables. – Definición de una biblioteca de elementos de procesamiento apropiada para la síntesis autónoma en tiempo de ejecución de diferentes tareas de procesamiento de imagen. – Incorporación eficiente de la reconfiguración parcial dinámica (DPR) en sistemas de hardware evolutivo, superando los principales inconvenientes de propuestas previas como los circuitos reconfigurables virtuales (VRCs). En este trabajo también se comparan originalmente los detalles de implementación de ambas propuestas. – Una plataforma tolerante a fallos, auto-curativa, que permite la recuperación funcional online en entornos peligrosos. La plataforma ha sido caracterizada desde una perspectiva de tolerancia a fallos: se proponen modelos de fallo a nivel de CLB y de elemento de procesamiento, y usando el motor de reconfiguración, se hace un análisis sistemático de fallos para un fallo en cada elemento de procesamiento y para dos fallos acumulados. – Una plataforma con calidad de filtrado dinámica que permite la adaptación online a tipos de ruido diferentes y diferentes comportamientos computacionales teniendo en cuenta los recursos de procesamiento disponibles. Por un lado, se evolucionan filtros con comportamientos no destructivos, que permiten esquemas de filtrado en cascada escalables; y por otro, también se evolucionan filtros escalables teniendo en cuenta requisitos computacionales de filtrado cambiantes dinámicamente. Este documento está organizado en cuatro partes y nueve capítulos. La primera parte contiene el capítulo 1, una introducción y motivación sobre este trabajo de tesis. A continuación, el marco de referencia en el que se enmarca esta tesis se analiza en la segunda parte: el capítulo 2 contiene una introducción a los conceptos de auto-adaptación y computación autonómica (autonomic computing) como un campo de investigación más general que el muy específico de este trabajo; el capítulo 3 introduce la computación evolutiva como la técnica para dirigir la adaptación; el capítulo 4 analiza las plataformas de computación reconfigurables como la tecnología para albergar hardware auto-adaptativo; y finalmente, el capítulo 5 define, clasifica y hace un sondeo del campo del hardware evolutivo. Seguidamente, la tercera parte de este trabajo contiene la propuesta, desarrollo y resultados obtenidos: mientras que el capítulo 6 contiene una declaración de los objetivos de la tesis y la descripción de la propuesta en su conjunto, los capítulos 7 y 8 abordan la auto-adaptación paramétrica y estructural, respectivamente. Finalmente, el capítulo 9 de la parte 4 concluye el trabajo y describe caminos de investigación futuros. ABSTRACT Embedded systems have traditionally been conceived to be specific-purpose computers with one, fixed computational task for their whole lifetime. Stringent requirements in terms of cost, size and weight forced designers to highly optimise their operation for very specific conditions. However, demands for versatility, more intelligent behaviour and, in summary, an increased computing capability began to clash with these limitations, intensified by the uncertainty associated to the more dynamic operating environments where they were progressively being deployed. This brought as a result an increasing need for systems to respond by themselves to unexpected events at design time, such as: changes in input data characteristics and system environment in general; changes in the computing platform itself, e.g., due to faults and fabrication defects; and changes in functional specifications caused by dynamically changing system objectives. As a consequence, systems complexity is increasing, but in turn, autonomous lifetime adaptation without human intervention is being progressively enabled, allowing them to take their own decisions at run-time. This type of systems is known, in general, as selfadaptive, and are able, among others, of self-configuration, self-optimisation and self-repair. Traditionally, the soft part of a system has mostly been so far the only place to provide systems with some degree of adaptation capabilities. However, the performance to power ratios of software driven devices like microprocessors are not adequate for embedded systems in many situations. In this scenario, the resulting rise in applications complexity is being partly addressed by rising devices complexity in the form of multi and many core devices; but sadly, this keeps on increasing power consumption. Besides, design methodologies have not been improved accordingly to completely leverage the available computational power from all these cores. Altogether, these factors make that the computing demands new applications pose are not being wholly satisfied. The traditional solution to improve performance to power ratios has been the switch to hardware driven specifications, mainly using ASICs. However, their costs are highly prohibitive except for some mass production cases and besidesthe static nature of its structure complicates the solution to the adaptation needs. The advancements in fabrication technologies have made that the once slow, small FPGA used as glue logic in bigger systems, had grown to be a very powerful, reconfigurable computing device with a vast amount of computational logic resources and embedded, hardened signal and general purpose processing cores. Its reconfiguration capabilities have enabled software-like flexibility to be combined with hardware-like computing performance, which has the potential to cause a paradigm shift in computer architecture since hardware cannot be considered as static anymore. This is so, since, as is the case with SRAMbased FPGAs, Dynamic Partial Reconfiguration (DPR) is possible. This means that subsets of the FPGA computational resources can now be changed (reconfigured) at run-time while the rest remains active. Besides, this reconfiguration process can be triggered internally by the device itself. This technological boost in reconfigurable hardware devices is actually covered under the field known as Reconfigurable Computing. One of the most exotic fields of application that Reconfigurable Computing has enabled is the known as Evolvable Hardware (EHW), in which this dissertation is framed. The main idea behind the concept is turning hardware that is adaptable through reconfiguration into an evolvable entity subject to the forces of an evolutionary process, inspired by that of natural, biological species, that guides the direction of change. It is yet another application of the field of Evolutionary Computation (EC), which comprises a set of global optimisation algorithms known as Evolutionary Algorithms (EAs), considered as universal problem solvers. In analogy to the biological process of evolution, in EHW the subject of evolution is a population of circuits that tries to get adapted to its surrounding environment by progressively getting better fitted to it generation after generation. Individuals become circuit configurations representing bitstreams that feature reconfigurable circuit descriptions. By selecting those that behave better, i.e., with a higher fitness value after being evaluated, and using them as parents of the following generation, the EA creates a new offspring population by using so called genetic operators like mutation and recombination. As generations succeed one another, the whole population is expected to approach to the optimum solution to the problem of finding an adequate circuit configuration that fulfils system objectives. The state of reconfiguration technology after Xilinx XC6200 FPGA family was discontinued and replaced by Virtex families in the late 90s, was a major obstacle for advancements in EHW; closed (non publicly known) bitstream formats; dependence on manufacturer tools with highly limiting support of DPR; slow speed of reconfiguration; and random bitstream modifications being potentially hazardous for device integrity, are some of these reasons. However, a proposal in the first 2000s allowed to keep investigating in this field while DPR technology kept maturing, the Virtual Reconfigurable Circuit (VRC). In essence, a VRC in an FPGA is a virtual layer acting as an application specific reconfigurable circuit on top of an FPGA fabric that reduces the complexity of the reconfiguration process and increases its speed (compared to native reconfiguration). It is an array of computational nodes specified using standard HDL descriptions that define ad-hoc reconfigurable resources; routing multiplexers and a set of configurable processing elements, each one containing all the required functions, which are selectable through functionality multiplexers as in microprocessor ALUs. A large register acts as configuration memory, so VRC reconfiguration is very fast given it only involves writing this register, which drives the selection signals of the set of multiplexers. However, large overheads are introduced by this virtual layer; an area overhead due to the simultaneous implementation of every function in every node of the array plus the multiplexers, and a delay overhead due to the multiplexers, which also reduces maximum frequency of operation. The very nature of Evolvable Hardware, able to optimise its own computational behaviour, makes it a good candidate to advance research in self-adaptive systems. Combining a selfreconfigurable computing substrate able to be dynamically changed at run-time with an embedded algorithm that provides a direction for change, can help fulfilling requirements for autonomous lifetime adaptation of FPGA-based embedded systems. The main proposal of this thesis is hence directed to contribute to autonomous self-adaptation of the underlying computational hardware of FPGA-based embedded systems by means of Evolvable Hardware. This is tackled by considering that the computational behaviour of a system can be modified by changing any of its two constituent parts: an underlying hard structure and a set of soft parameters. Two main lines of work derive from this distinction. On one side, parametric self-adaptation and, on the other side, structural self-adaptation. The goal pursued in the case of parametric self-adaptation is the implementation of complex evolutionary optimisation techniques in resource constrained embedded systems for online parameter adaptation of signal processing circuits. The application selected as proof of concept is the optimisation of Discrete Wavelet Transforms (DWT) filters coefficients for very specific types of images, oriented to image compression. Hence, adaptive and improved compression efficiency, as compared to standard techniques, is the required goal of evolution. The main quest lies in reducing the supercomputing resources reported in previous works for the optimisation process in order to make it suitable for embedded systems. Regarding structural self-adaptation, the thesis goal is the implementation of self-adaptive circuits in FPGA-based evolvable systems through an efficient use of native reconfiguration capabilities. In this case, evolution of image processing tasks such as filtering of unknown and changing types of noise and edge detection are the selected proofs of concept. In general, evolving unknown image processing behaviours (within a certain complexity range) at design time is the required goal. In this case, the mission of the proposal is the incorporation of DPR in EHW to evolve a systolic array architecture adaptable through reconfiguration whose evolvability had not been previously checked. In order to achieve the two stated goals, this thesis originally proposes an evolvable platform that integrates an Adaptation Engine (AE), a Reconfiguration Engine (RE) and an adaptable Computing Engine (CE). In the case of parametric adaptation, the proposed platform is characterised by: • a CE featuring a DWT hardware processing core adaptable through reconfigurable registers that holds wavelet filters coefficients • an evolutionary algorithm as AE that searches for candidate wavelet filters through a parametric optimisation process specifically developed for systems featured by scarce computing resources • a new, simplified mutation operator for the selected EA, that together with a fast evaluation mechanism of candidate wavelet filters derived from existing literature, assures the feasibility of the evolutionary search involved in wavelets adaptation In the case of structural adaptation, the platform proposal takes the form of: • a CE based on a reconfigurable 2D systolic array template composed of reconfigurable processing nodes • an evolutionary algorithm as AE that searches for candidate configurations of the array using a set of computational functionalities for the nodes available in a run time accessible library • a hardware RE that exploits native DPR capabilities of FPGAs and makes an efficient use of the available reconfigurable resources of the device to change the behaviour of the CE at run time • a library of reconfigurable processing elements featured by position-independent partial bitstreams used as the set of available configurations for the processing nodes of the array Main contributions of this thesis can be summarised in the following list. • An FPGA-based evolvable platform for parametric and structural self-adaptation of embedded systems composed of a Computing Engine, an evolutionary Adaptation Engine and a Reconfiguration Engine. This platform is further developed and tailored for both parametric and structural self-adaptation. • Regarding parametric self-adaptation, main contributions are: – A CE adaptable through reconfigurable registers that enables parametric adaptation of the coefficients of an adaptive hardware implementation of a DWT core. – An AE based on an Evolutionary Algorithm specifically developed for numerical optimisation applied to wavelet filter coefficients in resource constrained embedded systems. – A run-time self-adaptive DWT IP core for embedded systems that allows for online optimisation of transform performance for image compression for specific deployment environments characterised by different types of input signals. – A software model and hardware implementation of a tool for the automatic, evolutionary construction of custom wavelet transforms. • Lastly, regarding structural self-adaptation, main contributions are: – A CE adaptable through native FPGA fabric reconfiguration featured by a two dimensional systolic array template of reconfigurable processing nodes. Different processing behaviours can be automatically mapped in the array by using a library of simple reconfigurable processing elements. – Definition of a library of such processing elements suited for autonomous runtime synthesis of different image processing tasks. – Efficient incorporation of DPR in EHW systems, overcoming main drawbacks from the previous approach of virtual reconfigurable circuits. Implementation details for both approaches are also originally compared in this work. – A fault tolerant, self-healing platform that enables online functional recovery in hazardous environments. The platform has been characterised from a fault tolerance perspective: fault models at FPGA CLB level and processing elements level are proposed, and using the RE, a systematic fault analysis for one fault in every processing element and for two accumulated faults is done. – A dynamic filtering quality platform that permits on-line adaptation to different types of noise and different computing behaviours considering the available computing resources. On one side, non-destructive filters are evolved, enabling scalable cascaded filtering schemes; and on the other, size-scalable filters are also evolved considering dynamically changing computational filtering requirements. This dissertation is organized in four parts and nine chapters. First part contains chapter 1, the introduction to and motivation of this PhD work. Following, the reference framework in which this dissertation is framed is analysed in the second part: chapter 2 features an introduction to the notions of self-adaptation and autonomic computing as a more general research field to the very specific one of this work; chapter 3 introduces evolutionary computation as the technique to drive adaptation; chapter 4 analyses platforms for reconfigurable computing as the technology to hold self-adaptive hardware; and finally chapter 5 defines, classifies and surveys the field of Evolvable Hardware. Third part of the work follows, which contains the proposal, development and results obtained: while chapter 6 contains an statement of the thesis goals and the description of the proposal as a whole, chapters 7 and 8 address parametric and structural self-adaptation, respectively. Finally, chapter 9 in part 4 concludes the work and describes future research paths.
Resumo:
El presente proyecto desarrolla un estudio acústico del recinto: Auditorio Rafael Frühbeck de Burgos, cumpliendo con las indicaciones exigidas por la norma UNE-EN ISO 3382-1: 2010, “Medición de parámetros acústicos en recintos, Parte 1: Salas de Espectáculos”. Se desarrollan dos estudios acústicos sobre el mismo recinto. En el primero de ellos, el recinto está configurado para la realización de eventos tales como conferencias o congresos, donde la inteligibilidad de la palabra es un factor determinante. En el segundo estudio, el recinto se configura para espectáculos musicales como conciertos de orquesta sinfónica o música de cámara. En esta configuración, la palabra ya no es tan determinante como la correcta interpretación y disfrute de la música por parte de la audiencia. Para ambas configuraciones del recinto se ha realizado un procesado estadístico de los datos con el fin de obtener un valor único de cada parámetro acústico estudiado. De esta forma, se comparan los resultados para ambas configuraciones, y se evalúan los valores obtenidos de cada uno de los parámetros acústicos con el fin de conocer si se adecuan a las necesidades acústicas exigidas por el tipo de evento desarrollado. Además, se ha construido un modelo geométrico del recinto por ordenador, para ambas configuraciones acústicas, haciendo uso del software profesional de predicción y simulación acústica EASE. Se realiza un estudio acústico sobre el modelo geométrico mediante simulación, siguiendo las pautas llevadas a cabo durante la medición “in situ”. Los resultados obtenidos por simulación se comparan con los obtenidos de las mediciones “in situ”, para estudiar la validación del modelo geométrico. El parámetro acústico elegido para validar el modelo, en un primer momento, será el tiempo de reverberación. Si se consigue una buena validación del modelo geométrico, este puede ser utilizado para realizar predicciones acústicas mediante simulación, cuando un sistema de refuerzo sonoro sea utilizado dentro del recinto. El sistema de refuerzo sonoro ubicado en el recinto sometido a estudio, no ha sido utilizado en el presente proyecto. ABSTRACT. The present projects carry out an acoustic study of enclosure: Rafael Frühbeck Concert Hall, in Burgos, fulfilling the indications demanded by the standard UNE-EN ISO 3382-1:2010 “Measurement of room acoustic parameters – Part 1: Performance spaces. Two acoustics studies are developed on the same enclosure. In first of them, the enclosure is formed for the accomplishment of events such as conferences or congresses, where speech intelligibility is a determining factor. In the second study, the enclosure forms for musical performances like concerts of symphony orchestra or chamber music. In this acoustic configuration, speech intelligibility is not as determining as the correct interpretation and enjoyment of music in audience areas. For both configurations of the enclosure, a statistical processing of the data has been realised with the purpose of obtaining a unique value of each studied acoustic parameter. In this way, the results for both configurations are compared, and the obtained values of each one of the acoustic parameters are evaluated with the purpose of knowing if they are adapted to the acoustic needs demanded by the type of developed event. In addition, a geometric model of the enclosure has been constructed by computer, for both acoustic configurations; making use of the professional software of prediction and acoustical simulation, EASE. An acoustic study is developed on the geometric model by means of simulation, following the rules carried out during the measurement “in situ”. The results obtained by simulation are compared with the obtained ones from the measurement “in situ”, to study the validation of the geometric model. Initially the acoustic parameter chosen to validate the model is Reverberation Time. If a good validation of the geometric model is reached, it can be used to realize acoustic predictions by simulation, when a sound reinforcement system is used within the enclosure. The sound reinforcement system located in the enclosure under study has not been used in the present project.