Información general


Tipo de asignatura: obligatoria

Coordinador: Alfonso Palacios González

trimestre: Tercer trimestre

Créditos: 4

Profesorado: 

Rosa Herrero Antón

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
  • EFB4_Conocimientos básicos sobre el uso y programación de los ordenadores, sistemas operativos, bases de datos y programas informáticos con aplicación en la ingeniería

  • 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

  • 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

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'Ingeniería del Software II del tercer trimestre de segundo curso, es la segunda de las tres asignaturas llamadas Ingeniería del Software. Su impartición está pensada en dedicar 3 ECTS en la parte de teoría y 1 ECTS a practicar los conceptos expuestos en teoría.

Esta asignatura será la que introducirá el concepto de Patrones de Diseño de Software estudiando los más utilizados y practicándose su uso en diferentes circunstancias.

Otro de los temas abordados en esta asignatura será el Testing, haciendo una introducción general, y explicando alguna técnica concreta profundizando lo necesario hasta poderla utilizar.

Esta asignatura dispone de recursos metodológicos y digitales para hacer posible su continuidad en modalidad no presencial en el caso de ser necesario por motivos relacionados con la Covidien-19. De esta forma se asegurará la consecución de los mismos conocimientos y competencias que se especifican en este plan docente.

Resultados de aprendizaje


A nivel general, esta asignatura contribuye a siguientes resultados de aprendizaje especificados para la materia a la que pertenece (Ingeniería del Software):

(1) Utilizar de forma apropiada teorías, procedimientos y herramientas en el desarrollo profesional de la ingeniería informática en todos sus ámbitos (especificación, diseño, implementación, despliegue -implantació- y evaluación de productos) de forma que se demuestre la comprensión de los compromisos adoptados en las decisiones de diseño

(3) Utilizar las herramientas de un entorno de desarrollo de software para crear y desarrollar aplicaciones.

(5) Demostrar conocimiento y saber aplicar las técnicas apropiadas para modelar y analizar los diferentes tipos de decisiones.

(10) Controlar la calidad y diseñar pruebas en la producción de software.

A un nivel más concreto, al finalizar la asignatura el estudiante debe ser capaz de:

RA1. Modelar aplicaciones software

RA2. Aplicar los principios de análisis y diseño orientado a objetos

RA3. Aplicar y analizar el uso de patrones de diseño de software

RA4. Conocer estrategias y aplicar técnicas de pruebas del software

RA5. Conocer las fases de un proyecto software

RA7. Controlar versiones y configuraciones del proyecto

Metodología de trabajo


Todos los conceptos teóricos de la materia se tratarán en las clases de teoría (grupos grandes) de la asignatura. En estas clases se introducen los conceptos básicos del proceso para desarrollar software y del diseño del software utilizando patrones, mostrando su aplicación con ejercicios resueltos por el docente. Se recomienda que antes de cada sesión los estudiantes se lean el material publicado en la plataforma virtual. En las clases se pedirá la participación de los estudiantes de manera individual o en grupo, para resolver diferentes problemas propuestos con o sin anticipación. Estas actividades, que por su naturaleza de optatividad y brevedad no aparecen reflejadas en este documento, servirán al estudiante como instrumento de autoevaluación de la consecución de los contenidos de la materia y podrán ser utilizados por parte del docente para tomar decisiones sobre la calificación final del estudiante, pero nunca en detrimento de la calificación numérica calculada según el sistema de calificación especificado por la asignatura.

Los estudiantes deberán asistir a todas las clases con un ordenador portátil con la capacidad de ejecutar el software apropiado para la asignatura. Los docentes impartidores informarán de qué es este software y cómo se puede obtener.

Los conceptos de carácter más práctico serán trabajados en grupos pequeños (de laboratorio) donde se presentan trabajos de complejidad media, que requieren la aplicación de los conocimientos adquiridos en las clases más teóricas. En estas sesiones se darán las herramientas adecuadas para resolver las actividades programadas pero se espera que estas alarguen desde el punto de vista temporal, más allá de las horas de laboratorio y que, en consecuencia, los estudiantes deban finalizar durante el tiempo de aprendizaje autónomo.

Normas de realización de las actividades

Para cada actividad, los docentes informarán de las normas y condiciones particulares que las rijan. Las actividades unipersonales presuponen el compromiso del estudiante de realizarlas de manera individual. Se considerarán suspendidas todas aquellas actividades en que el estudiante no se ajuste a este compromiso, independientemente de su papel (origen o destino). Igualmente, las actividades que se deban realizar en grupos presuponen el compromiso por parte de los estudiantes que lo integran de realizarlas en el seno del grupo. Se considerarán suspendidas todas aquellas actividad en la que el grupo no haya respetado este compromiso con independencia de su papel (origen o destino).

Contenidos


1. Proceso de desarrollo del software             

1.1. El Proceso Unificado.

1.2. Diseño del Software.

