Sunteți pe pagina 1din 13

Inteligencia artificial aplicada a la mejora del proceso de

aseguramiento de la calidad

Esp. Horacio Tovo

Abstract
Procesar datos generados como parte del proceso de aseguramiento de
la calidad que tienen bajo costo de obtención, con el objetivo de retro-
alimentar, mejorar o aportar información de relevancia para la toma de
decisiones que contribuyan a la mejora continua en un proyecto de
desarrollo de software

Palabras Claves: Inteligencia Artificial, Calidad, Procesos, Testing

Introducción
El software es objeto de diferentes problemáticas, en el año 1986 Fred
Brooks público un estudio basado en las problemáticas que poseía el
software llegando a la conclusión que no existen formas mágicas de re-
solverlas. Desde ese estudio realizado hasta la actualidad pasaron 41
años, pero a pesar del tiempo transcurrido la tasa de proyectos exitosos
es del 29% (CHAOS, 2015)

Esta cifra parece abrumadora, pero es una realidad y viene de la mano de


diferentes factores que afectan al desarrollo de software, como la manera
en la que los proyectos son gestionados, mala identificación de las nece-
sidades del cliente, falta de certidumbre al momento de comprometerse
con las fechas de entrega, la calidad con la cual se entregan los proyectos
no es la requerida, el esfuerzo de las actividades de testing es subesti-
mado y siempre se ajustan los tiempos en esa área porque es el último
eslabón de la cadena.
Como resultado de la implementación de un proceso de aseguramiento
de la calidad dentro del proceso desarrollo de software se generan datos
en diferentes etapas del mismo. Como parte del proceso de asegura-
miento de la calidad se registran defectos con los atributos correspon-
dientes como la severidad, impacto, modulo afectado, etapa del proyecto
en el que se encontró, funcionalidad afectada, entre otros. Estos datos se
encuentran almacenados en herramientas para el manejo de defectos.
Otra fuente de generación de datos son las revisiones de código realiza-
das como resultado de las buenas prácticas de desarrollo de software, las
cuales proporcionan la cantidad de líneas de código (LOCS) que se im-
plementaron para una funcionalidad en particular, como así también la
complejidad ciclomática que posee el código desarrollado. (Pressman,
2002)

Según los postulados de McCabe, mientras mayor es la complejidad ci-


clo matica, mayor complejidad se le asocia al código desarrollado y au-
menta la probabilidad de encontrar defectos ya que incrementa el número
de caminos a probar

Todos estos datos mencionados que poseen un bajo costo de obtención


ya que se generan innatos al proceso de desarrollo de software al proce-
sarse de manera correcta no están siendo utilizados y son desperdiciados,
cuando se podrían utilizar para obtener información de calidad que sea
de utilidad para los procesos de estimación y mejoramiento de la gestión
de los proyectos de software

A partir de los años 90 empezaron a ser populares herramientas como


Inteligencia de Negocios (BI) o Big Data, las cuales permiten procesar
grandes cantidades de información con el propósito no solo de obtener
información que sirva para la toma de decisiones, sino que también de
identificar patrones de comportamientos y realizar predicciones en base
a datos pasados. (Cano, 2007)

Estas herramientas permitirían obtener información que genera impactos


considerables en la gestión del proyecto de software utilizando datos que
están disponibles en la empresa y son desperdiciados.
1
Sistema de tomas de Decisión
En el caso de estudio que se planteara en este trabajo se utiliza primero
Inteligencia de Negocios con el objetivo de recaudar los datos necesarios
y luego procesarlos mediante un algoritmo de Machine Learning (Inteli-
gencia Artificial), el cual va a ser entrenado con datos obtenidos del área
de calidad de proyectos de software con el objetivo de predecir el com-
portamiento futuro de los mismos en un espacio temporal definido.

El algoritmo utilizado en particular es Multilayer Perceptron, el cual es


