experimentación en ingeniería de software...3 5 experimentación en ingeniería del software....

33
1 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 2 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

Upload: others

Post on 20-Apr-2020

10 views

Category:

Documents


0 download

TRANSCRIPT

1

Experimentación en Ingeniería de Software

Marcela Genero Bocco / José A. Cruz-LemusGrupo Alarcos

http://alarcos.esi.uclm.es

Universidad de Castilla-La ManchaEscuela Superior de Informática

Departamento de Tecnologías y Sistemas de InformaciónCiudad Real - España

2Experimentación en Ingeniería del Software.

Contenidos

• Introducción • Tipos de Estudios empíricos• Experimentos

Conceptos generalesProceso experimental

• Replicación• Algunas recomendaciones• Herramientas de Soporte• Conclusiones• Bibliografía y recursos útiles

2

3Experimentación en Ingeniería del Software.

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

4Experimentación en Ingeniería del Software.

• 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íaIngeniería de Software consiste en aplicar conocimiento científicoal desarrollo, operación y mantenimiento de los sistemas software (IEEE 610.12).

Introducción

La Experimentación es una parte importante de este conocimiento científico

3

5Experimentación en Ingeniería del Software.

Introducción

•El 30% de los artículos no tienen nada de experimentación y solo el 10% de los que tienen algo de experimentación siguen una aproximación formal (Zelkowitz, 1998)

•Sólo el 8% de los artículos publicados incluyen una evaluación cuantitativa de al menos dos páginas (Tichy, 1993)

•Sobre 400 artículos de investigación, el 40% de aquellos que requerían validación empírica no la tenían (Tichy, 1995)

•Entre 5453 artículos científicos publicados en 12 revistas y conferencias relevantes entre 1993 y 2002, 103 artículos (1,9%) presentaban experimentos controlados (Sjoberg et al. 2005).

Motivación

En España:

8,47%5592009

1,92%1522008

1,72%1582007

5%3562006

5%2402005

15%8522004

5%4782003

20.51 %8392002

10.53 %4382001

15.38 %6392000

4.26 %2371999

Prom.Con Exp.

Total Artículos

JISBD

6Experimentación en Ingeniería del Software.

IntroducciónMotivación

¿Por qué no se le da suficiente importancia a la Ingeniería del Software Empírica?

(Tichy, 1998)

Excusa RefutaciónEl método científico tradicional no es aplicable

Para entender el proceso de la información,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 suficiente

Comparando con otras ciencias, los científicos informáticos validan unporcentaje 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

4

7Experimentación en Ingeniería del Software.

IntroducciónMotivació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

8Experimentación en Ingeniería del Software.

Contenidos

• Introducción• Tipos de estudios empíricos• Experimentos

Conceptos generalesProceso experimental

• Replicación• Algunas recomendaciones• Herramientas de Soporte• Conclusiones• Bibliografía y recursos útiles

5

9Experimentación en Ingeniería del Software.

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).

10Experimentación en Ingeniería del Software.

Tipos de estudios empíricos

ALTOALTOBAJOBAJOALTOALTOFacilidad de réplica

ALTOALTOMEDIOMEDIOBAJOBAJOCoste de la investigación

SISISISINONOControl de la medición

SISINONONONOControl de la ejecución

ExperimentoCaso de estudio

EncuestaFactor

6

11Experimentación en Ingeniería del Software.

Contenidos

• Introducción• Tipos de estudios empíricos• Experimentos

Conceptos generalesProceso experimental

• Replicación• Algunas recomendaciones• Herramientas de Soporte• Conclusiones• Bibliografía y recursos útiles

12Experimentación en Ingeniería del Software.

Experimentos

• 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.

Conceptos Generales

7

13Experimentación en Ingeniería del Software.

Variables

independientes

Diseño del

experimento

..... Proceso

Variable

dependiente

.....

Variables controladas

Factores (tratamientos)

Experimento

ExperimentosConceptos Generales

variables indep. cuyos valores son cambiados para estudiar su efecto

Variables indep. que se controlan con un valor fijo

estudiadas para evaluar el efecto

Otras vbles (aleatorias, enmascaradas)

14Experimentación en Ingeniería del Software.

Experimentos

• Tratamientosun determinado valor para un factor

• Objetosprocesos, productos, recursos

