Denominación de la asignatura: Ingeniería del Software Avanzada
Postgrado al que pertenece: Grado en Ingeniería Informática
Créditos ECTS: 6
Cuatrimestre en el que se imparte: Tercer curso, segundo cuatrimestre
Carácter de la asignatura: Obligatoria

Presentación

En esta asignatura profundizaremos en las técnicas, actividades, procesos y herramientas empleadas en la ingeniería del software a un nivel avanzado.

El hilo conductor de la asignatura será la implementación de un proyecto real aplicando algunas de las técnicas estudiadas durante la asignatura, de una manera integradora y realista. Se hará especial énfasis en las herramientas metodológicas y prácticas propuestas por algunas de las principales metodologías ágiles, como la utilización de sistemas de control de versiones, o el desarrollo dirigido por pruebas.

Analizaremos en profundidad conceptos relevantes de arquitectura de sistemas y de aplicaciones y veremos algunos patrones de diseño comúnmente empleados, tanto para para aplicaciones en general como para el caso particular de aplicaciones móviles y aplicaciones en la nube.

Finalmente, veremos algunas ideas importantes relacionadas con la mejora del proceso de software y algunas tendencias emergentes, tanto a niel de los procesos como a niel de la práctica profesional e la ingeniería del software.

Competencias básicas

  • CB1: Que los estudiantes hayan demostrado poseer y comprender conocimientos en un área de estudio que parte de la base de la educación secundaria general, y se suele encontrar a un nivel que, si bien se apoya en libros de texto avanzados, incluye también algunos aspectos que implican conocimientos procedentes de la vanguardia de su campo de estudio.
  • CB2: Que los estudiantes sepan aplicar sus conocimientos a su trabajo o vocación de una forma profesional y posean las competencias que suelen demostrarse por medio de la elaboración y defensa de argumentos y la resolución de problemas dentro de su área de estudio.
  • CB3: Que los estudiantes tengan la capacidad de reunir e interpretar datos relevantes (normalmente dentro de su área de estudio) para emitir juicios que incluyan una reflexión sobre temas relevantes de índole social, científica o ética.
  • CB4: Que los estudiantes puedan transmitir información, ideas, problemas y soluciones a un público tanto especializado como no especializado.
  • CB5: Que los estudiantes hayan desarrollado aquellas habilidades de aprendizaje necesarias para emprender estudios posteriores con un alto grado de autonomía.

Competencias generales

  • CG-01: Capacidad para concebir, redactar, organizar, planificar, desarrollar y firmar proyectos en el ámbito de la ingeniería en informática que tengan por objeto, la concepción, el desarrollo o la explotación de sistemas, servicios y aplicaciones informáticas.
  • CG-02: Capacidad para dirigir las actividades objeto de los proyectos del ámbito de la informática.
  • CG-04: Capacidad para definir, evaluar y seleccionar plataformas hardware y software para el desarrollo y la ejecución de sistemas, servicios y aplicaciones informáticas.
  • CG-05: Capacidad para concebir, desarrollar y mantener sistemas, servicios y aplicaciones informáticas empleando los métodos de la ingeniería del software como instrumento para el aseguramiento de su calidad.

Competencias específicas

  • CR-13: Conocimiento y aplicación de las herramientas necesarias para el almacenamiento, procesamiento y acceso a los Sistemas de información, incluidos los basados en web.
  • CR-16: Conocimiento y aplicación de los principios, metodologías y ciclos de vida de la ingeniería de software.

Competencias transversales

  • CT-1: Capacidad de innovación y flexibilidad en entornos nuevos de aprendizaje como es la enseñanza on-line.
  • CT-2: Conocer, y utilizar con habilidad, los mecanismos básicos de uso de comunicación bidireccional entre profesores y alumnos, foros, chats, etc.
  • CT-3: Utilizar las herramientas para presentar, producir y comprender la información que les permita transformarla en conocimiento.

Tema 1. Introducción a las metodologías ágiles

  • Introducción y objetivos  
  • Modelos de proceso y metodologías 
  • Agilidad y procesos ágiles    
  • Manifiesto ágil    
  • Algunas metodologías ágiles    
  • Ágil vs. tradicional    