una red neural que se encuentra divida en nodos y capas, donde la salida
de un nodo es la entrada del nodo de la siguiente capa, pudiendo tener
más de una capa de nodos según se necesite. Este algoritmo es utilizado
para la resolución de problemas no lineales. (MacKay, 2005)

Las predicciones también se pueden realizar mediante la aplicación de


modelos matemáticos sin la utilización de algoritmos de inteligencia ar-
tificial, de hecho, existen diferentes modelos matemáticos para realizar
simulaciones, entre ellos se puede mencionar el famoso modelo de
Monte Carlo, pero la principal diferencia entre los modelos matemáticos
y estos algoritmos es que el algoritmo va aprendiendo a medida que es
entrenado en cambio el modelo matemático es una foto de ese momento.

Prueba de Concepto
El objetivo del aseguramiento de la calidad es entregar al usuario un pro-
ducto que cumpla con sus expectativas y sea funcional, por lo tanto, para
lograrlo se deben realizar acciones que permitan prevenir que defectos
con alto impacto en la funcionalidad del sistema afecten al usuario, estos
defectos son comúnmente llamados defectos bloqueantes o críticos. Es-
tos deben ser detectados durante el proceso de desarrollo del mismo para
asegurar al usuario que el funcionamiento básico del sistema se desem-
peña correctamente.

El aseguramiento de la calidad necesita ser planeado, en este plan se des-


cribe detalladamente los criterios a seguir en el proyecto para determinar
cuándo un entregable cumple con los requerimientos necesarios para ser
entregado al cliente, como parte de este plan se establece que es un bug
con alto impacto para el cliente, ya que el mismo defecto no tiene el
mismo impacto en sistema aeroespacial que un sistema de gestión de
usuario, en uno puede significar un efecto catastrófico y en el otro puede
incluso hasta pasar desapercibido. Por lo tanto, en el plan se detalla que
son defectos críticos para ese proyecto y los criterios que tiene que cum-
plir un entregable para ser considerado aprobado, entre ellos pueden ser
pruebas de performance aprobadas, no existencia de defectos bloquean-
tes, entre otros.

Para este estudio se plantea que un bug critico es aquel que posee seve-
ridad 1 o 2, dejando de lado las otras severidades ya que las demás no
interrumpen el flujo básico de la aplicación. Siendo el objetivo de este
estudio la predicción de existencia de defectos en el futuro debido que
así se pueden realizar acciones preventivas para detectarlos con anterio-
ridad y evitar que sean detectados por el cliente o que terminen causando
que la entrega del producto se retrase.

Dentro de este contexto se realizó un relevamiento de los datos genera-


dos por el área de calidad de una empresa del sector informático local.
Luego de analizar los datos utilizando diferentes algoritmos de Machine
Learning se pudieron obtener las siguientes evidencias que sustentan di-
cho trabajo.

En este caso se tomaron la información de defectos bloqueantes para un


reléase, los cuales son aquellos cuya severidad es 1 o 2. Se recolectaron
aproximadamente 50 puntos de información, y se calculó el promedio de
ocurrencia para determinar cuándo una semana tiene muchos defectos y
cuando no. Realizado esto se procedió a generar una etiqueta con el valor
verdadero o falso para proceder a realizar los cálculos con diferentes al-
goritmos. Fue necesario relejar el problema ya que para evaluar una dis-
tribución Poisson, Normal, etc. Se necesitarían una cantidad de datos sig-
nificativos.

3
Analizando los datos de severidad 1 y 2 ambos poseen la misma distri-
bución, por lo tanto, calculando la distribución de los mismos se puede
realizar simulaciones de valores futuros.

La prueba de concepto realizada se tomaron los datos recolectados y se


entrenaron con el modelo Multilayer Perceptron. Luego se evaluó la co-
rrección del mismo utilizando la técnica de validación cruzada con 10
puntos de datos y se obtuvo un índice de aciertos del 97%.