• SujetosPersonas que aplican los tratamientos a los objetos

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

Conceptos Generales

8

15Experimentación en Ingeniería del Software.

ExperimentosConceptos 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)

16Experimentación en Ingeniería del Software.

Contenidos

• Introducción• Experimentos

Conceptos generalesProceso experimental

• Replicación• Algunas recomendaciones• Herramientas de Soporte• Conclusiones• Bibliografía y recursos útiles

9

17Experimentación en Ingeniería del Software.

Presentacióny Difusión

Presentacióny Difusión Conclusiones

DefiniciónDefinición

PlanificaciónPlanificación

OperaciónOperación

Análisis e Interpretación

Análisis e Interpretación

Objetivos

Diseño del experimento

DatosEstudio piloto

Estudio piloto

AmenazasAmenazas

Idea

ExperimentosProceso Experimental

(Wohlin et al. 2000)

18Experimentación en Ingeniería del Software.

• 1. Definición

Plantilla GQM para definición de objetivos:Analizar <Objeto(s) de estudio>

(¿qué es lo que se estudia?)

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

con respecto a <Enfoque de calidad> (¿cuál es el efecto estudiado?)

desde el punto de vista del <Perspectiva> (¿a la vista de quién?)

en el contexto de <Contexto> (¿dónde se lleva a cabo el estudio?)

Método orientado a objetos y orientado al proceso

Evaluar

Productividad

Investigador

Estudiantes de grado

¿Por qué se realiza el experimento?

ExperimentosExperimentosProceso Experimental: Definición

10

19Experimentación en Ingeniería del Software.

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

Objeto de estudio Propósito

Enfoque de calidad Perspectiva Contexto

Producto Caracterizar Efectividad Desarrollador SujetosProceso Supervisar Costo Mantenedor ObjetosModelo Evaluar Fiabilidad Director de proyectosMétrica Predecir Mantenibilidad ClienteTeoría Controlar Portabilidad Usuario

Cambiar Investigador

ExperimentosProceso Experimental: Definición

20Experimentación en Ingeniería del Software.

Planificación del experimento

Definición Seleccióndel

contextoFormulación

de la hipótesis

Selecciónde las

variables Selecciónde los sujetos

Diseño del experimentoInstrumen-

taciónEvaluación

de la validez

Diseño

2. Planificación

ExperimentosProceso Experimental: Planificación

11

21Experimentación en Ingeniería del Software.

Off-line vs. On-line Evitar riesgosIncrementa costes

Estudiantes vs. profesionales

Reducir costesFacilitar el control¿Generalización?

Problemas de jueguete vs. problemas reales

Reduce costes y tiempo¿Generalizacón?

Específicos vs. generales

Reduce costes y tiempo¿Generalización?

Selección del contexto

ExperimentosProceso Experimental: Planificación

22Experimentación en Ingeniería del Software.

Planificación del experimento

Definición Seleccióndel

contextoFormulación

de lashipótesis

Selecciónde las

variables Selecciónde los sujetos

Diseño del experimentoInstrumen-

taciónEvaluación

de la validez

Diseño

2. Planificación

ExperimentosProceso Experimental: Planificación

12

23Experimentación en Ingeniería del Software.

Formulación de la hipótesis

Se deriva del objetivo: una o más H0Se deriva del objetivo: una o más H0

Plantilla GQM Analizar métodos OO y OPCon el propósito de Evaluar con respecto a suproductividadDesde el punto de vista del investigadorEn el contexto de estudiantes de grado

Plantilla GQM Analizar métodos OO y OPCon el propósito de Evaluar con respecto a suproductividadDesde el punto de vista del investigadorEn el contexto de estudiantes de grado

H0 : Productividad OO = Productividad OP(conservadora, no existe efecto del tratamiento)H0 : Productividad OO = Productividad OP(conservadora, no existe efecto del tratamiento)H1 : Productividad OO ≠ Productividad OP(alternativa)H1 : Productividad OO ≠ Productividad OP(alternativa)

ExperimentosProceso Experimental: Planificación

24Experimentación en Ingeniería del Software.

Formulación de la hipótesis

ExperimentosProceso Experimental: Planificación

• 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 falsaP= 1- β

13

25Experimentación en Ingeniería del Software.

Planificación del experimento

Definición Seleccióndel

contextoFormulación

de lashipótesis

