Guía docente de Desarrollo de Sistemas de Software Basados en Componentes y Servicios (M50/56/3/8)

Curso 2025/2026
Fecha de aprobación por la Comisión Académica 30/06/2025

Máster

Máster Universitario en Ingeniería Informática

Módulo

Tecnologías Informáticas 1

Rama

Ingeniería y Arquitectura

Centro en el que se imparte la docencia

E.T.S. de Ingenierías Informática y de Telecomunicación

Centro Responsable del título

International School for Postgraduate Studies

Semestre

Primero

Créditos

4

Tipo

Obligatorio

Tipo de enseñanza

Presencial

Profesorado

  • Manuel Isidoro Capel Tuñón

Tutorías

Manuel Isidoro Capel Tuñón

Email
  • Tutorías 1º semestre
    • Miercoles 11:30 a 13:30 (Etsiit 3ª P Despacho 37)
    • Jueves 19:00 a 21:00 (Etsiit 3ª P Despacho 37)
    • Viernes 11:30 a 13:30 (Etsiit 3ª P Despacho 37)
  • Tutorías 2º semestre
    • Lunes 9:30 a 11:30 (Etsiit 3ª P Despacho 37)
    • Miercoles 9:30 a 11:30 (Etsiit 3ª P Despacho 37)
    • Viernes 9:30 a 11:30 (Etsiit 3ª P Despacho 37)

Breve descripción de contenidos (Según memoria de verificación del Máster)

La asignatura aborda la construcción de sistemas software distribuidos mediante arquitecturas basadas en componentes y servicios. Se trabajan arquitecturas orientadas a servicios (SOA), programación basada en componentes (CBSE), servicios web, modelado semántico con ontologías, y desarrollo de aplicaciones RESTful y BPEL.

Prerrequisitos y/o Recomendaciones

  • Desarrollo de sistemas software que satisfagan todos los requisitos del usuario, se comporten de forma fiable, sean asequibles de mantener y eficientes.

  • Conocimiento general de las teorías, principios, métodos y prácticas de la Ingeniería del Software.

  • Familiaridad en el uso de entornos de desarrollo integrado de software: Eclipse (preferible), NetBeans, Visual Studio...

  • Uso continuo de control de versiones (GitHub, GitLab).

  • Validación de endpoints mediante Postman.

  • Lectura anticipada de los documentos docentes.

  • Aprovechar las tutorías para orientar el trabajo práctico.

En el caso de utilizar herramientas de IA para el desarrollo de la asignatura, el estudiante debe adoptar un uso ético y responsable de las mismas. Se deben seguir las recomendaciones contenidas en el documento de "Recomendaciones para el uso de la inteligencia artificial en la UGR" publicado en esta ubicación: https://ceprud.ugr.es/formacion-tic/inteligencia-artificial/recomendaciones-ia#contenido0"

Competencias

Competencias Básicas

  • CB6. Poseer y comprender conocimientos que aporten una base u oportunidad de ser originales en desarrollo y/o aplicación de ideas, a menudo en un contexto de investigación.
  • CB7. Que los estudiantes sepan aplicar los conocimientos adquiridos y su capacidad de resolución de problemas en entornos nuevos o poco conocidos dentro de contextos más amplios (o multidisciplinares) relacionados con su área de estudio.
  • CB8. Que los estudiantes sean capaces de integrar conocimientos y enfrentarse a la complejidad de formular juicios a partir de una información que, siendo incompleta o limitada, incluya reflexiones sobre las responsabilidades sociales y éticas vinculadas a la aplicación de sus conocimientos y juicios.
  • CB9. Que los estudiantes sepan comunicar sus conclusiones y los conocimientos y razones últimas que las sustentan a públicos especializados y no especializados de un modo claro y sin ambigüedades.
  • CB10. Que los estudiantes posean las habilidades de aprendizaje que les permitan continuar estudiando de un modo que habrá de ser en gran medida autodirigido o autónomo.

