Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DE INVESTIGACIÓN
ACCIÓN EN INGENIERÍA DE
SOFTWARE
Breve descripción
Material compilado con fines didácticos
1 Introducción
Comprender el impacto de la acción tomada es una fase crucial de cualquier ciclo de investigación
acción. Al recopilar datos antes, durante y después de la acción, podemos explorar el impacto de
nuestra acción y así evaluarla.
La evaluación es crucial ya que basamos las decisiones en los próximos pasos del estudio en los
resultados de la misma. La forma típica de trabajar en la fase de evaluación de un ciclo de investigación
acción es la siguiente:
La limpieza de los datos es un paso importante en cada estudio. Durante la recopilación de datos,
nuestro enfoque es obtener puntos de datos, encontrar entidades de medición relevantes y aplicar
instrumentos de medición. Solo observamos la calidad de los datos una vez que se recopilan, ya sea al
final o una vez que recopilamos grupos de puntos de datos. En el proceso de evaluación de la calidad,
a menudo encontramos que los datos deben limpiarse: pueden incorporar ruido, debido a los
instrumentos de medición y pueden contener datos no balanceados (por ejemplo, los módulos
defectuosos son menos que los módulos no defectuosos que necesitan equilibrio) cuando usamos el
aprendizaje automático para analizar los datos.
La limpieza de los datos a menudo se entrelaza con la visualización de los datos. Exploramos los datos
visualmente usando diagramas y gráficos, y al mismo tiempo, podemos identificar valores atípicos,
valores perdidos o dependencias inesperadas. La visualización de los datos se centra en proporcionar
la conciencia de los datos, no tanto en los análisis, para eso utilizamos estadísticas inferenciales y
aprendizaje automático. Sin embargo, la visualización debe ser objetiva y exhaustiva, ya que puede ser
engañosa. Puede suceder que desencadenemos involuntariamente una cadena de decisiones
incorrectas si los datos no se visualizan correctamente (Fig. 1).
Fig.1 Ejemplo de dos diagramas (a) engañosos con la escala que comienza en el objetivo 90 (b)
Finalmente, en nuestro flujo de trabajo con los datos, necesitamos interpretar los resultados de las
pruebas estadísticas, y debemos validar estos hallazgos discutiéndolos con el equipo de referencia y
las partes interesadas. Aquí, el flujo de trabajo difiere un poco de los estudios de casos, experimentos
e investigaciones científicas de diseño, ya que el equipo de acción discute explícitamente los resultados
con el equipo de referencia. Esta discusión puede conducir al cambio en la fase de diagnóstico para el
próximo ciclo, por ejemplo, mediante el diseño de acciones adicionales.
También necesitamos preparar los datos para el análisis. Necesitamos cambiar la forma de los datos
para aplicar los métodos estadísticos apropiados para el análisis en cuestión.
Fig. 2 El número de defectos reportados antes y después de la acción tomada. Los datos se muestran tal como se
muestran en Microsoft Excel. Los datos son solo para los primeros 10 días de medición y los primeros 10 días
después de la acción.
La serie de datos no contiene datos faltantes y, por lo tanto, podemos usar los datos tal como están
para las visualizaciones y los análisis estadísticos.
Uno de los problemas más comunes con la recopilación de datos es la falta de datos. Los instrumentos
de medición que se utilizan para recopilar los datos pueden funcionar mal y, por lo tanto, nuestro
Fig. 6.3 Punto de datos imputados (5), que es un valor medio de los puntos antes y después
La serie de datos con el punto de datos imputado es mayor que si los datos fueron eliminados. Sin
embargo, si usamos estadísticas inferenciales y comparamos valores medios, los resultados de la
imputación pueden sesgar la prueba. Esto debería discutirse como una amenaza para la validez de
nuestras conclusiones.
3 Visualización de datos
El primer paso para visualizar los datos es trazar todos los puntos de datos en un diagrama relevante.
En la mayoría de los casos, podemos usar los diagramas estadísticos básicos como gráficos de barras,
gráficos de líneas o gráficos de dispersión. Estos diagramas dan la primera comprensión de cómo se
ven los datos.
Fig. 6.4 Defectos informados antes (verde) y después (azul) de la acción tomada. Los datos se ordenan por día:
100 días antes de la acción y 100 días después de la acción.
La figura muestra que el número de defectos cambió. El número de defectos informados después de
la acción es menor que antes de la acción.
Sin embargo, podemos usar técnicas de visualización más avanzadas para una exploración de datos
más avanzada, como:
• mapas de calor para explorar la frecuencia de conjuntos de datos tridimensionales, por
ejemplo, [SHF + 13],
• mapa de calor circular para explorar la frecuencia en datos estacionales, por ejemplo, [BRE13]
• gráfico bipartito para mostrar las dependencias entre dos conjuntos de datos, por ejemplo,
[ÇSM18], y
• círculo de embalaje para mostrar las jerarquías de herencia y la contención, por ejemplo,
[Tor15]
Las técnicas de exploración visual son populares en la ingeniería de software contemporánea, y hay
buenos libros y documentos sobre el tema, por ejemplo, [Tel07]. Existen muchas herramientas
excelentes de visualización de datos para acompañar las teorías de visualización, como Tableau, MS
Power BI, QlikSense y Tibco Spotfire. Alentamos a todos los equipos de acción a experimentar con la
visualización de datos y utilizar las herramientas más apropiadas para la tarea de visualización en
cuestión.
4 Estadística descriptiva
Una vez que vamos más allá de la simple visualización de datos, debemos comenzar a analizar los
datos utilizando técnicas estadísticas. Allí, también necesitamos visualizar los datos, no como puntos
de datos individuales sino como grupos, tendencias o distribuciones.
En las visualizaciones y exploraciones estadísticas básicas, las estadísticas descriptivas principales son
las más comunes:
• media y desviación estándar: para describir la distribución,
• mediana y modo: para comprender la centralidad de los datos y el valor más común, y
Los gráficos asociados con estas estadísticas descriptivas, por ejemplo, los diagramas de caja y los
histogramas, son útiles en la exploración visual de los datos. Ayudan al equipo de acción a comprender
el efecto de su acción. También ayudan al equipo de acción a comunicar los efectos al grupo de
referencia y a las partes interesadas.
La figura muestra que el número de defectos cambió. El número de defectos informados después de
la acción es menor que antes de la acción. Por lo tanto, el equipo también decidió visualizar las
distribuciones y compararlas con las distribuciones normales con los mismos parámetros, que se
muestran en la figura 6.
El histograma proporcionó al equipo de acción una imagen similar: las dos series de datos, antes y
después de la acción, eran diferentes.
Las pruebas de significación utilizando estadísticas inferenciales nos permiten comprender qué tan
probables son los resultados observados. La estadística inferencial se basa en el concepto de hipótesis
nula, es decir, la hipótesis de que no hay diferencia entre dos factores o niveles de tratamiento. Todas
las pruebas en estadística inferencial son específicas para un propósito, y en este libro, nos enfocamos
en la forma más común de usar estas pruebas: probar una hipótesis nula de que no hay diferencia
entre las medias de dos variables (o series de datos).
En la mayoría de los casos, la verificación de que no hay diferencia en las medias se realiza utilizando
la prueba t de Student o su corresponsal no paramétrico Wilcoxon [DS + 11]. Casi todos los libros de
estadísticas proporcionan buenas explicaciones de las matemáticas detrás de estas pruebas, por lo que
no detallamos cómo funcionan, sino que nos centramos en cómo aplicarlos.
Para saber si debemos usar la prueba t o Wilcoxon, debemos verificar si los datos se distribuyen
normalmente. Esto se puede hacer usando otra prueba: el Shapiro-Wilk. El Shapiro-Wilk verifica cuál
es la probabilidad de que la serie de datos dada no provenga de una distribución normal. Si la prueba
determina que los datos probablemente provengan de la distribución normal, entonces podemos usar
la prueba t paramétrica. La prueba t verifica si la diferencia entre las medias de dos conjuntos de datos
es estadísticamente significativa.
Visualmente, los gráficos Q-Q para ambas series de datos muestran que las desviaciones de la
distribución normal son pequeñas.
Las estadísticas inferenciales nos brindan la capacidad de razonar sobre nuestros datos en el contexto
en el que comparamos los datos de la línea de base y después de la acción. Sin embargo, a menudo
necesitamos más información sobre los datos, es decir, agrupar casos similares, explorar correlaciones
o caracterizar los datos.
La visualización de datos y las estadísticas inferenciales son herramientas poderosas para analizar los
datos recopilados durante la toma de medidas. Sin embargo, las herramientas modernas de desarrollo
de software proporcionan datos de mayor volumen y mayor variabilidad. Por lo tanto, a menudo
podemos usar métodos más potentes para analizar estos datos, sacar conclusiones y hacer
predicciones y evaluaciones.
La figura 7 muestra una de las plataformas de aprendizaje automático más populares utilizadas en la
investigación: Weka. La herramienta proporciona a los ingenieros de software y equipos de acción, la
posibilidad de experimentar con diferentes algoritmos. La herramienta también puede generar código
Java, implementando estos algoritmos, para ser utilizados en sistemas de medición.
La disponibilidad de herramientas, como Weka, permite a los investigadores y los equipos de acción
trabajar con algoritmos para agrupar entidades en función de sus propiedades medidas, clasificar
entidades con un objetivo de medición específico y predecir tendencias en los datos basados en
mediciones. Como el campo del aprendizaje automático está creciendo rápidamente, solo nos
enfocamos en estos tres, dejando técnicas como el aprendizaje reforzado, el aprendizaje profundo y
el descubrimiento de conocimiento, a la literatura dedicada sobre el aprendizaje automático [Qui14],
[Lan13], [Har12 ]
Para el equipo de acción, los algoritmos de aprendizaje automático son útiles para dar sentido a los
resultados de medición, ya que proporcionan interpretación a los datos de medición.
6.1 Agrupación
Según nuestra experiencia, uno de los algoritmos más útiles es el algoritmo kNN para identificar grupos.
Lo usamos en nuestros estudios anteriores debido a su simplicidad y visualización intuitiva, lo que hace
que los resultados sean fáciles de explicar en la práctica [ASM + 14].
Para ilustrar cómo podemos usar la agrupación en la práctica, al interpretar los resultados de medición,
podemos explorar un ejemplo de cómo encontrar una complejidad percibida de un módulo de código
fuente recientemente desarrollado.
Para hacer posible este tipo de predicción, necesitamos definir qué significa la complejidad percibida.
En nuestro ejemplo, la complejidad percibida es una combinación del tamaño (medido en LOC) y la
complejidad (medido en la complejidad ciclomática de McCabe). No definimos los umbrales para estos
valores, y en su lugar queremos que el algoritmo de agrupación (kNN) encuentre los grupos correctos.
Solo limitamos el conjunto de grupos a tres.
Para enseñar el algoritmo kNN, necesitamos proporcionarle al algoritmo los datos del sistema actual.
En nuestro ejemplo, estos datos se presentan en la figura 6.8. La figura muestra nueve módulos
diferentes (1–9), y cada uno de los módulos se caracteriza por usar dos medidas: LOC y McCabe.
Para simplificar el ejemplo, preparamos los módulos de tal manera que podamos ver claramente que
hay tres grupos, baja complejidad, complejidad media y alta complejidad, que podemos visualizar en
el diagrama de dispersión de la figura 9.
En la figura 9, podemos ver que estos módulos están agrupados en tres grupos. Los módulos
recientemente desarrollados se caracterizan como se presenta en la figura 10, donde tenemos tres
módulos, también caracterizados por LOC y McCabe. Cuando miramos los datos sobre los módulos
desarrollados recientemente, podemos ver intuitivamente que estos tres módulos pertenecen a tres
grupos diferentes. Ahora, también podemos usar el algoritmo kNN para clasificarlos.
El script, que usamos para hacer la agrupación y encontrar a dónde pertenecen los módulos
desarrollados recientemente, se presenta en la figura 11.
Las líneas 1–10 preparan los conjuntos de datos para los análisis, los archivos de datos se leen en las
matrices en R, y los nombres de los módulos se eliminan de los datos (líneas 7 y 8), ya que no los
necesita para el algoritmo de agrupamiento.
La línea 13 es donde ejecutamos el algoritmo de agrupación, para encontrar los tres grupos en los
datos y nombre estos grupos (línea 16). La trama, de la figura 9, se presenta en la línea 22.
Este sencillo ejemplo ilustra cómo podemos usar la agrupación de aprendizaje automático para
proporcionar interpretación para los resultados de la medición. Cuando usamos este algoritmo de
aprendizaje automático a lo largo del tiempo, las predicciones mejoran y la carga sobre las partes
interesadas disminuye. La parte interesada no necesita hacer evaluaciones manuales de los datos, pero
el algoritmo puede usar las evaluaciones anteriores para derivar las nuevas. Desde nuestra experiencia,
esto puede ser muy útil al construir modelos de predicción y modelos de análisis basados en analogías.
6.2 Clasificación
Los árboles de decisión son útiles en el análisis de datos, en áreas similares al uso de algoritmos de
agrupamiento, para proporcionar automáticamente interpretaciones de los datos de medición.
La diferencia entre los algoritmos de agrupamiento y los algoritmos de clasificación es que los
algoritmos de agrupamiento no están supervisados, mientras que los algoritmos de clasificación están
supervisados. Para los algoritmos no supervisados, no hay respuestas correctas o incorrectas y, por lo
tanto, para los algoritmos de agrupamiento, no existe un clúster incorrecto. Para los algoritmos
supervisados, hay una respuesta correcta e incorrecta, y por lo tanto para los árboles de decisión, hay
clasificaciones correctas y clasificaciones incorrectas.
Los árboles de decisión son útiles para el análisis cuando necesitamos verificar cómo se realizó la
clasificación. Sin embargo, no son útiles cuando las cantidades de datos son demasiado grandes para
ser utilizadas en un simple pase de entrenamiento (por ejemplo, cuando se trata de lotes). Para ese
propósito, necesitamos usar otras técnicas, por ejemplo, redes neuronales.
Para esta sección, podemos centrarnos en los árboles de clasificación y su uso para resolver un
problema de clasificación de defectos. Imagine que nos gustaría saber si debemos priorizar un defecto
específico o no. La figura 13 muestra esto conceptualmente.
Para ejemplificar cómo funciona la clasificación, utilizamos un conjunto de defectos para entrenar el
árbol de decisión. Utilizamos el conjunto de datos presentado en la Tabla 1.
En Weka, utilizamos el algoritmo del árbol de decisión J48, que produce el árbol de clasificación como
se muestra en la figura 14. El árbol de clasificación muestra que si el remitente es "juan", entonces la
mayoría de los defectos es "difícil", independientemente de en qué fase se encuentren. Si el remitente
es "María", entonces la mayoría de los defectos es "fácil". Sin embargo, si el remitente es "tom", entonces
la clasificación depende también de la fase donde se encontró el defecto.
Si examinamos el conjunto de pruebas, podemos ver que hay defectos que no entran fácilmente en la
clasificación (es decir, podríamos esperar algunas desviaciones entre la clasificación y los datos de la
prueba). Por ejemplo, el defecto con ID de 3 es un ejemplo. Después de aplicar el árbol de clasificación
al conjunto de prueba, Weka produce la salida visible en la figura 15.
En el resultado de la clasificación podemos ver tres partes: (1) resumen, (2) precisión por clase y (3)
matriz de confusión. La parte de resumen resume los parámetros de la clasificación, como el número
de instancias clasificadas con precisión, las estadísticas de Kappa o el error absoluto medio. Las primeras
dos líneas, el número de instancias clasificadas, nos dan una buena visión general de cuán bueno es el
algoritmo; en nuestro caso, diez defectos se clasificaron correctamente y tres no.
La sección detallada nos proporciona más información sobre qué clase fue la más difícil de clasificar
correctamente. En nuestro caso, esta era la clase con defectos moderados ya que no teníamos ningún
defecto moderado en el conjunto de prueba.
La clase que se clasificó mejor fue la clase de defectos imposibles. Para obtener más información acerca
de cuántos casos se clasificaron incorrectamente y a qué clases, necesitamos ejemplificar la última
sección: la matriz de confusión. La matriz muestra cuántos casos se clasificaron en qué clase y dónde
deberían clasificarse.
Fig. 6.14 Estructura del árbol de decisión mediante el algoritmo J48 de Weka
Hasta ahora, discutimos cómo trabajar con datos cuantitativos. Dado que este tipo de datos está más
cerca del corazón de cada ingeniero, es bastante obvio. Sin embargo, también mencionamos que los
equipos de acción deberían tomar nota de cómo las organizaciones perciben sus acciones, y deberían
realizar entrevistas y talleres, que resultan en toneladas de datos cualitativos. Por lo tanto, también
necesitamos conocer los conceptos básicos sobre cómo analizar los datos cualitativos.
Al igual que con el análisis de datos cuantitativos, existen varios métodos para el análisis de datos
cualitativos, y casi cualquier buen libro de métodos de investigación para ciencias sociales proporciona
buenas referencias para ello. Yo personalmente uso el libro de Robson [RM16], y en este libro, nos
enfocamos en una técnica: el análisis temático. Según Braun y Clarke [BC06], el análisis temático es "un
método para identificar, analizar e informar patrones (temas) dentro de los datos".
El análisis temático se organiza en cinco fases seguidas de informes:
1. Familiarizarse con los datos.
2. Generando códigos iniciales.
3. Búsqueda de temas.
4. Revisión de temas.
5. Definir y nombrar temas.
Las fases progresan desde la comprensión y el análisis de los datos hasta la síntesis de un conjunto
coherente de temas. Un tema captura un concepto que es importante en relación con la pregunta de
investigación y representa un cierto nivel de respuesta o significado dentro del texto [BC06].
Para empezar, necesitamos leer los documentos varias veces. Necesitamos leer el texto con
comprensión, y debemos tomar notas sobre ideas y significados que puedan extraerse del texto. Dado
Para el equipo de acción, es importante que utilicemos el marco de evaluación definido antes de la
acción como guía aquí. Si usamos el marco GQM aquí, identificamos las preguntas que necesitan un
análisis cualitativo, y estas preguntas deberían guiar nuestro análisis temático
El significado extraído fue importante ya que permitió al equipo de acción comprender cómo mejorar
el método para el siguiente paso en el ciclo de investigación acción. Sin embargo, también tenían que
hacer los códigos iniciales para vincular los resultados a la parte específica del marco de evaluación.
El resultado de esta primera fase del análisis temático es un texto con los significados anotados en los
márgenes. Una vez que tengamos estos, podemos comenzar con la generación de códigos iniciales.
Podemos iniciar la generación de los códigos iniciales comenzando con nuestra comprensión del
problema de investigación y las intenciones detrás de la acción. Los códigos iniciales que se extraen
del marco de evaluación pueden ayudarnos, pero definitivamente no deberían ser el conjunto final de
códigos.
Si es necesario, la codificación inicial puede repetirse varias veces, y cada parte del texto puede
codificarse utilizando diferentes códigos o incluso utilizando esquemas de codificación ortogonales.
En este texto, los códigos identificados están relacionados con la forma en que se utilizaron los nuevos
métodos y el contexto de su uso (herramientas). Los códigos identificados en el primer análisis deben
agruparse en temas en el siguiente paso.
Al crear los códigos iniciales, es importante identificar los vínculos entre los códigos y las acciones
tomadas por el equipo. También es importante identificar los códigos que indican factores de
confusión, es decir, factores que contribuyen al impacto positivo o negativo de la acción pero que no
son causados por la acción misma.
Por ejemplo, un factor de confusión relacionado con la introducción del nuevo proceso de prueba es
la introducción simultánea de un nuevo proceso de gestión de defectos (no realizado por el equipo de
acción). La introducción del nuevo proceso de gestión de defectos puede cambiar la forma en que los
ingenieros informan las fallas, omitiendo la notificación de fallas relacionadas con la prueba de la
unidad. Esto afecta el flujo de entrada de defectos, por lo que debe explorarse más a fondo para
separar los efectos de la introducción del nuevo proceso de prueba de la introducción del nuevo
proceso de gestión de defectos.
Una buena herramienta para el análisis temático es un mapa temático, que se asemeja a un mapa
mental, pero puede contener muchos nodos iniciales. Un ejemplo de un mapa temático se presenta
en la figura 6.18. Los códigos están vinculados a subtemas que están vinculados a temas.
El mismo código (o un subtema) se puede vincular a varios temas. Un mapa temático puede ser
bastante grande inicialmente y, por lo tanto, es bueno usar herramientas para el mapeo mental y la
diagramación para dibujarlos, especialmente porque es posible que necesitemos reorganizar el mapa
varias veces en el transcurso del análisis. Dado que el primer conjunto de temas no siempre es (o casi
nunca) lo suficientemente bueno, debemos estar preparados para tal reorganización. Es normal ya que
el mapa temático inicial es la primera visualización de nuestros códigos, y revela interpretaciones
insuficientes y excesivas.
Al revisar los temas, también debemos investigar si los códigos y los temas indican un impacto positivo
o negativo de la acción tomada.
El mapa reveló que el impacto de la acción en la organización fue mayor de lo esperado inicialmente.
Se extendió tanto sobre el proceso como sobre las herramientas. También reveló algunos efectos
negativos que el equipo de acción no anticipó al comienzo del estudio.
La redefinición de temas es un proceso iterativo. Podemos revisar los códigos una y otra vez; por lo
tanto, debemos recordar un aspecto muy importante: la interpretación. Cuando trabajamos con
revisiones, podemos sentir la tentación de cambiar el nombre del código ligeramente para reflejar
mejor el tema. Sin embargo, si lo hacemos varias veces, corremos el riesgo de perder el significado
original del código. Por lo tanto, debemos verificar el texto / datos subyacentes para el código antes
de renombrarlo. Tenemos que asegurarnos de que el vínculo entre los códigos y los datos son válidos
en todo momento.
También debemos tener en cuenta los factores de confusión y las acciones adicionales que debemos
considerar en la fase de diagnóstico en el próximo ciclo de investigación acción.
Una vez que se cuenta con la lista, debe usarse como entrada en la fase de diagnóstico para el próximo
ciclo de investigación acción. No todos los temas deben investigarse más a fondo, pero deben
considerarse y debatirse en la fase de diagnóstico. Deben presentarse al equipo de referencia y a las
partes interesadas.
Los KPI se utilizan para monitorear procesos y productos durante un período de tiempo y, por lo tanto,
son muy adecuados para el monitoreo de mejoras continuas o acciones a lo largo del tiempo.
Definiendo un KPI
En uno de los proyectos, el equipo de acción introdujo una nueva forma de revisar el código fuente.
Este nuevo proceso impactó el tiempo requerido para integrar componentes de software en
subsistemas y en todo el sistema. Dado que este proceso requirió tiempo para asentarse e impactar a
una parte más grande de la organización, el equipo estableció un tablero para monitorear la evolución.
El equipo de acción definió un KPI: promedio semanal de tiempo para integrar el código. El KPI se
calculó semanalmente y se presentó en un tablero, junto con los datos sin procesar, como se presenta
en la figura 21.
El análisis de datos en el segundo, tercer y más ciclos es muy similar al primer ciclo. La principal
diferencia es que el marco de evaluación puede haber evolucionado a lo largo de los ciclos. Es bastante
común ya que la metodología de investigación acción es flexible y está alineada con las necesidades
de la organización colaboradora.
10 Resumen
Después de la fase de toma de acción, hemos recopilado datos sobre los efectos de nuestras acciones.
En la fase de evaluación, analizamos estos datos y sacamos conclusiones sobre los efectos de la acción.
Esta evaluación, que, ni que decir tiene que ser objetiva, es necesaria ya que podemos tener un sesgo
hacia el resultado positivo o negativo de la acción. Como humanos, tenemos cierta actitud hacia el
cambio que queríamos introducir: a veces necesitamos el cambio para solucionar un problema, pero
a veces hacemos el cambio para verificar si algo es mejor que otra cosa. Esto significa que estamos
sesgados hacia un resultado específico; si nos gusta el cambio, observamos sus efectos a través de esta
perspectiva y viceversa.
Staron, M. (2020). Action Research in Software Engineering: Theory and Applications. Springer.