Ing. del software de componentes y sistemas distribuidos Código:  75.587    :  6
Consulta de los datos generales   Descripción   La asignatura en el conjunto del plan de estudios   Campos profesionales en el que se proyecta   Conocimientos previos   Información previa a la matrícula   Objetivos y competencias   Contenidos   Consulta de los recursos de aprendizaje de la UOC para la asignatura   Información adicional sobre los recursos de aprendizaje y herramientas de apoyo   Informaciones sobre la evaluación en la UOC   Consulta del modelo de evaluación  
Este es el plan docente de la asignatura para el segundo semestre del curso 2023-2024. Podéis consultar si la asignatura se ofrece este semestre en el espacio del campus Más UOC / La universidad / Planes de estudios). Una vez empiece la docencia, tenéis que consultarlo en el aula. El plan docente puede estar sujeto a cambios.

Los continuos adelantos en informática y telecomunicaciones están cambiando la manera como se desarrolla el software. En particular, el incesante aumento de la potencia de los ordenadores personales y dispositivos móviles, el abaratamiento de los costes del hardware y la aparición de redes de datos de cobertura global han hecho posible una infraestructura especialmente favorable para el uso de los sistemas abiertos y distribuidos.


Estos cambios han provocado, entre otras cosas, que los métodos de diseño y desarrollo de software tradicionales (vistos en las asignaturas de Ingeniería del software y Análisis y diseño con patrones) sean insuficientes, puesto que, más o menos implícitamente, asumen que la aplicación a desarrollar se ejecutará en un entorno básicamente centralizado. Por lo tanto, los métodos tradicionales son incapaces de gestionar de manera natural la complejidad de los requisitos de este nuevo tipo de sistemas. Por otro lado, los aspectos más próximos al análisis y a la especificación de requisitos estudiados en la asignatura Ingeniería de requisitos no cambian respecto a aquello que se ha visto en las asignaturas anteriores a esta y, por lo tanto, no se repiten aquí.

 

Esta asignatura sirve como introducción a las arquitecturas de software como marco de trabajo para el diseño y desarrollo de aplicaciones distribuidas donde se estudian y ponen en práctica los fundamentos, técnicas y habilidades aplicables en la definición moderna de arquitecturas del software, y se complementan los conocimientos adquiridos en las asignaturas previas. El diseño de la arquitectura de los sistemas de software permite describir de una manera abstracta y de alto nivel tanto la funcionalidad del sistema como otros muchos aspectos no funcionales de éste (distribución, fiabilidad, seguridad, adaptabilidad, prestaciones, etc.). Esta descripción del sistema suele definirse partiendo de un estilo arquitectónico, una clasificación de los sistemas de software en grandes familias que siguen un patrón estructural común. Entre los estilos arquitectónicos más usuales para los sistemas distribuidos hay los sistemas organizados en microservicios, múltiples capas, los sistemas cliente-servidor o los sistemas peer-to-peer.

 

El diseño de la aplicación en términos de microservicios de software tiene que refinarse, posteriormente, para adaptarlo e implementarlo en una tecnología de software distribuido concreta. Estas arquitecturas pueden implementarse utilizando cualquier paradigma de programación (orientado a objetos, estructurado...). En nuestro caso concreto, el lenguaje de referencia será Java que permite desarrollar aplicaciones distribuidas con arquitecturas de microservicios. Estos microservicios son los que servirán para implementar y testear los elementos arquitectónicos descritos en la arquitectura del sistema.

 

Finalmente, se recogen algunas buenas prácticas en el desarrollo y puesta en producción del software en arquitecturas distribuidas. Se trabajan algunos de los conceptos clave a la hora de desarrollar y puesta en producción, como la entrega continua, la cultura DevOps y el despliegue con contenedores.

Amunt

Esta asignatura está enmarcada dentro del itinerario de Ingeniería del Software del grado de Ingeniería Informática constituyendo una extensión en varias dimensiones de los conocimientos básicos de ingeniería del software incluidos tanto al itinerario concreto como en las asignaturas obligatorias del grado.

 

Para poder cursar con provecho esta asignatura, se requiere que los estudiantes tengan conocimientos previos sobre tecnología orientada a objetos. Concretamente, hay que conocer los fundamentos de la programación orientada a objetos y las notaciones básicas de UML, tal y como se ven, por ejemplo, en las asignaturas Ingeniería del software y Análisis y diseño con patrones de esta misma titulación.

Amunt