Resultados de aprendizaje (Objetivos)

  • Diseñar y desarrollar sistemas distribuidos modulares, seguros y escalables.

  • Integrar servicios y componentes de forma interoperable.

  • Aplicar principios SOA y CBSE en el diseño y desarrollo.

  • Utilizar herramientas como Spring Boot, JDeveloper y Protégé.

  • Aplicar razonamiento sobre ontologías y modelado semántico.

Programa de contenidos Teóricos y Prácticos

Teórico

1. Introducción a la ingeniería de software basada en componentes.

1.1. Formalización de los sistemas abiertos y basados en componentes.

1.2. Diseño y desarrollo del software basado en componentización: principios, beneficios y patrones.

2. Arquitecturas orientadas a servicios.

2.1. Limitaciones del software intermediario convencional.

2.2. Middleware y sistemas distribuidos: características, tipos y funcionalidades.

2.3. Servicios Web (SW) contemporáneos: definiciones, estándares y tecnologías.

2.4. Desarrollo de software orientado a servicios: implementación de servicios SOAP y REST.

3. Modelado de procesos de negocio

3.1. Principios de desarrollo de software orientado a procesos de negocio: definición, ciclo de vida y objetivos.

3.2. Composición de servicios software: diferenciación entre orquestación y coreografía; ventajas, retos y patrones.

3.3. Orquestación de servicios con BPEL: elementos básicos, partner links, actividades de control de flujo, manejo de errores y despliegue en JDeveloper.

4. Sistemas ubicuos e inteligencia ambiental

4.1. Introducción a la Computación Ubicua: definición, evolución y motivación.

4.2. Marcos de trabajo actuales para el desarrollo de sistemas ubicuos.

4.3. Servicios colaborativos en entornos distribuidos e inteligentes.

4.4. Modelado ontológico con OW: clases, propiedades, restricciones y uso de razonadores.

Seminarios:

-Especificación de componentes de software con UML/OCL

-Introducción al diseño e implementación de servicios web RESTful

-OWL y el modelado semántico de ontologías para la Web

Práctico

1. Programación de un servicio web RESTful con EJB y ORM 

2. Orquestación de servicios Web utilizando WS-BPEL

3. Desarrollo de cliente responsivo para dispositivos móviles para el servicio web RESTful

4. Desarrollar una ontología de un sistema ubicuo utilizando un marco de trabajo y editor de ontologías de fuentes abiertas

Bibliografía

Bibliografía fundamental

  • Alonso, Gustavo, Fabio Casati, Harumi Kuno, y Vijay Machiraju. 2004. Web Services: Concepts, Architectures and Applications. Data-Centric Systems and Applications. Berlin: Springer-Verlag. https://doi.org/10.1007/978-3-662-10876-5.

  • Capel, Manuel I. 2016. Desarrollo de Software y Sistemas Basados en Componentes y Servicios. Madrid: Garceta Grupo Editorial.

  • Szyperski, Clemens. 2002. Component Software: Beyond Object-Oriented Programming. Londres: Pearson Education.

  • Veríssimo, Paulo, y Luís Rodrigues. 2004. Distributed Systems for System Architects. Dordrecht: Kluwer Academic Publishers.

  • Capel, Manuel I. Material docente: seminarios OWL, BPEL, AmI, UML. Documentación interna. Universidad de Granada.