Tema 2. Scrum

  • Introducción y objetivos  
  • Orígenes y filosofía de Scrum   
  • Valores de Scrum    
  • Flujo del proceso Scrum   
  • Los roles de Scrum    
  • Los artefactos de Scrum    
  • Los eventos de Scrum  
  • Las historias de usuario    
  • Extensiones de Scrum    
  • Estimaciones ágiles    
  • Escalado de Scrum

Tema 3. Programación extrema

  • Introducción y objetivos   
  • Justificación y visión general de XP 
  • El ciclo de vida en XP   
  • Los cinco valores básicos    
  • Las doce prácticas básicas en XP    
  • Roles de los participantes   
  • XP Industrial   
  • Valoración crítica de XP    

Tema 4. Desarrollo de software basado en reutilización

  • Introducción y objetivos    
  • La reutilización del software    
  • Niveles de reutilización de código   
  • Técnicas concretas de reutilización    
  • Desarrollo basado en componentes    
  • Beneficios y problemas de la reutilización    
  • Planificación de la reutilización  

Tema 5. Patrones de arquitectura de sistemas

  • Introducción y objetivos  
  • El diseño arquitectónico   
  • Patrones arquitectónicos generales   
  • Arquitecturas tolerantes a fallos   
  • Arquitecturas de sistemas distribuidos 

Tema 6. Patrones de diseño de software

  • Introducción y objetivos    
  • Los patrones de diseño  
  • Patrones de Gamma    
  • Patrones de diseño de interacción 

Tema 7. Arquitectura de aplicaciones en la nube

  • Introducción y objetivos    
  • Fundamentos de Cloud Computing    
  • Calidad de las aplicaciones en la nube    
  • Estilos de arquitectura    
  • Patrones de diseño   

Tema 8. Pruebas del software: TDD, ATDD y BDD

  • Introducción y objetivos    
  • Verificación y validación del software   
  • Las pruebas de software
  • Test Driven Development (TDD)
  • Acceptance Test Driven Development (ATDD)    
  • Behavior Driven Development (BDD)    
  • BDD y Cucumber 

Tema 9. La mejora del proceso de software

  • Introducción y objetivos    
  • La mejora del proceso de software    
  • El proceso de mejora de procesos    
  • Modelos de madurez 
  • El modelo CMMI    
  • CMMI V2.0    
  • CMMI y Ágil    

Tema 10.  La calidad del producto software: SQuaRE

  • Introducción y objetivos    
  • La calidad del software    
  • Modelos de calidad del producto software    
  • Familia ISO/IEC 25000    
  • ISO/IEC 25010: modelo y características de calidad    
  • ISO/IEC 25012: la calidad de los datos    
  • ISO/IEC 25020: medición de la calidad del software    
  • ISO/IEC 25022, 25023 y 25024: métricas de calidad del software y de los datos    
  • ISO/IEC 25040: evaluación del software    
  • El proceso de certificación

Tema 11.   Introducción a DevOps

  • Introducción y objetivos    
  • Concepto de DevOps    
  • Prácticas principales       

Las actividades formativas de la asignatura se han elaborado con el objetivo de adaptar el proceso de aprendizaje a las diferentes capacidades, necesidades e intereses de los alumnos.

Las actividades formativas de esta asignatura son las siguientes:

  • Trabajo. Se trata de actividades de diferentes tipos: reflexión, análisis de casos, prácticas, etc.
  • Comentario de lecturas. Es un tipo de actividad muy concreto que consiste en el análisis de textos de artículos de autores expertos en diferentes temas de la asignatura.
  • Casos prácticos. Situarán al alumno ante situaciones reales que tendrán que analizar y tras ello tomar decisiones, evaluar consecuencias y alternativas.
  • Participación en eventos. Son eventos programados todas las semanas del cuatrimestre: sesiones presenciales virtuales, foros de debate.
Descargar programación

