Información general


Tipo de asignatura: obligatoria

Coordinador: Alfonso Palacios González

trimestre: Tercer trimestre

Créditos: 4

Profesorado: 

David Ródenas Picó
José Roble Alcobé 

Idiomas de impartición


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

En esta asignatura se explicarán nuevos Patrones de Diseño de Software y temas relacionados con la Ingeniería de Requisitos, poniendo el énfasis en la modelización con Diagramas de Actividad y especificaciones formales con OCL.

Otro de los temas abordados en esta asignatura será el Testing, haciendo una extensión de las técnicas ya vistas en Ingeniería del Software I y II, introduciendo diferentes estrategias y la depuración. El uso del Testing para mejorar la calidad del código y su mantenibilidad es clave. 

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


En el ámbito general, esta asignatura contribuye a siguientes resultados de aprendizaje especificados para la materia a la que pertenece (Ingeniería del Software)  

  • 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.
  • Demostrar conocimiento de la dimensión ética en la empresa: la responsabilidad social y corporativa en general y, en particular, las responsabilidades civiles y profesionales del ingeniero en informática.
  • Usar las herramientas de un entorno de desarrollo de software para crear y desarrollar aplicaciones.
  • Demostrar conocimiento y saber aplicar las técnicas apropiadas para modelar y analizar los diferentes tipos de decisiones.
  • Gestionar y resolver los problemas y conflictos gracias a la capacidad de generar alternativas o escenarios de futuro convenientemente analizados, integrando los aspectos de incertidumbre y los múltiples objetivos a considerar.
  • Controlar versiones y configuraciones de proyecto.
  • Especificar, diseñar, implementar, gestionar y mantener sistemas y servicios de software complejos y / o críticos.
  • Controlar la calidad y diseñar pruebas en la producción de software.
  • Identificar tecnologías actuales y emergentes y evaluar si son aplicables, y en qué medida, para satisfacer las necesidades de los usuarios.
  • Diseñar soluciones que integren tecnologías de hardware, software y comunicaciones (y capacidad de desarrollar soluciones específicas de software de sistemas) para sistemas distribuidos y dispositivos de computación ubicua.

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

RA1: Reconocer los diversos participantes en la adquisición de requerimientos y definir estrategias Lean de captación de requerimientos.
RA2: Reconocer y saber leer diagramas de actividad y restricciones OCL.
RA3: Conocer el Agile Software Development y cómo se liga con el concepto de Refactor y Lean.
RA4Saber hacer pruebas de software y aplicar metodologías TDD, con propiedades FIRST y AAA.
RA5Saber leer un diagrama UML y saber identificar las direcciones del acoplamiento con las flechas.
RA6: Entender y aplicar los patrones SOLID, la ley de Demeter y Inyección de Dependencias.
RA7: Entender y aplicar el patrón Command, el patrón Observador, variaciones, y el patrón arquitectónico MVC.
RA8: Entender los conceptos de datos derivados, materializadas y computadas y cómo se relacionan con MVC.
RA9: Crear una aplicación MVC.

 

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 propuestos en el temario, 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 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.

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.

Se pondrá a disposición de los estudiantes actividades de carácter totalmente opcional que le ayuden a preparar ya prepararse para las de carácter obligatorio.

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 actividades en las que el grupo no haya respetado este compromiso con independencia de su papel (origen o destino). En las actividades realizadas en grupo el docente puede, de acuerdo con la información de que disponga, personalizar la calificación para cada integrante del grupo. Cualquier actividad no entregada se considerará puntuada con cero puntos. 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. 

Contenidos


1.      Ingeniería de Requisitos            

1.1.  Introducción.

1.2.  Método de captura de requisitos: Lean

1.3. Agile, la búsqueda de la confianza.

1.4.  Modelización (introducción a los Diagramas de Actividad).

1.5.  Especificación (introducción al OCL).

2.      Pruebas del software

2.1.  Estrategias de prueba y técnicas.

