Información general


Tipo de asignatura: obligatoria

Coordinador: Ana Beatriz Pérez Zapata

trimestre: Primer trimestre

Créditos: 6

Profesorado: 

Rosa Herrero Antón

Idiomas de impartición


  • Català

El idioma de impartición principal en clase es Catalán.

Sin embargo:

- todo el material de la asignatura disponible está en inglés,
- las herramientas usadas y sus documentaciones está en inglés,
- todos los trabajos y todas las entregas que se realizan deben ser en inglés.
  (esto incluye código, comentarios, documentación, interfaces, etc.)

Competencias


competencias básicas
  • B2_Que los estudiantes sepan aplicar sus conocimientos en su trabajo o vocación de una forma profesional y tengan las competencias que demuestran mediante la elaboración y defensa de argumentos y la resolución de problemas dentro de su área de estudio

     

  • B4_Que los estudiantes puedan transmitir información, ideas, problemas y soluciones a un público tan especializado como no especializado

     

  • B5_Que los estudiantes hayan desarrollado aquellas habilidades de aprendizaje necesarias para emprender estudios posteriores con un alto grado de autonomía

     

Competencias específicas
  • EIS1_Capacidad para desarrollar, mantener y evaluar servicios y sistemas software que satisfagan todos los requisitos del usuario y que se comporten de forma fiable y eficiente, sean asequibles de desarrollar y mantener y cumplan normas de calidad, aplicando las teorías, principios, métodos y prácticas de la ingeniería del software

     

  • EIS2_Capacidad para valorar las necesidades del cliente y especificar los requisitos software para satisfacer estas necesidades, reconciliando objetivos en conflicto, mediante la búsqueda de compromisos aceptables, dentro de las limitaciones derivadas del coste, del tiempo, de la existencia de sistemas ya desarrollados y de las propias organizaciones

     

  • EIS3_Capacidad para dar solución a problemas de integración en función de las estrategias, estándares y tecnología disponibles

     

  • EIS4_Capacidad de identificar y analizar problemas y diseñar, desarrollar, implementar, verificar y documentar soluciones software sobre la base de un conocimiento adecuado de las teorías, modelos y técnicas actuales

     

  • EIS5_Capacidad de identificar, evaluar y gestionar los riesgos potenciales asociados que se puedan presentar

     

  • EIS6_Capacidad para diseñar soluciones apropiadas en uno o más dominios de aplicación, utilizando métodos de la ingeniería del software que integren aspectos éticos, sociales, legales y económicos

     

  • ESI2_Capacidad para determinar los requisitos de los sistemas de información y comunicación de una organización, atendiendo a aspectos de seguridad y cumplimiento de la normativa y legislación vigente

     

  • ESI3_Capacidad para participar activamente en la especificación, diseño, implementación y mantenimiento de los sistemas de información y comunicación

     

competencias transversales
  • T1_Que los estudiantes conozcan un tercer idioma, que será preferentemente el inglés, con un nivel adecuado de forma oral y por escrito, de acuerdo con las necesidades que tendrán las graduadas y graduados en cada titulación

     

  • T2_Que los estudiantes tengan capacidad para trabajar como miembros de un equipo interidisciplinar ya sea como un miembros más, o realizando tareas de dirección con el fin de contribuir a desarrollar proyectos con pragmatismo y sentido de la responsabilidad, asumiendo compromisos teniendo en cuenta los recursos disponibles

     

Descripción


La asignatura de Laboratorio de Software 2 del primer trimestre de cuarto curso, es la última de las dos asignaturas llamadas Laboratorio de Software. Su impartición está pensada en dedicar 1 ECTS en la parte de teoría y 5 ECTS a practicar los conceptos expuestos en teoría y los adquiridos en el resto de asignaturas.

Esta asignatura consistirá en la creación de una aplicación cliente servidor mediante en grupo respetando la metodología SCRUM y de continuos delivery.

El alumno, además de implementar la aplicación y crear las pruebas de software, captará requisitos para nuevas funcionalidades, los especificará, y hará los roles de Scrum Master y Release Manager.

Todo el dessenvolupament se hará a GitHub, y las contribuciones del equipo se regularán mediante pull requests.

El código se desarrollará con Java Spring + JPA junto servidor, Javascript React + Redux al cliente, y se comunicará con protocolo REST.

Contenidos


1. Diseño de arquitecturas Cliente / Servidor

Uso de arquitecturas distribuidas en arquitectura cliente / servidor. El servidor establece una interfaz que el cliente usará para comunicarse con el usuario. El servidor y el cliente se comunicaron principalmente con REST.

2. Arquitectura de Inyección de dependencias automática + JPA

Uso de tecnologías de inyección de dependencias automática Spring.
Uso de la API JPA el back-end que automáticamente conecta con una fuente de datos y estructura las tablas y relaciones de forma automática.

3. Arquitectura cliente MVC

Uso de una arquitectura MVC al cliente capaz de gestionar correctamente los datos y la comunicación con el servidor.

4. Project Management

Uso del sistema SCRUM en equipos donde los alumnos deberán presentar los resultados frecuentemente al PO. El profesor hará el rol de PO. Dentro de cada grupo y en rotación uno de los alumnos hará de Scrumm Master.
Los alumnos también harán la captura de requisitos, presentación de funcionalidades y diseño de implementación.

5. Continuous Delivery

Uso de un sistema de continuous delivery. Se usan pruebas de software para trazar y asegurar que se implementa la especificación correctamente. En cada iteración, con un sistema de rotación, cada uno de los alumnos hará de Release Manager, creando y validando la versión a desplegar, y haciendo el despliegue en un entorno real de producción.

6. Calidad y Seguridad

El sistema implantado debe pasar altos estándares de calidad y seguridad. Todo el código pasará por varias code reviews y deberá aplicar los patrones aprendidos en asignaturas anteriores. También todo el código deberá disponer de macetas con una cobertura de casi el 100%, y éstos deberán contemplar todas las excepciones que puedan comprometer el servidor.

Sistema de evaluación


La nota final se calculará con las calificaciones de las actividades ponderadas de la forma siguiente:

- EXAMEN INDIVIDUAL: 50%

- PRÁCTICA: PROYECTO EN GRUPO: 50%

normativa:

  • El proyecto en grupo, aunque hacerse en grupo, la participación y la nota será individual. Esta será la ponderación de las diversas notas de las diversas tareas llevadas a cabo por el alumno. La nota de cada tarea debe ser 3 o superior, de lo contrario la nota de todo el proyecto en grupo será el mínimo de las notas de cada tarea.
  • Si la nota del examen individual es inferior a 3, o la nota de la práctica es inferior a 3, la nota final de la asignatura será la mínima de ellas, por tanto, se suspenderá la asignatura.
  • Sólo podrá recuperarse el examen individual (el proyecto en grupo no se podrá recuperar). El 50% de la nota final de la asignatura será la mayor entre la prueba de recuperación y la obtenida en el examen.

recuperación:

Para poder realizar la prueba de recuperación el estudiante deberá cumplir las tres condiciones siguientes:

  • La nota de la asignatura es inferior a cinco.
  • Haberse presentado en el examen individual.
  • La nota obtenida en cada una de las tareas de la práctica será 3 o más.

Bibliografía


Básico

Spring Documentation - https://spring.io

Agile Software Development: Principles, Patterns, and Practices - Robert C. Martin,

Guía: escritura de código comprobable http://misko.hevery.com/code-reviewers-guide/ -Miško Hevery

Complementario

UML for Java Programmers - Robert C. Martin