1.3. Caso de Estudio.

2. Pruebas del software

2.1. Introducción a las pruebas del software.

2.2. Estrategias de prueba.

2.3. Técnicas de prueba.

3. Patrones de diseño de software

3.1. Requerimientos y métodos.

3.2. Concepto de Patrón.

3.3. Patrones GoF (adaptador, factoría, singelton, estrategia, composite, fachada y proxy).

4. Modelado del software

4.1. Relaciones entre casos de uso.

4.2. Organización del Modelo del Dominio.

4.3. Contrato de las operaciones.

4.4. Diagramas de estado. Patrón estados.

4.5. Organización de los Paquetes.

Con esta propuesta lograremos los siguientes contenidos de la memoria:

  • Modelado de aplicaciones.
  • Análisis y diseño orientado a objetos
  • Patrones de diseño
  • Patrones de arquitectura del software

Actividades de aprendizaje


Se pone a disposición de los estudiantes una serie de actividades de carácter eminentemente práctico (ejercicios cortos, problemas...) que son la base de las actividades de aprendizaje de la asignatura. Estas actividades se tendrán que resolver siguiendo las indicaciones de los docentes y serán trabajadas en clase de teoría, bien como ejemplos en la misma sesión, bien como ejercicios de carácter optativo que se resolverán en la siguiente sesión. Aunque estas actividades son de carácter optativo, y sin entrega alguna, su realización son imprescindibles para alcanzar los conocimientos teórico-prácticos de la asignatura.

Con el objetivo de recoger evidencia del logro de los resultados de aprendizaje esperados se realizarán las siguientes actividades de carácter evaluativo: 

Un examen individual escrito a ordenador (utilizando, en su caso, una herramienta IDE) de los conceptos teóricos-prácticos de los contenidos de la asignatura con dos partes autónomas.

  • Examen - Parte 1

Constará de preguntas de los contenidos de los bloques 1, 2 y parte del 3 hasta el Patrón Estrategia. Esta prueba pide a los estudiantes el desarrollo correcto de software a partir de un proyecto inicial.

El objetivo de esta actividad es evaluar si el estudiante ha adquirido los conocimientos de: 5 (saber aplicar técnicas para modelar), 10 (controlar calidad), RA2, RA3 y RA4, que cubren las siguientes competencias comunes y específicas: CIN1 (desarrollar software fiable), CIN5 (mantener software), CIN8 (construir y mantener aplicaciones), CIN13 (herramientas almacenamiento), CIN16 (ciclo vida ingeniería software), EFB4 (uso de programas informáticos), EIS1 (satisfacer requisitos) y EIS4 (capacidad de analizar).

  • Examen - Parte 2

Constará de preguntas del resto del contenido del bloque 3 y el 4. Esta prueba pide a los estudiantes el desarrollo correcto de software a partir de un proyecto base.

El objetivo de esta actividad es evaluar si el estudiante ha adquirido los conocimientos de 5 (saber aplicar técnicas para modelar), RA2 y RA3. A nivel de competencias comunes y específicas serán relevantes todas las mencionadas para la primera parte.

Cuestionarios de ejercicios cortos, se tendrán que resolver en tiempo no presencial y de forma individual a través del aula virtual, se trata de ejercicios cortos para aprender a utilizar pedidos JUnit, programación reflexiva, Logger, entre otros, y además entender diagramas de flujo y diagramas UML, cubren las competencias CB2, CB5, CIN1, CIN13, EFB4, EIS1 y EIS4.

Cuatro prácticas, que mayoritariamente se tendrán que desarrollar en tiempos no presenciales y en grupo, cubren las competencias (utilizar herramientas profesionales) y 2 (utilizar herramientas para desarrollar). Las prácticas se entregarán y realizarán de forma colaborativa utilizando un repositorio Git.

  • Práctica 1 - Testing

Se trata de desarrollar un pequeño software para aprender a utilizar el "framework" Junit y conocer la metodología TDD "Test Driven Development" o bien utilizar una técnica concreta de las vistas en el bloque 2 de teoría. Al finalizar la actividad los estudiantes deben ser capaces de RA4 y RA5

  • Práctica 2 - Patrón Adaptador + Patrón Factoría

Se trata de rediseñar un pequeño software aplicando uno o varios de los primeros patrones del contenido 3. Al finalizar la actividad los estudiantes deben ser capaces de RA1, RA2, RA3 y R7.

  • Práctica 3 - Patrón Estrategia + Patrón Composite + Patrón Factoría Abstracto

Se trata de rediseñar un pequeño software aplicando uno o varios del resto de patrones del contenido 3. Al finalizar la actividad los estudiantes deben ser capaces RA1, RA2, RA3 y R7.

  • Práctica 4 - Diagrama de Estados + Patrón Estados

Se trata de rediseñar un pequeño software aplicando los contenidos del bloque 4. Al finalizar la actividad los estudiantes deben ser capaces de RA1, RA2, RA3 y R7