Con la utilización de este modelo, tomando los datos de defectos de se-


veridad 1 y 2 de la semana actual y la semana anterior se puede predecir
si la semana siguiente se encontraran defectos bloqueantes con una con-
fianza de un 97% aproximadamente.

Analizando el estudio realizado podemos observar que mapea directa-


mente con el proceso de aseguramiento estadístico de la calidad.

El proceso de Aseguramiento estadístico de la calidad del software con-


siste en 4 Pasos

1. Recabar información sobre errores y defectos


2. Hacer un intento para rastrear cada error y defecto hasta sus pri-
meras causas
3. Usar el principio de Pareto
4. Después de identificar las causas, corregir el problema

(Pressman, 2002, p. 374)

Primer Punto

En el Primer punto se recabo información sobre los errores y defectos


reportados en la herramienta de manejo de defectos, en los cuales se ob-
tuvieron los datos de severidades, módulos afectados, etc

Además, se analizó el plan de calidad que posee el proyecto para deter-


minar los criterios para evaluarla criticidad de los defectos y los requeri-
mientos de un entregable para que esté en condiciones de ir al cliente
Segundo Punto

El segundo punto se puede llevar a cabo a través de la utilización del


análisis de toda la información recabada mediante Inteligencia de Nego-
cios que permite obtener patrones de comportamiento los cuales serán
aplicados para encontrar las causas de los defectos, la distribución de los
mismos, el costo de arreglo según la severidad de cada uno.

Tercer Punto

Se plantea como trabajo futuro la aplicación de Pareto para determinar si


con el 20% de los costos se podrían obtener el 80% de los bugs predictos
mediante la aplicación de algoritmos de inteligencia artificial

Cuarto Punto

Una vez corregido los errores este estudio aplica una técnica preventiva
que es la utilización de Inteligencia Artificial para obtener información
de antemano con un cierto grado de confianza de que los errores van a
ocurrir y realizar acciones de mitigación como mejorar las inspecciones
de código, empezar el testing de las funcionalidades en etapas tempranas
para evitar que sean detectados en las fases finales del proyecto cuando
ya el costo de arreglado es elevado y pone en riesgo la entrega del pro-
ducto.

Quinto Punto

Este estudio plantea agregar un punto más al aseguramiento estadístico


de la calidad planteado por el autor, el cual consiste en tomar esta infor-
mación obtenida mediante este proceso y aplicarla como punto de en-
trada al proceso de planeamiento de los futuros sprint o releases, como
así también sirve para la planificación de las pruebas y la determinación
de un punto de corte del testing.

Por lo tanto, mediante la aplicación de Inteligencia de Negocios e Inteli-


gencia artificial se mejora el proceso de Aseguramiento Estadístico de la

5
calidad descripto anteriormente en términos de eficiencia ya que al utili-
zar estas herramientas el esfuerzo es en su mayoría automático y además
la salida de este proceso seria la simulación del comportamiento futuro
de los defectos, la cual es usada como entrada para la planificación del
proceso de aseguramiento de la calidad.

Como parte de este estudio se plantea el siguiente procedimiento de ase-


guramiento de la calidad, empezando desde el punto en el que se define
y se planea el mismo generando el plan de testing el cual va a ser ejecu-
tado como parte del proceso de desarrollo de software del proyecto ge-
nerando datos de defectos que serán objeto de alimentación de los algo-
ritmos de inteligencia de negocios e inteligencia artificial con el objeto
de realizar la detección de patrones de comportamientos y predicciones
de existencias futuras de defectos en el periodo de tiempo deseado.

Explicación detallada del proceso

Planeamiento del Aseguramiento de la Calidad: Como parte del planea-


