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

Curso 2022/2023
Fecha de aprobación por la Comisión Académica 12/07/2022

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
  • Primer semestre
    • Lunes 11:30 a 13:30 (Etsiit 3ª P Despacho 37)
    • Jueves 15:30 a 17:30 (Etsiit 3ª P Despacho 37)
    • Viernes 9:30 a 11:30 (Etsiit 3ª P Despacho 37)
  • Segundo semestre
    • Lunes 11:30 a 13:30 (Etsiit 3ª P Despacho 37)
    • Miercoles 11:30 a 13:30 (Etsiit 3ª P Despacho 37)
    • Jueves 11:30 a 13:30 (Etsiit 3ª P Despacho 37)
  • Tutorías 1º semestre
    • Lunes 11:30 a 13:30 (Etsiit 3ª P Despacho 37)
    • Jueves 15:30 a 17:30 (Etsiit 3ª P Despacho 37)
    • Viernes 15:30 a 17:30 (Etsiit 3ª P Despacho 37)
  • Tutorías 2º semestre
    • Lunes 11:30 a 13:30 (Etsiit 3ª P Despacho 37)
    • Miércoles 11:30 a 13:30 (Etsiit 3ª P Despacho 37)
    • Jueves 11:30 a 13:30 (Etsiit 3ª P Despacho 37)

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

Modelos de componentes, Arquitecturas orientadas a servicios, Arquitecturas dirigidas por eventos, Arquitecturas para computación de altas prestaciones, Componentes software para sistemas distribuidos, Software intermediario (Middleware), Sistemas empotrados y móviles, Sistemas ubicuos e inteligencia ambiental

Prerrequisitos y/o Recomendaciones

Desarrollo de sistemas software que satisfagan todos los requisitos del usuario y 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, VisualStudio,....

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)

Conocer y saber aplicar las arquitecturas más adecuadas en los que se fundamentan los sistemas software, los componentes que los integran,
las interfaces que se definen entre ellos, los patrones de diseño que supervisan su composición y la restricciones a la hora de aplicarlos.
Saber planificar la evolución de los sistemas software y evaluar el grado de cumplimiento de los requisitos de calidad de servicio que se exigen
a los sistemas software complejos en la actualidad.
Entender los fundamentos, herramientas y distribuciones libres disponibles del software de intermediación sobre el que se apoya la construcción de sistemas software basado en componentes distribuidos. 
Comprender los aspectos más destacados y características del enfoque orientado a servicios y las arquitecturas de servicios para el desarrollo
de software, y saber aplicar las metodologías y tecnologías más apropiadas en cada caso.
Diseñar y utilizar marcos de trabajo para la construcción de sistemas software en los siguientes dominios de aplicaciones: sistemas distribuidos, componentes para computación de altas prestaciones, sistemas empotrados y móviles, incluyendo una aplicación de sistemas ubicuos y
otra de inteligencia ambiental

Programa de contenidos Teóricos y Prácticos

Teórico

1. Desarrollo de software basado en componentes y servicios.

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

1.2. Técnicas de diseño y desarrollo basadas en componentización del software

2. Servicios Web

2.1. Limitaciones del software intermediario convencional

2.2. Middleware y arquitecturas de servicios

2.3. Servicios Web (SW) contemporáneos

2.4. Notaciones y lenguajes

3. Modelado de procesos de negocio

3.1. Desarrollo de software, basado en SW, para procesos de negocio

3.2. Composición de SW: orquestación y coreografía.

3.3. Notaciones de modelado actuales (BPEL)

4. Sistema ubicuos e inteligencia ambiental

4.1. Introducción a la Computación Ubicua

4.2. Marcos de trabajo actuales de desarrollo

4.3. Servicios colaborativos

4.4. Modelado ontológico con OWL

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 persistencia y conforme con JDBC

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

3. Desarrollo de un cliente receptivo y adaptable para dispositivos móviles y desarrollo de la parte servidora (REST/base de datos)

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

Manuel I. Capel. Desarrollo de Software y Sistemas Basados en Componentes y Servicios. Garceta grupo editorial, 2016 (Madrid).

