Información general


Tipo de asignatura: obligatoria

Coordinador:

trimestre:3

Créditos: 4

Profesorado: Rosa Herrero Antón

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 los estudiantes / se las tendrán que resolver, 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 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.

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 vistas 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 R7.

  • práctica 3

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

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) 30%

E2: Calificación de la segunda parte del examen (hay que 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

En otro caso (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 obtengan 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 a la recuperación. La nota final se calculará con las fórmulas anteriormente detalladas.

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.