miento del aseguramiento de la calidad se genera el plan de testing el
cual describe las actividades a desarrollar, el alcance del plan, enfoque a
seguir y los recursos con los que se cuenta para la ejecución del mismo,
pero además incluye otras secciones como las funcionalidades a probar,
el grado de independencia de las pruebas, el criterio de entrada y de sa-
lida de los artefactos, la definición de severidades, procedimiento para
las revisiones de código. (IEEE-SA Standards Board)

Ejecución del Plan: Se toma como entrada el plan de testing generado


como parte del planeamiento del aseguramiento de la calidad y se lo lleva
a cabo

Dato de Defectos: Como resultado de la ejecución del plan de testing se


generan defectos, los cuales están cargados en una herramienta de ma-
nejo de defectos con atributos definidos como la severidad, modulo afec-
tado, etapa reportado, entre otros
Procesamiento Mediante Inteligencia de Negocios: En esta fase se toma
como entrada los datos de los defectos y se los procesa mediante la uti-
lización de Inteligencias de Negocio para obtener métricas, como la can-
tidad de defectos por severidad por sprint.

Defectos analizados, causas identificadas, atributos de los defectos


procesados: Como resultado de las métricas y patrones recolectados
mediante el proceso anterior en esta etapa se lleva a cabo el análisis de
los mismos para obtener las causas de los mismos y realizar acciones
correctivas y preventivas sobre las mimas.

Procesamiento mediante Inteligencia Artificial: Como parte de este


proceso se toma la información de los defectos y es procesada mediante
un algoritmo de inteligencia de negocios para predecir la existencia de
los mismos en futuros sprints, releases o el periodo de tiempo deseado.

Además, este procesamiento podría realizarse tan complejo como la ne-


cesidad lo demande ya que se podría además a esta información cru-
zarla con información de complejidad del proyecto, complejidad de las
funcionalidades, tamaños de los equipos, etc. En el caso de estudio se
dejó de lado esta complejidad para relajar el modelo y enfocarse en un
solo aspecto, pero será objeto de estudio del trabajo futuro.

Como salida de esto se obtiene información para ser aplicada a la retro-


alimentación del plan de aseguramiento de la calidad para tomar acciones
preventivas y evitar la ocurrencia de los mismos defectos en un futuro.

Este modelo además de la ventaja ya mencionada anteriormente que per-


mite la mejora del proceso del aseguramiento de la calidad a través la
utilización de la predicción de defectos realizada mediante las técnicas
de inteligencia artificial posee otro factor importante que facilita su apli-
cación, el cual es que los costos de implementación son bajos ya utiliza
la información disponible en las herramientas que la organización ya po-
see, solo es necesario extraerlas y procesarlas, lo cual se puede hacer
manualmente o mediante algún script automático si se quiere utilizar la
ganancia de la automatización de procesos en cuanto a tiempo y costos.

7
Tomando en cuenta la economía de los defectos, en donde establece que
a medida que los defectos son encontrados en fases más tardías el costo
aumenta exponencialmente y si a esto se lo multiplica por la cantidad de
defectos que sean detectados en fases tardías que podrían haber sido de-
tectados en fases tempranas utilizando la técnica planteada por este estu-
dio el costo de implementación podría decirte que es insignificantico,
sumado que una vez que este proceso esta automatizado en un proyecto
puede impactar hasta disminuyendo el tiempo de re trabajo de los equipo
logrando así mayor capacidad para incorporar nuevas funcionalidades en
el sistema.

Los costos de los defectos se dividen en dos categorías, costos externos


e internos, los costos internos son los costos asociados a los defectos en-
contrados antes que el producto llegue al cliente y los costos externos
son los costos asociados a defectos que son encontrados por el cliente
luego que el producto es entregado (Pressman, 2002)

Por lo tanto, la utilización del proceso detallado en este estudio ataca los
costos internos y externos, ya que al permitir identificar los defectos in-
ternamente en etapas más tempranas permite el ahorro de estos costos, y
además al haber defectos estos defectos antes de ser entregado al cliente
se previene la existencia de costos externos.

