Información general


  • Tipo de asignatura: Obligatoria
  • Coordinador: Adso Fernández Baena
  • Trimestre: 3
  • Créditos: 4
  • Profesorado:

Idiomas de impartición


  • Castellano
  • Català

Descripción


La asignatura de Ingeniería del Software II del tercer trimestre de segundo curso, es la segunda de las tres asignaturas denominadas 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 poder utilizarla.

 

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 el Covid-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 los siguientes resultados de aprendizaje especificados en la materia de 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ón- 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

Metodologia 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 antes indicado.

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 cual 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 se alarguen desde el punto de vista temporal, más allá de las horas de laboratorio y que, en consecuencia, los estudiantes deberan finalizarlas 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 las 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..Estratègies de prueba.

2.3.Tècniques de prueba.

3. Patrones de diseño de software

3.1.Requeriments 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. Los estudiantes tendrán que resolver estas actividades, a menudo de manera no presencial, siguiendo las indicaciones de los docentes y también serán trabajadas en clase, ya sea como ejemplos en las sesiones de teoría, ya sea en las sesiones de laboratorio. Si bien estas actividades tendrán carácter optativo (los docentes no verificarán de manera individualizada la realización por parte de los estudiantes), serán imprescindibles para alcanzar los conocimientos teóricos-prácticos de la asignatura.

Con el objetivo de recabar 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 (entre paréntesis los aspectos más relevantes de cada resultado de aprendizaje de la asignatura): 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 de almacenamiento), CIN16 (ciclo vida de la ingeniería del 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.

Cuatro prácticas, que mayoritariamente se deberán desarrollar en tiempo no presencial y en grupo, cubren las competencias CB2, CB4, CB5, CIN1, CIN2, CIN3, CIN4, CIN13, EFB4, EIS1, EIS4, CT1 y CT2 y evidencian el logro de 1 (utilizar herramientas profesionales) y 2 (utilizar herramientas para desarrollar).

  • Práctica 1

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 estudiadas en el bloque 2 de teoría. Al finalizar la actividad los estudiantes deben ser capaces de RA4 y RA5.

  • Práctica 2

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 RA7.

  • Práctica 3

Se trata de diseñ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 RA7.

  • Práctica 4

Se trata de diseñ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 RA7

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 referente a la competencia transversales 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 (es necesario obtener un mínimo de un 4 para aprobar la asignatura) 30%

E2: calificación de la segunda parte del examen (es necesario obtener un mínimo de un 4 para aprobar la asignatura) 30%

Pr: 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.3 + E2 · 0.3 + Pr · 0.4

De lo contrario (si E1 <4 o E2 <4), la nota final del alumno será:

Nota final = Pr · 0.4

Consideraciones:

  • 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:

  • La parte de prácticas de la asignatura (calificación Pr) NO es recuperable.
  • Los estudiantes no presentados y los que tengan una nota final > = 5 no podrán hacer la recuperación.
  • 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 en la recuperación. La nota final se calculará con las fórmulas anteriormente detalladas.

Bibliografía


Básica

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ó). Ediciones ENI. ISBN 9782409016349

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


Complementaria

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.

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