ECTS credits ECTS credits: 4.5
ECTS Hours Rules/Memories Student's work ECTS: 70.5 Hours of tutorials: 2 Expository Class: 10 Interactive Classroom: 30 Total: 112.5
Use languages Spanish, Galician
Type: Ordinary Degree Subject RD 1393/2007 - 822/2021
Departments: Electronics and Computing
Areas: Computer Science and Artificial Intelligence
Center Higher Technical Engineering School
Call: First Semester
Teaching: With teaching
Enrolment: Enrollable
El objetivo de esta materia consiste en formar al alumno en el desarrollo de aplicaciones basadas en el concepto de servicio. Así, el alumno será capaz, por una parte, de identificar para qué situaciónes el uso de arquitecturas basadas en servicios sin estado proporcionan una solución idónea, y por otra parte, 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 consumen dichos servicios. Más concretamente, los objetivos específicos de la asignatura son los siguientes:
OBJ1. Entender el concepto de servicio.
OBJ2. Conocer los principios y estilos arquitectónicos basados en servicios.
OBJ3. Comprender el concepto de servicios sin estado.
OBJ4. Entender las características de las aplicaciones sin estado.
OBJ5. Conocer el diseño y desarrollo de API de servicios.
OBJ6. Conocer los estándares y buenas prácticas para el desarrollo de API de servicios.
OBJ7. Conocer metodologías para el desarrollo de aplicaciones basadas en API de servicios.
TEORÍA
Tema 1. Introducción a la Ingeniería de Servicios.
Tema 2. Componentes distribuidos y estilos arquitectónicos.
Tema 3. Concepto de servicio: servicios sin estado.
Tema 4. Diseño de servicios: buenas prácticas.
Tema 5. Patrones de diseño de aplicaciones basadas en servicios.
Tema 6. Tecnología para el desarrollo de aplicaciones basadas en servicios.
PRÁCTICAS
Poyecto: API DE SERVICIOS.
* Diseño de la arquitectura del sistema.
* Seguridad y autenticación de usuarios.
* Diseño de servicios sin estado.
* Implementación de los servicios.
* Uso de Open API para la descripción de servicios.
Proyecto: CLIENTE WEB.
* Diseño del cliente web.
* Modelo de datos (JSON).
* Invocación de servicios.
* Implementación del cliente (JavaScript).
BIBLIOGRAFÍA BÁSICA (por orden de prioridad)
1. MASSE, Mark. REST API Design Rulebook. 1a Edición, O'Really Media, 2011. ISBN: 978-1449310509.
2. ERL, Thomas, CARLYLE, Benjamin, PAUTASSO, Cesare, BALASUBRAMANIAN, Raj. SOA with REST: Principles, Patterns & Constraints for Building Enterprise Solutions. 1a Edición, Prentice Hall, 2013. ISBN: 978-0137012519.
3. RICHARDSON, Leonard, RUBY, Sam David. Restful Web Services. 1a Edición, O'Reilly, 2007. ISBN: 978-0596529260
[Sig.: C60 28, Escola Técnica de Enxeñaría Informática]
BIBLIOGRAFÍA COMPLEMENTARIA (por orden de prioridad)
4. WALLS, Craig. Spring Boot in Action. 1a Edición, Manning Publications, 2016. ISBN: 978-1617292545.
5. WIERUCH, Robin. The road to learn React: Your journey to master plain yet pragmatic React.js. https://github.com/the-road-to-learn-react/the-road-to-learn-react
El alumno 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 focalizar la materia sobre los aspectos prácticos de la ingeniería de servicios y sobre los conceptos que diferencian a esta disciplina de otras aproximaciones. El alumno debe estar capacitado, por lo tanto, para entender las ventajas 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áticas 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 distibuidos, en espacial de los servicios sin estado; y (b) en el tipo de problemas que resuelven. Estos conceptos se explicarán, por una parte, independientemente de los lenguajes de programación en las que se implementan los servicios, y por otra parte, focalizando en las aproximaciones y estilos arquitectónicos más usados en la actualidad.
(2) Las sesiones prácticas en grupos reducidos (30 horas) están dirigidas la que el alumno 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 especial clientes basados en JavaScript. Es importante que en estas sesiones prácticas el alumnado desarrolle 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 y, más concretamente, para la implementación de soluciones web basadas en el cliente. La asistencia la estas clases por parte del alumnos es OBLIGATORIA.
Habida 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 aparte teórica y práctica de una asignatura 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 otra parte, 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 acoplamento propio de la ingeniería de servicios.
Finalmente, la competencia TR1 se trabajará en la parte práctica, ya que en ella se deben analizar los problemas expuestos y sintetizar los conceptos de la Ingeniería de Servicios; la competencia TR2 se trabajará el desarrollo de la API de servicios sin estado en el que el alumnado tendrá que interaccionar entre sí para ejecutar los servicios desenvueltos por sus compañeros; y la competencia TR3 se trabajará en la parte práctica, ya que en ella es donde el alumno debe adaptarse la un nuevo paradigma de desarrollo de aplicaciones web (basado en el cliente).
La evaluación de la materia tendrá lugar de dos maneras diferentes, aunque complementarios, que pretenden evaluar la competencia del alumnado 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) Examen en el que el alumno demostrará el dominio de los aspectos teóricos de la ingeniería de servicios como alternativa o complemento a los otros paradigmas de computación distribuida, así como de las aproximaciones que se siguen para implementar soluciones arquitectónicas basadas en servicios, en especial de los servicios sin estado con los que se desarrollan arquitecturas más escalables y flexibles. Este examen constituirá el 40% de la nota final y SERÁ REQUISITO IMPRESCINDIBLE APROBARLO PARA SUPERAR LA ASIGNATURA.
(2) Realización de un proyecto en el que el alumnado demostrará de manera práctica el dominio del diseño e implementación de APIs de servicios, así como el desarrollo de un cliente que consumirá dichas APIs para proveer la funcionalidad demandada por el cliente. Esta parte constituirá el 60% de la nota final de la materia y será realizada por el alumno de manera individual. Además, el proyecto constará de las siguientes partes:
2.(a) En la primera parte se desarrollará una API de servicios que soportará la funcionalidad del proyecto. Esta API se deberá diseñar e implementar siguiendo los preceptos y buenas prácticas del paradigma de servicios sin estado, como una de las mejores soluciones para el desarrollo de arquitecturas modulares y escalables, necesarias, por ejemplo, en la programación web. En esta parte también se hará uso de estándares (Open API) para la descripción de los servicios sin estado. Esta parte constituirá el 60% de la nota práctica y SERÁ REQUISITO IMPRESCINDIBLE APROBARLA PARA SUPERAR LA ASIGNATURA.
2.(b) En la segunda parte se desarrollará un cliente que consumirá la API de servicios implementada en 2.(a). Este cliente estará basado en JavaScript, ya que actualmente es uno de los lenguajes más usados para el desarrollo de clientes web y de dispositivos móviles. De esta forma, acercaremos al alumnado a la proramación web basada en el cliente, uno de los paradigmas más utilizados en la actualidad para el desarrollo de soluciones web al descargar al servidor de mantener el estado de la aplicación. Esta parte constituirá el 40% de la nota práctica.
Por otra parte, la parte práctica se dividirá en dos entregas, correspodientes a los diferentes tipos de funcionalidades del proyecto. Teniendo esto en cuenta, si se realiza la primera entrega, se considerará como presentado en la asignatura.
CONTROL DE ASISTENCIA
La asistencia a las sesiones prácticas interactivas es obligatoria debido a que en ellas se abordan conceptos clave de la asignatura, y el control de esta asistencia se realizará a través de hojas de firmas que los alumnos deberán cubrir a la finalización de cada una de las sesiones. Además, si un alumno asiste a menos del 80% de las sesiones prácticas interactivas, se considerará que no superó la materia.
OPORTUNIDAD DE RECUPERACIÓN
La evaluación de las partes de teoría y práctica serán exactamente las mismas que para la oportunidad ordinaria. Por tanto, además de superar el examen de teoría y el proyecto correspondiente a la parte práctica, para poder superar la materia será necesario que el alumno asista a las sesiones prácticas interactivas. Además, si el alumno supera alguna de las partes (teórica o práctica) en la oportunidad ordinaria, se le conservará la calificación de esa parte en la oportunidad de recuperación.
En el 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 estudantes y de revisión de calificaciones.
En aplicación de la Normativa de la ETSE sobre plagio (aprobada por la Xunta da 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 precisará un tiempo adicional para trabajar en los siguientes aspectos:
(1) Docencia teórica (10 horas). El tiempo dedicado la este estudio no sólo incluye el tiempo necesario para preparar el examen teórico, sino también el tiempo que el alumno precisa para entender los conceptos teóricos de suerte que los pueda aplicar correctamente al diseño e implementación de los servicios sin cliente y de los clientes web que consumen este tipo de servicios.
(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 los servicios sin estado y del desarrollo del cliente web. En estas sesinoes, además, se podrán formular directamente las cuestoines o preguntas al profesorado con el fin de afianzar los conceptos que se usarán en el proyecto.
(3) Trabajo personal del alumno (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 podrá interiorizar la manera de resolver el proyecto, en la medida en que en las sesiones interactivas se hace más énfasis en entender el proyecto y la manera general en el que se resolverá, mientras que los detalles necesarios para completarlo se deberán realizar en el tiempo adicional de trabajo práctico. Además, en este tiempo asociado al estudio y realización de las preguntas que formarán parte del examen teórico.
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, en la medida en que, tal y como se presentó en el programa y en la metodología docente, estas actividades están directamente relacionadas. Por otra parte, también es muy recomendable que el alumnado explore el material de soporte (páginas web sobre tecnología, tutoriales 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.
El idioma preferente de impartición de las clases expositivas e interactivas es el gallego.
Daniel Cores Costa
Coordinador/a- Department
- Electronics and Computing
- Area
- Computer Science and Artificial Intelligence
- daniel.cores [at] usc.es
- Category
- Professor: LOU (Organic Law for Universities) PhD Assistant Professor
Wednesday | |||
---|---|---|---|
09:00-11:30 | Grupo /CLIL_01 | Galician | IA.04 |
Thursday | |||
16:00-17:00 | Grupo /CLE_01 | Galician | IA.S1 |
01.16.2025 10:00-14:00 | Grupo /CLE_01 | IA.S1 |
01.16.2025 10:00-14:00 | Grupo /CLIL_01 | IA.S1 |
07.09.2025 10:00-14:00 | Grupo /CLE_01 | Classroom A3 |
07.09.2025 10:00-14:00 | Grupo /CLIL_01 | Classroom A3 |