Créditos ECTS Créditos ECTS: 4.5
Horas ECTS Criterios/Memorias Trabajo del Alumno/a ECTS: 70.5 Horas de Tutorías: 2 Clase Expositiva: 10 Clase Interactiva: 30 Total: 112.5
Lenguas de uso Castellano, Gallego
Tipo: Materia Ordinaria Grado RD 1393/2007 - 822/2021
Departamentos: Electrónica y Computación
Áreas: Ciencia de la Computación e Inteligencia Artificial
Centro Escuela Técnica Superior de Ingeniería
Convocatoria: Primer semestre
Docencia: Con docencia
Matrícula: Matriculable
El objetivo de esta materia es formar al alumnado en el desarrollo de aplicaciones basadas en el concepto de servicio. Así, el alumnado será capaz, por un lado, de identificar para qué situaciones el uso de arquitecturas basadas en servicios sin estado proporcionan una solución idónea, y por otro lado, utilizar desde un punto de vista práctico la tecnología actual para el diseño e implementación de servicios sin estado, así como el desarrollo de clientes que consuman dichos servicios. Más concretamente, los objetivos específicos de la materia son los siguientes:
OBJ 1. Entender el concepto de servicio.
OBJ 2. Conocer los principios y estilos arquitectónicos basados en servicios.
OBJ 3. Comprender el concepto de servicios sin estado.
OBJ 4. Entender las características de las aplicaciones sin estado.
OBJ 5. Diseñar y desarrollar APIs de servicios.
OBJ 6. Adoptar los estándares y buenas prácticas para el desarrollo de una API de servicios.
OBJ 7. Diseñar y desarrollar aplicaciones cliente basadas en APIs de servicios.
TEORÍA
Tema 1. Introducción a la Ingeniería de Servicios. Contexto histórico.
a. Arquitecturas cliente-servidor
b. RPC
c. Arquitecturas orientadas a servicios
Tema 2. Componentes distribuidos y estilos arquitectónicos. SOAP y REST
Tema 3. Concepto de servicio. Servicios sin estado.
a. Recursos
b. Verbos HTTP
c. Códigos de estado
d. Cabeceras y mensajes HTTP
Tema 4. Diseño de servicios: buenas prácticas.
a. Documentación de servicios sin estado
Tema 5. Patrones de diseño de aplicaciones basadas en servicios.
a. Caches
b. Versionado
c. Diseño por capas
d. SLAs y ratios de uso
e. Seguridad en servicios sin estado
Tema 6. Tecnología para el desarrollo de aplicaciones basadas en servicios.
PRÁCTICAS
La parte práctica de la materia consistirá en el desarrollo de un proyecto, en grupos pequeños (2/3 personas), en el que el alumnado deberá proponer y desarrollar una aplicación basada en servicios REST. El desarrollo de esta aplicación será guiado por el profesor durante las sesiones interactivas. En el desarrollo de esta aplicación, el alumnado deberá seguir los principios presentados en las clases expositivas, y el profesor proporcionará la retroalimentación necesaria para asegurar una complejidad equivalente en todos los trabajos.
BIBLIOGRAFÍA BÁSICA
MASSE, Mark. REST API Design Rulebook. 1a Edición, O'Really Media, 2011. ISBN: 978-1449310509.
RICHARDSON, Leonard, AMUNDSEN, Mike. RESTful Web APIs, 1ª Edición, O’Really Media, 2013. ISBN: 978-1449358068.
MADDEN, Neil, API Security in Action. 1ª Edición, Manning, 2020. ISBN: 978-1617296024.
BIBLIOGRAFÍA COMPLEMENTARIA
ALLAMARAJU, Subbu. RESTful Web Services Cookbook, 1ª Edición. O’Really Media, 2010. ISBN: 978-0596801687.
GUTIERREZ, Felipe. Pro Spring Boot 3: An Authoritative Guide with Best Practices, 3ª Edición. Apress, 2024. ISBN: 978-1484292938
WIERUCH, Robin. The Road to React. 2025 Edition. https://www.roadtoreact.com/
El/la alumno/a adquirirá un conjunto de competencias específicas de la ingeniería de servicios, pero también una serie de competencias genéricas a cualquier desarrollo de un programa software y, finalmente, unas competencias transversales que inciden en las habilidades personales del alumnado y en la manera en el que se relaciona con el restante alumnado. Teniendo esto en cuenta, las competencias son las siguientes:
BÁSICAS Y GENERALES
CB03 - 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 índole social, científica o ética.
CG04 - Capacidad para definir, evaluar y seleccionar plataformas hardware y software para el desarrollo y la ejecución de sistemas, servicios y aplicaciones informáticas.
CG05 - Capacidad para concebir, desarrollar y mantener sistemas, servicios y aplicaciones informáticas empleando los métodos de la ingeniería del software como instrumento para asegurar su calidad, de acuerdo con los conocimientos adquiridos.
CG06 - Capacidad para concebir y desarrollar sistemas o arquitecturas informáticas centralizadas o distribuidas integrando hardware, software y redes de acuerdo con los conocimientos adquiridos.
CG8 - Conocimiento de las materias básicas y tecnologías, que capaciten para el aprendizaje y desarrollo de nuevos métodos y tecnologías, así como las que les doten de una gran versatilidad para adaptarse a nuevas situaciones.
TRANSVERSALES
TR01 - Instrumentales: Capacidad de análisis y síntesis. Capacidad de organización y planificación. Comunicación oral y escrita en gallego, castellano e inglés. Capacidad de gestión de la información. Resolución de problemas. Toma de decisiones.
TR02 - Personales: Trabajo en equipo. Trabajo en un equipo multidisciplinar y multilingüe. Habilidades en las relaciones interpersonales. Razonamiento crítico. Compromiso ético.
TR03 - Sistémicas: Aprendizaje autónomo. Adaptación a nuevas situaciones. Creatividad. Iniciativa y espíritu emprendedor. Motivación por la calidad. Sensibilidad hacia temas medioambientales.
ESPECÍFICAS
RI1 - Capacidad para diseñar, desarrollar, seleccionar y evaluar aplicaciones y sistemas informáticos.
RI8 - Capacidad para analizar, diseñar, construir y mantener aplicaciones de forma robusta, segura y eficiente, eligiendo el paradigma y los lenguajes de programación más adecuados.
RI11 - Conocimiento y aplicación de las características, funcionalidades y estructura de los Sistemas Distribuidos, las Redes de Computadores e Internet y capacidad para diseñar e implementar aplicaciones basadas en ellas.
RI13 - Conocimiento y aplicación de las herramientas necesarias para el almacenamiento, procesado y acceso a los Sistemas de información, incluidos los basados en web.
TI2 - Capacidad para seleccionar, diseñar, desplegar, integrar, evaluar, gestionar y mantener las tecnologías software dentro de los parámetros de coste y calidad adecuados.
TI5 - Capacidad para seleccionar, desplegar, integrar y gestionar sistemas de información que satisfagan las necesidades de la organización, con criterios de coste y calidad identificados.
TI6 - Capacidad de concebir sistemas, aplicaciones y servicios basados en tecnologías de red, incluyendo Internet, web, comercio electrónico, multimedia, servicios interactivos y computación móvil.
La metodología de la enseñanza está dirigida a enfocar la materia sobre los aspectos prácticos de la ingeniería de servicios y sobre los conceptos que diferencian a estas arquitecturas de otras aproximaciones. El/la alumno/a debe estar capacitado/a, por lo tanto, para entender las ventajas y desventajas del uso de servicios y para desarrollar un programa con solvencia siguiendo este paradigma. Teniendo esto en cuenta, se distinguen dos tipos de actividades de aprendizaje: clases magistrales y sesiones prácticas en grupos reducidos. Así:
(1) Las clases magistrales (10 horas) están dirigidas a explicar los conceptos que soportan la ingeniería de servicios, haciendo énfasis (a) en las ventajas que ofrecen las arquitecturas basadas en servicios frente a otros paradigmas distribuidos; y (b) en el tipo de problemas que resuelven. Estos conceptos se abordan, por un lado, de un modo teórico, independiente de lenguajes y tecnologías, y por otro lado, ejemplificando las tecnologías e implementaciones más usadas en la actualidad. Estas sesiones se complementarán con la resolución de casos prácticos de diseño de APIs REST.
(2) Las sesiones prácticas en grupos reducidos (30 horas) están dirigidas a que el/la alumno/a adquiera destreza en el diseño, descripción e implementación de APIs de servicios sin estado, así como en su invocación desde diferentes tipos de clientes. En estas sesiones prácticas el/la alumno/a desarrollará, en grupos pequeños, un proyecto de cierta complejidad en el que se ponga de manifiesto la utilidad de la ingeniería de servicios para la resolución de problemas distribuidos. La asistencia a estas clases por parte de los/las alumnos/as es OBLIGATORIA (Artículo 1c del Reglamento de asistencia a clase en las enseñanzas oficiales de grado y máster de la USC).
Teniendo en cuenta esta metodología de enseñanza, las competencias RI1, RI8, RI11, RI13, TI2, TI5, TI6, CG4 y CG6 tienen contenidos específicos que están asociados a la parte teórica y práctica de una materia como Ingeniería de Servicios, en la que se extienden las metodologías de diseño de arquitecturas web para dotarlas de una mayor flexibilidad y escalabilidad. Además, cabe resaltar que las arquitecturas y soluciones de servicios forman parte de los modernos sistemas de información que se implantan en las empresas.
Por otro lado, las competencias TI2 y CG5 se trabajarán en la parte práctica de la materia, en la que se hará un énfasis especial en el desarrollo de servicios que cumplan los estándares de flexibilidad y bajo acoplamiento propio de la ingeniería de servicios.
Finalmente, la competencia TR1 se trabajará en ambas partes, bien mediante la resolución de casos teóricos, bien en el desarrollo del proyecto en el que se deben afrontar los problemas expuestos y sintetizar los conceptos de la Ingeniería de Servicios; la competencia TR2 se trabajará durante las sesiones de prácticas, donde el alumnado deberá desarrollar un proyecto en parejas; y la competencia TR3 se trabajará en la parte práctica, ya que en ella es donde el/la alumno/a debe adaptarse a un nuevo paradigma y proponer un problema que le resulte interesante a la vez que realista.
La evaluación de la materia se realizará de tres maneras diferentes, aunque complementarias, que pretenden evaluar la competencia del alumno/a en la realización práctica de soluciones basadas en la ingeniería de servicios y en el dominio de los conceptos teóricos de dicha disciplina.
OPORTUNIDAD ORDINARIA
(1) Resolución de casos prácticos durante las horas expositivas, en los que el alumnado deberá diseñar una solución a un problema propuesto siguiendo una serie de restricciones indicadas por el profesor y centrándose en algún aspecto concreto del diseño de APIs de servicios. Se resolverán un total de 3 actividades de este tipo a lo largo del curso: la primera tras impartir el tema 3b, la segunda al finalizar el tema 3 y la tercera tras finalizar el tema 5. Estas actividades, evaluables pero no obligatorias (Artículo 1a del Reglamento de asistencia a clase en las enseñanzas oficiales de grado y máster de la USC), permitirán evaluar la interiorización de los conceptos teóricos expuestos, y representarán el 20% de la nota final de la asignatura. Con el fin de que todo el alumnado pueda participar de esta calificación, la fecha de realización de los ejercicios se anunciará tanto en el aula como a través del Campus Virtual con un mínimo de una semana de antelación. Por otra parte, la calificación de estos ejercicios se entregará, como muy tarde, dos semanas después de la fecha de entrega.
(2) Examen final. Este examen consistirá en la resolución de un caso práctico complejo (similar a los desarrollados durante el curso pero no tan orientado a un aspecto concreto del diseño de las APIs), en el que los alumnos deberán demostrar el dominio de todos los conceptos relacionados con el diseño de aplicaciones basadas en servicios. Este examen constituirá el 20% de la nota final y será REQUISITO IMPRESCINDIBLE APROBARLO PARA SUPERAR LA MATERIA.
(3) Realización de un proyecto en pequeños grupos (2/3 personas) donde el alumnado deberá implementar una aplicación basada en servicios REST. Este proyecto contará con una única entrega, al final del cuatrimestre, y de una presentación en clase a los compañeros y el profesor, que valorarán la complejidad, el detalle y la corrección del diseño orientado a servicios de la solución propuesta. La nota de esta parte se dividirá entre una calificación otorgada por el resto de grupos (30%) y por el profesor (70%), y constituirá un 60% de la nota final de la materia. La calificación del proyecto se entregará, como muy tarde, dos semanas después de la fecha de entrega, y siempre asegurando un mínimo de 2 semanas de antelación a la fecha del examen final. SERÁ IMPRESCINDIBLE SUPERAR ESTA PARTE DE LA EVALUACIÓN PARA SUPERAR LA MATERIA.
CONTROL DE ASISTENCIA
La asistencia a un mínimo de un 80% de las horas de las sesiones interactivas es OBLIGATORIA (Artículo 1 del Reglamento de asistencia a clase en las enseñanzas oficiales de grado y máster de la USC) ya que en ellas se guiará el desarrollo del proyecto y se proporcionarán orientaciones de cara a obtener aplicaciones de similar complejidad. El control de asistencia se realizará a través de hojas de firmas que el alumno/a deberá cumplimentar a la finalización de cada una de las sesiones. Todo aquel alumnado que no asista a un mínimo del 80% de las horas interactivas tendrá la consideración de NO PRESENTADO.
OPORTUNIDADA EXTRAORDINARIA
En la oportunidad extraordinaria únicamente se evaluarán las partes 2 y 3, por lo que el peso del examen final sube a un 40%. El proyecto (parte (3)) se realizará de forma individual y su evaluación se hará únicamente frente al profesor, manteniendo un peso del 60% en la nota final. Además, si el alumno/a supera alguna de las partes (teórica o práctica) en la oportunidad ordinaria, se le conservará la calificación de esa parte para la oportunidad extraordinaria.
En caso de realización fraudulenta de ejercicios o pruebas, será de aplicación lo recogido en la Normativa de evaluación del rendimiento académico de los estudiantes y de revisión de calificaciones.
En aplicación de la Normativa de la ETSE sobre plagio (aprobada por la Junta de la ETSE el 19/12/2019), la copia total o parcial de algún ejercicio de prácticas o teoría supondrá el suspenso en las dos oportunidades del curso, con la calificación de 0,0 en ambos casos.
Tal y como se indicó anteriormente, la asistencia a las sesiones de prácticas es obligatoria, y además esa participación debería ser activa para así aprovechar adecuadamente el tiempo. Además de esto, el alumno/a necesitará un tiempo adicional para trabajar en los siguientes aspectos:
(1) Docencia teórica (10 horas). El tiempo dedicado a la presentación de los conceptos teóricos relacionados con el diseño de aplicaciones basadas en servicios y a la resolución de casos y discusión de soluciones aplicadas a casos reales.
(2) Docencia interactiva (30 horas). El tiempo dedicado a la realización del proyecto durante las sesiones interactivas, es decir, al diseño e implementación de la aplicación basada en servicios y a la presentación de la aplicación final frente al resto de alumnos y alumnas. En estas sesiones, además, se proporcionará retroalimentación sobre el desarrollo del proyecto y se podrán formular directamente las cuestiones o preguntas al profesorado con el fin de afianzar los conceptos que se usarán en el proyecto.
(3) Trabajo personal del alumno/a (71,5 horas). Este tiempo es necesario para que el alumnado complete aquellas partes del proyecto que no tendrá tiempo de acabar en las sesiones de prácticas. En este tiempo, el alumno/a podrá interiorizar los conceptos de las arquitecturas orientadas a servicios a la manera de aplicarlos para resolver un proyecto real, en la medida en que en las sesiones interactivas se hace más énfasis en entender el proyecto y la manera general en la que se resolverá, mientras que los detalles necesarios para completarlo se deberán realizar en el tiempo adicional de trabajo práctico.
Para poder aprovechar la materia y adquirir con cierta fluidez los conceptos de la Ingeniería de Servicios, es muy aconsejable aprovechar las clases de teoría y las sesiones de prácticas, ya que, tal y como se presentó en el programa y en la metodología docente, estas actividades están directamente relacionadas. Por otro lado, también es muy recomendable que el alumno/a explore el material de soporte (páginas web sobre tecnología, cursos online de los entornos de desarrollo, descripción de casos de éxito, etc.) en el que se incluyen explicaciones adicionales a las de las clases presenciales y que ayudan a entender y afianzar los conceptos de la Ingeniería de Servicios y del desarrollo de servicios sin estado. Además, aunque no es estrictamente necesario, se recomienda haber cursado previamente las asignaturas de Desarrollo de Aplicaciones Web, Computación Distribuida y Seguridad.
En el desarrollo de esta materia se hará un uso intensivo del campus virtual, tanto para proporcionar contenidos como para la realización de anuncios y la resolución de dudas al alumnado. El idioma preferente de impartición de las clases es el gallego.
Victor Jose Gallego Fontenla
Coordinador/a- Departamento
- Electrónica y Computación
- Área
- Ciencia de la Computación e Inteligencia Artificial
- Teléfono
- 881815520
- Correo electrónico
- victorjose.gallego [at] usc.es
- Categoría
- Profesor/a: Ayudante Doutor LOSU
Miércoles | |||
---|---|---|---|
09:00-11:30 | Grupo /CLIL_01 | Gallego | IA.04 |
Jueves | |||
16:00-17:00 | Grupo /CLE_01 | Gallego | IA.S1 |
16.01.2026 10:00-14:00 | Grupo /CLE_01 | IA.11 |
16.01.2026 10:00-14:00 | Grupo /CLIL_01 | IA.11 |
30.06.2026 10:00-14:00 | Grupo /CLIL_01 | Aula A2 |
30.06.2026 10:00-14:00 | Grupo /CLE_01 | Aula A2 |