Guía docente de Desarrollo de Sistemas de Software Basados en Componentes y Servicios (M50/56/2/8)
Máster
Módulo
Rama
Centro en el que se imparte la docencia
Centro Responsable del título
Semestre
Créditos
Tipo
Tipo de enseñanza
Profesorado
Horario de Tutorías
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.
Competencias Generales
- G01. Capacidad para proyectar, calcular y diseñar productos, procesos e instalaciones en todos los ámbitos de la ingeniería informática.
- G04. Capacidad para el modelado matemático, cálculo y simulación en centros tecnológicos y de ingeniería de empresa, particularmente en tareas de investigación, desarrollo e innovación en todos los ámbitos relacionados con la Ingeniería en Informática.
- G08. Capacidad para comprender y aplicar la responsabilidad ética, la legislación y la deontología profesional de la actividad de la profesión de Ingeniero en Informática.
Competencias Específicas
- CE04. Capacidad para modelar, diseñar, definir la arquitectura, implantar, gestionar, operar, administrar y mantener aplicaciones, redes, sistemas, servicios y contenidos informáticos.
- CE05. Capacidad de comprender y saber aplicar el funcionamiento y organización de Internet, las tecnologías y protocolos de redes de nueva generación, los modelos de componentes, software intermediario y servicios.
- CE06. Capacidad para asegurar, gestionar, auditar y certificar la calidad de los desarrollos, procesos, sistemas, servicios, aplicaciones y productos informáticos.
- CE07. Capacidad para diseñar, desarrollar, gestionar y evaluar mecanismos de certificación y garantía de seguridad en el tratamiento y acceso a la información en un sistema de procesamiento local o distribuido.
- CE08. Capacidad para analizar las necesidades de información que se plantean en un entorno y llevar a cabo en todas sus etapas el proceso de construcción de un sistema de información.
- CE09. Capacidad para diseñar y evaluar sistemas operativos y servidores, y aplicaciones y sistemas basados en computación distribuida.
- CE10. Capacidad para comprender y poder aplicar conocimientos avanzados de computación de altas prestaciones y métodos numéricos o computacionales a problemas de ingeniería.
- CE11. Capacidad de diseñar y desarrollar sistemas, aplicaciones y servicios informáticos en sistemas empotrados y ubicuos.
- CE15. Capacidad para la creación y explotación de entornos virtuales, y para la creación, gestión y distribución de contenidos multimedia.
Competencias Transversales
- CT01. Capacidad de análisis y síntesis: Encontrar, analizar, criticar (razonamiento crítico), relacionar, estructurar y sintetizar información proveniente de diversas fuentes, así como integrar ideas y conocimientos
- CT02. Capacidad de organización y planificación así como capacidad de gestión de la información.
- CT03. Capacidad para el uso y aplicación de las TIC en el ámbito académico y profesional.
- CT04. Capacidad de comunicación en lengua extranjera, particularmente en inglés.
- CT05. Capacidad de trabajo en equipo.
- CT06. Capacidad para innovar y generar nuevas ideas
- CT08. Capacidad para proyectar los conocimientos, habilidades y destrezas adquiridos para promover una sociedad basada en los valores de la libertad, la justicia, la igualdad y el pluralismo
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
- MD01 Clases Teóricas-Expositivas
- MD02 Resolución de Problemas
- MD03 Resolución de Casos Prácticos
- MD04 Aprendizaje basado en Proyectos
- MD05 Prácticas en Laboratorio
- MD06 Taller de Programación
- MD09 Demos
- MD10 Exposición de Trabajos Tutelados
- MD11 Conferencias
- MD16 Tutorías Académicas
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.
Información de interés para estudiantado con discapacidad y/o Necesidades Específicas de Apoyo Educativo (NEAE): Gestión de servicios y apoyos (https://ve.ugr.es/servicios/atencion-social/estudiantes-con-discapacidad).
Software Libre
Sí. Se emplean herramientas de software libre tales como Eclipse, Protégé, H2 Database Engine, Postman y Spring Boot.