Sin utilizar el proceso planteado en este proceso, el costo de detección


de defectos esta mayormente focalizado en el área de pruebas los cuales
son costos internos o en mantenimiento que son costos externos ya que
el software ya fue entregado al cliente, por lo tanto, los costos son altos.

Utilizando el proceso planteando en este estudio los costos de los defec-


tos se centrarían en el área de diseño y codificación ya que a través de la
simulación de predicción de defectos el equipo de desarrollo posee in-
formación de antemano de la existencia de defectos por lo tanto puede
invertir más esfuerzo en encontrarlos y solucionarlos antes que llegue al
área de pruebas por lo tanto los costos de los defectos bajan en el pro-
yecto de manera significativa. Como consecuencia de esto los costos ex-
ternos deberían tender a desaparecer
Por lo tanto, podemos observar la diferencia de la distribución en costos
es ventaja para la empresa en términos de rentabilidad. Ya que modifica
la distribución de esfuerzo, tiempo y costos como establece el triángulo
de las restricciones

Trabajo Futuro
Debido a que las complejidades de líneas de código varían de un pro-
yecto a otro y de un equipo a otro, es necesario añadir parámetros que
permitan manejar esta variabilidad, para ello tomar datos desde la etapa
de desarrollo de software serán de utilidad para este algoritmo.

La complejidad y variabilidad de líneas de código dada por el tipo de


lenguaje a desarrollar no se va a tener en cuenta ya que se considera que
al tomar los datos del mismo proyecto el lenguaje no varía.

La fórmula a plantear puede variar de acuerdo al espacio temporal para


el cual se quiera realizar las predicciones, ya que si se quiere realizar
predicciones de un reléase a otro tomando el tamaño del backlog es su-
ficiente para la comparación de tamaño.

Por lo tanto, el algoritmo debería entrenarse tomando los datos de los


defectos severidad 1 y 2 por releases, luego calcular el tamaño total del
backlog y entrenar el modelo con esta información.

Como parte del trabajo futuro se plantea la validación de estos modelos


para ser entrenados por el algoritmo Multilayer Perceptron con el obje-
tivo de predecir la cantidad de defectos futuros en el espacio temporal
deseado.

Este algoritmo puede complejizarse tanto que se desee, mientras más


atributos se agreguen la variabilidad de los resultados se va a ver afec-
tada, lo cual puede afectar el porcentaje de confianza con la cual este
algoritmo realiza las predicciones

Se plantea además el estudio si se cumple la ley de Pareto para los costos,


lo que significa que se intentara demostrar que con el 20% de los costos
9
se pueden obtener el 80% de los defectos predictos mediante este proce-
dimiento.

Uno de los aspectos a considerar es la utilización de estas técnicas como


indicadores del estado del proceso de aseguramiento de la calidad, la cual
es de utilidad para saber con un cierto grado de confianza que tan bien
está funcionando este proceso, cuales son las áreas débiles y en donde
debería realizar inversión en termino de esfuerzos para lograr el mayor
impacto positivo posible en este proceso.

Como resultado de todo esto este estudio propone que los pasos del ase-
guramiento estadístico de la calidad sean los siguientes:

1. Procesamiento de información sobre errores y defectos utilizando


Inteligencia de negocio
2. Análisis de los patrones de comportamiento de los defectos para
detectar las causas de los errores
3. Usar el principio de Pareto para determinar si con el 20% de los
costos se pueden obtener el 80% de los bugs predictos
4. Utilizando los resultados del punto 2, corregir el problema
5. Análisis de datos recolectados en los primeros dos puntos para la
prevención de ocurrencia de defectos futuros y utilización de esta
información para planear las siguientes pruebas para asegurar la
calidad del producto.

Este procedimiento además de permitir la predicción de defectos, el cual