Bibliografía complementaria

  • Baldauf, Markus, Schahram Dustdar, y Florian Rosenberg. 2012. "A Survey of Context Aware Systems." International Journal of Ad Hoc and Ubiquitous Computing 2(4): 263–267.

  • Bell, Michael. 2010. SOA Modeling Patterns for Service Oriented Discovery Analysis. Hoboken, NJ: Wiley.

  • Branca, Giuseppe, y Luigi Atzori. 2012. "A Survey of SOA Technologies in NGN Network Architectures." IEEE Communications Surveys & Tutorials 14(3): 644–661.

  • Kessig, Zachary. 2012. Building Web Applications with Erlang: Working with REST and Web. Sebastopol, CA: O’Reilly.

  • Marcs, Eric D., y Michael Bell. 2006. Service Oriented Architecture (SOA): A Planning and Implementation Guide for Business and Technology. Hoboken, NJ: Wiley.

  • Margolis, Ben. 2007. SOA for the Business Developer: Concepts, BPEL, and SCA. Boise, ID: MC Press.

  • Pashtan, Amir. 2005. Mobile Web Services. Cambridge: Cambridge University Press.

  • Raz, Danny, Antti Juhola, Josep Serrat-Fernández, y Andreas Galis. 2006. Fast and Efficient Context–Aware Services. Chichester: John Wiley and Sons.

  • Stavropoulos, Thanos, Dimitris Vrakas, y Ioannis Vlahavas. 2013. "A Survey of Service Composition in Ambient Intelligence Environments." Artificial Intelligence Review 40(3): 247–270.

  • Taylor, Hugh. 2009. Event-Driven Architecture: How SOA Enables the Real-Time Enterprise. Boston: Addison-Wesley.

Enlaces recomendados

A principio de curso se avisará de la plataforma Web y páginas auxiliares donde se encontrarán los enlaces recomendados para la asignatura.

Metodología docente

Evaluación (instrumentos de evaluación, criterios de evaluación y porcentaje sobre la calificación final.)

Evaluación Ordinaria

La teoría y las prácticas se evalúan de forma independiente, representando cada parte un 50 % de la calificación final del curso.

La evaluación de la parte teórica constará de al menos dos exámenes realizados durante las horas lectivas, basados en cuestiones con respuestas alternativas o desarrollo breve.

Para la evaluación de las prácticas se requiere la entrega de trabajos prácticos en fechas predeterminadas. La  tercera práctica debe ser defendida oralmente en clase; las fechas de exposición se fijarán al inicio del curso.

Todo lo relativo a la evaluación se regirá por la Normativa de evaluación y calificación de los estudiantes vigente en la Universidad de Granada, accesible en: https://lsi.ugr.es/lsi/normativa_examenes

Para aprobar la asignatura es necesario obtener una calificación igual o superior a 5,0 (sobre 10,0). Adicionalmente, tanto la calificación de la parte teórica como la de la parte práctica deben ser superiores a 3,5 (sobre 10,0).

En el caso de evaluación continua, los seminarios se podrán evaluar teniendo en cuenta la asistencia, la resolución de problemas, entrevistas individuales y la presentación de trabajos. 

Para el alumnado que se acoja a la evaluación única final, las pruebas seguirán criterios específicos que se exponen más adelante.

Evaluación Extraordinaria

La evaluación extraordinaria se regirá por los mismos criterios y constará de las mismas pruebas que la de la evaluación única final.

Evaluación única final

Consistirá en dos pruebas de evaluación, una correspondiente a la parte teórica y otra a la parte práctica:

Evaluación de la teoría: los estudiantes realizarán una única prueba escrita compuesta por: preguntas tipo test (35 %), resolución de ejercicios (50 %) y un supuesto práctico (15 %).

Evaluación de las prácticas: consistirá en una prueba en el laboratorio que implicará la programación de un supuesto práctico similar a los desarrollados durante el curso.

La ponderación de cada parte será del 50% en la calificación final. Para superar la asignatura, deberán cumplirse los siguientes requisitos mínimos::

  • La calificación obtenida en la prueba teórica deberá ser igual o superior al 40 % de la puntuación máxima posible en dicha prueba.

  • La calificación obtenida en la prueba práctica deberá ser igual o superior al 40 % de la puntuación máxima posible en dicha prueba.

Información adicional

Para ser evaluado en la modalidad de evaluación continua es necesario realizar todos los exámenes y entregar las prácticas en las fechas establecidas para cada uno de estos controles.