Estas actividades formativas prácticas se completan, por supuesto, con estas otras:

  • Estudio personal
  • Tutorías. Las tutorías se pueden articular a través de diversas herramientas y medios. Durante el desarrollo de la asignatura, el profesor programa tutorías en días concretos para la resolución de dudas de índole estrictamente académico a través de las denominadas “sesiones de consultas”. Como complemento de estas sesiones se dispone también del foro “Pregúntale al profesor de la asignatura” a través del cual se articulan algunas preguntas de alumnos y las correspondientes respuestas en el que se tratan aspectos generales de la asignatura. Por la propia naturaleza de los medios de comunicación empleados, no existen horarios a los que deba ajustarse el alumno.
  • Examen final presencial

Las horas de dedicación a cada actividad se detallan en la siguiente tabla:

ACTIVIDADES FORMATIVAS HORAS POR ASIGNATURA % PRESENCIAL
Sesiones presenciales virtuales 15 horas 100%
Lecciones magistrales 6 horas 0
Estudio del material básico 50 horas 0
Lectura del material complementario 25 horas 0
Trabajos, casos prácticos 17 horas 0
Prácticas de laboratorios virtuales 12 16,7%
Tutorías 16 horas 30%
Trabajo colaborativo 7 horas 0
Examen final presencial 2 horas 100%
Total 150 horas -

Bibliografía básica

Recuerda que la bibliografía básica es imprescindible para el estudio de la asignatura. Cuando se indica que no está disponible en el aula virtual, tendrás que obtenerla por otros medios: librería UNIR, biblioteca...

Los textos necesarios para el estudio de la asignatura han sido elaborados por UNIR y están disponibles en formato digital para consulta, descarga e impresión en el aula virtual.

Bibliografía complementaria

  • Baumeister, H., Lichter, H., & Riebish, M. (2017). Agile processes in software engineering and extreme programming. New York, NY: Springer Open. Recuperado a partir de https://link.springer.com/book/10.1007/978-3-319-57633-6
  • Bass, L., Weber, I. & Zhu, L. (2015). DevOps: A Software Architect’s Perspective (1ª ed.). New York: Addison-Wesley Professional.
  • Fernández, J. (2012). Introducción a las metodologías ágiles: otras formas de analizar y desarrollar [Material didáctico]. Barcelona: Universitat Oberta de Catalunya. Recuperado a partir de http://hdl.handle.net/10609/63466
  • Gamma, E., Helm, R., Johnson, R. y Vlissides, J. (2003). Patrones de diseño: elementos de software orientado a objetos reutilizables. Madrid: Pearson Educación.
  • Larman, C. (2003). UML y patrones: una introducción al análisis y diseño orientado a objetos y al proceso unificado (2.ª ed.). Pearson Educación.
  • Tuya, J., Ramos, I. y Dolado, J. J. (2007). Técnicas cuantitativas para la gestión en la ingeniería del software. La Coruña: Netbiblo.
  • Pressman, R. S. (2010). Ingeniería del software: un enfoque práctico (7.ª ed.). México: McGraw-Hill Educación.
  • SEI. (2010). CMMI para Desarrollo, Versión 1.3 (No. CMU/SEI-2010-TR-033). Software Engineering Institute. Recuperado de https://resources.sei.cmu.edu/asset_files/WhitePaper/2010_019_001_28782.pdf
  • Sommerville, I. (2011). Ingeniería de software (9.ª ed.). México: Pearson Educación de México.

El sistema de calificación se basa en la siguiente escala numérica:

0 - 4, 9

Suspenso

(SS)

5,0 - 6,9

Aprobado

(AP)

7,0 - 8,9

Notable

(NT)

9,0 - 10

Sobresaliente

(SB)

La calificación se compone de dos partes principales:

El examen se realiza al final del cuatrimestre y es de carácter PRESENCIAL y OBLIGATORIO. Supone el 60% de la calificación final y para que la nota obtenida en este examen se sume a la nota final, es obligatorio APROBARLO.

La evaluación continua supone el 40% de la calificación final. Este 40% de la nota final se compone de las calificaciones obtenidas en las diferentes actividades formativas llevadas a cabo durante el cuatrimestre.

Ten en cuenta que la suma de las puntuaciones de las actividades de la evaluación continua permite que realices las que prefieras hasta conseguir el máximo puntuable mencionado en la programación semanal. En ella se detalla la calificación máxima de cada actividad o evento concreto puntuables.