2.2.  Desarrollo impulsado por prueba

2.3. Code Coverage

2.4. Law of Demeter

2.5. dependency Injection

2.6. Lower 's' singleton pattern

2.7. Revisión de Código

2.8. Professionalism as emergence of Testing + Agile

3.      Patrones de diseño de software

3.1. High Cohesion / Low Coupling

3.2. plugin Architecture

3.3. UML drawings, relations, and dependency directions

3.4. patrón SOLID

3.5. Patrón Command.

3.6.  Patrón Observer. 

3.7. Patrón Event Target.

3.8. Event Bus.

3.9.  Patrón Modelo Vista Controlador.

3.10:XNUMX. State.

3.11. Patrones funcionales puros.

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ó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: hasta cinco prácticas y hasta dos pruebas escritas (exámenes).

práctica P1 (Evidencia de los resultados de aprendizaje RA1)

Se trata de captar los requisitos de un software mediante metodología lean.

Ponderación: 8% de la nota final.

Objetivos específicos: Al finalizar la actividad los estudiantes deben ser capaces de:

· Modelar los requisitos del software.

· Escribir y entender los requisitos así como los actores implicados.

 

Práctica P2 y P3 (Evidencia de los resultados de aprendizaje RA3 y RA4)

Se desarrollará un pequeño software mediante Test Driven Development by applying some of the techniques explained in the bloque 2.

Ponderación: 16% (8% cada una) de la nota final.

 Objetivos específicos: Al finalizar la actividad los estudiantes deben ser capaces de:

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

· Ser capaces de hacer un dessenvolupament mediante TDD

· Conocer las fases de un proyecto software y el agile software development.

 

Práctica P4 y P5  (Evidencia de los resultados de aprendizaje RA7, RA8, y RA9)

Se trata de rediseñar un pequeño software aplicando uno o varios de los siguientes patrones: MVC, Observer o Command.

Ponderación: 16% (8% cada una) de la nota final.

Objetivos específicos: Al finalizar la actividad los estudiantes deben ser capaces de:

· Modelar aplicaciones software.

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

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

 

examen E1 (Evidencia de los resultados de aprendizaje RA1, RA2, RA3, RA4, RA5 y RA6)

Prueba individual de los conceptos teóricos y procedimientos prácticos del bloque 1 y 2.

Esta prueba representa el 30% de la calificación final de la asignatura.

El objetivo de esta actividad es evaluar si el estudiante sabe:

· Modelar los requisitos del software.

. Escribir y entender especificaciones formales.

· Conocer estrategias y aplicar técnicas de pruebas del software

 

examen E2 (Evidencia de los resultados de aprendizaje RA5, RA6, RA7, RA8, y RA9)

Prueba individual de los conceptos teóricos y procedimientos prácticos del bloque 2 y 3.

Esta prueba representa el 30% de la calificación final de la asignatura.

El objetivo de esta actividad es evaluar si el estudiante sabe:

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

· Aplicar y analizar el uso de patrones de diseño de software 

 

La asignatura se divide en dos bloques principales: 1) ingeniería de requisitos, metodologías ágiles, y pruebas de software (P1, P2 / 3 y E1) y 2) patrones de desarrollos robustos que permite alcanzar los objetivos planteados en el bloque anterior (P2 / 3, P4 / 5 y E3)

En el ámbito competencial el primer bloque, donde las prácticas mayoritariamente se deberán desarrollar en tiempo no presencial, cubren las siguientes competencias comunes y específicas de la asignatura:
CB.4: transmiten ideas, problemas y soluciones en lenguaje apto a público especializado y no especializado
CT.2: trabajan asumiendo otros roles y siendo pragmático
CIN1: consideran todos los stakeholders que intervienen en el entorno
CIN2: planifican y lideran una propuesta valorando todo el entorno
CIN3: conciben las soluciones para aplicar en un entorno
CIN4: consideran el desarrollo y la implantación de la solución
CIN5: consideran la administración y mantenimiento de la solución
CIN16: aprenden y aplican los principios de metodologías y ciclos de vida
CIN18: la planificación de soluciones incluye el respeto a la legislación vigente del momento
EIS2: usan metodologías para descubrir, valorar, y especificar soluciones en unos límites
EIS3: adaptan la propuesta tecnológica al problema valorado
EIS5: crean planes de contingencia para proponer alternativas en un desarrollo
EIS6: consideran aspectos legales y éticos en la planificación de requisitos y el desarrollo
ESI2: tienen en cuenta la seguridad y aspectos legales en la captación de requisitos
ESI3: especifican y diseñan el mantenimiento de las soluciones

