Grado en Ingeniería Informática - Ingeniería del Software

URI permanente para esta colecciónhttps://hdl.handle.net/11441/58410

Examinar

Envíos recientes

Mostrando 1 - 10 de 10
  • Acceso AbiertoTrabajo Fin de Grado
    Tecnologías para procesadores cuánticos
    (2023) Espinosa Rodríguez, Mario; Cascado Caballero, Daniel; Universidad de Sevilla. Departamento de Arquitectura y Tecnología de Computadores
    El área de la computación cuántica es una de las más prometedoras en la búsqueda de un nuevo paradigma de computación post-Moore. En este trabajo se proporciona la información necesaria para conocer los principios de mecánica cuántica en los que se basa este campo de las ciencias de la computación, partiendo del bloque más básico de los computadores cuánticos, el qubit, y ascendiendo en nuestra escala de abstracción a través de conceptos como las puertas cuánticas, los conjuntos universales de puertas o los criterios para la correcta implementación de un ordenador cuántico. Acto seguido, se realiza una revisión de los conceptos diferenciativos, la historia y el estado del arte de tres de las tecnologías cuánticas de capa física más avanzadas en el área: trampas de iones, superconductores y fotónicas, y también se dedica una sección al resto de tecnologías físicamente implementadas que no ha sido posible tratar en más detalle. También se definen algunas de las métricas y algoritmos más utilizados a la hora de comparar y acotar las capacidades de distintos computadores cuánticos, tras lo cual se proporciona un vistazo al estado actual del software diseñado para máquinas cuánticas, y finalmente se concluye el trabajo con una opinión sobre el aspecto del futuro cercano de este campo.
  • Acceso AbiertoTrabajo Fin de Grado
    Scrum RPG
    (2024) Arrans Vega, Isabel; Bwye Lera, Matthew; Müller Cejás, Carlos; Parejo Maestre, José Antonio; Universidad de Sevilla. Departamento de Lenguajes y Sistemas Informáticos
    Scrum es una serie de buenas prácticas de trabajo cada vez más utilizadas en la ingeniería del software, y fácilmente extrapolables a otros ámbitos de trabajo. Se basa en gestionar el trabajo en equipo a través de una serie de ceremonias que tienen propósitos distintos. Nosotros perseguimos exponer una nueva forma de enseñar estas técnicas y conceptos de una forma interactiva y divertida, pudiendo hacer que el usuario ya tenga experiencia ficticia en aplicar estas técnicas, adquiriendo una capa más de aprendizaje que la que obtendría leyendo acerca de Scrum. Con este objetivo, creamos un videojuego que educase en los principios de Scrum. El sistema de juego está basado en los RPG por turnos, donde el jugador toma control de un equipo de Scrum, y toma decisiones globales (es decir, el jugador no es un personaje particular, sino que controla a todos). Si el jugador aplica Scrum correctamente, debería poder superar los obstáculos que se le presenten con facilidad, y entenderá la importancia de sus acciones, y su paralelismo con la realidad. Scrum se divide en 4 ceremonias: Sprint Planning, Daily Scrum, Sprint Review y Sprint Retrospective. Cada una de estas ceremonias tiene su propio propósito, y completarlas todas da por terminado el Sprint actual. En nuestro proyecto se recorren todas, exponiendo las principales funciones de cada una. Durante el Sprint Planning realizamos un esbozo de lo que se hará en el Sprint, en las Daily Scrums se planean avances diarios en el Sprint, durante la Sprint Review se revisa el resultado del Sprint y la Sprint Retrospective nos ayuda a tomar decisiones para el futuro Sprint en base a un análisis del Sprint previo. Para la realización de este proyecto, hicimos uso de Unity, un motor de desarrollo de videojuegos, y usamos un framework para facilitar la implementación del tipo de juego que diseñamos. El framework nos daba una base de datos con tablas creadas para los distintos tipos de elementos que necesitaríamos, y tenía funcionalidades básicas relativas al combate de los juegos RPG implementadas.
  • Acceso AbiertoTrabajo Fin de Grado
    Análisis y estudio del grafo de transacciones de Bitcoin
    (2022) Claros Barrero, Fernando; González Díaz, Rocío; Atienza Martínez, María Nieves; Universidad de Sevilla. Departamento de Matemática Aplicada I (ETSII)
    Durante los últimos años, el mundo del Bitcoin y las criptomonedas ha revolucionado por completo el concepto de pago y mercado digital. Este área tan innovadora ha despertado mucho interés entre las grandes empresas y las comunidades de investigadores, que se han aventurado en la búsqueda de herramientas que nos brinden la capacidad de entender e interpretar los fenómenos que suceden dentro de este área. Es por este motivo, que he decido implementar un sistema de procesamiento y análisis de transacciones Bitcoin. El objetivo del proyecto es la obtención de los datos de la cadena de bloques de Bitcoin, para su posterior conversión en un grafo y el estudio de las propiedades matemáticas de éste. Para llevar acabo este proyecto, se han aplicado metodologías ágiles y se ha implantado un sistema de planificación de proyectos basadas en las pautas del PMBOK (Project Management Body Of Knowledge [1]), garantizando en todo momento un desarrollo eficiente y una planificación óptima.
  • Acceso AbiertoTrabajo Fin de Grado
    Visualizando la evolución de los casos de COVID-19 con TDA
    (2021) Casasola Calzadilla, María; González Díaz, Rocío; Paluzo Hidalgo, Eduardo; Universidad de Sevilla. Departamento de Matemática Aplicada I (ETSII)
    A continuación, se expone en este documento la memoria del trabajo de fin de grado basado en el análisis de datos de COVID-19 en España a través del algoritmo BallMapper. La idea general de este trabajo se basa en sacar conclusiones que no habían sido expuestas anteriormente sobre el COVID-19, gracias a la aplicación del algoritmo mencionado, y confirmar otras que ya se habían hallado. Para conseguir esto, antes, se han debido escoger los conjuntos de datos sobre los que realizar las pruebas, realizando una limpieza y preprocesado de los datos y aplicando finalmente el algoritmo BallMapper. Tras la aplicación, se han analizado los resultados obtenidos para concluir con las ideas generales del estudio. Gracias a este estudio se han conseguido hallar nuevas deducciones sobre la situación de pandemia vivida durante el año 2020 y que aún sigue muy presente en nuestras vidas.
  • Acceso AbiertoTrabajo Fin de Grado
    Detección de Fake News mediante técnicas de Deep Learning
    (2020) Alonso Valenzuela, Juan Carlos; Segura Rueda, Sergio; Universidad de Sevilla. Departamento de Lenguajes y Sistemas Informáticos
    En el contexto de los medios de comunicación, las noticias falsas (también conocidas como fake news), son un tipo de noticia diseñada y emitida con la intención deliberada de engañar, inducir a error, manipular decisiones personales o desprestigiar a una determinada entidad o persona. Al presentar hechos falsos como si fuesen reales, estas noticias constituyen una gran amenaza para la credibilidad de los medios serios y los periodistas profesionales. El objetivo de este proyecto es desarrollar un sistema de detección de fake news aplicando diversos métodos de clasificación y realizando un estudio comparativo entre ellos, para así determinar cuál es el más apropiado para resolver el problema, indicando siempre las ventajas e inconvenientes de cada uno. El método empleado para alcanzar el objetivo del proyecto ha consistido en aplicar un total de nueve modelos que emplean las últimos avances en el campo del procesamiento del lenguaje natural y las redes neuronales. Para realizar la clasificación, estas redes han sido entrenadas utilizando el TI-CNN dataset [1], creado por un equipo de investigadores compuesto por miembros de las universidades de Pekín (Beihang University), Chicago (University of Illinois) y Florida (Florida State University), y que ya ha sido empleado en varias publicaciones científicas. Además de aplicar modelos neuronales avanzados, también se emplearán otros métodos más simples que permitirán obtener una mayor comprensión del conjunto de datos y realizar una comparación con los resultados devueltos con respecto a las redes más complejas, cumpliendo la función de baseline. Para la implementación de estos algoritmos se han utilizado algunas de las librerías más extendidas en el campo del Machine Learning, como TensorFlow, scikit-learn, nltk, numpy y pandas, entre otras. Como resultado de este proyecto, se ha logrado obtener un F1-Score del 96,66%, tras realizar la optimización de los hiperparámetros de la red y preprocesar los datos. Estos resultados superan a los de la publicación original, que obtuvo un F1-Score del 92,1%. La aplicación de métodos más simples, además de cumplir la función de baseline, ha servido para detectar sesgos y limitaciones en el conjunto de datos que explican hasta cierto punto los buenos resultados obtenidos por la publicación original. Como conclusión, se han cumplido todos los objetivos del proyecto con éxito, además de mejorar los resultados de la publicación original. El empleo de la metodología Scrum para llevar a cabo el proyecto ha sido un factor determinante para la finalización de este dentro de los plazos acordados y ha permitido organizar las tareas a realizar en sprints. Gracias a la realización del proyecto, se han adquirido conocimientos de análisis de datos, Machine Learning, Deep Learning y procesamiento del lenguaje natural que son muy demandados en la actualidad y pueden aplicarse para resolver una gran cantidad de problemas. También se ha obtenido experiencia práctica en labores de investigación, ya que para la consecución del proyecto ha sido necesario leer y analizar una gran cantidad de artículos científicos.
  • Acceso AbiertoTrabajo Fin de Grado
    Controlling videogame elements using pre-trained neural networks in Unity
    (2020) Bermudo Bayo, Miguel; Hernández Salmerón, Inmaculada Concepción; Borrego Díaz, Agustín; Universidad de Sevilla. Departamento de Lenguajes y Sistemas Informáticos
    With this Project we aspire to answer to the need game developers have to develop AI for their intelligent Agents in a faster, less costly way. we chose this project as it combines my passion for developing videogame with my curiosity for state-of-the-art technology. We prove how intelligent agents can replace manually written AI and perform jobs with minimal supervision. For this we will be using Proximal Policy Optimization algorithms and machine learning packages provided for our Game Engine of choice, unity in this case. We used SCRUM methodology to guide our development and time scheduling needs. As well as several tools for development such as IDE, source control etc. We’ve concluded in this study that these agents although intelligent are very costly, needing very strong hardware to cover its enormous computing needs, as well as the time taken to train them.
  • Acceso AbiertoTrabajo Fin de Grado
    Silence/Noise en el ámbito educativo y profesional
    (2021) Sola Espinosa, Fernando Luis; Hernández Salmerón, Inmaculada Concepción; Borrego Díaz, Agustín; Universidad de Sevilla. Departamento de Lenguajes y Sistemas Informáticos
    Hoy en día, el desarrollo web es una de las vertientes más demandadas en la industria informática a nivel nacional e internacional. Su enseñanza en el ámbito universitario debe mirar por el equilibrio entre, el uso de tecnologías y frameworks actuales y perdurables, y la asimilación de los conceptos fundamentales de este área. Frente a ello, el framework educativo Silence ofrece un entorno uni ficado para el desarrollo de bases de datos relacionales que den soporte a una aplicación web mediante una API REST, con una filosofía de desarrollo sencillo y ágil, simplifi cando esta tarea y diferenciando claramente backend y frontend. En este contexto se enmarca también la herramienta Noise, que aprovecha la homogeneidad de los proyectos Silence desarrollados por alumnos para desplegarlos en un servidor y facilitar la labor de corrección y evaluación por parte del profesorado. En este sentido, se ha trabajado en la implementación de un frontend para este sistema, el cual cuenta con distintas herramientas, métricas e indicadores que sirven de ayuda al docente. Por otro lado, se ha realizado un estudio de la idoneidad del uso de Silence en un proyecto comercial real, fuera del ámbito académico, mediante el análisis, diseño e implementación de un sistema de información para una empresa de revisión de sistemas contraincendios. Este análisis ha demostrado su facilidad de uso, que lo hace idóneo de cara al alumnado; no obstante, se ha puesto en relieve que carece, a día de hoy, de ciertas funcionalidades ofrecidas por otros frameworks y, sobre todo, provee pocas herramientas y medios de automatización para el desarrollo frontend, lo cual lo aleja de ser conveniente para un uso de tipo profesional o comercial.
  • Acceso AbiertoTrabajo Fin de Grado
    Project Atlas: an Encoder Application for Apple Watch
    (2018) Alcalá Gamero, Guillermo; Trinidad Martín Arroyo, Pablo; Molina Cantero, Alberto Jesús; Universidad de Sevilla. Departamento de Lenguajes y Sistemas Informáticos; Universidad de Sevilla. Departamento de Tecnología Electrónica
    One of the reasons that led me to choose this degree was the will to solve problems by myself. I may find something wrong, or just something I thought that could be improved and I didn’t want to wait for anybody to solve it. During these past years I start lifting weights. I love it and when I love something I want to learn more about it. During this learning I found that some training systems, like the Conjugate System, use the bar speed as a variable during the execution of a lift. However, I didn’t have a way to measure it. The available hardware in the market is heavy and expensive. I had the idea that this could be achieved using the built-in accelerometer of a much lighter and cheaper wearable. With this idea, I started this project: An Apple Watch application to measure the speed on a weight lifting lift. During the development I had to learn how to deal with sensors, learn complex algorithms to filter data, ditch part of the work because the results were not what I expected, and design a real application to solve a problem I found in my everyday life.
  • Acceso AbiertoTrabajo Fin de Grado
    ULAN : Diseño e implementación de un lenguaje de programación matemático
    (2019) Castillo Delgado, Javier; Parejo Maestre, José Antonio; Universidad de Sevilla. Departamento de Lenguajes y Sistemas Informáticos
  • Acceso AbiertoTrabajo Fin de Grado
    Gitbug: Predicción de errores en repositorios de Git
    (2016) Rojas Jiménez, Álvaro; Segura Rueda, Sergio; Universidad de Sevilla. Departamento de Lenguajes y Sistemas Informáticos
    Realizar pruebas software de manera correcta es un ejercicio sumamente importante ya que depurar, testear, y las actividades de verificación pueden fácilmente suponer de un 50 a un 75 por ciento del coste total de desarrollo lo que implica que no es posible realizar pruebas para todo y que se debe priorizar a la hora de realizar pruebas. Cuanto más complejo se vuelve el software y más grande, menos productivo es. Con el crecimiento del tamaño de los proyectos de software, y la complejidad del testeo del código Orientado a Objetos, las aplicaciones tienen millones de combinaciones, estados y caminos. Es imposible para alguien imaginar cada posible estado, incluso cada posible solución. Numerosos estudios nos muestran que el coste de arreglar un defecto o error en nuestro programa se ve magnificado en función de la fase en que se encuentre. Esto significa que reparar un bug en la fase de mantenimiento puede costar 100 veces más que en la fase de desarrollo. Gitbug es una aplicación que busca focalizar los esfuerzos tanto de las pruebas como de la gestión de incidencias mediante algoritmos de predicción de errores. A partir de la ruta a un repositorio Git o ficheros con información sobre ese repositorio, GitBug aplica distintas estrategias de análisis del código fuente para predecir la tendencia a fallos de cada uno de los ficheros del repositorio. A continuación, esa información puede ser visualizada en un cuadro de mandos interactivo. Actualmente GitBug integra tres algoritmos distintos de predicción de errores basados en cambios, arreglos y numero de desarrolladores. En Gitbug, un algoritmo de predicción de errores otorga una puntuación a un fichero según varios factores siendo esta puntuación relativa al resto de ficheros y cuyo valor indica si es más o menos propenso a tener errores. Esto ofrece una serie de ventajas: - Ayuda al tester a priorizar los esfuerzos de las pruebas. - Es completamente automático e independiente del lenguaje de programación. - Útil durante todas las etapas del desarrollo y para distintos roles: desarrolladores, testers, gestores. La idea es ofrecer un servicio muy visual, de manera que los usuarios puedan comprobar de manera rápida e intuitiva los resultados de dichos algoritmos mediante gráficos y tablas de resultados. En el desarrollo de Gitbug destaca el uso de Java 1.8, así como Node.js. Con ellos se desarrolla la generación de estadísticas y la interfaz de usuario respectivamente, y se hace uso de los servicios de gráficos de Google Charts y CanvasJs. En cuanto a la lógica de la aplicación, se han elegido varios patrones de diseño para su realización, en concreto, los patrones factoría, plantilla y comando. Para la gestión y control de desarrollo del proyecto, control de tareas y administración de los tiempos de implementación de la solución se han usado taiga.io, Astah para generar los diagramas y Balsamiq Mockups 3 para generar los bocetos de las pantallas, Git para el control de versiones y repositorio de código y JUnit para el desarrollo de pruebas unitarias.