puede ser utilizado con diferentes fines, entre los cuales se encuentra la
predicción de defectos como entrada en el proceso de estimación de ca-
pacidad de los sprints, obtención de criterio de corte del testing, planea-
miento de la capacidad del equipo del testing, planeamiento de las prue-
bas a desarrollar. También posee ventajas en cuanto al proyecto ya que
la información recibida puede ser utilizada para enfocar mayor esfuerzo
en etapas tempranas del proceso de desarrollo de software bajando así
los costos internos de los defectos, produciendo que los costos externos
de los defectos bajen de manera significativa ya que evita que los defec-
tos importantes lleguen al cliente.
Este procedimiento es independiente del tipo y tamaño de proyecto a
desarrollar, ya que se basa en la historia del proyecto por lo tanto lo único
que necesita es información histórica del proyecto, mientras más puntos
de datos posea el proyecto mejor es el índice de precisión del algoritmo,
ya que el mismo se entrena y mejora su precisión con los datos.

Al obtener información confiable generada mediante la predicción de de-


fectos, la misma puede ser utilizada por los altos mandos de la organiza-
ción para tomar decisiones sobre el proyecto teniendo en cuenta el trián-
gulo de las restricciones definido por el PMP, ya que proporciona infor-
mación con antelación la cual permite a la organización decidir invertir
esfuerzo y costos en la detección y arreglo de defectos en etapas anterio-
res para prevenir el retraso en la entrega de los proyectos y mejorar la
calidad de los entregables que el cliente va a recibir.

Pero también esta información sirve para mejorar la planificación de los


equipos, ya que al contar con la predicción de cantidades de defectos que
van a ocurrir en el siguiente sprint, el equipo puede reservar una deter-
minada capacidad para arreglarlos y destinar el resto de la capacidad a
las otras actividades logrando así la completitud del sprint de manera
exitosa sin diferir historias.

Además, la capacidad necesaria que necesita destinar para el arreglo de


defectos se puede estimar en base a la información obtenida del procesa-
miento mediante inteligencia de negocios con los datos históricos del
proyecto. Por lo tanto, se estaría utilizando una de las técnicas de estima-
ciones basada en datos históricos esto hace que esta capacidad estimada
tenga un grado de certidumbre confiable.

Bibliografía
Cano, J. L. (2007). Business Intelligence Competir con Informacion.
Recuperado el 2017, de
http://itemsweb.esade.edu/biblioteca/archivo/Business_Intellige
nce_competir_con_informacion.pdf

11
CHAOS. (2015). CHAOS Report. Standish Group 2015 Chaos Report.
(S. Group, Ed.) Standish Group. Recuperado el 2017, de
https://www.infoq.com/articles/standish-chaos-2015

IEEE-SA Standards Board. (s.f.). Standard for Software Testing


Documentation. Recuperado el 2017, de Institute of Electrical
and Electronics Engineers.

ISO 9001, I. (2015). Quality Management System. Recuperado el 2017

ISTQB. (2012). Foundations of Software Testing. ISTQB Certification.


Recuperado el 2017

MacKay, D. J. (2005). Information Theory, Inference, and Learning


Algorithms. Cambridge University Press 2003.

Marco D’Ambros, M. L. (2018). On the Relationship Between Change


Coupling and Software Defects. Lugano, Switzerland: Faculty
of Informatics - University of Lugano, Switzerland. Recuperado
el March de 2018, de
https://www.academia.edu/33055482/On_the_relationship_bet
ween_change_coupling_and_software_defects

Pressman, R. S. (2002). Ingenieria de Software Un enfoque Practico


(Quinta Edicion ed.). Mc Graw Hill. Recuperado el 18 de Abril
de 2017

Project Management Institute. (2004). Project Management Body of


Knowledge. Recuperado el 2017

Sommerville, I. (2007). Ingeniería del Software 7ma edición. Madrid:


PEARSON EDUCACIÓN. S.A.

S-ar putea să vă placă și