Información general


Tipo de asignatura: obligatoria

Coordinador: Juan José Pons López

trimestre: Segundo trimestre

Créditos: 6

Profesorado: 

José Roble Alcobé
Alfredo Rueda Unsain 

Curso académico: 2025

Curso de impartición: 3

Lenguas de impartición


  • Inglés

Competencias / Resultados de aprendizaje


competencias básicas
  • B2_Que los estudiantes sepan aplicar sus conocimientos en su trabajo o vocación de una forma profesional y tengan las competencias que demuestran mediante la elaboración y defensa de argumentos y la resolución de problemas dentro de su área de estudio

     

  • B3_Que los estudiantes tengan la capacidad de reunir e interpretar datos relevantes (normalmente dentro de su área de estudio), para emitir juicios que incluyan una reflexión sobre temas relevantes de carácter social, científico o ético

     

  • B4_Que los estudiantes puedan transmitir información, ideas, problemas y soluciones a un público tan especializado como no especializado

     

  • B5_Que los estudiantes hayan desarrollado aquellas habilidades de aprendizaje necesarias para emprender estudios posteriores con un alto grado de autonomía

     

Competencias específicas
  • EFB6_Conocimiento adecuado del concepto de empresa, marco institucional y jurídico de la empresa. Organización y gestión de empresas

     

  • EIS1_Capacidad para desarrollar, mantener y evaluar servicios y sistemas software que satisfagan todos los requisitos del usuario y que se comporten de forma fiable y eficiente, sean asequibles de desarrollar y mantener y cumplan normas de calidad, aplicando las teorías, principios, métodos y prácticas de la ingeniería del software

     

  • EIS2_Capacidad para valorar las necesidades del cliente y especificar los requisitos software para satisfacer estas necesidades, reconciliando objetivos en conflicto, mediante la búsqueda de compromisos aceptables, dentro de las limitaciones derivadas del coste, del tiempo, de la existencia de sistemas ya desarrollados y de las propias organizaciones

     

  • EIS3_Capacidad para dar solución a problemas de integración en función de las estrategias, estándares y tecnología disponibles

     

  • EIS4_Capacidad de identificar y analizar problemas y diseñar, desarrollar, implementar, verificar y documentar soluciones software sobre la base de un conocimiento adecuado de las teorías, modelos y técnicas actuales

     

  • EIS5_Capacidad de identificar, evaluar y gestionar los riesgos potenciales asociados que se puedan presentar

     

  • EIS6_Capacidad para diseñar soluciones apropiadas en uno o más dominios de aplicación, utilizando métodos de la ingeniería del software que integren aspectos éticos, sociales, legales y económicos

     

  • ESI1_Capacidad para integrar soluciones de Tecnologías de la Información y de las Comunicaciones y procesos empresariales para satisfacer las necesidades de información de las organizaciones, permitiendo alcanzar sus objetivos de forma efectiva y eficiente, consiguiendo así ventajas competitivas

     

  • ESI2_Capacidad para determinar los requisitos de los sistemas de información y comunicación de una organización, atendiendo a aspectos de seguridad y cumplimiento de la normativa y legislación vigente

     

  • ESI3_Capacidad para participar activamente en la especificación, diseño, implementación y mantenimiento de los sistemas de información y comunicación

     

  • ES14_Capacidad para comprender y aplicar los principios y prácticas de las organizaciones, de modo que puedan ejercer como enlace entre las comunidades técnicas y de gestión de una organización y participar activamente en la formación de los usuarios

     

  • ESI5_Capacidad para comprender y aplicar los principios de la evaluación de riesgos y aplicarlos correctamente en la elaboración y ejecución de planes de actuación

     

  • ES16_Capacidad para comprender y aplicar los principios y técnicas de gestión de la calidad y de la innovación tecnológica en las organizaciones

     

competencias transversales
  • T1_Que los estudiantes conozcan un tercer idioma, que será preferentemente el inglés, con un nivel adecuado de forma oral y por escrito, de acuerdo con las necesidades que tendrán las graduadas y graduados en cada titulación

     

  • T2_Que los estudiantes tengan capacidad para trabajar como miembros de un equipo interidisciplinar ya sea como un miembros más, o realizando tareas de dirección con el fin de contribuir a desarrollar proyectos con pragmatismo y sentido de la responsabilidad, asumiendo compromisos teniendo en cuenta los recursos disponibles

     

Presentación de la asignatura


En esta asignatura se verá una visión global de las tres arquitecturas de los sistemas de información más utilizadas hoy en día en la industria. En primer lugar, dos arquitecturas monolíticas donde todas las funcionalidades están en un solo módulo: arquitectura por capas y también veremos a la familia de las arquitecturas "clean" o hexagonales que separan el dominio y los controladores de aplicación del exterior. Esta segunda arquitectura (la clean) facilita la separación de las funcionalidades en módulos distintos. En tercer lugar, exploraremos las arquitecturas basadas en microservicios que buscan separar las funcionalidades en aplicaciones independientes pero interconectadas. Veremos las ventajas e inconvenientes de cada una haciendo referencia a las consecuencias que tienen en la organización de los equipos que desarrollan y gestionan los Sistemas de Información. También introduciremos herramientas relacionadas con DevOps como los contenedores y el concepto de servidor inmutable. Durante el curso, desarrollaremos un proyecto que utilizará las arquitecturas hexagonales y las basadas en microservicios.

