Está en la página 1de 33

Experimentación en

Ingeniería de Software
Marcela Genero Bocco / José A. Cruz-Lemus
Grupo Alarcos
http://alarcos.esi.uclm.es

Universidad de Castilla-La Mancha


Escuela Superior de Informática
Departamento de Tecnologías y Sistemas de Información
Ciudad Real - España

Contenidos

• Introducción
• Tipos de Estudios empíricos
• Experimentos
ƒ Conceptos generales
ƒ Proceso experimental
• Replicación
• Algunas recomendaciones
• Herramientas de Soporte
• Conclusiones
• Bibliografía y recursos útiles

2
Experimentación en Ingeniería del Software.

1
Introducción

• Gran competitividad en el mercado actual.


• Adopción de nuevas tecnologías sin probar su
utilidad práctica.

Gran porcentaje de proyectos software fracasados

• Necesario un enfoque para elegir entre


alternativas viables y predecir o simular el
comportamiento de los procesos/productos
ƒ Evidence-Based Software Engineering
• Las propuestas sobre nuevos métodos, tecnologías son
validadas mediante la realización de ESTUDIOS
EMPÍRICOS Æ Madurez de Ingeniería del Software

3
Experimentación en Ingeniería del Software.

Introducción

• Los Estudios Empíricos son necesarios para mejorar


procesos, métodos y herramientas para el desarrollo y
mantenimiento de software (Sjoberg et al., 2005)

• Tipos de Estudios Empíricos:


ƒ Experimentos, Casos de Estudio, Encuestas

• La Experimentación pretende emparejar con hechos las


suposiciones, asunciones, especulaciones y creencias que
surgen durante la construcción y mantenimiento del software

• Trabajar con hechos vs asunciones Æ Ingeniería


ƒ Ingeniería de Software consiste en aplicar conocimiento científico
al desarrollo, operación y mantenimiento de los sistemas software
(IEEE 610.12).
La Experimentación es una parte importante de
este conocimiento científico

4
Experimentación en Ingeniería del Software.

2
Introducción
Motivación

En España:
•El 30% de los artículos no tienen nada
de experimentación y solo el 10% de JISBD Total Con Prom.
los que tienen algo de experimentación Artículos Exp.
siguen una aproximación formal
(Zelkowitz, 1998) 1999 37 2 4.26 %

2000 39 6 15.38 %
•Sólo el 8% de los artículos publicados
incluyen una evaluación cuantitativa de 2001 38 4 10.53 %
al menos dos páginas (Tichy, 1993)
2002 39 8 20.51 %
•Sobre 400 artículos de investigación, el
40% de aquellos que requerían 2003 78 4 5%
validación empírica no la tenían (Tichy, 2004 52 8 15%
1995)
2005 40 2 5%
•Entre 5453 artículos científicos 2006 56 3 5%
publicados en 12 revistas y
conferencias relevantes entre 1993 y 2007 58 1 1,72%
2002, 103 artículos (1,9%) presentaban
experimentos controlados (Sjoberg et al. 2008 52 1 1,92%
2005).
2009 59 5 8,47%
5
Experimentación en Ingeniería del Software.

Introducción
Motivación

¿Por qué no se le da suficiente importancia a la


Ingeniería del Software Empírica?
(Tichy, 1998)

Excusa Refutación
El método científico tradicional no es Para entender el proceso de la información,
aplicable los científicos informáticos deben observar
los fenómenos y formular y probar
explicaciones. Este es el método científico
El nivel de experimentación actual es Comparando con otras ciencias, los
suficiente científicos informáticos validan un
porcentaje mínimo de sus proclamas
Los experimentos tienen un coste muy alto Pueden llevarse a cabo experimentos
significativos con presupuestos pequeños
Las demostraciones son suficientes Las demostraciones sólo ilustran un
potencial pero no demuestran nada
La experimentación ralentiza el progreso Aumentar el porcentaje de artículos con
validación significativa es una buena
forma de acelerar el progreso
Las tecnologías cambian demasiado rápido Si una cuestión se vuelve irrelevante de
forma rápida es que no estaba bien definida

6
Experimentación en Ingeniería del Software.

3
Introducción
Motivación

¿Por qué no se le da suficiente importancia a


la Ingeniería del Software Empírica?
(Juristo y Moreno, 2001)

• Los desarrolladores no están instruidos sobre la


necesidad y la importancia de contrastar ideas
contra la realidad

• Los desarrolladores no son capaces de entender los


datos de un experimento o cómo fueron analizados
por otros porque carecen de los conocimientos
estadísticos

• El factor humano nos impide la generalización de los


resultados
7
Experimentación en Ingeniería del Software.

Contenidos

• Introducción
• Tipos de estudios empíricos
• Experimentos
ƒ Conceptos generales
ƒ Proceso experimental
• Replicación
• Algunas recomendaciones
• Herramientas de Soporte
• Conclusiones
• Bibliografía y recursos útiles

8
Experimentación en Ingeniería del Software.

4
Tipos de estudios empíricos

Dependiendo del propósito de la evaluación y las condiciones de la