La asignatura será especialmente útil a todos los futuros profesionales dedicados al desarrollo de software según una concepción actual. El campo del desarrollo de software cambia día a día, y como ya se ha comentado al principio, tanto los sistemas distribuidos como los sistemas de microservicios van tomando más y más importancia. 

 

Por otra parte, también es importante por todo ingeniero informático adquirir las habilidades básicas en la instalación, configuración y uso de las diversas herramientas de apoyo muy populares en el mercado para el desarrollo, despliegue y ejecución de aplicaciones de software. En esta asignatura se llevará a cabo una intensa tarea en este sentido para consolidar estas habilidades mediante el apoyo de un aula de Laboratorio especializada. Por lo tanto, se evitará en lo posible el uso de máquinas virtuales automáticas con entornos ya configurados y, en cambio, fomentar el uso de herramientas individuales que el estudiante tendrá que aprender a instalar y configurar manualmente.

Amunt

Haber superado Ingeniería del software y Análisis y diseño con patrones o bien disponer de los conocimientos equivalentes es la condición previa para poder cursar esta asignatura.

 

Es también imprescindible que el estudiante tenga un buen nivel de Java para poder superar la asignatura. La asignatura tiene una parte importante de trabajo práctico en Java que asume un conocimiento y práctica importantes en este lenguaje. No es nada recomendable que el estudiante curse esta asignatura hasta que se haya logrado un buen nivel en Java, puesto que de lo contrario se verá abocado a repetir la asignatura con una alta probabilidad.


Amunt

Es recomendable haber superado las siguientes asignaturas del Grado:

Ingeniería del software y Análisis y diseño con patrones.

Amunt

Competencias transversales del Grado en Ingeniería Informática:

  • Capacidad de comunicación escrita en el ámbito académico y profesional.                                                              
  • Uso y aplicación de las TIC en el ámbito académico y profesional.                                                                                
  • Capacidad para adaptarse a las tecnologías y a futuros entornos actualizando las competencias profesionales.
  • Saber proponer y evaluar diferentes alternativas tecnológicas para resolver un problema concreto.           
  • Capacidad de analizar un problema en el nivel de abstracción adecuado a cada situación y aplicar las habilidades y conocimientos adquiridos para abordarlo y resolverlo.                                                                                                    
  • Saber construir aplicaciones informáticas mediante técnicas de desarrollo, integración y reutilización.      
  • Aplicación de las técnicas específicas de la Ingeniería del Software a las diferentes etapas del ciclo de vida de un proyecto.                                                                                                                                               

El objetivo general de la asignatura es que el estudiante adquiera los conocimientos básicos para el desarrollo de aplicaciones distribuidas basadas en microservicios. Este objetivo se concreta en los siguientes objetivos específicos

  • Explicar los fundamentos de la arquitectura de software y las características de una arquitectura.
  • Exponer argumentos sobre los puntos fuertes y los puntos débiles de los diferentes estilos arquitectónicos y cómo estos influyen en la decisión del estilo o estilos arquitectónicos más adecuados para una determinada aplicación.
  • Situar los nuevos paradigmas emergentes de la ingeniería del software dentro del marco de las arquitecturas del software.
  • Exponer argumentos que muestren los beneficios y también los riesgos y costes de una arquitectura de microservicios para resolver un problema concreto.
  • Proponer el diseño de una arquitectura de microservicios y su descomposición a partir de un caso de estudio.
  • Implementar microservicios centrados en la lógica de negocio y el acceso a datos.
  • Desplegar microservicios con estado propio, intercomunicación síncrona y consistencia de los datos.
  • Aplicar conceptos básicos de la arquitectura de microservicios.
  • Dominar las tecnologías básicas necesarias para la implementación de microservicios.
  • Reconocer los factores de testing y calidad de una especificación/diseño.
  • Evaluar formalmente el testing y la calidad de una implementación.
  • Identificar los modelos más importantes y estándares de calidad de software.
  • Reconocer los factores de entrega, despliegue e integración continúa.
  • Interpretar la cultura ágil en el desarrollo de software.
  • Implementar un pipeline de entrega, despliegue e integración continua.
  • Exponer argumentos sobre las ventajas y costes de los contenedores y plataformas de orquestación.
  • Preparar un buen informe final de entrega a un posible cliente.

Amunt

 La asignatura se estructura en 5 actividades principales, cada una con sus contenidos específicos:

 