Para superar (aprobar) las actividades evaluativas, los estudiantes deberán demostrar

  • Que han adquirido los conocimientos teóricos relativos a los contenidos de la asignatura y que su comprensión les permite llevarlos a la práctica [MECES-2 punto a, punto c]
  • Que pueden desarrollar soluciones a problemas que, si bien son similares a otros vistos anteriormente, presentan aspectos que son nuevos [MECES-2 punto f]

En relación a las competencias básicas asignadas a la asignatura, éstas quedan cubiertas especialmente en cuanto a los aspectos que se explicitan:

  • CB2: resolución de problemas dentro de su área de estudio.
  • CB4: transmitir información en público.
  • CB5: desarrollo de habilidades de aprendizaje necesarias para estudios posteriores (acceso autónomo a documentación, hábitos de trabajo efectivos)

Finalmente, y en cuanto a la competencia transversal asociada a la asignatura:

  • CT1: (conocimiento tercera lengua) esta se trabaja a partir de las fuentes documentales que los estudiantes deben consultar, dado que todas ellas se encuentran en inglés.
  • CT2: (capacidad de trabajar en grupo) que pueden alcanzar al hacer las prácticas.

Sistema de evaluación


La calificación final de la asignatura se calculará según las fórmulas que se especifican a continuación:

E1: Calificación de la primera parte del examen (hay que obtener un mínimo de un 4 para aprobar la asignatura) 25%

E2: Calificación de la segunda parte del examen (hay que obtener un mínimo de un 4 para aprobar la asignatura) 25%

Q: calificación media de los cuestionarios de ejercicios cortos 10%

P: calificación media de las prácticas propuestas durante el trimestre 40%

Si las calificaciones obtenidas en E1 y E2 son superior o igual a 4 (E1> = 4 y E2> = 4), la nota final del alumno será:

Nota final = E1 · 0.25 + E2 · 0.25 + Q · 0.1 + P · 0.4

En otro caso (si E1 <4 o E2 <4), la nota final del alumno será:

Nota final = Q · 0.1 + P · 0.4

Consideraciones:

  • Se debe obtener una nota superior a 4 en cada una de las dos partes del examen, E1 y E2. Los alumnos que no se presenten en el examen final, suspenderán la asignatura sin opción a recuperación. 
  • Una actividad no entregada o entregada con retraso y sin justificación (citación judicial o asunto médico) cuenta como un 0.
  • Es potestativo de los docentes aceptar o no entregas fuera de los plazos que se indiquen. En caso de que estas entregas fuera de plazo se acepten, es potestativo del docente decidir si aplica alguna penalización y la cuantía de la misma.
  • En las actividades realizadas en grupo el docente puede, en base a la información de que disponga, personalizar la calificación para cada integrante del grupo.
  • Es responsabilidad del alumno evitar el plagio en todas sus formas. En el caso de detectar un plagio, independientemente de su alcance, en alguna actividad corresponderá a tener una nota final de 0. Además, el profesor comunicará a la Jefe de estudios la situación para que se tomen medidas aplicables en materia de régimen sancionador.

recuperación:

  • Las prácticas de la asignatura (calificación P) NO es recuperable.
  • Los cuestionarios de ejercicios cortos (calificación Q) NO es recuperable.
  • Los estudiantes no presentados y los que obtengan una nota final> = 5 no podrán hacer la recuperación.
  • La nota del examen de recuperación sustituye a la nota de las actividades E1 y/o E2. La nota final se calculará con las fórmulas anteriormente detalladas.
  • Cada estudiante podrá recuperar cualquiera de las dos partes (E1 o E2) de la teoría. La calificación E1 y E2 será sustituida por la que haya sacado a la recuperación. 

Bibliografía


Básico

Debrauwer, L. (2018) Patrones de diseño en Java. Los 23 modelos de diseño: descripciones y soluciones Ilustradas en UML2 y Java. (2º edición). Ediciones ENI. ISBN 9782409016349

Larman, C. (2003) UML y patrones: una introducción al análisis y diseño orientado a objetos y el Proceso unificada. (2ª Edición) Prentice Hall, golpe. ISBN 978 8420534382

Complementario

Gama, E., et al. (2003) Patrones de diseño: Elementos de software orientado a objetos reutilizable. Addison-Wesley, golpe. ISBN 9788478290598.

Bolaños, D. et al. (2008) Pruebas de software y JUnit: un análisis en Profundidad y Ejemplos prácticos. Prentice-Hall España. ISBN 9788483223543.

García - De Marina, PC, et al. (2019) Especificando Software mediante Casos de Uso y Uml. Editorial Universitaria Ramón Areces. ISBN 9788499613420.

Gulati, S., et.al. (2017) Java Unit Testing con JUnit 5: Test Driven Development with JUnit 5. Editorial APress. ISBN 1484230140.