investigación empírica, podemos distinguir tres estrategias
empíricas:
• Encuestas: normalmente se hacen en retrospectiva, cuando por
ejemplo, una técnica o herramienta se ha estado usando durante cierto
tiempo. Tanto los datos cualitativos como cuantitativos se recogen a
través de cuestionarios o entrevistas. Permiten obtener conclusiones
descriptivas y exploratorias.
• Casos de Estudio: son utilizados para monitorear proyectos o
actividades. Normalmente su proposito es seguir un determinado
atributo o establecer relaciones entre determinados atributos. El nivel
de control es mucho menor que en un experimento. Es un estudio de
tipo observacional. Se realizan on-line (en entornos industriales).
• Experimentos: la característica más importante es que permiten gran
nivel de control. El objetivo es variar una o mas variables y controlar
otras, para que efecto tienen sobre una determinada variable de salida.
Se ejecutan off-line (en laboratorios).

9
Experimentación en Ingeniería del Software.

Tipos de estudios empíricos

Factor Encuesta Caso de Experimento


estudio

Control de la NO NO SI
ejecución
Control de la NO SI SI
medición
Coste de la BAJO MEDIO ALTO
investigación
Facilidad de ALTO BAJO ALTO
réplica

10
Experimentación en Ingeniería del Software.

5
Contenidos

• Introducción
• Tipos de estudios empíricos
• Experimentos
ƒ Conceptos generales
ƒ Proceso experimental
• Replicación
• Algunas recomendaciones
• Herramientas de Soporte
• Conclusiones
• Bibliografía y recursos útiles

11
Experimentación en Ingeniería del Software.

Experimentos
Conceptos Generales

• La experimentación proporciona una manera sistemática,


disciplinada, cuantificable y controlada de evaluar actividades
desarrolladas por humanos (Wohlin et al., 2000):

• Los experimentos son apropiados para investigar diferentes


aspectos, incluidos:
ƒ Confirmar teorías (probar teorías existentes)
ƒ Confirmar sabiduría convencional (creencias de la gente)
ƒ Explorar relaciones (probar que existe cierta relación)
ƒ Validar métricas

Ventaja: Investigar en qué situaciones las hipótesis son


verdaderas y proporcionar a un contexto en el cual ciertos
estándares, métodos y herramientas son recomendados
para su uso.

12
Experimentación en Ingeniería del Software.

6
Experimentos
Conceptos Generales

variables indep. cuyos valores son


cambiados para estudiar su efecto Experimento

Factores (tratamientos)
independientes

experimento

dependiente
Diseño del

Variable
Variables

.....
.....

Proceso

Otras vbles (aleatorias, enmascaradas)


Variables
Variables indep. que se estudiadas para
controladas evaluar el efecto
controlan con un valor fijo

13
Experimentación en Ingeniería del Software.

Experimentos
Conceptos Generales

• Tratamientos
ƒ un determinado valor para un factor

• Objetos
ƒ procesos, productos, recursos

• Sujetos
ƒ Personas que aplican los tratamientos a los objetos

• Experimento
ƒ consiste en una serie tests (trials) donde cada test es una
combinación de tratamiento-objeto-sujeto

14
Experimentación en Ingeniería del Software.

7
Experimentos
Conceptos Generales: Ejemplo

Evaluar el efecto de un nuevo método de


desarrollo en la productividad del personal:
método orientado a objetos en lugar de un
método orientado al proceso

• Variable dependiente: productividad


• Variable independiente: método de desarrollo
• Otras variables independientes: experiencia, ambiente, tipo de
producto.
• Utilizamos dos tratamientos del factor: El método viejo y el nuevo
• Objetos: programas que deben ser desarrollados
• Sujetos: el personal de desarrollo
• Test: la persona N (sujeto) usa un nuevo método de desarrollo
(tratamiento) para desarrollar un programa A (objeto)

15
Experimentación en Ingeniería del Software.

Contenidos

• Introducción
• Experimentos
ƒ Conceptos generales
ƒ Proceso experimental
• Replicación
• Algunas recomendaciones
• Herramientas de Soporte
• Conclusiones
• Bibliografía y recursos útiles

16
Experimentación en Ingeniería del Software.

8
Experimentos
Proceso Experimental

(Wohlin et al. 2000)


Idea
Diseño del
experimento
Objetivos
Planificación
Planificación

Definición
Definición Operación
Operación
Estudio
Estudio
Análisis ee
Análisis Datos piloto
piloto
Interpretación
Interpretación
Presentación
Presentación Amenazas
Amenazas
yy Difusión
Difusión Conclusiones

17
Experimentación en Ingeniería del Software.

Experimentos
Proceso Experimental: Definición

• 1. Definición ¿Por qué se realiza el experimento?

Plantilla GQM para definición de objetivos:


Analizar Método
<Objeto(s) de estudio>
orientado a objetos y orientado al proceso
(¿qué es lo que se estudia?)

Evaluar
con el propósito de <Propósito>
(¿cuál es la intención?)

con respecto a <Enfoque Productividad


de calidad>
(¿cuál es el efecto estudiado?)

desde el punto de vista del <Perspectiva>


Investigador
(¿a la vista de quién?)

en el contexto de <Contexto>Estudiantes de grado


(¿dónde se lleva a cabo el estudio?)
18
Experimentación en Ingeniería del Software.

9
Experimentos
Proceso Experimental: Definición

• 1. Definición
Ejemplos de definición de objetivos:

Objeto de Enfoque de
estudio Propósito calidad Perspectiva Contexto
Producto Caracterizar Efectividad Desarrollador Sujetos
Proceso Supervisar Costo Mantenedor Objetos
Modelo Evaluar Fiabilidad Director de proyectos
Métrica Predecir Mantenibilidad Cliente
Teoría Controlar Portabilidad Usuario
Cambiar Investigador

