Experimentación en Ingeniería del Software

Profesor (Coordinador):
Sira Vegas
svegas@fi.upm.es
Profesor:
Natalia Juristo
natalia@fi.upm.es

Semestre

Segundo semestre

Créditos

4 ECTS

Resumen

No se están evaluando de forma adecuada las tecnologías de Ingeniería de Software, es decir, los profesionales no saben a ciencia cierta si una tecnología es o no eficaz y, en caso afirmativo, no pueden estar seguros de cuán eficaz y aplicable es. Esta falta de evaluación adecuada menoscabe la capacidad de la industria para producir software competitivo de calidad.

La ingeniería de software experimental (ISE) es una disciplina de la Ingeniería de Software que pretende producir información fiable para los profesionales acerca de qué tecnologías se deben utilizar en los proyectos de desarrollo de software. La ISE utiliza estudios empíricos (experimentos, cuasi-experimentos, estudios de caso, etc.) para evaluar la eficacia de las tecnologías para el desarrollo de software.

Esta asignatura tiene como objetivo formar a los alumnos en las habilidades básicas necesarias para aplicar los métodos empíricos. Se centra en los experimentos, ya que constituyen el tipo de estudio empírico más maduro y mejor entendido en el campo de la IS. Los alumnos aprenderán cómo realizar, analizar, agregar y replicar los experimentos (en la industria y en entornos académicos).

Objetivos:

  • Comprensión de la limitación actual de las tecnologías de la ingeniería del software debido a su estudio deficiente
  • Comprensión de lo que son un laboratorio experimental y un experimento en la ingeniería del software
  • Conocimiento de los distintos elementos de los experimentos en la ingeniería del software: variable de respuesta, factores, niveles, etc.
  • Diseño de experimentos para las tecnologías de ingeniería del software: randomización, otras estrategias de control, tipos de diseño, etc.
  • Comprensión de los informes de los experimentos en la ingeniería del software
  • Aplicación de las técnicas de análisis de datos estadísticas (es decir, t-test, ANOVA, cálculo de tamaño de muestras)

Programa

  1. Introducción a la ingeniería del software experimental
    1. Los fundamentos del empiricismo
    2. El método científico
    3. Normas científicas: relaciones causa-efecto
    4. Inmadurez científica de la ingeniería del software
  2. Laboratorio y experimento
    1. El concepto de laboratorio
    2. El concepto de experimento
    3. Un laboratorio para la ingeniería del software
    4. Un experimento para la ingeniería del software
  3. Elementos de un experimento
    1. Variables respuesta
    2. Factores y niveles
    3. Tipos de estudios empíricos
  4. El diseño de experimentos
    1. Tipos de variables
    2. Tipos de control
    3. Validez del experimento

Bibliografía

Prerrequisitos

  • Conocimientos básicos de estadística

Idioma en que se imparte

Inglés

Competencias Específicas

Código, descripción y nivel de cada una de las competencias específicas de la asignatura
Código Competencia Nivel
CEM1 Identificar, a partir del estado de la cuestión, la presencia de problemas de investigación relacionados con la concepción, la construcción, el uso y la evaluación de sistemas sociotécnicos complejos que hagan un uso intensivo de software A
CEM3 Aplicar métodos de investigación relevantes a problemas abiertos en el área de la Ingeniería del Software, relacionados tanto con las características peculiares del producto software como con la gestión del desarrollo del mismo. A

Resultados de Aprendizaje

Código, descripción, competencias asociadas y nivel de adquisición de cada uno de los resultados de aprendizaje de la asignatura
Código Resultado de Aprendizaje Competencias asociadas Nivel de Adquisición
RA-IS-23 Comprender la aplicación del paradigma experimental en ingeniería del software CEM1, CEM3 A
RA-IS-24 Diseñar experimentos en ingeniería del software, incluyendo replicaciones experimentales CEM1, CEM3 A
RA-IS-35 Realizar agregaciones de experimentos en ingeniería del software CEM3 A

Guía de Aprendizaje

Guía de aprendizaje: Experimentación en Ingeniería del Software