Actividad 1: "Arquitecturas de software distribuidas: una solución para cada problema"

 

  • Libro "Fundamentals of Software Architecture" (Richards & Ford): Chapter 1. Introduction.          
  • Libro "Fundamentals of Software Architecture" (Richards & Ford): Part I Foundations (Chapters 2 - 8)        
  • Libro "Fundamentals of Software Architecture" (Richards & Ford): Part II Architecture Styles (Chapters 9 - 18).                                                                                                

 

Actividad 2: "Arquitecturas hexagonales y diseño de microservicios: una relación bien avenida"

 

  • Libro "Microservices patterns" (Richardson): Chapter 1. Section 6: "The Microservice architecture pattern language".
  • Libro "Microservices patterns" (Richardson): Chapter 2: "Decomposition strategies".                       
  • Libro "Microservices patterns" (Richardson): Chapter 3: "Interprocess communication in a microservice architecture"
  • Libro "Microservices patterns" (Richardson): Chapter 5: "Designing business logic in a microservice architecture".

 

Actividad 3: "De la creación a la interconexión de microservicios"

 

  • Libro "Microservices Patterns" (Chris Richardson): Chapter 6: "Developing business logic with event sourcing". Introduction.                                                 
  • Libro "Microservices Patterns" (Chris Richardson): Chapter 6: "Developing business logic with event sourcing".      
  • Libro "Microservices patterns" (Richardson): Chapter 7: "Implementing queries in a microservice architecture"      
  • Libro "Microservices patterns" (Richardson): Chapter 8: "External API patterns".                                                  

 

Actividad 4: "Calidad del software distribuido: inherente, transversal y crítico"

 

  • Libro "Microservices Patterns" (Chris Richardson): Chapter 9. "Testing microservices: Part 1". Introduction.
  • Libro "Microservices Patterns" (Chris Richardson): Chapter 9. "Testing microservices: Part 1".      
  • Libro "Microservices Patterns" (Chris Richardson): Chapter 10. "Testing microservices: Part 2".   
  • Libro "Fundamentals of Software Architecture" (Richards & Ford): Part I Foundations (Chapters 3 & 6).                                        

 

Actividad 5: "DevOps, CD/CI y cultura ágil: buenas prácticas para el desarrollo de software distribuido"

 

  • Libro Microservices Patterns (Chris Richardson) Chapter 12 Deploying microservices. Introduction.             
  • Libro Microservices Patterns (Chris Richardson) Chapter 12 Deploying microservices.                                         
  • Libro "Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation (Jez Humble & Dave Farley) Part I: Chapters 1-10.
  • Libro "The DevOps Handbook" (Patrick Debois, John Willis, Jez Humble & Gene Kim): Chapters 1 - 4.          

 

Amunt

El apoyo principal del material docente son los libros mencionados más arriba, que se distribuirán en formato digital según los canales habituales de la UOC (Biblioteca) accesibles desde el aula. Todos los libros de la asignatura son originales de autores de referencia mundial en el área de desarrollo de software distribuido y por ello están escritos enteramente en inglés. Se presupone competencias de comprensión lectora en inglés al alumnado que llega a esta etapa del grado, aunque dado el formato digital de estos materiales (lectura mediante un navegador web), permite una fácil lectura en otros idiomas mediante el uso de las funcionalidades de traducción automática de los navegadores actuales. Sin embargo, en ningún caso el equipo docente se hará responsable de los fallos y problemas de los sistemas de traducción automática, y se recomienda la lectura de los materiales en el idioma original, y especialmente identificar y comprender los conceptos y palabras clave en el idioma original para evitar confusiones con su traducción a otros idiomas.

 

Por otro lado, la asignatura dispone de un aula de Laboratorio con material y herramientas de software, y un consultor propio con experiencia en la parte técnica de la asignatura, donde el alumno obtendrá todo el apoyo necesario para llevar a cabo las prácticas. En particular, el Laboratorio dispone de software y manuales de instalación, cursos de formación y casos de estudio resueltos sobre instalación e implementación, preguntas frecuentes con respuestas y referencias a fuentes externas de información. Además, dispone de foros donde enviar dudas, consultas y problemas que el consultor responde lo más rápido posible, y que todos los alumnos pueden compartir y participar.

Amunt

En la UOC, la evaluación generalmente es virtual. Se estructura en torno a la evaluación continua, que incluye diferentes actividades o retos; la evaluación final, que se lleva a cabo mediante pruebas o exámenes, y el trabajo final de la titulación.

Las actividades o pruebas de evaluación pueden ser escritas y/o audiovisuales, con preguntas aleatorias, pruebas orales síncronas o asíncronas, etc., de acuerdo con lo que decida cada equipo docente. Los trabajos finales representan el cierre de un proceso formativo que implica la realización de un trabajo original y tutorizado que tiene como objetivo demostrar la adquisición competencial hecha a lo largo del programa.

