Experimentación en Ingeniería de Software...3 5 Experimentación en Ingeniería del Software....
Transcript of Experimentación en Ingeniería de Software...3 5 Experimentación en Ingeniería del Software....
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§ion=resources