19
Experimentación en Ingeniería del Software.

Experimentos
Proceso Experimental: Planificación

2. Planificación

Planificación del experimento


Definición Selección
del Formulación
contexto Selección
de la
de las
hipótesis
variables
Selección
de los
sujetos
Diseño del
Instrumen- experimento
Evaluación
Diseño de la tación
validez

20
Experimentación en Ingeniería del Software.

10
Experimentos
Proceso Experimental: Planificación

Selección del contexto

Off-line vs. On-line Evitar riesgos


Incrementa costes

Estudiantes vs. Reducir costes


profesionales Facilitar el control
¿Generalización?

Problemas de
Reduce costes y tiempo
jueguete vs.
¿Generalizacón?
problemas reales

Específicos vs. Reduce costes y tiempo


generales ¿Generalización?

21
Experimentación en Ingeniería del Software.

Experimentos
Proceso Experimental: Planificación

2. Planificación

Planificación del experimento


Definición Selección
del Formulación
contexto Selección
de las
de las
hipótesis
variables
Selección
de los
sujetos
Diseño del
Instrumen- experimento
Evaluación
Diseño de la tación
validez

22
Experimentación en Ingeniería del Software.

11
Experimentos
Proceso Experimental: Planificación

Formulación de la hipótesis

Se deriva
Se deriva del
del objetivo:
objetivo: una
una oo más
más H
H00
Plantilla GQM
Plantilla GQM
Analizar métodos
„„ Analizar métodos OO
OO yy OP
OP
„„ Con el
Con el propósito
propósito de
de Evaluar
Evaluar con
con respecto
respecto aa su
su
productividad
productividad
Desde el
„„ Desde el punto
punto de
de vista
vista del
del investigador
investigador
En el
„„ En el contexto
contexto dede estudiantes
estudiantes de de grado
grado

HH00 :: Productividad
Productividad OO OO == Productividad
Productividad OP OP
((conservadora,
conservadora, no
no existe
existe efecto
efecto del tratamiento))
del tratamiento