Para verificar la identidad del estudiante y la autoría de las pruebas de evaluación, la UOC se reserva la potestad de aplicar diferentes sistemas de reconocimiento de la identidad y de detección del plagio. Con este objetivo, la UOC puede llevar a cabo grabación audiovisual o usar métodos o técnicas de supervisión durante la ejecución de cualquier actividad académica.

Asimismo, la UOC puede exigir al estudiante el uso de dispositivos electrónicos (micrófonos, cámaras u otras herramientas) o software específico durante la evaluación. Es responsabilidad del estudiante asegurar que estos dispositivos funcionan correctamente.

El proceso de evaluación se fundamenta en el trabajo personal del estudiante y presupone la autenticidad de la autoría y la originalidad de las actividades académicas. La web sobre integridad académica y plagio de la UOC contiene información al respecto.

La falta de autenticidad en la autoría o de originalidad de las pruebas de evaluación; la copia o el plagio; la suplantación de identidad; la aceptación o la obtención de cualquier actividad académica a cambio o no de una contraprestación; la colaboración, el encubrimiento o el favorecimiento de la copia, o el uso de material, software o dispositivos no autorizados en el plan docente o el enunciado de la actividad académica, incluida la inteligencia artificial y la traducción automática, entre otras, son conductas irregulares en la evaluación que pueden tener consecuencias académicas y disciplinarias graves.

Estas conductas irregulares pueden conllevar el suspenso (D/0) en las actividades evaluables definidas en el plan docente -incluidas las pruebas finales- o en la calificación final de la asignatura, ya sea porque se han utilizado materiales, software o dispositivos no autorizados durante las pruebas (como el uso de inteligencia artificial no permitida, redes sociales o buscadores de información en internet), porque se han copiado fragmentos de texto de una fuente externa (internet, apuntes, libros, artículos, trabajos o pruebas de otros estudiantes, etc.) sin la citación correspondiente, por la compraventa de actividades académicas, o porque se ha llevado a cabo cualquier otra conducta irregular.

Asimismo, y de acuerdo con la normativa académica, las conductas irregulares en la evaluación también pueden dar lugar a la incoación de un procedimiento disciplinario y a la aplicación, si procede, de la sanción que corresponda, de conformidad con lo establecido en la normativa de convivencia de la UOC.

En el marco del proceso de evaluación, la UOC se reserva la potestad de:

  • Solicitar al estudiante que acredite su identidad según lo establecido en la normativa académica.
  • Solicitar al estudiante que acredite la autoría de su trabajo a lo largo de todo el proceso de evaluación, tanto en la evaluación continua como en la evaluación final, a través de una entrevista oral síncrona, que puede ser objeto de grabación audiovisual, o por los medios establecidos por la UOC. Estos medios tienen el objetivo de verificar los conocimientos y las competencias que garanticen la identidad del estudiante. Si no es posible garantizar que el estudiante es el autor de la prueba, esta puede ser calificada con una D, en el caso de la evaluación continua, o con un suspenso, en el caso de la evaluación final.

Inteligencia artificial en el marco de la evaluación

La UOC reconoce el valor y el potencial de la inteligencia artificial (IA) en el ámbito educativo y, a su vez, pone de manifiesto los riesgos que supone si no se utiliza de forma ética, crítica y responsable. En este sentido, en cada actividad de evaluación se informará al estudiantado sobre las herramientas y los recursos de IA que se pueden utilizar y en qué condiciones. Por su parte, el estudiantado se compromete a seguir las indicaciones de la UOC a la hora de realizar las actividades de evaluación y de citar las herramientas utilizadas y, concretamente, a identificar los textos o imágenes generados por sistemas de IA, los cuales no podrá presentar como si fueran propios.

Respecto a usar o no la IA para resolver una actividad, el enunciado de las actividades de evaluación indica las limitaciones en el uso de estas herramientas. Debe tenerse en cuenta que usarlas de manera inadecuada, como por ejemplo en actividades en las que no están permitidas o no citarlas en las actividades en las que sí lo están, puede considerarse una conducta irregular en la evaluación. En caso de duda, se recomienda que, antes entregar la actividad, se haga llegar una consulta al profesorado colaborador del aula.

Amunt

La asignatura solo puede aprobarse con el seguimiento y la superación de la evaluación continua (EC). La calificación final de la asignatura es la nota obtenida en la EC.

 

Amunt