El segundo bloque incide principalmente en:
CB.5: deben ser capaces de encontrar y adaptarse a las tecnologías nuevas
CIN5: se considera el mantenimiento de la solución
CIN8: aplican patrones para evolucionar una solución en el tiempo de forma robusta
CIN13: implementan aplicaciones basadas en web
CIN16: aplican varios ciclos de vida sobre soluciones existentes o propuestas
EIS3: aplican los patrones más adecuados según los requisitos
EIS5: usan patrones para adaptar el software de forma robusta a los cambios de requerimientos o riesgos
EIS6: aplican aspectos éticos al desarrollo del software
ESI3: diseñan e implementan las soluciones

De forma transversal a toda la asignatura:
CB.2: demuestra y aplican sus conocimientos
CT.1: la mayor parte del material del temario y todas las prácticas y código son en inglés
CT.2: cumple varios roles e interacciones según tarea
EIS1, EIS4: aplica y mejora, de forma progresiva, las prácticas y desarrollo actuales.

 

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]

Sistema de evaluación


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

·          Examen E1: 30%

·          Examen E2: 30%

·          Prácticas de la P1 en la P5: 40% (8% cada una de las prácticas)

Si la nota de cada una de las prácticas de P1 a P5 iguala o supera el 3, la nota de prácticas PS será la ponderación. De lo contrario será la mínima.

Si las nota de las prácticas PS y de cada uno de los exámenes E1 y E2 iguala o supera el 3, la nota de final NF será la ponderación (40% prácticas, 30% y 30% los exámenes). De lo contrario será la mínima de ellas.

Sólo podrán recuperarse las pruebas E1 y E2 en una única prueba de toda la asignatura (las prácticas no se podrán recuperar). El 60% de la nota final de la asignatura será la mayor entre el examen de recuperación ER y la obtenida en las pruebas E1 y E2.

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

-          La nota de la asignatura es inferior a cinco.

- Al menos tiene un 3 en cada uno de los exámenes.

-          Al menos tiene un 3 de cada una de las prácticas. 

Bibliografía


Básico

Patrones de diseño: Elementos de software orientado a objetos reutilizable.

Gama, Eric et all. Addison-Wesley, golpe. 2003. ISBN 9788478290598.

Warmer, Jos B; Kleppe, Anneke G. The Object constraint language: getting your modelos ready for MDA. 2nd ed. Reading 2003: Addison-Wesley. ISBN 0321179366.

Pruebas de software y JUnit: un análisis en Profundidad y Ejemplos prácticos. Bolaños Alonso, Daniel; Sierra Alonso, Almudena; Alarcón Rodríguez, Miren Idoia. 1a. Prentice-Hall España, 2008. ISBN 9788483223543.

Complementario

Writing testable Code. Miskin Hevery. http://misko.hevery.com/code-reviewers-guide/

Robert C. Martin: Principios del Diseño Orientado a Objetos http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod

UML y patrones: una introducción al análisis y diseño orientado a objetos y el Proceso unificada.

Larman, CRAI Prentice Hall, golpe. 2003. ISBN 978 8420534382.

Patronas de diseño aplicadas a Java. Stelting Stephen, Maassen Olav. Prentice-Hall 2003. ISBN 9788420538396.

Web del profesor: http://david-rodenas.com/tc/es3