HH11 :: Productividad
Productividad OO OO ≠≠ Productividad
Productividad OP OP
(alternativa))
(alternativa
23
Experimentación en Ingeniería del Software.

Experimentos
Proceso Experimental: Planificación

Formulación de la hipótesis
• El hecho de corroborar las hipótesis conlleva a diferentes tipos
de riesgos

ƒ Error de tipo I: un test estadístico rechaza H0 y H0 verdadera.


• α = P(error de tipo I)=P(rechazar H0 | H0 cierta)
• Ej: Rechazo H0 aunque en promedio M1 y M2 tengan el mismo
rendimiento.

ƒ Error de tipo II: no se rechaza H0 siendo falsa.


• β = P(error de tipo II)=P(no rechazar H0 | H0 falsa)
• Ej: No rechazo H0 aunque en promedio tienen rendimientos diferentes.

• Poder del test: probabilidad de rechazar H0 cuando H0 es falsa


ƒ P= 1- β

24
Experimentación en Ingeniería del Software.

12
Experimentos
Proceso Experimental: Planificación

2. Planificación
Variables Independientes
variables cuyos valores son
Planificación del experimento
cambiados para estudiar su efecto
Definición Selección
del Otras
Formulación
contexto Selección
de las
de las
hipótesis
variables
Selección
de los
sujetos
Diseño
Variables del
Dependientes
variablesexperimento
Instrumen- que queremos estudiar
Evaluación
Diseño de la
para ver el efecto de los cambios en
tación las variables independientes
validez

25
Experimentación en Ingeniería del Software.

Experimentos
Proceso Experimental: Planificación

2. Planificación

Planificación del experimento


Definición Selección
del Formulación
contexto Selección
de las
de las
hipótesis
variables
Selección
de los
sujetos
Diseño del
Instrumen- experimento
Evaluación
Diseño de la tación
validez

26
Experimentación en Ingeniería del Software.

13
Experimentos
Proceso Experimental: Planificación

Selección de los Sujetos


• ¿Cómo seleccionar los sujetos?
ƒ Muestras probabilísticas o no probabilísticas
• Muestreo simple aleatorio, sistemático, estratificado aleatorio
• Muestreo por conveniencia, por cuota

• ¿Y el tamaño de la muestra?
ƒ Si hay gran variabilidad en la población se necesita un
muestra de mayor tamaño
ƒ La técnica de análisis puede influenciar la elección del tamaño
de la muestra

La muestra debe ser representativa


de la población

27
Experimentación en Ingeniería del Software.

Experimentos
Proceso Experimental: Planificación

2. Planificación

Planificación del experimento


Definición Selección
del Formulación
contexto Selección
de las
de las
hipótesis
variables
Selección
de los
sujetos
Diseño del
Evaluación Instrumen- experimento
Diseño de la tación
validez

28
Experimentación en Ingeniería del Software.

14
Experimentos
Proceso Experimental: Planificación

Diseño del Experimento


• Describe como se organizan los tests
• Relacionado con el análisis, interpretación y conclusiones del
experimento

• Preguntas Relevantes:
ƒ ¿Cuántas variables independientes?
• Sólo una Æ Experimentos simples
• Más de una Æ Experimentos factoriales

ƒ ¿Cuántos tratamientos por sujeto? Medidas Repetidas

ƒ ¿Cómo controlar los factores extraños? Bloqueo / Aleatorización

ƒ ¿Cómo combinar los niveles de las variables independientes? Æ


# tratamientos Diseño Cruzado
Diseño Anidado
• Estas respuestas dependen de las amenazas a la validez que
queramos controlar
29
Experimentación en Ingeniería del Software.

Experimentos
Proceso Experimental: Planificación

Diseño del Experimento: Taxonomía

Único Tratamiento por Sujeto

Grupos aleatorios
Inter-sujetos
Grupos aleatorios con bloques
(IES)
Simples Aleatorización
(1 Variable Ind) Reequilibrado (2 niveles)
Intra-sujetos
(IAS) Cuadrado latino (3 o más niveles)
Se asignan todos los
Tratamientos por Sujeto
Factor A
Factorial
Cruzado
Completos M1 M2
Factor B Herr a1 b1 a1 b2
Factoriales (2 factores) NHerr a2 b1 a2 b2

(>= 2 Variables Ind) Anidado Factor A


M1 M2
Fraccionales Factor B Factor B
Parciales H_A NoH_A H_B No H_B
a1 b1 a1 b2 a2 b1 a2 b2

30
Experimentación en Ingeniería del Software.

15
Experimentos
Proceso Experimental: Planificación

2. Planificación

Objetos Elegir los objetos apropiados


Proporciona los medios para: Planificación (especificaciones,
del experimento código
Definición
„ Realizar el experimento
Selección
documentos...)
„ Supervisar el experimento Guías Los participantes deben ser guiados
del Formulación
Es independiente de loscontexto
resultados Selección
(descripción del proceso, checklist...)
de las Entrenamiento adicional …
de las
hipótesis
Instrum. variables
Recolección de datos con formularios
Selección
medición manuales, encuestas, que deben ser
validados de los
sujetos
Diseño del
Evaluación Instrumen experimento
Diseño de la -tación
validez

31
Experimentación en Ingeniería del Software.

Experimentos
Proceso Experimental: Planificación

2. Planificación
Validez de constructo ¿Hasta qué punto las medidas seleccionadas miden las
Planificación del experimento
variables que aparecen en la hipótesis?
Definición Selección
Validez de las conclusiones
del ¿Hasta qué punto las conclusiones son
Formulación
estadísticamente válidas?
contexto Selección
de las
de las
hipótesis
variables
Validez interna ¿El tratamiento causa “realmente” el efecto? Selección
de los
Validez de externa ¿Pueden generalizarse los resultados obtenidos? sujetos
Diseño del
Instrumen- experimento
Evaluación
Diseño de la tación
validez

32
Experimentación en Ingeniería del Software.

16
Experimentos
Proceso Experimental: Planificación

Evaluación de la validez: amenazas a la validez interna

Historia Tratamientos diferentes aplicados sobre el mismo objeto en


momentos diferentes... ¿las circunstancias son las mismas?

Maduración Los sujetos reaccionan cuando el tiempo pasa


(cansancio, aburrimiento, aprendizaje)
Selección ¿La muestra de la población es representativa para toda la
población?

Instrumentació ¿Se han diseñado correctamente los artefactos utilizados en


n el experimento? Documentos que van a ser inspeccionados ..
Mortalidad Personas que abandonan el experimento.

Orden de ¿Cuánto conoce el sujeto sobre el tratamiento?


presentación Se altera para disminuir efectos de aprendizaje …

33
Experimentación en Ingeniería del Software.

Experimentos
Proceso Experimental: Planificación

Evaluación de la validez: amenazas a la validez externa


• Interacción entre selección y tratamiento
ƒ La muestra no es representativa de la población
• Interacción entre el material y el tratamiento
ƒ Material no representativo
ƒ Problemas de juguete, métodos obsoletos
• Interacción entre la historia y el tratamiento
ƒ El experimento se lleva a cabo en un momento especial que afecta a los
resultados

Evaluación de la validez: amenazas a la validez de las conclusiones

• Bajo poder estadístico, violación suposición tests


• Buscar o “pescar” un determinado resultado
• Fiabilidad de las medidas (objetivas vs subjetivas)
• Efectos perturbadores ejecución experimento
• Heteregoneidad de los sujetos

34
Experimentación en Ingeniería del Software.

17
Experimentos
Proceso Experimental: Operación

Operación
Diseño del
Preparación
experimento
Ejecución

Validación
Experimentos piloto: de datos
• Encontrar errores en el procedimiento experimental
• Verificar que las instrucciones son claras
• Verificar si las tareas tienen una complejidad
razonable y se pueden realizar en el tiempo previsto
• Asegurar el correcto funcionamiento de las
herramientas de recolección de datos
• Identificar otras circunstancias imprevistas Datos del
experimento
35
Experimentación en Ingeniería del Software.

Experimentos
Proceso Experimental: Operación

¿los sujetos entienden los formularios y los rellenan correctamente?


¿están adecuadamente motivados?
Operación
¿se aplican los tratamientos correctamente y en el orden adecuado?

Diseño del
Preparación
experimento
Ejecución

Validación
de datos
Recogida de datos:
• Manual (formularios)
• Manual asistido por herramientas
• Automática

Datos del
experimento
36
Experimentación en Ingeniería del Software.

18
Experimentos
Proceso Experimental: Análisis e Interpretación

Interpretación Cuantitativa

Datos Estadísticos
experimentales
descriptivos Reducción
del conjunto
de datos Contraste
de las
1er trim. hipótesis
2do trim.
3er trim.
4to trim.

Graphic Case Two

Conclusiones
1,5

1,0

,5

0,0

-,5

-1,0

-1,5
2 3 4 5 6 7 8 9

Observed value

37
Experimentación en Ingeniería del Software.

Experimentos
Proceso Experimental: Análisis e Interpretación

Contraste de Hipótesis

Diseño Param. No param. • Otras Técnicas (IA) :


ƒ Árboles de clasificación, Clustering,
Un factor, Chi-2 Redes neuronales, “Machine
un Test Learning
tratamiento binomial
Un factor, Test t Mann- Box Plot
Línea Base
dos Test F Whitney Diagramas de Dispersión
tratamientos Test t Chi-2
emp Wilcoxon
Explorando una Relación Normal Pearson
o Validando Métricas
TestSoftware
de los Medida de
Asociación Spearman
signos No Normal

Kendall
Un factor, ANOVA Kruskal-
Confirmación
más de dos WallisEstadística
Análisis
con

tratamientos Chi-2 Correlacional 2 Variables Regresión Lineal


Normal
Más de un ANOVA > 2 Variables Regresión Multivariante
factor Ecuación

No Normal Transformación Logarítmica

38
Experimentación en Ingeniería del Software.

19
Experimentos
Proceso Experimental: Presentación y Difusión

Presentación y Difusión
Conclusiones

Recopilación de Información

Para que el informe escrito sea útil todo


informe debe incluir:
ƒ Introducción
ƒ Definición del problema Informe
ƒ Planificación del experimento escrito
ƒ Operación del experimento
ƒ Análisis de datos
ƒ Interpretación de los resultados
ƒ Discusión y conclusiones
ƒ Apéndices
39
Experimentación en Ingeniería del Software.

Contenidos

• Introducción
• Experimentos
ƒ Conceptos generales
ƒ Proceso experimental
• Replicación
• Algunas recomendaciones
• Herramientas de Soporte
• Conclusiones
• Bibliografía y recursos útiles

40
Experimentación en Ingeniería del Software.

20
Replicación

• “El uso de experimentos precisos y repetibles es el sello


para una disciplina científica o de ingeniería madura” (Lewis
et al., 1991)

• Es importante lograr la fiabilidad de un experimento


mediante su replicación: (Brooks, et al., 1996)
ƒ Réplicas internas: experimentos repetidos por los mismos
investigadores que llevaron a cabo el original
ƒ Réplicas externas: experimentos que son realizados por otros
experimentadores, que no tienen nada que ver con los
originales

• Clasificación: (Basili et al., 1999)


ƒ Réplicas que no varían las hipótesis
• Estrictas o varían la forma de ejecución del experimento
ƒ Réplicas que varían las hipótesis
• Vbles independientes, dependientes o de contexto
ƒ Réplicas que amplían la teoría
• cambios en proceso, producto o contexto

41
Experimentación en Ingeniería del Software.

Replicación
Laboratory Packages

• Es necesario contar con “laboratory packages” (Basili et al.,


1999; Shull et al.; 2002; Ciolkowski et al., 2002)
ƒ Se diseñan específicamente para dar soporte a la replicación
externa, pero también son valiosos para las réplicas internas

ƒ Deben contener el material relacionado con:


• El análisis y objetivos del experimento
• La motivación a la hora de realizar las decisiones claves del diseño,
etc.
• El diseño experimental, incluyendo las amenazas a la validez y los
puntos fuertes del experimento
• El contexto en el cual se llevó a cabo el experimento
• El proceso para ejecutar el experimento
• Los métodos utilizados durante el análisis de los datos empíricos

ƒ Para que las réplicas sean efectivas se necesita además:


• Colaboración efectiva entre los experimentadores originales y los que
realizarán la réplica para trasmitir el “conocimiento tácito”

42
Experimentación en Ingeniería del Software.

21
Algunas Recomendaciones

• Definición de los objetivos


ƒ Describir los objetivos generales. Es buena idea comenzar replicando un
experimento.
ƒ Determinar si el experimento en cuestión es una réplica de un
experimento ya existente
ƒ Deducir las hipótesis a investigar a partir de los objetivos generales del
experimento.
ƒ Las hipótesis a testear como resultado del experimento deben ser
cuantificables.

• Diseño del experimento


ƒ Tratar de utilizar métricas objetivas para medir las variables dependientes.
ƒ En caso de sujetos heterogéneos tratar de usar bloques.
ƒ Cuando los factores sean cualitativos, describir claramente los que
pueden tomar.
ƒ Tener en cuenta los efectos del aprendizaje, del aburrimiento, ...
ƒ Si hay que asignar los tests, hacerlo de forma aleatoria.
ƒ Determinar el mejor tipo de diseño experimental para cada caso
particular.

43
Experimentación en Ingeniería del Software.

Algunas Recomendaciones

• Ejecución del experimento


ƒ Procurar no molestar a los sujetos mientras realizan el experimento.
ƒ Recordar a los sujetos que el objetivo del experimento no es medirles a
ellos sino los factores bajo consideración.
ƒ Tratar de no descubrir a los sujetos cuales son las hipótesis que se trata
de testear.
ƒ Asegurarse de que los sujetos no comparten información durante la
ejecución del experimento.

• Análisis de los datos


ƒ Tratar de utilizar tests estadísticos robustos.
ƒ Validar cuidadosamente los requisitos de cada test estadístico
(normalidad de los datos, …)
ƒ Ser cuidadoso al extrapolar los resultados de un experimento al entorno
industrial.
ƒ Ser cuidadoso con aquellas variables sospechosas que pueden afectar a
la variable dependiente.

44
Experimentación en Ingeniería del Software.

22
Algunas Recomendaciones

• Kitchenham et al. (2002) proponen una serie de


recomendaciones para la investigación empírica
en la Ingeniería de Software.

• Jedlitschka and Pfahl (2005) proponen


recomendaciones sobre ¿Cómo reportar
experimentos?

45
Experimentación en Ingeniería del Software.

Herramientas de Soporte

• Empirical Web-Gen http://webgen.webportalquality.com/


ƒ Diseño de encuestas y experimentos,
• Definición de tareas: Preguntas de tipo Si/No, Verdadero/Falso, Elección Múltiple, Respuesta
Abierta, Matriz y ejercicios.
• Opción de presentación aleatoria de preguntas y respuestas
ƒ Corrección automática (asignación de puntuación a las preguntas)
ƒ Monitorización de las encuestas y experimentos en tiempo real.
ƒ Administración de usuarios; gestión de permisos.
ƒ Generación de informes (tiempos, respuestas, aciertos/fallos y puntuaciones).

46
Experimentación en Ingeniería del Software.

23
Herramientas de Soporte

Define Survey or Experiment

<<include>>
SuperUser Delete Survey or Experiment

<<include>>

<<include>> Register

Modify Survey or Experiment

<<include>> Sign In <<include>> User

Administrator
(from Analysi s Model)
View Reports
<<include>>

Launch Survey or Experiment

Simulate Survey or Experiment

Manage Permissions Manage Users

47
47
18
Experimentación en Ingeniería del Software.

Herramientas de Soporte

Task
Model
Ta sks Group
• Empirical Web-Gen Experiment
name
name
image
name
ti mer
statement
answers
solution
random complexity
1 1..n 1 1..n random 1 1..n positive mark
instructions random
order negative mark
order
order

0..n

Answer
user
answer given
date

48
Experimentación en Ingeniería del Software.

24
Herramientas de Soporte

• Empirical Web-Gen

49
Experimentación en Ingeniería del Software.

Contenidos

• Introducción
• Experimentos
ƒ Conceptos generales
ƒ Proceso experimental
• Replicación
• Algunas recomendaciones
• Herramientas de Soporte
• Conclusiones
• Bibliografía y recursos útiles

50
Experimentación en Ingeniería del Software.

25
Conclusiones

• Los estudios empíricos juegan un papel fundamental en la


ingeniería del software

• Si queremos que los estudios empíricos mejoren la


investigación y la práctica de la ingeniería del software
necesitamos crear mejores estudios y necesitamos obtener
conclusiones más creíbles a partir de ellos
ƒ Diseñar mejores experimentos, que sean repetibles
ƒ Realizar “familias” de experimentos
ƒ Integrar experimentos que investiguen las mismas hipótesis
ƒ Diseñar y construir “paquetes de laboratorio”
ƒ Mejorar los conocimientos estadísticos
ƒ Ingeniería del Software Empírica Æ Formar a los estudiantes en
temas de experimentación y diferentes tipos de estudios
empíricos

51
Experimentación en Ingeniería del Software.

Conclusiones

• Realización de Experimentos en Entornos


Académicos (García et al., 2008)

ƒ Son muy beneficiosos y se deberían realizar siempre que


sea posible en cursos de Ingeniería del Software
• Formación en Métodos Empíricos
• Entusiasmo de los alumnos e Interés por conocer los
resultados obtenidos

ƒ Pero, hay que considerar siempre:


• los beneficios pedagógicos que se pueden aportar
• consideraciones éticas para evitar su desmotivación y
descontento.

52
Experimentación en Ingeniería del Software.

26
Contenidos

• Introducción
• Experimentos
ƒ Conceptos generales
ƒ Proceso experimental
• Replicación
• Algunas recomendaciones
• Herramientas de Soporte
• Conclusiones
• Bibliografía y recursos útiles

53
Experimentación en Ingeniería del Software.

Bibliografía

ƒ Redes
ƒ ISERN (International Software Engineering Research Network)
http://www.iese.fhg.de/ISERN/

ƒ Revistas:
ƒ Empirical Software Engineering
ƒ http://www.kluweronline.com/issn/1382-3256

ƒ Conferencias
ƒ ESEM
ƒ ICSE
ƒ RESER Workshop (dentro del ICSE)
ƒ Etc…

54
Experimentación en Ingeniería del Software.

27
Bibliografía
Libros genéricos

ƒ Juristo N. y Moreno A. (2001). Basics of Software


Engineering Experimentation. Kluwer Academic
Publishers.
ƒ Maxwell, K. (2002). Applied Statistics for Software
Managers. Software Quality Institute Series. Prentice Hall.
ƒ Shull, Forrest; Singer, Janice; Sjøberg, Dag I.K. (Eds.)
(2008). Guide to Advanced Empirical Software
Engineering. Springer
ƒ Wohlin C., Runeson P., Höst M., Ohlson M., Regnell B.
and Wesslén A. (2000). Experimentation in Software
Engineering: An Introduction. Kluwer Academic
Publishers.

55
Experimentación en Ingeniería del Software.

Bibliografía
Experimentos

• Briand, L. Morasca, S., Basili, V. Defining and Validating Measures for Object-
Based High-Level Design. IEEE TSE 25 (5) 722-743 (1999) .
• Briand, L., Labiche, Y., Di Penta, M., Yan-Bondoc, H. An Experimental
Investigation of Formality in UML-Based Development IEEE TSE 31(10)
(2005)
• Cruz-Lemus, Genero, M., Morasca, S. y Piattini, M. (2009). Assessing the
Understandability of UML Statechart Diagrams with Composite States - A
Family of Empirical Studies. Empirical Software Engineering, Vol 14, pág. 685–
719, 2009.
• Dzidek, W., Arisholm, E., Briand, L. A Realistic Empirical Evaluation of the
Costs and Benefits of UML in Software Maintenance. IEEE TSE, 34(3), 1-29
(2008).
• Genero, M., Manso, MªE., Viasggio, A., Piattini, M. and Canfora, G. (2007).
Building Measure-based Prediction Models for UML Class Diagram
Maintainability. Empirical Software Engineering. 12(5), 517-549, 2007.
• Genero, M., Poels, G. and Piattini, M. (2008). Defining and Validating Metrics
for Assessing the Understandability of Entity-Relationship Diagrams. Data and
Knowledge Engineering. 64(3), 534-557.

56
Experimentación en Ingeniería del Software.

28
Bibliografía
Experimentos
• Jedlitschka, A., Ciolkowski, M. y y Pfahl D. (2008). Reporting experiments in
Software engineering. Chapter 8, (2008). Guide to Advanced Empirical
Software Engineering. Springer.
• Kitchenham B., Pfleeger S., Pickard L., Jones P., Hoaglin D., El- Emam K.
and Rosenberg J. (2002) Preliminary Guidelines for Empirical Research in
Software Engineering, IEEE Transactions on Software Engineering, 28(8) 721-
734.
• Reinhartz-Berger, I., Dori, D. OPM vs. UML—Experimenting with
Comprehension and Construction of Web Application Models. Empirical
Software Engineering, 10 57–79 (2005)
• Verelst, J. The Influence of the Level of Abstraction on the Evolvability of
Conceptual Models of Information Systems. Empirical Software Engineering 10
467-494 (2005).

57
Experimentación en Ingeniería del Software.

Bibliografía
Casos de estudio

• Damian, D., Chisan, J., Pal, Y. Requirements Engineering and Downstream


Software Development: Findings from a Case Study. Empirical Software
Engineering, 10, 255–283, 2005
• Karlstrom, D., Runeson, P. Integrating agile software development into stage-
gate managed product development. Empir Software Eng (2006) 11: 203–225
• Morisio, M. Romano, D., Stamelos, I. Quality, Productivity, and Learning in
Framework-Based Development: An Exploratory Case Study. IEEE TSE,
28(9), (2002), 876-888.
• Regnell, B. Hö st, M., Dag, J., Beremark, P., Hjelm, T. An Industrial Case
Study on Distributed Prioritisation in Market-Driven Requirements Engineering
for Packaged Software. Requirements Eng (2001) 6:51–62
• Runeson, P., Höst, M. Guidelines for conducting and reporting case study
research in software engineering. Empirical Software Engineering (2009)
14:131–164.
• Segal, J. When Software Engineers Met Research Scientists: A Case Study.
Empirical Software Engineering, 10, 517–536, 2005.
• Yin, R. K. (2002). Case study research. Design and methods (Third ed. ).
California: Sage Publications.

58
Experimentación en Ingeniería del Software.

29
Bibliografía
Encuestas

• Grossman, M., Aronson, J. E., & McCarthy, R. V. (2005). Does UML make
the grade? Insights from the software development community. Information
and Software Technology 47(6) 383-397. Newton, MA, USA.
• Kitchenham, B. Pfleeger, S.: Principles of survey research. ACM SIGSOFT
Software Engineering Notes. Part 1 26(6) : 16-18 (2001), Part 2 27(1): 18-20
(2002), Part 3 27(2): 20-24 (2002), Part 4 27(3): 20-23 (2002), Part 5 27(5):
17-20 (2002), Part 6 28(2): 24-27 (2003). ACM SIGSOFT Software
Engineering Notes.
• Lange, C. F. J., Chaudron, M. R. V.,Muskens, J. (2006). In practice: UML
software architecture and design description. IEEE Software 23(2) 40-46.

59
Experimentación en Ingeniería del Software.

Bibliografía
Réplicas y familias de experimentos

• Basili V., Shull F. and Lanubile F. (1999) Building knowledge through families
of experiments, IEEE Transactions on Software Engineering, 25(4) (1999)
435-437.
• Brooks, A., Roper, M., Wood, M., Daly, J., Miller, J. (2008).Replication´s role
in Software Engineering. Chapter 14, (2008). Guide to Advanced Empirical
Software Engineering. Springer.
• Juristo, N., Vegas, S. Using differences among replications of software
engineering experiments to gain knowledge. ESEM 2009: 356-366
• Shull F., Carver J., Travassos G., Maldonado J., Conradi R. and Basili V.
(2003). Replicated Studies: Building a Body of Knowledge about Software
Reading Techniques. Lecture Notes on Empirical Software Engineering
(Juristo N. and Moreno A. Eds.), World Scientific, Singapore, 39-84.
• Shull, F., Jeffrey C. Carver, Sira Vegas, Natalia Juristo Juzgado: The role of
replications in Empirical Software Engineering. Empirical Software
Engineering 13(2): 211-218 (2008).
• Vegas, S., Juristo, N., Moreno, A.M., Solari, M., and Letelier, P. 2006.
Analysis of the Influence of Communication between Researchers on
Experiment Replication. ISESE 2006. 28-37.

60
Experimentación en Ingeniería del Software.

30
Bibliografía
Agregación de resultados

• Biostat, Inc. 2006. Meta-Analysis v2. http://www.meta-analysis.com


• Dybå, T., Arisholm, E., Sjøberg, D. I. K., Hannay, J. E., and Shull, F. 2007.
Are Two Heads Better than One? On the Effectiveness of Pair Programming.
IEEE Software, 24(6): 10-13
• Glass, G. V., McGaw, B., and Smith, M. L. 1981. Meta-Analysis in Social
Research. Sage Publications.
• Hayes, W. 1999. Research in Software Engineering: a Case for Meta-
Analysis. Proc. 6th IEEE International Symposium on Software Metrics
(METRICS'99), Boca Raton, USA, 143-151.
• Hedges, L. V., and Olkin, I. 1985. Statistical Methods for Meta-Analysis.
Academia Press.
• Lipsey, M. and Wilson, D. 2001. Practical Meta-Analysis, Sage.
• Miller, J. 2000. Applying Meta-Analytical Procedures to Software Engineering
Experiments, Journal of Systems and Software, 54, 29-39.
• Pickard, L.M. 2004. Combining Empirical Results in Software Engineering,
Univer-sity of Keele, T-R V1.
• Sutton, J. A., Abrams, R. K., Jones, R. D., Sheldon, A. T., and Song, F. 2001.
Methods for Meta-Analysis in Medical Research. John-Wiley & Sons.
61
Experimentación en Ingeniería del Software.

Bibliografía
Revisiones sistemáticas de la literatura

• Brereton et al., (2007). Lessons from applying the systematic


literature review process within the software engineering domain.
Journal of Systems and Software, 80, 571-583.
• Jorgensen, M., Shepperd, M. (2007). A systematic review of software
development cost estimation studies. IEEE TSE 33(1), 33-53.
• Kitchenham, B., et al., (2007). Guidelines for performing Systematic
Literature Reviews in Software Engineering. Version 2.3 EBSE-2007-
01.
• Kitchenham, B., Mendes, E., Travassos, G.H. (2007) A Systematic
Review of Cross- vs. Within-Company Cost Estimation Studies, IEEE
TSE, 33 (5), 316-329.
• Kitchenham, B. Pearl Brereton, David Budgen, Mark Turner, John
Bailey, Stephen G. Linkman: Systematic literature reviews in software
engineering - A systematic literature review. Information & Software
Technology 51(1): 7-15 (2009)
• Pino, F, García, F., Piattini, M. (2008). Software Process Improvement
in Small and Medium Software Enterprises:
A Systematic Review. Software Quality Journal, 16(2), 237-261.
62
Experimentación en Ingeniería del Software.

31
Bibliografía
Varios
• Carver, J., Jaccheri, L., Morasca, S., and Shull, F. 2003. Issues in Using
Students in Empirical Studies in Software Engineering Education.
METRICS'03, 239-249.
• García, F., Serrano, M., Cruz-Lemus, J.A., Genero, M., Calero, C. y Piattini, M.
(2008). Empirical Studies in Software Engineering Courses: Some
Pedagogical Experiences. International Journal of Engineering Education.
• Höst, M., Regnell, B., and Wohlin, C. 2000. Using Students as Subjects - a
Comparative Study of Students & Profesionals in Lead-Time Impact
Assessment. Proc. 4th Conference on Empirical Assessment & Evaluation in
Software Engineering (EASE 2000), Keele, UK, 201-214.
• Sjoberg, D., Hannay, J., Hansen, O., Kampenes., V., Karahasanovic., A.,
Liborg, N., Rekdal, A. (2005). A Survey of Controlled Experiments in Software
Engineering. IEEE TSE 31(9), 2005.
• Tichy W.F., Lucowicz L., Prechelt L., Heinz E.A. (1995) Experimental
evaluation in computer science: a quantitative study. Journal of Systems and
Software, 28(1).
• Tichy, W. (1998). Should Computer Scientists Experiment More? IEEE
Computer, 31(5), 32-40.

63
Experimentación en Ingeniería del Software.

Bibliografía
Varios

• Zelkowitz M. y Wallace D. (1997). Experimental validation in software


engineering. Information and Software Technology, 39(11).
• Zelkowitz M. y Wallace D. (2002). Experimental Validation of New
Software Technology, In Lecture Notes on Empirical Software Engineering
(Juristo N. and Moreno A. Eds.), World Scientific, Singapore, 229-263.

• Página del workshop RESER celebrado en el ICSE desde 2010

• http://sequoia.cs.byu.edu/?page=reser2010&section=resources

64
Experimentación en Ingeniería del Software.

32
Experimentación en
Ingeniería de Software
Marcela Genero Bocco / José A. Cruz-Lemus
Grupo Alarcos
http://alarcos.esi.uclm.es

Universidad de Castilla-La Mancha


Escuela Superior de Informática
Departamento de Tecnologías y Sistemas de Información
Ciudad Real - España

33

También podría gustarte