Uso de las IA Generativas en la asignatura

En esta asignatura, se establece como requisito el uso de la inteligencia artificial generativa (IAG) para la elaboración de las prácticas y el examen práctico. El código que se entregue debe cumplir con la arquitectura de software y las prácticas de programación establecidas. Por tanto, es indispensable que el estudiante sepa discernir el momento adecuado para utilizar la IAG, así como mantener un sentido crítico ante los resultados que ésta ofrece. Asimismo, será indispensable que el estudiante adquiera la competencia de diseñar prontos efectivos para obtener un código de la máxima calidad. Es importante destacar que el estudiante es el único responsable de todo el código entregado, independientemente de si ha sido generado por una IAG o desarrollado por sí mismo.

Sin embargo, NO se recomienda el uso de la IAG para resolver los ejercicios que tienen la finalidad de practicar el uso de librerías o frameworks nuevos, o para responder a preguntas de carácter más teórico. El profesor puede dar indicaciones de cuándo y cómo usar la IAG durante la clase.

Caer prohibir el uso de la IAG durante el examen teórico.

Importante: en las prácticas usamos el framework de programación Bota de primavera i Nube de primavera que se introducen durante la asignatura Laboratorio de Aplicaciones Internet. Se recomienda haberla cursado antes de realizar el Diseño de Sistemas de Información.

El aula (física o virtual) es un espacio seguro, libre de actitudes machistas, racistas, homófobas, transfobas y discriminatorias, sea hacia el alumnado o hacia el profesorado. Confiamos en que entre todas y todos podamos crear un espacio seguro donde podamos equivocarnos y aprender sin tener que sufrir prejuicios de otros. 

Contenidos


1.- Motivación
2.- Introducción a la arquitectura del software y sistemas
3.- Arquitecturas monolíticas
    3.1.- Características
    3.2.- Revisitamos la arquitectura por capas
4.- Arquitecturas “clean” o hexagonales
    4.1.- Características
    4.2.- Una estructura que explique la funcionalidad
    4.3.- Puertos y adaptadores
    4.4.- Mapping entre capas
    4.5.- Organización en módulos
5.- Arquitecturas distribuidas: microservicios
    5.1.- Introducción: “the monolith hell”
    5.2.- Modelización: DDD 
    5.3.- Modelos de comunicación (síncrona y asíncrona)
    5.4.- Transacciones y “eventual consistency”
    5.5.- Patrones de infraestructura

Actividades y sistema de evaluación


Evaluación

  • PR_E: prueba escrita. Ponderación de la nota final 15%
  • PR_P: prueba práctica. Ponderación de la nota final 15%
  • PRJ: proyecto. Ponderación en la nota final 60% si la nota de PR_E >= 5 y PR_P >= 5

Cálculo nota final (NF):

  • Si PR_E >= 5 y PR_P >= 5 : NF = PON = PR_E 0,15 + PR_E2 0,15 + PRJ 0.6
  • Si (PR_E <5 o PR_P <5: NF = min ((PR_E 0,15 + PR_P 0,15), PON)

recuperación:

  • Se podrán recuperar las dos pruebas (PR_E y PR_P) por separado. La nota final se calculará tal como se ha establecido anteriormente con las notas de la recuperación de las pruebas.

normativa:

  • La asistencia a las prácticas es obligatoria. Si un estudiante no asiste a una sesión de prácticas será calificado con una nota de 0 (cero) en la práctica correspondiente.
  • Siguiendo la normativa de la UPF, si se detecta que una práctica o una prueba ha sido copiada la de ésta será de 0 (cero) tanto de lo que copia como de lo que se deja copiar.
  • En el examen teórico (PR_E) queda prohibido el uso de las IAG y si se detecta su uso se tratará como si se hubiera copiado durante la prueba.
  • Para que el estudiante tenga derecho a la recuperación se deberá haber presentado a las dos pruebas (PR_E y PR_R)

Bibliografía


Básico

Get Your Hands Dirty donde Clean Architecture: A hands-on guide to creating clean web applications with code examples in Java. Tom Homberg. Packt Ed

Newman, Sam (2021), "Building Microservices: Designing Fine-Grained Systems" (2nd edition). O'Reilly Media

Complementaria

Chris Richardson. Patrones de microserveis: https://microservices.io/

Hands-On Microservices with Spring Boot and Spring Cloud. By Magnus Larsson. Packt publisher (2019)

Josh Long, Kenny Bastani, "Cloud Native Java. Designing Resilient Systems with Spring Boot, Spring Cloud, and Cloud Foundry". O'Reilly 2017