Thomas Erl. SOA: principles of service design. Prentice Hall, 2008 (recurso electrónico:  http://proquest.safaribooksonline.com/9780132344821).

Raz, D., Juhola, A., Serrat-Fernandez, J., and Galis, A. (2006). Fast and efficient context–aware services. John Wiley and Sons, 2006.

Clements Szyperski. Component software: beyond object-oriented programming. Pearson Education, 2002 (Londres)

Paulo Veríssimo y Luís Rogrigues. Distributed Systems for System Architects. Kluwer Academic, 2004.

Bibliografía complementaria

-Aalst, W.M.P. van der, Benatallah, B., Casati, F., Curbera, F. & Verbeek, H.M.W. Business Process Management: Where Business Processes and Web Services Meet (Guest editorial). Data & Knowledge Engineering, 61(1), 1-5, 2007.

-Baldauf, M., Dustdar, S., and Rosenberg, F. A survey of context aware systems. International Journal of Adhoc and Ubiquitous Computing, 2(4):263–267 (2012).

-Branca, G. and Atzori, L. A survey of SOA technologies in NGN network architectures. IEEE Communications Surveys Tutorials, 14(3):644–661 (2012).

-Bell, M. SOA Modeling Patterns for Service Oriented Discovery Analysis. Wiley, 2010.

-Bruce Silver. BPMN Method and Style with BPMN Implementer’s Guide. Cody-Cassidy Press(2da edición), 2011 (Aptos, California).

-Cox, B.J., Novobilski, A.J. Object-Oriented Programming: An Evolutionary Approach. Addison-Wesley, 1986.

-Eriksson,H-E., Penker, M. Business Modeling with UML: Business Patterms at Work. Wiley, 2000.

-Kessig, Z. Building Web Applications with Erlang: Working with REST and Web. O’Reilly, 2012.

-Marcs, E.D., Bell M. Service Oriented Architecture (SOA): A Planning and Implementation Guide for Business and Technology. Wiley, 2006.

- Margolis, B. SOA for the business developer : concepts,  BPEL, and SCA. MC Press, 2007.

-Stavropoulos, T., Vrakas, D., and Vlahavas, I. A survey of service composition in ambient intelligence environments. Artificial Intelligence Review, 40(3):247–270 (2013).

-Taylor, H. Event-driven Architecture: How SOA Enables the Real-time Enterprise. Addison-Wesley, 2009

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 independientemente, representado cada parte un 50% de la calificación final del curso.

La evaluación de la parte teórica constará de, al menos 2, exámenes con cuestiones/respuestas alternativas.

Para la evaluación de las prácticas se requiere la entrega de trabajos prácticos en fechas predeterminadas y la defensa de la tercera práctica ("Desarrollo de un cliente receptivo y adaptable para dispositivos móviles y del servidor REST/base de datos") ante la clase.

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, que puede consultarse en: https://lsi.ugr.es/lsi/normativa_examenes

Para aprobar la asignatura es necesario obtener una calificación numérica superior o igual a 5,0 (sobre 10,0). No obstante, además del requisito anterior, se establece adicionalmente que tanto la calificación correspondiente a la parte teórica como a la parte práctica sean mayores de 3,5 (sobre 10,0).

En el caso de evaluación continua, los seminarios se podrán evaluar teniendo en cuenta la asistencia, problemas resueltos, entrevistas y presentación de los trabajos. La calificación de los seminarios incrementará la de la parte correspondiente (teórica o práctica) con un peso del 10% sobre la nota final de dicha parte de la asignatura. 

Para los alumnos que se acojan a la evaluación única final, las pruebas y la evaluación estarán regidas por los criterios 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, con la descripción siguiente de cada una:

Evaluación de la teoría: los estudiantes realizarán una única prueba escrita que constará de preguntas de teoría: tipo test (35%), resolución de problemas (50%), supuesto práctico (15%)

Evaluación de las prácticas: los estudiantes realizarán una prueba en el laboratorio, que consistirá en la programación de un supuesto práctico similar a los realizados durante las prácticas regladas de la asignatura.

La ponderación de cada parte será del 50% en la calificación final  y para aprobar la asignatura se han de cumplir los siguientes requisitos:

-La calificación de la prueba de teoría ha de ser igual o superior al 40% del máximo que se pueda obtener en dicha prueba

-La calificación de la prueba de prácticas ha de ser igual o superior al 40% del máximo que se pueda obtener en dicha prueba

Información adicional

Para ser evaluado en la modalidad "continua" es necesario realizar todos los exámenes y entregar las prácticas en la fecha que se establezca para cada uno de estos controles.