Para aprobar la asignatura será necesario aprobar cada una de las partes.

El sistema de evaluación de la asignatura es el siguiente:

SISTEMA DE EVALUACIÓN 
PONDERACIÓN MIN. 
PONDERACIÓN MÁX. 
Prueba de evaluación final presencial
60%
60%
Evaluación de prácticas de laboratorios virtuales
0%
40%
Resolución de trabajos, proyectos y casos
0%
40%
Participación en foros y otros medios participativos
0%
40%

Luis Pedraza Gomara

Formación académica: Doctor en Automática y Robótica. Master en Economía Digital e Industrias Creativas. Ingeniero Industrial (Automática y Electrónica, UPM).

Experiencia: Ingeniero Senior en biicode. Estancia posdoctoral y Contrato Juan de la Cierva. Docencia en Visión por computador, Ingeniería de control, Automática industrial, y Automatización de la producción. Estancia en el ARC Centre of Excellente for Autonomous Systems (CAS), Australia. University of Technology, Sydney.

Obviamente, al tratarse de formación online puedes organizar tu tiempo de estudio como desees, siempre y cuando vayas cumpliendo las fechas de entrega de actividades, trabajos y exámenes. Nosotros, para ayudarte, te proponemos los siguientes pasos:

  1. Desde el Campus virtual podrás acceder al aula virtual de cada asignatura en la que estés matriculado y, además, al aula virtual del Curso de introducción al campus virtual. Aquí podrás consultar la documentación disponible sobre cómo se utilizan las herramientas del aula virtual y sobre cómo se organiza una asignatura en la UNIR y también podrás organizar tu plan de trabajo personal con tu profesor-tutor.
  2. Observa la programación semanal. Allí te indicamos qué parte del temario debes trabajar cada semana.
  3. Ya sabes qué trabajo tienes que hacer durante la semana. Accede ahora a la sección Temas del aula virtual. Allí encontrarás el material teórico y práctico del tema correspondiente a esa semana.
  4. Comienza con la lectura de las Ideas clave del tema. Este resumen te ayudará a hacerte una idea del contenido más importante del tema y de cuáles son los aspectos fundamentales en los que te tendrás que fijar al estudiar el material básico. Consulta, además, las secciones del tema que contienen material complementario.
  5. Dedica tiempo al trabajo práctico (sección Actividades y Test). En la programación semanal te detallamos cuáles son las actividades correspondientes a cada semana y qué calificación máxima puedes obtener con cada una de ellas.
  6. Te recomendamos que participes en los eventos del curso (sesiones presenciales virtuales, foros de debate…). Para conocer la fecha concreta de celebración de los eventos debes consultar las herramientas de comunicación del aula vitual. Tu profesor y tu profesor-tutor te informarán de las novedades de la asignatura.

En el aula virtual del Curso de introducción al campus virtual encontrarás siempre disponible la documentación donde te explicamos cómo se estructuran los temas y qué podrás encontrar en cada una de sus secciones.

Recuerda que en el aula virtual del Curso de introducción al campus virtual puedes consultar el funcionamiento de las distintas herramientas del aula virtual: Correo, Foro, Sesiones presenciales virtuales, Envío de actividades, etc.

Ten en cuenta estos consejos...

  • Sea cual sea tu plan de estudio, accede periódicamente al aula Virtual, ya que de esta forma estarás al día de las novedades del curso y en contacto con tu profesor y con tu profesor tutor.
  • Recuerda que no estás solo: consulta todas tus dudas con tu profesor-tutor utilizando el correo electrónico. Además, siempre puedes consultar tus dudas sobre el temario en los foros que encontrarás en cada asignatura (Pregúntale al profesor).
  • ¡Participa! Siempre que te sea posible accede a los foros de debate. El intercambio de opiniones, materiales e ideas nos enriquece a todos.
  • Y ¡recuerda!, estás estudiando con metodología on line: tu esfuerzo y constancia son imprescindibles para conseguir buenos resultados. ¡No dejes todo para el último día!