Selecciónde las

variables Selecciónde los sujetos

Diseño del experimentoInstrumen-

taciónEvaluación

de la validez

Diseño

2. Planificación

ExperimentosProceso Experimental: Planificación

Variables Independientesvariables cuyos valores son

cambiados para estudiar su efecto

Variables Dependientesvariables que queremos estudiar

para ver el efecto de los cambios en las variables independientes

Otras

26Experimentación en Ingeniería del Software.

Planificación del experimento

Definición Seleccióndel

contextoFormulación

de lashipótesis

Selecciónde las

variables Selecciónde los

sujetosDiseño del

experimentoInstrumen-

taciónEvaluación

de la validez

Diseño

2. Planificación

ExperimentosProceso Experimental: Planificación

14

27Experimentación en Ingeniería del Software.

Experimentos

• ¿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ñoLa técnica de análisis puede influenciar la elección del tamaño de la muestra

Proceso Experimental: Planificación

La muestra debe ser representativa de la población

Selección de los Sujetos

28Experimentación en Ingeniería del Software.

Planificación del experimento

Definición Seleccióndel

contextoFormulación

de lashipótesis

Selecciónde las

variables Selecciónde los sujetos

Diseño del experimentoInstrumen-

taciónEvaluación

de la validez

Diseño

2. Planificación

ExperimentosProceso Experimental: Planificación

15

29Experimentación en Ingeniería del Software.

Experimentos

• 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?

¿Cómo controlar los factores extraños?

¿Cómo combinar los niveles de las variables independientes? # tratamientos

• Estas respuestas dependen de las amenazas a la validez que queramos controlar

Proceso Experimental: Planificación

Diseño del Experimento

Diseño CruzadoDiseño Anidado

Medidas Repetidas

Bloqueo / Aleatorización

30Experimentación en Ingeniería del Software.

Cuadrado latino (3 o más niveles)

Grupos aleatorios

Grupos aleatorios con bloques

Aleatorización

Reequilibrado (2 niveles)Intra-sujetos(IAS)

Inter-sujetos(IES)Simples

FactorialesCompletos(2 factores)

FraccionalesParciales

ExperimentosProceso Experimental: Planificación

Diseño del Experimento: Taxonomía

Único Tratamiento por Sujeto

Se asignan todos los Tratamientos por Sujeto

(1 Variable Ind)

(>= 2 Variables Ind)

CruzadoM1 M2

Herr a1 b1 a1 b2NHerr a2 b1 a2 b2

Factor B

Factor AFactorial

H_A NoH_A H_B No H_Ba1 b1 a1 b2 a2 b1 a2 b2

Factor AM1 M2

Factor B Factor B

Anidado

16

31Experimentación en Ingeniería del Software.

Planificación del experimento

Definición Seleccióndel

contextoFormulación

de lashipótesis

Selecciónde los sujetos

Diseño del experimentoInstrumen

-taciónEvaluación

de la validez

Diseño

2. Planificación

ExperimentosProceso Experimental: Planificación

Proporciona los medios para:Realizar el experimentoSupervisar el experimento

Es independiente de los resultados Selecciónde las

variablesRecolección de datos con formulariosmanuales, encuestas, que deben ser validados

Instrum. medición

Los participantes deben ser guiados(descripción del proceso, checklist...) Entrenamiento adicional …

Guías

Elegir los objetos apropiados(especificaciones, códigodocumentos...)

Objetos

32Experimentación en Ingeniería del Software.

Planificación del experimento

Definición Seleccióndel

contextoFormulación

de lashipótesis

Selecciónde las

variables Selecciónde los sujetos

Diseño del experimentoInstrumen-

taciónEvaluación

de la validez

Diseño

2. Planificación

ExperimentosProceso Experimental: Planificación

Validez de constructo ¿Hasta qué punto las medidas seleccionadas miden lasvariables que aparecen en la hipótesis?

Validez de las conclusiones ¿Hasta qué punto las conclusiones son estadísticamente válidas?

Validez interna ¿El tratamiento causa “realmente” el efecto?

Validez de externa ¿Pueden generalizarse los resultados obtenidos?

17

33Experimentación en Ingeniería del Software.

Personas que abandonan el experimento.Mortalidad

¿Cuánto conoce el sujeto sobre el tratamiento?Se altera para disminuir efectos de aprendizaje …

