761 resultados para Teste em sistemas de software
Resumo:
A Mineração de Aspectos visa a identificar potenciais interesses transversais em código fonte de programa e a Refatoração para Aspectos visa a encapsulá-los em aspectos. A Mineração de Aspectos é um processo não-automático, pois o usuário precisa analisar e compreender os resultados gerados por técnicas/ferramentas e confirmar interesses transversais para refatorá-los em aspectos. Neste trabalho é proposta uma abordagem visual que lida com resultados gerados por duas técnicas de mineração de aspectos propostas na literatura. Por meio de múltiplas visões coordenadas, diferentes níveis de detalhe para explorar sistemas de software apóiam a análise e a compreensão de tais resultados para futura refatoração. O modelo de coordenação, implementado na ferramenta SoftVis4CA, é apresentado neste trabalho, juntamente com as visualizações e com os resultados preliminares obtidos.
Resumo:
La computación basada en servicios (Service-Oriented Computing, SOC) se estableció como un paradigma ampliamente aceptado para el desarollo de sistemas de software flexibles, distribuidos y adaptables, donde las composiciones de los servicios realizan las tareas más complejas o de nivel más alto, frecuentemente tareas inter-organizativas usando los servicios atómicos u otras composiciones de servicios. En tales sistemas, las propriedades de la calidad de servicio (Quality of Service, QoS), como la rapídez de procesamiento, coste, disponibilidad o seguridad, son críticas para la usabilidad de los servicios o sus composiciones en cualquier aplicación concreta. El análisis de estas propriedades se puede realizarse de una forma más precisa y rica en información si se utilizan las técnicas de análisis de programas, como el análisis de complejidad o de compartición de datos, que son capables de analizar simultáneamente tanto las estructuras de control como las de datos, dependencias y operaciones en una composición. El análisis de coste computacional para la composicion de servicios puede ayudar a una monitorización predictiva así como a una adaptación proactiva a través de una inferencia automática de coste computacional, usando los limites altos y bajos como funciones del valor o del tamaño de los mensajes de entrada. Tales funciones de coste se pueden usar para adaptación en la forma de selección de los candidatos entre los servicios que minimizan el coste total de la composición, basado en los datos reales que se pasan al servicio. Las funciones de coste también pueden ser combinadas con los parámetros extraídos empíricamente desde la infraestructura, para producir las funciones de los límites de QoS sobre los datos de entrada, cuales se pueden usar para previsar, en el momento de invocación, las violaciones de los compromisos al nivel de servicios (Service Level Agreements, SLA) potenciales or inminentes. En las composiciones críticas, una previsión continua de QoS bastante eficaz y precisa se puede basar en el modelado con restricciones de QoS desde la estructura de la composition, datos empiricos en tiempo de ejecución y (cuando estén disponibles) los resultados del análisis de complejidad. Este enfoque se puede aplicar a las orquestaciones de servicios con un control centralizado del flujo, así como a las coreografías con participantes multiples, siguiendo unas interacciones complejas que modifican su estado. El análisis del compartición de datos puede servir de apoyo para acciones de adaptación, como la paralelización, fragmentación y selección de los componentes, las cuales son basadas en dependencias funcionales y en el contenido de información en los mensajes, datos internos y las actividades de la composición, cuando se usan construcciones de control complejas, como bucles, bifurcaciones y flujos anidados. Tanto las dependencias funcionales como el contenido de información (descrito a través de algunos atributos definidos por el usuario) se pueden expresar usando una representación basada en la lógica de primer orden (claúsulas de Horn), y los resultados del análisis se pueden interpretar como modelos conceptuales basados en retículos. ABSTRACT Service-Oriented Computing (SOC) is a widely accepted paradigm for development of flexible, distributed and adaptable software systems, in which service compositions perform more complex, higher-level, often cross-organizational tasks using atomic services or other service compositions. In such systems, Quality of Service (QoS) properties, such as the performance, cost, availability or security, are critical for the usability of services and their compositions in concrete applications. Analysis of these properties can become more precise and richer in information, if it employs program analysis techniques, such as the complexity and sharing analyses, which are able to simultaneously take into account both the control and the data structures, dependencies, and operations in a composition. Computation cost analysis for service composition can support predictive monitoring and proactive adaptation by automatically inferring computation cost using the upper and lower bound functions of value or size of input messages. These cost functions can be used for adaptation by selecting service candidates that minimize total cost of the composition, based on the actual data that is passed to them. The cost functions can also be combined with the empirically collected infrastructural parameters to produce QoS bounds functions of input data that can be used to predict potential or imminent Service Level Agreement (SLA) violations at the moment of invocation. In mission-critical applications, an effective and accurate continuous QoS prediction, based on continuations, can be achieved by constraint modeling of composition QoS based on its structure, known data at runtime, and (when available) the results of complexity analysis. This approach can be applied to service orchestrations with centralized flow control, and choreographies with multiple participants with complex stateful interactions. Sharing analysis can support adaptation actions, such as parallelization, fragmentation, and component selection, which are based on functional dependencies and information content of the composition messages, internal data, and activities, in presence of complex control constructs, such as loops, branches, and sub-workflows. Both the functional dependencies and the information content (described using user-defined attributes) can be expressed using a first-order logic (Horn clause) representation, and the analysis results can be interpreted as a lattice-based conceptual models.
Resumo:
La tendencia actual de las redes de telecomunicaciones conduce a pensar en un futuro basado en el concepto emergente de las Smart Cities¸ que tienen como objetivo el desarrollo urbano basado en un modelo de sostenibilidad que responda a las necesidades crecientes de las ciudades. Dentro de las Smart Cities podemos incluir el concepto de Smart Grid, el cual está referido a sistemas de administración y producción de energía eficientes, que permitan un sistema energético sostenible, y que den cabida a las fuentes de energía renovables. Sistemas de este tipo se muestran a los usuarios como un conjunto de servicios con los que interactuar sin ser tan sólo un mero cliente, sino un agente más del entorno energético. Por otro lado, los sistemas de software distribuidos son cada vez más comunes en una infraestructura de telecomunicaciones cada vez más extensa y con más capacidades. Dentro de este ámbito tecnológico, las arquitecturas orientadas a servicios han crecido exponencialmente sobre todo en el sector empresarial. Con sistemas basados en estas arquitecturas, se pueden ofrecer a empresas y usuarios sistemas software basados en el concepto de servicio. Con la progresión del hardware actual, la miniaturización de los equipos es cada vez mayor, sin renunciar por ello a la potencia que podemos encontrar en sistemas de mayor tamaño. Un ejemplo es el dispositivo Raspberry Pi, que contiene un ordenador plenamente funcional contenido en el tamaño de una cajetilla de tabaco, y con un coste muy reducido. En este proyecto se pretenden aunar los tres conceptos expuestos. De esta forma, se busca utilizar el dispositivo Raspberry Pi como elemento de despliegue integrado en una arquitectura de Smart Grid orientada a servicios. En los trabajos realizados se ha utilizado la propuesta definida por el proyecto de I+D europeo e-GOTHAM, con cuya infraestructura se ha tenido ocasión de realizar diferentes pruebas de las descritas en esta memoria. Aunque esta arquitectura está orientada a la creación de una Smart Grid, lo experimentado en este PFG podría encajar en otro tipo de aplicaciones. Dentro del estudio sobre las soluciones software actuales, se ha trabajado en la evaluación de la posibilidad de instalar un Enterprise Service Bus en el Raspberry Pi y en la optimización de la citada instalación. Una vez conseguida una instalación operativa, se ha desarrollado un controlador de un dispositivo físico (sensor/actuador), denominado Dispositivo Lógico, a modo de prueba de la viabilidad del uso del Raspberry Pi para actuar como elemento en el que instalar aplicaciones en entornos de Smart Grid o Smart Home. El éxito logrado con esta experimentación refuerza la idea de considerar al Raspberry Pi, como un importante elemento a tener en cuenta para el despliegue de servicios de Smart Cities o incluso en otros ámbitos tecnológicos. ABSTRACT. The current trend of telecommunication networks lead to think in a future based on the emerging concept of Smart Cities, whose objective is to ensure the urban development based on a sustainable model to respond the new necessities of the cities. Within the Smart cites we can include the concept of Smart Grid, which is based on management systems and efficient energy production, allowing a sustainable energy producing system, and that includes renewable energy sources. Systems of this type are shown to users as a set of services that allow users to interact with the system not only as a single customer, but also as other energy environment agent. Furthermore, distributed software systems are increasingly common in a telecommunications infrastructure more extensive and with more capabilities. Within this area of technology, service-oriented architectures have grown exponentially especially in the business sector. With systems based on these architectures, can be offered to businesses and users software systems based on the concept of service. With the progression of the actual hardware, the miniaturization of computers is increasing, without sacrificing the power of larger systems. An example is the Raspberry Pi, which contains a fully functional computer contained in the size of a pack of cigarettes, and with a very low cost. This PFG (Proyecto Fin de Grado) tries to combine the three concepts presented. Thus, it is intended to use the Raspberry Pi device as a deployment element integrated into a service oriented Smart Grid architecture. In this PFG, the one proposed in the European R&D e-GOTHAM project has been observed. In addition several tests described herein have been carried out using the infrastructure of that project. Although this architecture is oriented to the creation of a Smart Grid, the experiences reported in this document could fit into other applications. Within the study on current software solutions, it have been working on assessing the possibility of installing an Enterprise Service Bus in the Raspberry Pi and optimizing that facility. Having achieved an operating installation, it has been developed a driver for a physical device (sensor / actuator), called logical device, for testing the feasibility of using the Raspberry Pi to act as an element in which to install applications in Smart Grid and Smart Home Environments. The success of this experiment reinforces the idea of considering the Raspberry Pi as an important element to take into account in the deployment of Smart Cities services or even in other technological fields.
Resumo:
Los tipos de datos concurrentes son implementaciones concurrentes de las abstracciones de datos clásicas, con la diferencia de que han sido específicamente diseñados para aprovechar el gran paralelismo disponible en las modernas arquitecturas multiprocesador y multinúcleo. La correcta manipulación de los tipos de datos concurrentes resulta esencial para demostrar la completa corrección de los sistemas de software que los utilizan. Una de las mayores dificultades a la hora de diseñar y verificar tipos de datos concurrentes surge de la necesidad de tener que razonar acerca de un número arbitrario de procesos que invocan estos tipos de datos de manera concurrente. Esto requiere considerar sistemas parametrizados. En este trabajo estudiamos la verificación formal de propiedades temporales de sistemas concurrentes parametrizados, poniendo especial énfasis en programas que manipulan estructuras de datos concurrentes. La principal dificultad a la hora de razonar acerca de sistemas concurrentes parametrizados proviene de la interacción entre el gran nivel de concurrencia que éstos poseen y la necesidad de razonar al mismo tiempo acerca de la memoria dinámica. La verificación de sistemas parametrizados resulta en sí un problema desafiante debido a que requiere razonar acerca de estructuras de datos complejas que son accedidas y modificadas por un numero ilimitado de procesos que manipulan de manera simultánea el contenido de la memoria dinámica empleando métodos de sincronización poco estructurados. En este trabajo, presentamos un marco formal basado en métodos deductivos capaz de ocuparse de la verificación de propiedades de safety y liveness de sistemas concurrentes parametrizados que manejan estructuras de datos complejas. Nuestro marco formal incluye reglas de prueba y técnicas especialmente adaptadas para sistemas parametrizados, las cuales trabajan en colaboración con procedimientos de decisión especialmente diseñados para analizar complejas estructuras de datos concurrentes. Un aspecto novedoso de nuestro marco formal es que efectúa una clara diferenciación entre el análisis del flujo de control del programa y el análisis de los datos que se manejan. El flujo de control del programa se analiza utilizando reglas de prueba y técnicas de verificación deductivas especialmente diseñadas para lidiar con sistemas parametrizados. Comenzando a partir de un programa concurrente y la especificación de una propiedad temporal, nuestras técnicas deductivas son capaces de generar un conjunto finito de condiciones de verificación cuya validez implican la satisfacción de dicha especificación temporal por parte de cualquier sistema, sin importar el número de procesos que formen parte del sistema. Las condiciones de verificación generadas se corresponden con los datos manipulados. Estudiamos el diseño de procedimientos de decisión especializados capaces de lidiar con estas condiciones de verificación de manera completamente automática. Investigamos teorías decidibles capaces de describir propiedades de tipos de datos complejos que manipulan punteros, tales como implementaciones imperativas de pilas, colas, listas y skiplists. Para cada una de estas teorías presentamos un procedimiento de decisión y una implementación práctica construida sobre SMT solvers. Estos procedimientos de decisión son finalmente utilizados para verificar de manera automática las condiciones de verificación generadas por nuestras técnicas de verificación parametrizada. Para concluir, demostramos como utilizando nuestro marco formal es posible probar no solo propiedades de safety sino además de liveness en algunas versiones de protocolos de exclusión mutua y programas que manipulan estructuras de datos concurrentes. El enfoque que presentamos en este trabajo resulta ser muy general y puede ser aplicado para verificar un amplio rango de tipos de datos concurrentes similares. Abstract Concurrent data types are concurrent implementations of classical data abstractions, specifically designed to exploit the great deal of parallelism available in modern multiprocessor and multi-core architectures. The correct manipulation of concurrent data types is essential for the overall correctness of the software system built using them. A major difficulty in designing and verifying concurrent data types arises by the need to reason about any number of threads invoking the data type simultaneously, which requires considering parametrized systems. In this work we study the formal verification of temporal properties of parametrized concurrent systems, with a special focus on programs that manipulate concurrent data structures. The main difficulty to reason about concurrent parametrized systems comes from the combination of their inherently high concurrency and the manipulation of dynamic memory. This parametrized verification problem is very challenging, because it requires to reason about complex concurrent data structures being accessed and modified by threads which simultaneously manipulate the heap using unstructured synchronization methods. In this work, we present a formal framework based on deductive methods which is capable of dealing with the verification of safety and liveness properties of concurrent parametrized systems that manipulate complex data structures. Our framework includes special proof rules and techniques adapted for parametrized systems which work in collaboration with specialized decision procedures for complex data structures. A novel aspect of our framework is that it cleanly differentiates the analysis of the program control flow from the analysis of the data being manipulated. The program control flow is analyzed using deductive proof rules and verification techniques specifically designed for coping with parametrized systems. Starting from a concurrent program and a temporal specification, our techniques generate a finite collection of verification conditions whose validity entails the satisfaction of the temporal specification by any client system, in spite of the number of threads. The verification conditions correspond to the data manipulation. We study the design of specialized decision procedures to deal with these verification conditions fully automatically. We investigate decidable theories capable of describing rich properties of complex pointer based data types such as stacks, queues, lists and skiplists. For each of these theories we present a decision procedure, and its practical implementation on top of existing SMT solvers. These decision procedures are ultimately used for automatically verifying the verification conditions generated by our specialized parametrized verification techniques. Finally, we show how using our framework it is possible to prove not only safety but also liveness properties of concurrent versions of some mutual exclusion protocols and programs that manipulate concurrent data structures. The approach we present in this work is very general, and can be applied to verify a wide range of similar concurrent data types.
Resumo:
Several Architecture Description Languages (ADLs) are emerging as models to describe and represent system architectures. Among others, EAST-ADL language is highlighted. It represents an abstraction of embedded software systems for automobiles. Given the need to implement the EAST-ADL language, there are many modeling tools to perform this task. The scope of this thesis is a detailed comparison of three EAST-ADL editors: Papyrus, EATOP and MetaEdit +, providing a conceptual framework, describing the comparison criteria, and finally exemplifying thanks to the Brake-By-Wire use case which has been provided, and whose development is not the subject of this project. The motivation for developing this project is to provide comparison guide between these three modeling tools to facilitate developers choice when deciding the tool in which develop their work. RESUMEN. Diversos Lenguajes de Descripción de Arquitecturas (ADLs) están surgiendo como modelos para describir y representar arquitecturas de sistemas. Entre ellos es destacado el lenguaje EAST-ADL, que representa una abstracción de los sistemas de software embebido para automóviles. Ante la necesidad de implementar el lenguaje EAST-ADL, han surgido diversas herramientas de modelado que llevan a cabo esta tarea. El alcance de este proyecto consiste en una comparación detallada de tres editores EAST-ADL: Papyrus, EATOP y MetaEdit+, proporcionando un marco conceptual, describiendo los criterios de comparación y finalmente ejemplificando con el caso de uso Brake-By-Wire que nos ha sido proporcionado, y cuyo desarrollo no es sujeto de este proyecto. La motivación para desarrollar este proyecto parte de proporcionar al usuario una guía comparativa de estas tres herramientas de modelado para facilitar su elección a la hora de desarrollar su trabajo.
Resumo:
En el presente trabajo fin de máster se pretende plantear una metodología que permita realizar un análisis de riesgo de inundación por avenidas torrenciales en una zona concreta de la Isla de Mallorca (Islas Baleares), el Pla de Sant Jordi, en el cual se vienen dando problemas de inundación de forma reiterada desde los años 70. Se propone afrontar el problema desde el método de análisis hidrológico-hidráulico con el fin de obtener una cartografía de la zona de estudio donde aparezcan indicadas las áreas susceptibles o peligrosas a ser inundadas. Todo esto se llevará a cabo empleando las herramientas que nos ofrecen las TIG, aprovechando el potencial que tienen estas en la correlación espacial de los elementos del territorio. Sus aplicaciones en el campo de los riesgos naturales son indispensables para obtener unos resultados óptimos, y poder basar en ellos, la toma de decisiones fundamentales por parte de los organismos públicos o privados para proteger a la población de cara a los desastres naturales.
Resumo:
Este trabajo presenta el desarrollo de una aplicación destinada al análisis de secuencias de imágenes para la detección de movimiento en la escena. Se trata de un campo importante de la Visión Artificial, con múltiples aplicaciones entre las que se encuentra la videovigilancia con fines de seguridad, el control de tráfico, el movimiento de personas o el seguimiento y localización de objetos entre otras muchas. Para ello se utilizan métodos de análisis como son el de Lucas-Kanade y Gauss-Seidel, que obtienen el denominado flujo óptico. Este describe el movimiento que ha tenido lugar entre las imágenes y su fundamento estriba en la determinación de las variables espaciales y temporales en las imágenes, siendo precisamente la variable temporal la que introduce el concepto fundamental para el análisis del movimiento a partir de las imágenes captadas en diferentes instantes de tiempo dentro de la secuencia analizada. Para el desarrollo de la aplicación se han utilizado técnicas propias del tratamiento de la Visión Artificial, así como la metodología proporcionada por la Ingeniería del Software. Así, se ha realizado una especificación de requisitos, se ha elaborado y seguido un plan de proyecto y se ha realizado un análisis de alto nivel, que se materializa en el correspondiente diseño e implementación, junto con las pruebas de verificación y validación, obviamente adaptados en todos los casos a las dimensiones del proyecto, pero que establecen claramente los planteamientos básicos para el desarrollo de una aplicación a nivel empresarial. La aplicación planteada se enmarca perfectamente dentro del paradigma, hoy en día en pleno auge, conocido como el Internet de las Cosas (IoT). El IoT permite la intercomunicación entre dispositivos remotos, de forma que mediante la correspondiente comunicación a través de conexiones a Internet es posible obtener datos remotos para su posterior análisis, bien en nodos locales o en la nube, como concepto íntimamente relacionado con el IoT. Este es el caso de la aplicación que se presenta, de suerte que los métodos de procesamiento de las imágenes pueden aplicarse localmente o bien transmitir las mismas para su procesamiento en nodos remotos.
Resumo:
La Realidad Aumentada es una tecnología que permite aumentar el mundo real que percibimos con elementos virtuales interactivos. En esta memoria describimos el uso de esta tecnología, entre otras, para obtener información a tiempo real sobre películas. La aplicación que describimos es capaz de recoger toda la información de una película con solo enfocar su foto de portada con la cámara, pudiendo guardar y/o compartir esta información. Además, explicaremos el sistema de recomendación para grupos de personas, que también es una funcionalidad de nuestra aplicación. Este sistema recoge las valoraciones de todos los usuarios para luego hacer una recomendación grupal. Veremos de una manera detallada cómo ha sido el proceso evolutivo desde la idea inicial hasta llegar a una aplicación real.
Resumo:
El póker en todas sus modalidades, tanto presenciales como online, lleva mucho tiempo siendo uno de los juegos de apuestas y azar más jugados del mundo. Dentro de los diferentes tipos de partidas de póker (Omaha, NLHE, PLHE, etc.) el más jugado es el NLHE, sobre el cual se va a desarrollar estetrabajo de fin de grado; particularmente la versión online de la aplicación PokerStars. Existen herramientas para recoger información de estas partidas (PokerTracker, Holdem Manager), pero de la persona que los maneje depende saber el uso de los datos que nos dan estas herramientas, además de la información de las tablas de rangos de autores como Janda (Janda, 2013), o la clasificación de manos de Sklansky-Chubukov (Muñoz, 2009). Con este trabajo queremos dar un apoyo a las personas que se inicien en el mundo del póker a tomar decisiones acertadas aunque no sean óptimas contra todos los jugadores. Algunos jugadores jugaran peor que la óptima y serán objetivos para ser “explotados” y así aumentar nuestro beneficio. Para saber cuáles son estos jugadores explotables, usaremos los datos que nos proporciona la herramienta PokerTracker 4. A la hora de obtener los datos en el momento de la jugada hemos preparado un reconocedor de imágenes adaptado a PokerStars para recoger los datos que hay en la pantalla en el momento de nuestro turno y así decidir lo que debemos hacer. También se ha implementado un entrenador de jugadas para aprender qué hacer frente a unas jugadas, que utiliza unos datos introducidos por el usuario o generados aleatoriamente, y dentro de las aleatorias se pueden simplificar para jugadores noveles a dos de las situaciones más comunes: Open Raise y 3-bet.
Resumo:
En un mundo dominado por las nuevas tecnologías, donde en cada casa podemos encontrar más dispositivos tecnológicos que personas, seguimos teniendo un sistema educativo basado en libros de texto, cuaderno y bolígrafo. Esto, combinado con una generación de estudiantes considerados como nativos digitales (Prensky, 2010), está haciendo que los resultados académicos sean cada vez peores, aumentando el fracaso escolar (Fernández Pérez, 1986). Sin embargo, dada la aparición de los llamados videojuegos educativos, o "serious games", y la digitalización de las aulas, se ha demostrado que aprender jugando no sólo es más divertido, sino que además es más efectivo (Wong et al., 2007). Pero, cuando un centro educativo decide invertir dinero en traer nuevas tecnologías a las aulas, surge la siguiente pregunta: ¿en qué tipo de dispositivo debo invertir? Hasta la aparición de las tablets, esta pregunta tenía una clara respuesta, ordenadores. Pero con la llegada de éstas, la respuesta no está tan clara. ¿Qué dispositivo funciona mejor en las aulas? Otro ámbito que pierde adeptos entre los más jóvenes con la llegada de tanta tecnología a los hogares, es el mundo del teatro. Cada vez son menos los jóvenes interesados en acudir al teatro, convirtiendo a éste en un espectáculo de minorías. Una vez más los videojuegos educativos pueden ser una solución, como se demuestra en la tesis doctoral de Borja Manero (Manero, Torrente, Serrano, Martínez-Ortiz, & Fernández-Manjón, 2015). Esto llamó la atención del Compañía Nacional de Teatro Clásico (CNTC), queriendo realizar más videojuegos educativos que ayuden a incrementar el interés de los más jóvenes por el teatro. Por lo tanto, tenemos dos retos por delante: el principal es encontrar el mejor dispositivo para aplicar estos videojuegos educativos. Esto nos lleva a un segundo objetivo. Desarrollar el videojuego que servirá como herramienta para el desarrollo del experimento. Desarrollamos un videojuego educativo, basado en la obra de teatro “La Cortesía de España”, representada por la CNTC. Se realizaron varios procesos de adaptación para transformar una obra de teatro clásico en un videojuego divertido y útil para la investigación. Utilizando este videojuego como herramienta educativa, realizamos un experimento en el colegio de la Comunidad de Madrid Benito Pérez Galdós(Móstoles), proporcionándonos más de 150 alumnos, de entre 9 y 11 años, para participar en el mismo. Este experimento tiene como fin demostrar qué dispositivo funciona mejor con esta generación: los dispositivos móviles (tablets) o dispositivos fijos (ordenadores). Aunque previamente los investigadores sospechaban que el resultado del experimento sería claramente a favor de las tablets, por su cercanía con los jóvenes a los que estaba dirigido, los resultados arrojan otra conclusión completamente distinta. Efectivamente los más jóvenes utilizan más las tablets que los ordenadores para jugar, pero, analizados los resultados, son los ordenadores los que mejor funcionan como herramienta de aprendizaje.
Resumo:
Para la creación del software Campus Virtual de la Universidad El Salvador (CAVIUES), se determinó la utilización de un estilo de administración de proyectos iterativo e incremental, con suficientes puntos de verificación como para poder tomar en cuenta las necesidades de cambios en el desarrollo del sistema, sin desviaciones mayores a planes realizados con sumo detalle, cuidado y dificultad, seleccionando así un método ágil que presenta la característica primordial de adaptarse para dar respuesta pronta y eficaz a los inevitables cambios. Así, se eligió al Microsoft Solutions Framework (MSF) como modelo de proceso que dirigirá el orden de las actividades del proyecto1. Este proporciona un sistema de modelos, principios, y pautas para dar soluciones a empresas que diseñan y desarrollan de una manera que se asegure de que todos los elementos de un proyecto, tales como gente, procesos, y herramientas, puedan ser manejados con éxito. De esta manera, para el análisis y determinación de requerimientos y posterior diseño del Sistema CAVIUES, se ha utilizado la notación del Lenguaje Unificado de Modelado (UML, por sus siglas en inglés, Unified Modelling Language), el cual constituye el lenguaje de modelado de sistemas de software más conocido en la actualidad; aún cuando todavía no es un estándar oficial, está apoyado en gran manera por el OMG (Object Management Group). Es un lenguaje estándar para la especificación, visualización, construcción y documentación de artefactos de sistemas de Software, muy bueno para la modelación de negocios y otros sistemas.
Resumo:
Cada día vemos cómo la programación orientada a objetos se consolida más en todas las áreas de aplicación de la informática. Ya no solamente se utiliza para el desarrollo de interfases gráficas usuario sino también en bases de datos, sistemas operativos, software de comunicaciones, desarrollo de aplicaciones en ambientes de red, software de gestión comercial, etc. En la programación estructurada tradicional, las funciones y los datos se manejan de forma separada, mientras que en la programación orientada a objetos las funciones y los datos están fuertemente ligados en entes llamados objetos. Al utilizar esta nueva filosofía de programación, se codifican la estructura y el comportamiento de los diferentes objetos, como también las relaciones e interacciones que existen entre ellos
Resumo:
Para entender nuestro proyecto, debemos comprender DEVS. Dentro de los formalismos más populares de representación de sistemas de eventos discretos se encuentra DES. En la década de los 70, el matemático Bernard Zeigler propuso un formalismo general para la representación de dichos sistemas. Este formalismo denominado DEVS (Discrete EVent System Specification) es el formalismo más general para el tratamiento de DES. DEVS permite representar todos aquellos sistemas cuyo comportamiento pueda describirse mediante una secuencia de eventos discretos. Estos eventos se caracterizan por un tiempo base en el que solo un número de eventos finitos puede ocurrir. DEVS Modelado y Simulación tiene múltiples implementaciones en varios lenguajes de programación como por ejemplo en Java, C# o C++. Pero surge la necesidad de implementar una plataforma distribuida estable para proporcionar la mecánica de interoperabilidad e integrar modelos DEVS diversificados. En este proyecto, se nos dará como código base el core de xDEVS en java, aplicado de forma secuencial y paralelizada. Nuestro trabajo será implementar el core de manera distribuida de tal forma que se pueda dividir un sistema DEVS en diversas máquinas. Para esto hemos utilizado sockets de java para hacer la transmisión de datos lo más eficiente posible. En un principio deberemos especificar el número de máquinas que se conectarán al servidor. Una vez estas se hayan conectado se les enviará el trabajo específico que deberán simular. Cabe destacar que hay dos formas de dividir un sistema DEVS las cuales están implementadas en nuestro proyecto. La primera es dividirlo en módulos atómicos los cuales son subsistemas indivisibles en un sistema DEVS. Y la segunda es dividir las funciones de todos los subsistemas en grupos y repartirlos entre las máquinas. En resumen el funcionamiento de nuestro sistema distribuido será comenzar ejecutando el trabajo asignado al primer cliente, una vez finalizado actualizará la información del servidor y este mandara la orden al siguiente y así sucesivamente.
Resumo:
En el año 2016 se vendieron en EE.UU más de un millón de Unmanned Aerial Vehicles (UAVs, Vehículos aéreos no tripulados), casi el doble que el año anterior, país del que se dispone de información. Para el año 2020 se estima que este mercado alcance los 5.600 millones de dólares en todo el mundo, creciendo a un ritmo del 30% anual. Este crecimiento demuestra que existe un mercado en expansión con muchas y diversas oportunidades de investigación. El rango de aplicaciones en los que se utiliza este tipo de vehículos es innumerable. Desde finales del s.XX, los UAVs han estado presentes en multitud de aplicaciones, principalmente en misiones de reconocimiento. Su principal ventaja radica en que pueden ser utilizados en situaciones de alto riesgo sin suponer una amenaza para ningún tripulante. En los últimos años, la fabricación de vehículos asequibles económicamente ha permitido que su uso se extienda a otros sectores. A día de hoy uno de los campos en los que ha adquirido gran relevancia es en agricultura, contribuyendo a la automatización y monitorización de cultivos, pero también se ha extendido su uso a diferentes sistemas, tales como seguridad, cartografía o monitorización, entre otros [1]. Es en esta situación en la que se propone el proyecto SALACOM [2], que explora la posibilidad de utilizar esta tecnología en sistemas de repuesta rápida para la detección y contención de vertidos contaminantes en entornos acuáticos con el apoyo de vehículos autónomos marinos de superficie (USV, Unmanned Surface Vehicles). En el mencionado proyecto se pretende utilizar sistemas UAVs para detectar y analizar las zonas de vertido y proveer la información respecto a la localización y las técnicas de contención adecuadas a los sistemas USV. Una vez se haya realizado el análisis de la situación del vertido, los USV trabajarían conjuntamente con los UAVs para desplegar las barreras de protección seleccionadas en la zona afectada. Para esto, los UAVs o drones, términos similares en lo que respecta a este proyecto y que a lo largo de esta memoria se usarán indistintamente, deben ser capaces de despegar desde los USV y volver a aterrizar sobre ellos una vez realizada su labor. El proyecto que se describe en la presente memoria se centra en la fase de aterrizaje y, más concretamente, en la detección de la plataforma seleccionada como plantilla mediante técnicas de tratamiento de imágenes. Esto serviría como sistema de apoyo para guiar el dron hacia la plataforma para que pueda realizar el descenso correctamente y finalizar así su misión o bien para realizar operaciones de recarga de la batería. El dron está equipado con la correspondiente cámara de visión a bordo, con la que obtiene las imágenes, las procesa e identifica la plataforma para dirigirse hacia ella, si bien, dado que el sistema de procesamiento de imágenes no se encuentra totalmente operativo, este trabajo se centra en el desarrollo de una aplicación software independiente del sistema de visión a bordo del dron, basada en el desarrollo de técnicas de reconocimiento de la plataforma. La plataforma a utilizar proviene de una patente [3], consistente en una figura geométrica con formas características, de muy difícil aparición en entornos de exterior. La figura pintada en negro se halla impresa sobre un panel de fondo blanco de 1m × 1m de superficie. En este trabajo se han explorado diversas opciones disponibles para realizar la identificación de las regiones de interés. El principal objetivo es realizar la selección de una tecnología que pueda cumplir potencialmente con los criterios necesarios para llevar a cabo la tarea y seleccionar los métodos de detección adecuados para realizar la identificación de la figura contenida en la plataforma. Se ha pretendido utilizar tecnologías de fácil uso, amplío soporte y, cuando ha sido posible, de código libre. Todo ello integrado en una aplicación informática, que es la que se presenta en el presente trabajo.
Resumo:
Podemos definir como música minimalista toda aquella música que es creada a partir de recursos limitados. Algunas de las características más comunes de esta corriente son el uso de armonías o ritmos constantes, reiteración de frases y utilización de transformaciones lentas. La sencillez que caracteriza a este tipo de música nos permite analizar algunas de estas características computacionalmente. Entre ellas, podemos destacar la utilización de breves figuras melódicas, a las que llamaremos motivos, y el uso de variaciones musicales sobre estos. Con el fin de analizar estas características, se ha desarrollado un asistente de composición musical con el que, a partir de uno o varios motivos, el usuario podrá crear composiciones musicales de carácter minimalista utilizando variaciones automatizadas. El asistente cuenta con una interfaz que permite gestionar los motivos con facilidad, mostrar su partitura, reproducirlos, aplicar variaciones sobre ellos y editarlos de forma manual. Para la parte musical de la aplicación se ha utilizado notación ABC, una notación musical estandarizada muy completa que permite leer y editar música con facilidad.