Orden de presentación

¿Se han diseñado correctamente los artefactos utilizados en el experimento? Documentos que van a ser inspeccionados ..

Instrumentación

¿La muestra de la población es representativa para toda la población?

Selección

Los sujetos reaccionan cuando el tiempo pasa(cansancio, aburrimiento, aprendizaje)

Maduración

Tratamientos diferentes aplicados sobre el mismo objeto en momentos diferentes... ¿las circunstancias son las mismas?

Historia

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

ExperimentosProceso Experimental: Planificación

34Experimentación en Ingeniería del Software.

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

ExperimentosProceso Experimental: Planificación

• Interacción entre selección y tratamientoLa muestra no es representativa de la población

• Interacción entre el material y el tratamientoMaterial no representativo Problemas de juguete, métodos obsoletos

• Interacción entre la historia y el tratamientoEl experimento se lleva a cabo en un momento especial que afecta a los resultados

• 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

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

18

35Experimentación en Ingeniería del Software.

Operación

Diseño del experimento

Ejecución

Validaciónde datos

Preparación

Datos del experimento

ExperimentosProceso Experimental: Operación

Experimentos piloto: • 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

36Experimentación en Ingeniería del Software.

Operación

Diseño del experimento

Ejecución

Validaciónde datos

Preparación

Datos del experimento

ExperimentosProceso Experimental: Operación

¿los sujetos entienden los formularios y los rellenan correctamente?¿están adecuadamente motivados?¿se aplican los tratamientos correctamente y en el orden adecuado?

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

19

37Experimentación en Ingeniería del Software.

Interpretación Cuantitativa

Datosexperimentales

Reduccióndel conjunto

de datos Contrastede las

hipótesis

Estadísticosdescriptivos

Conclusiones

ExperimentosProceso Experimental: Análisis e Interpretación

Graphic Case Two

Observed value

98765432

1,5

1,0

,5

0,0

-,5

-1,0

-1,5

1er trim.2do trim.3er trim.4to trim.

38Experimentación en Ingeniería del Software.

ExperimentosProceso Experimental: Análisis e Interpretación

Contraste de Hipótesis

ANOVAMás de un factor

Kruskal-WallisChi-2

ANOVAUn factor, más de dos tratamientos

Mann-Whitney

Chi-2Wilcoxon

Test de los signos

Test tTest FTest t emp

Un factor, dos

tratamientos

Chi-2Test

binomial

Un factor, un

tratamiento

No param.Param.Diseño

Explorando una Relación o Validando Métricas

Software

Línea BaseBox Plot

Diagramas de Dispersión

Confirmación Estadística con

Análisis Correlacional

Medida de Asociación

Ecuación

Normal

No Normal

Normal

No Normal

2 Variables

> 2 Variables

Pearson

Spearman

Kendall

Regresión Lineal

Transformación Logarítmica

Regresión Multivariante

• Otras Técnicas (IA) : Árboles de clasificación, Clustering, Redes neuronales, “MachineLearning

20

39Experimentación en Ingeniería del Software.

Presentación y Difusión

Recopilación de Información

Informeescrito

Conclusiones

ExperimentosProceso Experimental: Presentación y Difusión

Para que el informe escrito sea útil todo informe debe incluir:

IntroducciónDefinición del problemaPlanificación del experimentoOperación del experimentoAnálisis de datosInterpretación de los resultadosDiscusión y conclusionesApéndices

40Experimentación en Ingeniería del Software.

Contenidos

• Introducción• Experimentos

Conceptos generalesProceso experimental

• Replicación• Algunas recomendaciones• Herramientas de Soporte• Conclusiones• Bibliografía y recursos útiles

21

41Experimentación en Ingeniería del Software.

• “El uso de experimentos precisos y repetibles es el sellopara 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 originalRé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 experimentoRéplicas que varían las hipótesis

• Vbles independientes, dependientes o de contextoRéplicas que amplían la teoría

• cambios en proceso, producto o contexto

Replicación

42Experimentación en Ingeniería del Software.

• 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”

ReplicaciónLaboratory Packages

22

43Experimentación en Ingeniería del Software.

• Definición de los objetivosDescribir 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 existenteDeducir 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 experimentoTratar 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.

Algunas Recomendaciones

44Experimentación en Ingeniería del Software.

• Ejecución del experimentoProcurar 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 datosTratar 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.

Algunas Recomendaciones

23

45Experimentación en Ingeniería del Software.

Algunas Recomendaciones

• Kitchenham et al. (2002) proponen una serie de recomendaciones para la investigación empíricaen la Ingeniería de Software.

• Jedlitschka and Pfahl (2005) proponenrecomendaciones sobre ¿Cómo reportarexperimentos?

46Experimentación en Ingeniería del Software.

• 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 respuestasCorrecció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).

Herramientas de Soporte

24

47Experimentación en Ingeniería del Software.

Sign In

Manage UsersManage Permissions

Administrator

(from Analysis Model)

Define Survey or Experiment

<<include>>

Delete Survey or Experiment

<<include>>

Modify Survey or Experiment

<<include>>

View Reports

<<include>>

Simulate Survey or Experiment

<<include>>

SuperUser

Launch Survey or Experiment

<<include>>

Register

User

4718

Herramientas de Soporte

48Experimentación en Ingeniería del Software.

• Empirical Web-Gen

Herramientas de Soporte

Experimentnamerandominstructions

Modelnameimagecomplexityrandomorder

1..n1 1..n1

Tasks Groupnametimerrandomorder

1..n1 1..n1

Answeruseranswer givendate

Taskstatementanswerssolutionpositive marknegative markorder

1..n1 1..n1

0..n

1

0..n

1

25

49Experimentación en Ingeniería del Software.

• Empirical Web-Gen

Herramientas de Soporte

50Experimentación en Ingeniería del Software.

Contenidos

• Introducción• Experimentos

Conceptos generalesProceso experimental

• Replicación• Algunas recomendaciones• Herramientas de Soporte• Conclusiones• Bibliografía y recursos útiles

26

51Experimentación en Ingeniería del Software.

• 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 repetiblesRealizar “familias” de experimentosIntegrar experimentos que investiguen las mismas hipótesisDiseñar y construir “paquetes de laboratorio”Mejorar los conocimientos estadísticosIngeniería del Software Empírica Formar a los estudiantes en temas de experimentación y diferentes tipos de estudios empíricos

Conclusiones

52Experimentació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.

27

53Experimentación en Ingeniería del Software.

Contenidos

• Introducción• Experimentos

Conceptos generalesProceso experimental

• Replicación• Algunas recomendaciones• Herramientas de Soporte• Conclusiones• Bibliografía y recursos útiles

54Experimentación en Ingeniería del Software.

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

Revistas:Empirical Software Engineering

http://www.kluweronline.com/issn/1382-3256

ConferenciasESEMICSERESER Workshop (dentro del ICSE)Etc…

Bibliografía

28

55Experimentación en Ingeniería del Software.

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.

BibliografíaLibros genéricos

56Experimentación en Ingeniería del Software.

• 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.

BibliografíaExperimentos

29

57Experimentación en Ingeniería del Software.

• Jedlitschka, A., Ciolkowski, M. y y Pfahl D. (2008). Reporting experiments in Software engineering. Chapter 8, (2008). Guide to Advanced EmpiricalSoftware 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).

BibliografíaExperimentos

58Experimentación en Ingeniería del Software.

• 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.

BibliografíaCasos de estudio

30

59Experimentación en Ingeniería del Software.

• 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.

BibliografíaEncuestas

60Experimentación en Ingeniería del Software.

• 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 EmpiricalSoftware Engineering. Springer.

• Juristo, N., Vegas, S. Using differences among replications of softwareengineering 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.

BibliografíaRéplicas y familias de experimentos

31

61Experimentación en Ingeniería del Software.

• 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.

BibliografíaAgregación de resultados

62Experimentación en Ingeniería del Software.

• 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 SystematicReview 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.

BibliografíaRevisiones sistemáticas de la literatura

32

63Experimentación en Ingeniería del Software.

• 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.

BibliografíaVarios

64Experimentación en Ingeniería del Software.

BibliografíaVarios

• 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

33

Experimentación en Ingeniería de Software

Marcela Genero Bocco / José A. Cruz-LemusGrupo Alarcos

http://alarcos.esi.uclm.es

Universidad de Castilla-La ManchaEscuela Superior de Informática

Departamento de Tecnologías y Sistemas de InformaciónCiudad Real - España