100
FACULTAD DE INGENIERÍA UNIVERSIDAD DE LA REPÚBLICA Un caso de estudio en Calidad de Datos para Ingeniería de Software Empírica INFORME PROYECTO DE GRADO Bruno Bianchi Gallo María Carolina Valverde Corrado Tutores de Proyecto Adriana Marotta [email protected] Diego Vallespir [email protected] Montevideo, Uruguay Diciembre, 2009

CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

FACULTAD DE INGENIERÍA

UNIVERSIDAD DE LA REPÚBLICA

Un caso de estudio en Calidad de Datos para

Ingeniería de Software Empírica

INFORME PROYECTO DE GRADO

Bruno Bianchi Gallo

María Carolina Valverde Corrado

Tutores de Proyecto

Adriana Marotta

[email protected]

Diego Vallespir

[email protected]

Montevideo, Uruguay

Diciembre, 2009

Page 2: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían
Page 3: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

i

RESUMEN

En este trabajo se presenta un caso de estudio en Calidad de Datos para Ingeniería de Software

Empírica.

Los datos a analizar son el resultado de un experimento formal llevado adelante en el marco de

un proyecto de grado, con la participación, como sujetos del experimento, de varios estudiantes

4to y 5to año de la Carrera Ingeniería en Computación de nuestra Facultad. El objetivo de dicho

experimento consiste en conocer el rendimiento y costo de diferentes técnicas de verificación

unitaria. El presente trabajo busca identificar los aspectos de calidad relevantes en este contexto,

así como evaluar la calidad de la información recabada en el experimento, detectando los

errores en los datos, y definir y ejecutar procesos de limpieza sobre los mismos.

El proceso realizado comienza con un análisis exhaustivo de los posibles errores sobre los datos,

identificando tipos de errores. Si bien dichos tipos de errores surgen del estudio de los datos de

este caso de estudio en particular, son de carácter general y podrían presentarse en cualquier

experimento similar. Se definen e implementan las mediciones de calidad a realizar sobre la

base de datos, y se establece la forma de registrar los resultados de las mismas. Luego se

definen e implementan procesos de limpieza (automáticos y semiautomáticos) con el fin de

corregir los errores detectados. Se detectan errores en el diseño de la base de datos, por lo que se

construye un nuevo diseño para corregirlos. La limpieza se lleva a cabo durante la ejecución de

la migración de los datos hacia el nuevo esquema. Para las implementaciones se utilizan

consultas SQL y funciones programadas en Java, obteniendo como resultado un programa que

automatiza el ciclo completo de la calidad de datos: medición, registro y limpieza, integrando

también la migración de los datos.

Page 4: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

ii

CONTENIDO

1 INTRODUCCIÓN ................................................................................................................ 1

1.1 MOTIVACIÓN ............................................................................................................. 1

1.2 OBJETIVOS ................................................................................................................. 2

1.3 CONCEPTOS ............................................................................................................... 2

1.4 TRABAJO REALIZADO Y RESULTADOS .............................................................. 2

1.5 CONTENIDO ............................................................................................................... 3

2 CALIDAD DE DATOS ........................................................................................................ 5

2.1 INTRODUCCIÓN ........................................................................................................ 5

2.2 DIMENSIONES DE LA CALIDAD DE DATOS ........................................................ 6

2.3 TÉCNICAS Y ACTIVIDADES DE CALIDAD DE DATOS .................................... 12

2.4 LIMPIEZA DE DATOS .............................................................................................. 13

3 INGENIERÍA DE SOFTWARE EMPÍRICA ..................................................................... 18

3.1 INTRODUCCIÓN ...................................................................................................... 18

3.2 ¿POR QUÉ EXPERIMENTAR? ................................................................................ 20

3.3 ¿CÓMO EXPERIMENTAR? ..................................................................................... 22

3.4 CONCEPTOS BÁSICOS SOBRE EL DISEÑO DE EXPERIMENTOS ................... 24

4 EXPERIMENTO ................................................................................................................. 28

4.1 DESCRIPCIÓN DEL EXPERIMENTO ..................................................................... 28

4.2 HERRAMIENTA PARA REGISTRO DE DEFECTOS ............................................ 30

5 ANÁLISIS DE ERRORES EN LOS DATOS .................................................................... 34

5.1 METODOLOGÍA DE TRABAJO .............................................................................. 34

5.2 EXACTITUD .............................................................................................................. 35

5.3 COMPLETITUD ......................................................................................................... 39

5.4 CONSISTENCIA ........................................................................................................ 40

5.5 UNICIDAD ................................................................................................................. 42

5.6 DIMENSIONES RELACIONADAS CON EL TIEMPO ........................................... 44

6 MEDICIÓN DE LA CALIDAD ......................................................................................... 45

6.1 VALOR FUERA DE RANGO ................................................................................... 45

6.2 VALOR FUERA DE REFERENCIAL ....................................................................... 47

6.3 VALOR NULO ........................................................................................................... 48

6.4 REGLAS DE INTEGRIDAD INTRA-RELACIÓN ................................................... 49

6.5 REFERENCIA INVÁLIDA ........................................................................................ 49

Page 5: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

iii

6.6 REGISTRO DUPLICADO ......................................................................................... 50

6.7 REGISTRO CONTRADICTORIO ............................................................................. 51

6.8 RESUMEN .................................................................................................................. 53

6.9 VALOR DE CALIDAD DE LOS DATOS ................................................................. 56

7 REGISTRO DE ERRORES ................................................................................................ 58

7.1 DESCRIPCIÓN DE LA ALTERNATIVA SELECCIONADA ................................. 58

7.2 APLICACIÓN DEL REGISTRO ............................................................................... 58

7.3 DIAGRAMA ............................................................................................................... 59

7.4 RESUMEN .................................................................................................................. 60

8 LIMPIEZA Y MIGRACIÓN DE LOS DATOS ................................................................. 65

8.1 TÉCNICAS DE LIMPIEZA APLICADAS ................................................................ 65

8.2 DISEÑO DE LA BASE DE DATOS DESTINO ........................................................ 67

8.3 PLANIFICACIÓN DE LA LIMPIEZA Y MIGRACIÓN .......................................... 70

8.4 EJECUCIÓN DE LIMPIEZAS Y MIGRACIÓN ....................................................... 71

8.5 RESULTADOS OBTENIDOS ................................................................................... 76

8.6 RESUMEN .................................................................................................................. 79

9 APLICACIÓN ..................................................................................................................... 80

9.1 INFORMACIÓN TÉCNICA ...................................................................................... 80

9.2 MANUAL DE USUARIO .......................................................................................... 80

9.3 ADAPTACIÓN DEL PROGRAMA DE LIMPIEZA Y MIGRACIÓN A OTROS

EXPERIMENTOS .................................................................................................................. 83

10 PREVENCIÓN DE ERRORES Y OPORTUNIDADES DE MEJORA ............................. 85

10.1 SOBRE EL DISEÑO DE LA BASE DE DATOS Y LA APLICACIÓN ................... 85

10.2 SOBRE EL REGISTRO DE TIEMPOS DE ACTIVIDADES ................................... 86

10.3 OTRAS CONSIDERACIONES ................................................................................. 87

10.4 MEJORAS EN LA CALIDAD DE LOS DATOS ...................................................... 87

11 CONCLUSIONES Y TRABAJOS A FUTURO ................................................................. 91

11.1 CONCLUSIONES ...................................................................................................... 91

11.2 TRABAJOS A FUTURO ............................................................................................ 93

12 GLOSARIO ......................................................................................................................... 95

13 BIBLIOGRAFÍA ................................................................................................................. 96

Page 6: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

1

1 INTRODUCCIÓN

La calidad de la información en todo sistema informático resulta cada día más importante, sino

fundamental, ya que es un factor de gran peso para cualquier actividad que se realice en base a

dicha información.

En Ingeniería de Software Empírica se genera gran cantidad de datos, en base a los cuales se

obtienen conclusiones acerca de los experimentos realizados.

En este trabajo se presenta un caso de estudio en Calidad de Datos para Ingeniería de Software

Empírica. El caso de estudio consiste en el análisis de errores y limpieza de los datos

recolectados en la ejecución de un experimento formal (Vallespir et al., 2009), llevado a cabo en

la Facultad de Ingeniería. El objetivo principal del experimento es conocer el costo y

rendimiento de 5 técnicas de verificación unitaria. Participan 14 estudiantes ejecutando técnicas

de verificación sobre distintos programas. Los datos sobre tiempos de ejecución de las técnicas

y los defectos encontrados se ingresan mediante una herramienta web llamada Grillo (Faggiano

et al., 2008), y se guardan en una base de datos relacional.

Los datos resultantes del experimento deben ser analizados estadísticamente para poder concluir

acerca del rendimiento y el costo de las técnicas de verificación. Sin embargo, estos tienen

errores que es necesario limpiar con el fin de obtener resultados que reflejen más fielmente la

realidad. Para ello se usará conocimiento del área Calidad de Datos, y en particular aplicada a la

Ingeniería de Software Empírica.

1.1 MOTIVACIÓN

La abstracción con la cual se define el concepto de calidad, puede hacer difícil la valoración de

los resultados y beneficios que se obtienen a partir de la aplicación de distintas técnicas y/o

actividades de la calidad. Tal como establece Robert Pirsig (Marotta, 2009), “Even though

quality cannot be defined, you know what it is”. A pesar de que no se puede definir la calidad,

sabemos lo que es. Sabemos su importancia, sabemos lo que significa. En los últimos años ha

ido adquiriendo mayor relevancia, convirtiéndose en un aspecto fundamental que es necesario

considerar para todo sistema de información.

Dentro de las disciplinas que forman parte de la Ingeniería de Software, la Verificación ha ido

tomando un papel de relevancia cada vez mayor. El área de Calidad de Datos también ha tenido

esta tendencia, debido a la creciente cantidad de información que se genera y almacena,

incrementando también su valor e importancia para las organizaciones. La mala calidad de los

datos influye de manera muy significante y profunda en la efectividad y eficiencia de cualquier

organización, llevando en algunos casos a pérdidas multimillonarias (Batini and Scannapieca,

2006). Cada día se hace más notoria la importancia y necesidad en distintos contextos de un

nivel de calidad adecuado para los datos.

El caso de estudio que se presenta no es la excepción en este sentido. Resulta de suma

importancia que se logre obtener datos de buena calidad en todo experimento. Esto se debe a

que dichos datos son el punto de partida para análisis estadísticos, estudios comparativos y

análisis de datos, en los cuales se basan los resultados de las experiencias. De nada serviría

analizar y obtener conclusiones a partir de datos incorrectos o de mala calidad. Es más, sería

“nocivo” en el sentido de que representan una falsa realidad.

Page 7: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

2

El dominio de aplicación de la Calidad de Datos sobre Ingeniería de Software Empírica, no se

encuentra actualmente muy desarrollado. Esto motiva a avanzar y dar los primeros pasos en este

sentido. A pesar de que se cuenta con poca experiencia, hay mucho para abordar y aportar.

Con la mira puesta en mejorar la calidad de las experiencias empíricas en Ingeniería de

Software, en particular en lo que refiere a Verificación, es que se plantea este trabajo. El camino

a seguir implica mejorar la calidad de los datos generados a partir de los experimentos. Esta

tarea se lleva a cabo estableciendo pautas y actividades aplicables no a uno, sino a un conjunto

de experimentos con determinadas características, que conduzcan a la ejecución de

experimentos de mayor calidad en el área de Ingeniería de Software Empírica.

1.2 OBJETIVOS

Existen dos objetivos principales para el proyecto. Por un lado, se busca conocer qué errores

tienen los datos de la base bajo estudio así como su forma de limpieza. Para esto se requiere

establecer previamente las técnicas de detección y corrección de errores a utilizar en cada caso.

Se deben implementar además procesos automáticos y semiautomáticos que den soporte a la

limpieza de los datos. La limpieza contempla errores en el diseño del esquema de la base de

datos, por lo que debe diseñarse un nuevo esquema que corrija los mismos, y realizar la

migración de datos correspondiente.

Por otro lado, se pretende generalizar los resultados obtenidos para este caso de estudio en

particular, de manera tal de extender su aplicabilidad para otros experimentos similares. Se

busca generalizar tanto la implementación de los procesos de limpieza que se hayan generado,

así como los tipos de errores que se identifiquen sobre los datos.

1.3 CONCEPTOS

A lo largo de todo el informe se utiliza el término “defecto” para identificar un defecto

detectado por un verificador en el código fuente (esto es, una imperfección sobre el software

verificado). Los defectos son clasificados por los verificadores según dos taxonomías: IBM y

Beizer. La taxonomía de IBM es una clasificación ortogonal de defectos, es decir, los defectos se

clasifican según categorías que son ortogonales entre sí, mientras que Beizer es una taxonomía

jerárquica.

Por otra parte, se denomina “error” a los errores que son encontrados en los datos con respecto a

la evaluación de su calidad. Un error es la instanciación de un tipo de error sobre un atributo y/o

tabla específica. El término “tipo de error” se utiliza para definir conceptualmente un error

genérico para determinado factor y dimensión de la calidad de los datos.

1.4 TRABAJO REALIZADO Y RESULTADOS

A través de un análisis exhaustivo de la base de datos bajo estudio, se identifican errores tanto

en los datos como en el diseño de la misma. Se construye un nuevo diseño que corrige los

errores identificados en el diseño original, y el cual se utiliza como destino de la migración de

los datos limpios.

Para la medición, limpieza y migración de los datos se implementa un programa Java que

automatiza la gran mayoría de las tareas, consultando al usuario en los casos que así lo

requieren. El mismo resulta ser aplicable a otros experimentos similares, que utilicen la

Page 8: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

3

herramienta Grillo para el registro de sus datos. Junto con el programa se incluye la

documentación sobre cómo adaptar el mismo a otros casos de las mismas características.

Se genera documentación con respecto a las técnicas de calidad de datos utilizadas, así como los

distintos tipos de errores identificados. Se obtiene un conjunto de los tipos de errores que

pueden ocurrir sobre los datos, en cualquier experimento de características similares a las

presentadas en el presente proyecto.

Se incluyen también pautas y oportunidades de mejora para evitar la ocurrencia de los errores

detectados en futuros experimentos. La prevención de errores es otro aspecto de suma

importancia para la Calidad de Datos.

Para cumplir con los objetivos planteados, es indispensable adquirir conocimientos en el área de

Calidad de Datos. Por ello se debe estudiar en la literatura existente en el área las distintas

dimensiones de la calidad de los datos, sus factores y las formas de medirlos, así como las

técnicas de limpieza para los distintos tipos de errores. Es necesario también conocer acerca de

los fundamentos de la Ingeniería de Software Empírica (terminología, principios), para poder

enfocar el conocimiento del área de Calidad de Datos hacia esta disciplina en particular. Dada la

naturaleza de los datos, es imprescindible contar con conocimientos de Verificación de

Software, en particular de las técnicas de verificación unitaria utilizadas durante el desarrollo

del experimento bajo estudio, y de las taxonomías en las cuales se clasifican los defectos.

Estudiar sobre Calidad de Datos, Ingeniería de Software Empírica y Verificación de Software,

así como aplicar los conocimientos adquiridos, también forma parte del trabajo realizado en el

presente proyecto.

1.5 CONTENIDO

El informe consta de 9 capítulos además del actual. En los primeros dos capítulos, “Calidad de

Datos” e “Ingeniería de Software Empírica”, se presentan los conceptos y características

fundamentales sobre el área de Calidad de Datos e Ingeniería de Software Empírica

respectivamente. Luego se describe brevemente el experimento bajo estudio, en el capítulo

titulado “Experimento”. En dicho capítulo se describe también la herramienta Grillo con la cual

se registran los defectos y el esquema de la base de datos de la misma, la cual será objeto de

estudio durante el proyecto.

En el capítulo “Análisis de Errores en los Datos” se presentan cuáles son los tipos de errores

que podrían contener los datos, agrupados según su dimensión de calidad. Se describe también

los pasos seguidos para la identificación de dichos tipos de errores y la definición de las

mediciones para cada uno, a ejecutar sobre los datos bajo estudio. El resultado de esta ejecución

se presenta en el capítulo “Medición de la Calidad”, mostrando el detalle de cómo se realiza la

medición de aquellos errores considerados significativos y representativos del total. Se incluye

también un resumen del resultado global de la medición.

En el capítulo “Registro de Errores” se indica de qué forma se lleva a cabo el registro de la

metadata de los errores, luego de un análisis de distintas alternativas de registro. Se presenta la

aplicación de la alternativa seleccionada para determinados tipos de errores. Al final de este

capítulo se muestra un resumen de todos los errores y tipos de errores identificados sobre los

datos, incluyendo el resultado de su medición y registro.

A continuación, en el capítulo “Limpieza y Migración de los Datos” se describe la limpieza de

los errores que fueron previamente presentados, incluyendo el resultado obtenido a partir de la

Page 9: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

4

misma. Estas limpiezas se ejecutan de manera automática o semiautomática durante la

migración de la base de datos de la herramienta Grillo, y de manera manual al finalizar la

misma.

En el capítulo “Aplicación” se describe brevemente la aplicación implementada para ejecutar la

limpieza y migración de los datos. Se incluyen además qué aspectos deben considerarse a la

hora de aplicar este programa en otro experimento similar. Las alternativas para evitar que los

mismos errores sucedan en futuros experimentos, se presentan en el capítulo “Prevención de

errores y oportunidades de mejora”. Se establece cuáles son los errores que es posible prevenir

y de qué manera, cuáles pueden ocasionar una potencial mejora en la calidad de los datos, y

cuáles no se ven contemplados.

Finalmente, el capítulo “Conclusiones y Trabajos a Futuro” presenta las conclusiones acerca

del trabajo, los logros obtenidos, las limitaciones identificadas, y las tareas que serían de interés

abordar en futuros trabajos.

Adicionalmente, se entregan junto con este informe 6 Anexos. En el Anexo A - Catálogo de

Errores, se describen todos los errores considerados para los datos bajo estudio. Se incluye

también el análisis de alternativas para el registro de los errores, y el detalle del registro según la

alternativa seleccionada en los Anexos B y C respectivamente. La descripción de la limpieza y la

migración se encuentran en el Anexo D, mientras que las consultas realizadas a los verificadores

que participaron en el experimento forman parte del Anexo E. Finalmente, se detallan los

resultados obtenidos a partir de la limpieza de todos los errores en el Anexo F.

Page 10: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

5

2 CALIDAD DE DATOS

El objetivo del presente capítulo es abordar la temática de la calidad en los datos, llegando a

conocer sus conceptos y características fundamentales, y sobretodo comprender su relevancia

para nuestro estudio.

En primera instancia se introducen sus principales conceptos, las dimensiones y factores de

calidad. Luego se explican las técnicas y actividades que se llevan a cabo en el área de la

calidad de datos, y en línea con este último punto se trata la limpieza de datos, cuyo objetivo

final es la mejora en la calidad de los mismos. Este capítulo se basa fuertemente en (Batini and

Scannapieca, 2006) y (Marotta, 2009).

2.1 INTRODUCCIÓN

Previo a cualquier análisis de datos, es importante conocer acerca de la relevancia de la calidad

de datos. Es por esto que se menciona de manera breve de qué trata la calidad de datos y el

motivo por el cual resulta importante (por no decir imprescindible) su estudio. Finalmente se

trata cuáles son las áreas de investigación que le competen.

2.1.1 ¿Qué es la Calidad de Datos?

Los datos representan objetos del mundo real. Dichas representaciones resultan ser aplicables en

contextos de diferentes y variadas características. Por otro lado, los datos pueden ser

almacenados o sometidos a algún proceso o transformación, siendo siempre de suma

importancia para garantizar la sobrevivencia y éxito de las organizaciones.

El problema de la calidad de datos ha sido objeto de estudio desde varias perspectivas y por

diferentes áreas a lo largo de los años, tal es el caso de la Estadística, Gestión o Computación. A

medida que su importancia se hace más evidente a los ojos de estas y otras áreas, se incrementan

también las investigaciones e intenciones de mejora en este sentido.

Es indudable que el almacenamiento y/o procesamiento de datos es de vital importancia en la

vida de todas las personas y organizaciones, en una gran variedad de actividades (más allá de la

informática y los sistemas de información). Existen varios ejemplos de situaciones de la vida

cotidiana, donde se hace necesario almacenar, procesar, transmitir y utilizar datos. Uno de ellos,

cuando elaboramos una lista para hacer las compras almacenamos datos correspondientes a qué

productos comprar, en qué cantidad, de qué marca.

En cuanto al concepto de calidad de datos, suele suceder que intuitivamente se piensa en ciertos

aspectos de los datos. Por lo general se tiende a pensar en que los datos sean exactos. Sin

embargo, hace falta ahondar más en este concepto, para entender que hay varias “caras” o

aspectos (las llamadas dimensiones), que hacen a la calidad de los datos. Más adelante en el

documento se explican algunas dimensiones (exactitud, completitud, actualidad, entre otras) en

detalle. Como ejemplo trivial, se puede pensar en la situación de la elaboración de una lista para

compras:

Si se omite anotar un producto o la cantidad a comprar de cierto producto, se enfrenta el

problema de completitud.

Si ocurre una equivocación en la cantidad de cierto producto o se escribe mal su marca,

se enfrenta el problema de exactitud.

Page 11: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

6

Si en lugar de llevar la lista de hoy se lleva la de ayer, se enfrenta el problema de

actualidad.

Entonces, se puede decir que la definición de la calidad de los datos está relacionada

estrechamente con la exactitud, completitud, consistencia y actualidad de los datos (entre otros).

Es por esto que la calidad de datos es denominada un concepto “multifacético”, ya que depende

y es función de las dimensiones que la definen.

2.1.2 La Importancia de la Calidad de Datos

Son pocas las ocasiones en las cuales se es consciente de las consecuencias que la mala calidad

de datos trae aparejada. Sin embargo, es de suma importancia lograr identificar sus causas para

eliminar, o en su defecto mejorar, la problemática de raíz.

En el ejemplo anterior de elaboración de la lista de compras, la mala calidad de los datos puede

acarrear consecuencias no deseadas (como omitir comprar un producto que se necesitaba, o una

cantidad equivocada), ninguna de ellas de gravedad. Pero no es difícil pensar en otro tipo de

situaciones (listas de productos para importación en cantidades masivas, nombres de clientes

duplicados, errores en cobros, errores médicos) donde una falta puede provocar problemas de

gravedad.

La mala calidad de los datos influye de manera muy significante y profunda en la efectividad y

eficiencia de las organizaciones así como en todo el negocio, llevando en algunos casos a

pérdidas multimillonarias. Cada día se hace más notoria la importancia y necesidad en distintos

contextos de un nivel de calidad adecuado para los datos.

2.1.3 Áreas de Investigación en Calidad de Datos

Lograr calidad en los datos es una tarea compleja y multidisciplinaria, debido a su importancia,

naturaleza, y la variedad de tipos de datos y sistemas de información que pueden estar

implicados.

La investigación dentro del área de calidad de datos incluye los siguientes puntos:

Dimensiones: las mediciones sobre el nivel de calidad de los datos se aplican a las

dimensiones de interés.

Metodologías: proveen guías de acción.

Modelos: representan las dimensiones y otros aspectos de la calidad de datos.

Técnicas: proveen soluciones a problemas de calidad de datos.

Herramientas: son necesarias para que las metodologías y técnicas puedan llevarse a

cabo de manera efectiva.

2.2 DIMENSIONES DE LA CALIDAD DE DATOS

En la sección anterior, se introdujeron a modo de ejemplo conceptos como exactitud,

completitud y actualidad. Todas estas características (y varias más) de los datos, se denominan

dimensiones de la calidad de los datos.

Cada dimensión refleja un aspecto distinto de la calidad de los datos. Las mismas pueden estar

referidas a la extensión de los datos (su valor), o a la intensión (su esquema). De esta manera

Page 12: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

7

podemos distinguir entre calidad en los datos y calidad en los esquemas. El foco del presente

proyecto es en la calidad inherente a los datos.

Se define factor de calidad como un aspecto particular de una dimensión. En este sentido, una

dimensión puede ser vista como un agrupamiento de factores de calidad que tienen el mismo

propósito.

Es claro que la mala calidad en los datos puede provocar varios problemas, así como también la

mala calidad de un esquema (por ejemplo un esquema de una base de datos relacional sin

normalizar) podría provocar problemas mayores, tales como redundancias. Ambos tipos de

dimensiones, tanto las referidas a los datos como a los esquemas, proveen una visión cualitativa

de la calidad, mientras que las medidas cuantitativas se representan mediante las métricas.

Una métrica es un instrumento que define la forma de medir un factor de calidad. Un mismo

factor de calidad puede medirse con diferentes métricas. Por otro lado, definimos método de

medición como un proceso que implementa una métrica. A su vez, una misma métrica puede

ser medida por diferentes métodos.

Existen varias dimensiones que reflejan distintos aspectos de los datos. Esto no resulta ser una

sorpresa al considerar que los datos pretenden representar todo tipo de características de la

realidad, desde espaciales y temporales, hasta sociales. A continuación se describen algunas

dimensiones de la calidad de datos.

2.2.1 Exactitud (Accuracy) y Unicidad (Uniqueness)

La exactitud se puede definir como la cercanía que existe entre un valor v del mundo real, y su

representación v‟.

De acuerdo al enfoque teórico que se trata más adelante, la exactitud se define como una

correcta y precisa asociación entre los estados del sistema de información y los objetos del

mundo real.

Existen tres factores de exactitud: exactitud semántica, exactitud sintáctica y precisión.

La exactitud sintáctica se refiere a la cercanía entre un valor v y los elementos de un dominio

D. Esto es, si v corresponde a algún valor válido de D (sin importar si ese valor corresponde a

uno del mundo real).

Para poder medir la exactitud sintáctica se puede utilizar la comparación de funciones, métrica

que mide la distancia entre un valor v y los valores en el dominio D. Otras alternativas posibles

son la utilización de diccionarios que representen fielmente el dominio, o el chequeo de los

datos contras reglas sintácticas.

La exactitud semántica se refiere a la cercanía que existe entre un valor v y un valor real v‟.

Esta dimensión se mide fundamentalmente con valores booleanos (indicando si es un valor

correcto o no), para lo cual es necesario conocer cuáles son los valores reales a considerar.

En este caso, interesa medir que tan bien se encuentran representados los estados del mundo

real. Una de las métricas utilizadas es la comparación de los datos con referenciales

considerados válidos.

La precisión, por otra parte, se refiere al nivel de detalle de los datos.

El enfoque hasta ahora ha sido en la exactitud a nivel de valores, o sea, del valor de una celda (o

campo) de una tupla. Sin embargo, es posible pensar en la exactitud a nivel de tupla, o a nivel de

Page 13: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

8

tablas, e incluso considerando la base entera. Es decir, se pueden considerar distintos niveles de

granularidad a la hora de evaluar la calidad de los datos. Es por esto que se definen funciones de

agregación, las cuales miden la exactitud de conjuntos de datos. Por ejemplo, obtener la medida

de una tupla a partir de la medida de exactitud de cada una de sus celdas. El ratio es una

función de agregación que consiste en identificar la cantidad de valores correctos sobre la

cantidad de valores totales. Brinda un porcentaje de valores correctos. Otros ejemplos de

funciones de agregación son los promedios y promedios ponderados.

Para aclarar los conceptos se plantea un ejemplo sencillo. Se posee una base de datos donde se

almacena el nombre y la edad de determinadas personas. Para el dato “Edad” se especifica que

su valor estará en el rango 0 a 120. Además, se sabe que existe una persona llamada Oscar

Javier Morales, de 23 años de edad. Se consideran entonces los siguientes casos:

Si existe un registro para una persona donde el campo edad tiene el valor 234, entonces

se trata de un error sintáctico (valor fuera del rango 0 a 120).

Si existe un registro para Oscar donde el campo edad tiene el valor 19, entonces se trata

de un error semántico, ya que es sabido que Oscar no tiene 19 años, sino que tiene 23

(en este caso no hay error sintáctico, pues 19 es un valor válido para la edad).

Se enfrenta un problema de precisión si existe el interés de conocer la edad exacta de

Oscar, ya que solo se conoce la cantidad de años, no los meses ni días de vida.

A pesar de que la exactitud semántica es generalmente más compleja de medir que la exactitud

sintáctica (ya que se requieren conocer los valores del mundo real), cuando ocurren errores de

tipeo ambos tipos de exactitud coinciden. Al modificar su valor, se logrará exactitud sintáctica,

ya que el valor escrito correctamente se corresponderá con alguno del dominio, y semántica, ya

que existirá un valor real asociado al valor escrito correctamente.

Una forma de chequear la exactitud semántica es comparar diferentes fuentes de datos, y

encontrar a partir de estas el valor correcto deseado. Esto también requiere de la resolución del

problema de identificación de objetos, el cual consiste en identificar si dos tuplas representan el

mismo objeto en el mundo real.

En el caso en que la exactitud sea considerada en un conjunto de valores, es necesario

considerar también la duplicación. Dicha problemática ocurre cuando un objeto del mundo real

se encuentra presente más de una vez (más de una tupla representa exactamente el mismo

objeto).

Sin embargo, podrían existir también tuplas que representan el mismo objeto del mundo real

pero con diferentes claves. Este aspecto es considerado por la dimensión de Unicidad. Es

importante destacar aquí que existen diferentes situaciones que pueden llevar a la duplicación de

datos:

cuando la misma entidad se identifica de diferentes formas,

cuando ocurren errores en la clave primaria de una entidad,

cuando la misma entidad se repite con diferentes claves.

Distinguimos dos factores de la dimensión Unicidad:

Duplicación: la misma entidad aparece repetida de manera exacta.

Contradicción: la misma entidad aparece repetida con contradicciones.

Page 14: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

9

2.2.2 Completitud (Completeness)

La completitud se puede definir como la medida en que los datos son de suficiente alcance y

profundidad.

De acuerdo al enfoque teórico, esta dimensión se define como la capacidad del sistema de

información de representar todos los estados significativos de una realidad dada.

Existen dos factores de la completitud: cobertura y densidad.

La cobertura se refiere a la porción de datos de la realidad que se encuentran contenidos en el

sistema de información. Al igual que para la exactitud semántica, la cobertura involucra una

comparación del sistema de información con el mundo real. Una vez más un referencial es

requerido. Debido a que suele ser difícil obtenerlo, otra alternativa es estimar el tamaño de tal

referencial.

La densidad se refiere a la cantidad de información contenida, y la faltante acerca de las

entidades del sistema de información.

Completitud de Datos Relacionales

La completitud en un modelo relacional puede caracterizarse por los siguientes aspectos:

Valores nulos: el significado de los valores nulos puede ser variado. Un valor nulo

puede indicar que dicho valor no existe en el mundo real, que el valor existe en el

mundo real pero no se conoce, o que no se sabe si el valor existe o no en el mundo real.

Es importante conocer la causa de su presencia.

Suposiciones:

o CWA (Suposiciones del Mundo Cerrado, Closed World Assumption): todos los

valores del mundo real se encuentran en el modelo relacional. En un modelo

CWA con valores nulos, la completitud se define a partir de la granularidad de

los elementos del modelo (completitud del valor, de la tupla, de un atributo, o

de la relación).

o OWA (Suposiciones del Mundo Abierto, Open Worl Assumption): no se puede

asegurar que todos los valores del mundo real se encuentran en el modelo

relacional. En un modelo OWA sin valores nulos, la completitud se mide como

la cantidad de tuplas representadas en la relación sobre su tamaño total (la

cantidad de objetos del mundo real que constituye la totalidad de la relación).

Por ejemplo, si se requiere tener registrados en una base de datos los datos (nombre, edad y

sexo) de todas las personas que habitan en el planeta Tierra, entonces cada persona no registrada

en la base degradará la completitud de los datos (esto sería completitud a nivel de la relación).

También se verá disminuida la completitud si no se cuenta con la edad de ciertas personas, o

con su sexo (esto último se refiere a la completitud a nivel de tupla o registro).

2.2.3 Dimensiones Relacionadas con el Tiempo

Los cambios y actualizaciones de los datos son un aspecto importante de la calidad de datos a

tener en cuenta. Es posible afirmar que en determinados contextos un dato no actualizado es de

mala calidad y puede llegar a ocasionar problemas graves.

Page 15: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

10

Como ejemplo, suponer que se planean unas vacaciones a una isla del Caribe. Además de los

preparativos correspondientes, se verifica el pronóstico del clima para asegurar que no ocurran

huracanes en los días que se estará allí. Si la información climática no fue debidamente

actualizada (por ejemplo si se consulta una página web que no posee mantenimiento), puede que

se esté recibiendo el pronóstico equivocado, y por ende, que se estropeen las vacaciones. Por lo

tanto, el pronóstico podría ser muy completo y exacto desde el punto de vista de la información

climática que brinda, pero si es antiguo de nada serviría.

Se describen las siguientes dimensiones relacionadas con el tiempo:

Actualidad (Currency): trata sobre la actualización de los datos y su vigencia. Esta

dimensión puede ser medida de acuerdo a la información de “última actualización".

Volatilidad (Volatility): se refiere a la frecuencia con que los datos cambian en el

tiempo. Una medida para esta dimensión es la cantidad de tiempo que los datos

permanecen siendo válidos.

Edad (Timeliness): especifica que tan actuales/viejos son los datos para la tarea/evento

en cuestión. Para medir esta dimensión es necesario considerar una métrica de

actualidad, y verificar que los datos se encuentren dentro del límite establecido por la

tarea/evento en cuestión.

2.2.4 Consistencia (Consistency)

Esta dimensión hace referencia al cumplimiento de las reglas semánticas que son definidas

sobre los datos.

De acuerdo al enfoque teórico, la inconsistencia de los datos se hace presente cuando existe más

de un estado del sistema de información asociado al mismo objeto de la realidad. Una situación

que podría ocasionar inconsistencias en los datos es la incorporación de datos externos o con

otros formatos.

Un ejemplo sencillo: si en una tabla se almacenan datos de personas, tales como fecha de

nacimiento y edad, entonces si en un registro se tiene como fecha de nacimiento el 01/01/2005 y

como edad 42 años, existe una inconsistencia (como se explica a continuación, se estaría

violando una regla intra-relacional).

Restricciones de integridad

Las restricciones de integridad definen propiedades que deben ser cumplidas por todas las

instancias de un esquema relacional.

Se distinguen tres tipos de restricciones de integridad:

Restricciones de dominio: se refiere a la satisfacción de reglas sobre el contenido de los

atributos de una relación.

Restricciones intra-relacionales: se refiere a la satisfacción de reglas sobre uno o varios

atributos de una relación.

Restricciones inter-relacionales: se refiere a la satisfacción de reglas sobre atributos de

distintas relaciones.

Existen además diferentes tipos de dependencias:

Page 16: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

11

Dependencias de clave: no existen dos instancias de una relación r con la misma clave

k.

Dependencias de inclusión (restricciones referenciales): algunas instancias de la

relación r están contenidas en instancias de otra relación s. Un ejemplo de esta

dependencia son las restricciones de clave foránea.

Dependencias funcionales: una relación r satisface la dependencia funcional X->Y si

para todo par de tuplas t1 y t2 se cumple que: Si t1.x = t2.x t1.y = t2.y

2.2.5 Relaciones entre las Dimensiones

Es claro que las dimensiones no son independientes entre sí, sino que se interrelacionan de

manera estrecha. Es necesario ser cuidadoso a la hora de invertir esfuerzo en mejorar un aspecto

(dimensión) de la calidad de datos, ya que podría estar afectando negativamente otro aspecto de

estos.

En línea con lo mencionado anteriormente, dependiendo del contexto particular en el cual nos

situemos elegiremos mejorar aquellas dimensiones que consideramos de mayor valor para la

calidad de nuestros datos, e ignorar las que no la perjudican o afectan de manera significativa.

A modo de ejemplo, se mencionan algunas de las relaciones negativas más comunes entre

diferentes dimensiones de la calidad de datos:

Datos exactos, completos o consistentes podría implicar su desactualización debido al

tiempo que es necesario invertir en actividades de chequeo y corrección.

La completitud (muchos datos) tiene mayores probabilidades de acarrear errores de

inconsistencia en los datos.

Sin embargo, también existen correlaciones positivas, esto es, que mejoran más de un factor. Es

importante identificar en primera instancia cuáles son los factores o dimensiones que se requiere

mejorar de acuerdo al contexto de aplicación, para luego evaluar si es posible realizarlo de

forma conjunta.

A modo de ejemplo, mencionamos algunas de las correlaciones positivas más comunes entre

diferentes factores de la calidad de datos:

La corrección de errores de tipeo mejora tanto la exactitud semántica como sintáctica.

Si se logran obtener datos más actualizados, se podría mejorar la exactitud semántica

(más datos corresponderían a la realidad).

Si se completan los valores nulos (densidad) también se podría mejorar la exactitud

semántica.

2.2.6 Enfoque en las Dimensiones de la Calidad de Datos

A continuación se definen tres enfoques distintos que es posible adoptar con respecto a las

definiciones de las dimensiones en Calidad de Datos.

Enfoque Teórico

Este enfoque considera la correcta representación de la realidad en un sistema de información.

En este aspecto, interesa conocer las deficiencias que se generan cuando ocurren desviaciones

Page 17: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

12

en dicha representación. Dentro de las deficiencias relativas al diseño del sistema de

información, se destacan las siguientes:

Representación incompleta: cuando un objeto del mundo real no se asocia con ningún

estado del sistema de información.

Representación ambigua: cuando varios objetos del mundo real se asocian con el mismo

estado del sistema de información.

Representación sin significado: cuando existen estados del sistema de información que

no se encuentran asociados con ningún objeto del mundo real.

En lo que respecta a las deficiencias operacionales destacamos los errores (garbling), que se

refieren a una incorrecta asociación entre los objetos de la realidad y los estados del sistema de

información.

Enfoque Empírico

En este caso la información es obtenida a partir de entrevistas, cuestionarios y experimentos.

Se destacan cuatro categorías:

Calidad de Datos intrínseca: calidad que los datos deben tener por sí sola (ejemplo:

exactitud).

Calidad de Datos contextual: toma en cuenta el contexto en que los datos son utilizados

(ejemplo: completitud).

Calidad de Datos representacional: referente a la calidad de la representación de los

datos (ejemplo: interpretación).

Calidad de Datos para la accesibilidad de los mismos.

Enfoque intuitivo

Las dimensiones son definidas de acuerdo al sentido común y la experiencia práctica.

Se destacan tres categorías: esquema conceptual, valor de los datos y formato de los datos.

2.3 TÉCNICAS Y ACTIVIDADES DE CALIDAD DE DATOS

En esta sección se explican algunas actividades y técnicas desarrolladas para mejorar la calidad

de los datos.

Las actividades relativas a la calidad de datos se refieren a cualquier proceso (o transformación)

que se aplica a los datos con el objetivo de mejorar su calidad. Para llevar a cabo dichas

actividades, se hace uso de distintas técnicas.

A continuación se describen algunas actividades relativas a la calidad de los datos:

Obtención de nueva información: es el proceso de refrescar la información almacenada

en la base con datos de mayor calidad (por ejemplo ingresar datos más precisos, de

mayor actualidad).

Estandarización: es el proceso de “normalizar” los datos almacenados, de manera que

queden almacenados respetando cierto formato (por ejemplo todos los números de

teléfono deben incluir el código de región).

Page 18: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

13

Identificación de Objetos: es el proceso por el cual se identifican registros (dentro de

una misma tabla, o entre tablas) que hacen referencia al mismo objeto de la realidad.

Integración de datos: hace referencia a la actividad de unificar datos provenientes de

distintas fuentes, resolviendo los problemas que esto trae aparejados (redundancias,

problemas de consistencia, duplicación).

Confiabilidad de las fuentes: implica “calificar” a las distintas fuentes de información de

acuerdo a la calidad de los datos que proveen (esto tiene más sentido considerando un

sistema P2P por ejemplo).

Composición de calidad: hace referencia a la definición de un álgebra para calcular la

composición (o agregación) de las medidas de las dimensiones de calidad de datos. Por

ejemplo, calcular la completitud de una unión de relaciones, a partir de la completitud

de cada relación.

Detección de errores: dadas una o más tablas, y ciertas reglas que los registros de dichas

tablas deben cumplir, este es el proceso de detectar qué registros no cumplen con dichas

reglas.

Corrección de errores: luego de la detección, esta actividad se encarga de corregir los

registros con errores, de manera que se respeten todas las reglas correspondientes.

Optimización de costos: implica obtener la mejor relación costo-beneficio al aplicar

procesos de mejora de la calidad de los datos.

2.4 LIMPIEZA DE DATOS

La limpieza de datos es un arma fundamental para lograr mejorar la calidad de los datos. Es por

esto que resulta imprescindible abordar esta temática, para conocer y comprender los problemas

que debe enfrentar, así como las fases que forman parte de cualquier proceso de limpieza. Por

otro lado, la limpieza de datos abre caminos para la detección, corrección y prevención de

errores en los datos. Estos puntos se analizan al final de esta sección.

Esta sección se basa fuertemente en (Erhard Rahm, 2000).

2.4.1 Introducción

La limpieza de datos (data cleaning o data cleansing) intenta resolver la problemática de la

detección y corrección de errores e inconsistencias que ocurren en los datos, con el fin de

mejorar su calidad. Estas actividades son de mayor importancia en las bases de datos en las

cuáles la información se ingresó de alguna manera que deja lugar a la aparición de errores. Por

ejemplo, cuando la información la ingresan personas desde el teclado, cuando se obtiene de

fuentes no muy confiables o cuando se integran diferentes fuentes de información. En este

último caso se vuelve necesario también consolidar los datos cuyo significado es el mismo (pero

varían en su representación), así como descartar aquellos datos que se encuentren duplicados.

Un ejemplo de ello son Data warehouses y sistemas de información basados en web.

Existen variadas herramientas que dan soporte a la limpieza de datos. Sin embargo, es

importante tener en mente que esta tarea implica, además de la utilización de herramientas, un

arduo trabajo manual o de programación de bajo nivel para su resolución.

Page 19: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

14

2.4.2 Problemas que Enfrenta la Limpieza de Datos

Tanto la limpieza como la transformación de datos se encuentran abocadas a resolver la misma

problemática, ya que es necesario realizar transformaciones a nivel de la estructura,

representación o contenido de los datos para lograr efectivamente su limpieza.

Los problemas que enfrenta la limpieza de datos se pueden clasificar como sigue:

Problemas provenientes de una sola fuente de información.

La calidad de los datos depende en gran medida de las restricciones de integridad y el

esquema en el cual se encuentran inmersos. Por ejemplo, las bases de datos tienen menor

probabilidad de poseer errores e inconsistencias en los datos, a diferencia de los archivos de

texto plano en los cuales no existe ningún tipo de reglas ni restricciones con respecto a los

datos ni sus valores.

Se distinguen además problemas a nivel del esquema o a nivel de instancia. Estas últimas

son las que conciernen a la calidad de los datos, y son ocasionados por ejemplo por errores

de tipeo.

Problemas provenientes de varias fuentes de información.

Cuando se integran varias fuentes de información, los problemas existentes para una sola

fuente se incrementan drásticamente. En este caso, se distinguen dos tipos de problemas a

nivel del esquema:

Conflictos de nombres: cuando se utiliza el mismo nombre para representar distintos

objetos, o cuando distintos nombres representan el mismo objeto.

Conflictos estructurales: cuando el mismo objeto se representa de distinta manera en

fuentes de información distintas.

A nivel de instancia, los conflictos que pueden suceder son:

Diferentes representaciones para el mismo valor (por ejemplo el sexo con valores F/M o

0/1).

Diferentes interpretaciones del mismo valor (por ejemplo una medida expresada en

minutos o segundos).

Diferentes niveles de agregación.

Diferentes puntos en el tiempo.

Sin duda, una de las mayores problemáticas de la limpieza de datos es la identificación de datos

que representan el mismo objeto del mundo real. Sin embargo, al momento de realizar esta tarea

es necesario considerar que a pesar de que existe información redundante, en muchas ocasiones

los datos que representan el mismo objeto podrían complementarse (por ejemplo obtener la

dirección y el teléfono a partir del registro de una persona, y su edad y sexo a partir de otro

registro de la misma persona).

2.4.3 Fases de la Limpieza de Datos

A continuación se detallan las fases de las cuales consta un proceso de limpieza de datos.

Page 20: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

15

Análisis de datos: esta fase consiste en determinar los errores e inconsistencias que

deberán eliminarse. Para ello se realiza una inspección manual y se utilizan programas

de análisis de datos.

Existen dos enfoques:

o Data profiling: consiste en analizar los datos de una base de datos y a partir de

estos obtener propiedades que se cumplen en la misma. Se centra en el análisis

de los atributos: su contenido, estructura, dependencias en una relación,

solapamiento con atributos de otras relaciones, valores faltantes y duplicados.

Ejemplos:

Para valores ilegales: definición de cardinalidades, valores máximos y

mínimos, variaciones/desviaciones.

Para errores de tipeo: ordenar los campos de manera tal que los valores

con errores se sitúen cerca de los reales.

Para valores faltantes: cantidad de nulos, presencia de valores por

defecto pueden indicar también la falta de un valor.

Variación en la representación de valores: comparar columnas iguales

de tablas (fuentes) distintas.

Duplicados: ordenar los valores por cantidad de ocurrencias.

o Data mining: se ocupa de la identificación de patrones en conjuntos de datos

(por ejemplo definir una relación entre distintos atributos).

Definición de transformaciones de datos y reglas de mapeo: consiste en un conjunto de

pasos durante los cuales se llevan a cabo transformaciones a nivel del esquema y de las

instancias. Para ello se pueden utilizar herramientas de ETL (Extraction,

Transformation, Loading), sentencias SQL (Standar Query Language) o funciones

definidas por el usuario (UDF - User Defined Functions).

2.4.4 Detección y Corrección de Errores

Utilizar el término error puede resultar demasiado amplio, teniendo en cuenta el concepto

multifacético con el que se define la calidad de datos. Por lo tanto, se puede poner foco en:

Detectar y corregir inconsistencias: básicamente se trata de detectar registros que no

cumplan con determinadas reglas, y luego modificar los datos, por ejemplo a partir de la

obtención de nueva información, para que cumplan con las reglas. Esta tarea incluye

asegurar que la información se encuentra consistente (sin contradicciones) y libre de

redundancias.

Una técnica para la localización de errores es la llamada Data editing, la cual consiste

en la definición de reglas (edits) que deben ser respetadas por cierto conjunto de datos,

para lograr de esta manera la detección de inconsistencias. Los edits representan

condiciones de error, por lo cual deben ser consistentes y no redundantes. Los datos de

un registro deben ser ajustados de manera tal que cumplan con las reglas, pero

minimizando las modificaciones a los datos.

A modo de ejemplo, se tiene una tabla de personas donde se almacenan (entro otros

datos) si la persona tiene empleo y la edad de la persona. Luego, es posible definir una

Page 21: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

16

regla que especifique que si la edad de la persona es menor a 16, entonces el campo

empleo debe ser false. A partir de esta regla, se pueden identificar los registros que no la

cumplan, y corregirlos.

Existen varias formas de corregir los errores detectados:

o Refrescar la base de datos con nuevos datos.

o Utilizar los edits definidos de manera tal que cuando no se cumple una regla, se

imputa un valor que haga que la misma sea verdadera.

Detectar y corregir datos incompletos: si se consideran las tablas de las bases de datos

relacionales, el primer caso de incompletitud a tener en cuenta son los valores nulos. En

este caso si bien es muy simple detectar los datos incompletos, puede que corregir sea

difícil (en el caso de no tener forma de obtener la información faltante).

Aquí se distinguen dos tipos de fuentes de incompletitud: datos truncados, que

corresponden a aquellos datos que son eliminados por no ser significantes para la

realidad en cuestión, por ejemplo, y datos censurados, que corresponden a aquellos

datos que se sabe que no fueron obtenidos, ya sea porque no se pudo o porque se

omitió.

Detectar y corregir anomalías: este es el caso de datos cuyo valor difiere en gran medida

con respecto a los demás datos. La situación puede ser cualquiera de las siguientes:

o El valor fue mal medido, o mal ingresado en la base.

o El valor corresponde a una “muestra” distinta a la de todos los demás.

o El valor es correcto y simplemente corresponde a algún suceso inusual de la

realidad.

Estos datos se pueden identificar a partir de dos medidas distintas: midiendo la distancia de los

valores registrados a los valores que se espera que haya (desviación interna), o midiendo la

variación de los datos en el tiempo con respecto a otros datos (desviación relativa). Existen

varias técnicas para ello. Una de ellas, calcula el valor promedio y la desviación estándar de

cierto conjunto de datos, para identificar aquellos valores que se desvíen “demasiado” del valor

promedio. Se podría definir por ejemplo un valor límite a partir del cual el dato es sospechoso

de estar incorrectamente registrado. Otras técnicas utilizan también el factor tiempo para

identificar datos anómalos, partiendo de la base que datos medidos o registrados en cierto lapso

de tiempo pueden estar altamente relacionados, y también teniendo en cuenta posibles ciclos

donde aparezcan “picos” en los valores, por ejemplo como puede ser el uso de celulares en

Navidad o Año Nuevo.

Lidiar con estas anomalías implica un doble esfuerzo: primero se deben identificar, y luego

decidir si corresponden a datos correctos de sucesos de la realidad poco comunes, o si

corresponden a datos incorrectos y deben ser corregidos.

2.4.5 Prevención de Errores

Consiste en evitar que ocurran inconsistencias en los datos a futuro. Para ello es necesario

identificar primero cuáles son las causas de los errores y cómo lograr eliminarlas de manera

permanente.

Page 22: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

17

La localización y corrección de errores se lleva a cabo para datos cuya creación y actualización

es poco frecuente. Sin embargo, la prevención de errores a través del manejo de procesos es

utilizada en mayor medida cuando los datos son actualizados y creados de manera frecuente. Se

incluyen controles a los procesos en los cuales los datos son creados y/o actualizados para evitar

que sucedan inconsistencias.

Los edits también pueden ser utilizados para la prevención de errores y la mejora de procesos,

evitando la ocurrencia de ciertas inconsistencias en la base.

Otra forma de prevención de errores consiste en identificar cuáles con las actividades manuales

en las cuales suelen ocurrir la mayor cantidad de errores, y buscar su automatización.

Page 23: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

18

3 INGENIERÍA DE SOFTWARE EMPÍRICA

No es común experimentar en la Ingeniería de Software. Para conocer los motivos de ello, se

requiere en primera instancia tener un conocimiento sobre los experimentos en general, y sobre

la experimentación aplicada al caso particular de la Ingeniería de Software. Dicho tema es

tratado en la primera sección. Se profundiza luego en los motivos que conducen a experimentar

para lograr entender su importancia en todas las disciplinas, y la Ingeniería de Software no

resulta ser la excepción en este sentido. El cómo experimentar es otra de las temáticas que se

aborda en este capítulo. Finalmente se detallan los conceptos básicos que es preciso conocer en

cuanto al diseño de los experimentos.

El objetivo del presente capítulo va más allá de conocer los conceptos fundamentales con

respecto a la Ingeniería de Software Empírica. Se enfoca en comprender por qué resulta

verdaderamente imprescindible experimentar en esta disciplina, y los motivos por los cuales la

realidad se aleja de esta idea, a pesar de ser conscientes de sus consecuencias.

Este capítulo se basa fuertemente en (Juristo and Moreno, 2001).

3.1 INTRODUCCIÓN

La experimentación se refiere a la correspondencia de las suposiciones, asunciones,

especulaciones y creencias acerca del software con hechos de la realidad.

En la actualidad, puede suceder que ciertas ideas sean tomadas como verdaderas de acuerdo a la

connotación que las personas vuelcan sobre estas. Si cierta idea es asumida como verdadera y

utilizada por una cantidad de personas significativa, entonces en algunos casos la idea se

convierte en certera para toda la sociedad. Por el contrario, si una idea es descartada por la

sociedad, entonces perderá validez y dejará de ser utilizada.

Sin embargo, no resulta difícil comprender que esta metodología “natural” de selección acerca

de las ideas verdaderas, no es apropiada para las disciplinas de la Ingeniería, entre ellas, para la

Ingeniería de Software. Esta última requiere pruebas que tengan sus raíces en hechos de la

realidad (no en supuestos), que establezcan si un determinado enfoque o técnica es realmente

mejor o peor que otra. A pesar de esto, son pocas las ideas de la Ingeniería de Software que son

probadas con hechos de la realidad, con datos empíricos, y menos aún las que siguen un

enfoque formal para la experimentación. Sin embargo, muchas de estas ideas son asumidas

como válidas y utilizadas por toda la comunidad científica.

Uno de los motivos de la inmadurez de la Ingeniería de Software es la falta de conducción de

experimentos controlados. Es necesario comprender que de no existir tal carencia, la

experimentación permitiría confirmar teorías, conocer los factores que hacen a un software

bueno o mejor que otro, así como las técnicas, métodos y herramientas más apropiadas para un

software bajo determinadas situaciones.

3.1.1 ¿Por Qué no se Experimenta en la Ingeniería de Software?

En la actualidad, la Ingeniería de Software no cuenta con un nivel de desarrollo en materia de

experimentación formal comparable con otras disciplinas de la Ingeniería. Esto puede deberse a

varios motivos, uno de los cuales es la resistencia a llevar a cabo experimentos en esta área.

Existen algunas falacias que son comúnmente utilizadas como excusas para no llevar a cabo la

experimentación en la Ingeniería de Software. Se mencionan a continuación algunas de estas:

Page 24: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

19

El método científico tradicional no es aplicable.

El nivel de experimentación actual es aceptable.

Los experimentos tienen un costo muy alto.

Las demostraciones son suficientes.

La experimentación enlentecerá el progreso.

La tecnología cambia demasiado rápido.

Lo cierto es que dichas excusas poco tienen de real, y pueden encontrarse argumentos para

refutar cada una de ellas.

Por otro lado, y más allá de la invalidez de las excusas antes mencionadas, se identifican una

serie de dificultades particulares a la hora de experimentar en la Ingeniería de Software:

Los desarrolladores de Software en general no conocen la importancia ni el significado

del método científico. Por lo tanto, no comprenden lo fundamental de validar sus

teorías.

Los desarrolladores de Software dicen no poseer el entrenamiento adecuado para

analizar los datos de un experimento, ni para comprender cómo fueron analizados para

otros experimentos. Sin embargo, este es un caso de negligencia (más que de

inhabilidad) ya que poco entrenamiento es requerido para desarrollar tales tareas.

Sería de gran apoyo contar con libros que traten sobre el diseño y análisis de

experimentos, ya que de esta manera se podría acceder a ejemplos que faciliten el

entendimiento de los conceptos asociados con la Ingeniería de Software empírica.

Generalmente los estudios empíricos que chequean la validez de las ideas de otros no

son fácilmente publicables, lo que desmotiva a realizar replicaciones.

Existe una inmensa cantidad de variables que influyen en el desarrollo de software. Sin

embargo, dicha complejidad no debería llevar al abandono de la experimentación, sino a

superar estos obstáculos para lograr así avanzar en la materia.

A pesar de que es difícil llegar a resultados generales en la Ingeniería de Software (del

estilo “la alternativa A es siempre mejor que la B”), sí es posible determinar bajo qué

circunstancias sucede que una alternativa sea mejor que otra.

No es despreciable el efecto que tiene el factor humano en los experimentos, ya que la

misma técnica o proceso aplicado de la misma manera por personas diferentes, llevará

casi con seguridad a resultados distintos. Este es un obstáculo más que impide la

generalización de resultados.

A pesar de los obstáculos y dificultades que enfrenta la comunidad de la Ingeniería de Software,

la causa subyacente a la negación en la experimentación es la falta de conciencia de su

necesidad e importancia. Por otro lado, los clientes (consumidores de productos de software)

deberían también exigir la validación de los experimentos para su mayor seguridad.

3.1.2 Tipos de Estudios Empíricos

A nivel general, se identifican dos enfoques para la investigación empírica:

Page 25: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

20

Estudios cuantitativos. Su objetivo es obtener una relación numérica entre las variables

o alternativas en cuestión. Los datos obtenidos para este tipo de estudio son siempre

valores numéricos.

Estudios cualitativos. Su objetivo es intentar explicar las formas en que determinados

objetos (tales como las personas) manejan sus comportamientos en entornos

particulares. Se enfoca en obtener una visión integral del contexto bajo estudio. Los

datos obtenidos para este tipo de estudio son textos, gráficos o imágenes.

Por otro lado, existen estudios cuantitativos subjetivos, cuando las personas brindan los datos

desde su punto de vista, y cuantitativos objetivos, cuando los datos son obtenidos por ejemplo a

partir de una herramienta. Análogamente existen estudios cualitativos subjetivos y objetivos.

Los estudios son llevados a cabo desde un enfoque cualitativo o cuantitativo, o incluso ambos,

dependiendo de la realidad que se examina. Si bien las investigaciones cuantitativas pueden

llegar a resultados más formales y justificables, las cualitativas complementan a estas para

definir el cuerpo del conocimiento de cualquier disciplina. De esta manera, ambos enfoques

resultan ser complementarios.

3.1.3 Amplitud de los Estudios Experimentales

Existen tres tipos de roles (los cuales requieren cierto grado de experiencia) que deben formar

parte del proceso de prueba de una idea o teoría para alcanzar su validez:

Investigadores. Llevan a cabo experimentos en sus laboratorios, bajo condiciones

controladas y sin presiones del mercado, para comprobar la validez de su propuesta. Las

teorías y resultados son luego publicados, para que otros investigadores puedan también

replicar el experimento y publicar nuevos resultados.

Innovadores. Llevan a cabo el experimento en proyectos reales, y se hacen responsables

por los riesgos que corren a cambio de poder experimentar con lo último en innovación.

Deben luego publicar sus resultados, estableciendo cuándo falló el experimento y

cuándo no, y qué mejoras deberían realizarse al mismo.

Desarrolladores rutinarios. Luego de superados los dos niveles anteriores, y a la luz del

riesgo que se asume, y de las fallas y mejorías requeridas por el experimento, los

usuarios podrán aplicarlo a proyectos reales. Se publica luego su comportamiento

indicando bajo qué circunstancias fue sometido el experimento.

3.2 ¿POR QUÉ EXPERIMENTAR?

En la presente sección se trata acerca del rol de la experimentación en la investigación científica

y tecnológica, el motivo por el cual se vuelve sumamente necesario experimentar en la

Ingeniería de Software, así como los principales conceptos respecto a la experimentación y el

conocimiento científico.

3.2.1 Investigación y Experimentación

La investigación es una actividad llevada a cabo de manera voluntaria y consciente con el fin de

encontrar un conocimiento certero sobre alguna cuestión en particular. Cierto conocimiento será

considerado científicamente válido, siempre y cuando su validez haya sido demostrada, y

además exista una comprobación de este conocimiento contra la realidad. El conocimiento

Page 26: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

21

probado es de suma importancia ya que permite predecir el comportamiento de los elementos en

juego (por ejemplo, a partir de las leyes de Newton es posible calcular la fuerza neta de un

objeto). De manera contraria a las opiniones que son meramente subjetivas, las investigaciones

científicas son estudios objetivos basados en la observación del mundo real y la

experimentación con éste.

A pesar de conocer la importancia de la investigación y experimentación para todas las

disciplinas, la actividad esencial de comprobación de ideas contra la realidad es, en la mayoría

de los casos, ignorada en el campo de la Ingeniería de Software. De esta manera, la validez de

los modelos, procesos, métodos y técnicas que son utilizados de manera continua para la

construcción de Software, están meramente basados en la subjetividad y especulación.

3.2.2 El Factor Humano en la Ingeniería de Software

Un elemento crucial que es necesario considerar en el área de la Ingeniería de Software es la

influencia del factor humano, como ser experiencia, conocimiento y capacidad de las personas,

en el uso de sus artefactos (métodos, herramientas, paradigmas). El elemento humano es

importante para esta disciplina, ya que la misma se ve influenciada por las relaciones entre las

personas (tales como el equipo de un proyecto), así como por su contexto social (la cultura

organizacional, por ejemplo).

El aspecto social se convierte entonces en una dificultad a la hora de llevar a cabo experimentos,

haciendo que los mismos resulten más complejos. Sin embargo, no debería servir de excusa

para no experimentar (tal como sucede en la realidad), ya que este hecho lleva a que los

artefactos de la Ingeniería de Software sean utilizados sin tener certeza alguna de cuáles serán

sus resultados. Por el contrario, debería servir de impulso para adquirir mayor conocimiento en

este aspecto, y lograr así realizar experimentos que consideren al factor social y su influencia de

manera apropiada.

3.2.3 El Método Científico

Las actividades que se llevan a cabo en toda investigación científica son las que siguen:

Interacción con la realidad. Esta actividad puede realizarse mediante la observación

(pasiva), caso en el que los investigadores perciben cosas de la realidad sin interferir ni

tener control sobre ella. O también mediante la experimentación (activa), en cuyo caso

los investigadores someten al objeto en cuestión a nuevas condiciones y observan sus

reacciones, interfiriendo y controlando la realidad.

Especulación. Los investigadores formulan hipótesis acerca de su percepción del mundo

real. En el campo de la Ingeniería de Software, esta actividad comprende encontrar

relaciones entre las variables en juego para predecir las consecuencias en el proceso de

desarrollo mismo y en el producto resultante.

Confrontación con la realidad. Consiste en el chequeo de las especulaciones teóricas

(ideas) contra la realidad (hechos).

3.2.4 ¿Por Qué los Experimentos Requieren ser Replicados?

Comprobar las ideas contra la realidad no es suficiente para la experimentación. Es necesario

además proveer a la comunidad con los datos requeridos para que el experimento pueda ser

replicado por agentes externos y sus resultados verificados.

Page 27: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

22

Sin embargo, en el área de la Ingeniería de Software resulta prácticamente imposible replicar

dos experimentos de manera exacta. Esto último significaría contar con las mismas personas, la

misma experiencia, el mismo proceso de desarrollo, los mismos productos, lo cual sin duda se

aleja de la realidad. Es por este motivo que la replicación se convierte en similitud para la

Ingeniería de Software.

Es necesario definir entonces las características de un proyecto de desarrollo que harán que dos

proyectos similares se conviertan en “idénticos”. Una vez más, es el factor humano el que hace

esta tarea más compleja por ser el más variado e impredecible. Existen también algunas formas

de diseñar los experimentos que permiten llevar a cabo réplicas de los mismos y obtener

conclusiones, a pesar de las diferencias “incontrolables” que existan entre ellos.

Se distinguen dos objetivos a la hora de llevar a cabo la replicación de un experimento. Si la

replicación se realiza bajo condiciones similares al original, entonces el objetivo resulta ser la

confirmación de la hipótesis del primer experimento. Si por el contrario una variable es

modificada durante la replicación, entonces el objetivo es chequear si dicha variable podría ser

generalizada para ciertos valores.

3.2.5 Conocimiento Empírico vs Conocimiento Teórico

Para culminar esta sección, resulta relevante destacar la necesidad que existe de contar con un

modelo teórico que se asocie al fenómeno en cuestión, siempre que existan datos que sean

obtenidos de la realidad. De no ser así, los datos recabados carecerán de sentido. Por otra parte,

la interpretación de dichos datos será diferente dependiendo del modelo teórico asociado.

Sin embargo, no siempre es posible asociar un modelo teórico a un estudio, ya sea debido a su

complejidad o la falta de conocimiento acerca de éste. Tal es el caso del desarrollo de Software.

Bajo estas circunstancias se utiliza un modelo empírico, cuya principal diferencia con el teórico

es que se enfoca en entender el comportamiento del fenómeno bajo características particulares,

así como la relación que existe entre las variables presentes.

La adquisición de nuevo conocimiento puede ser llevado a cabo mediante cualquiera de los tres

niveles de investigación que aquí se mencionan.

Inspección: conocer cuáles son las variables que afectan otras (por ejemplo, que

variables de desarrollo afectan las características del proceso o producto).

Empírica: encuentra un modelo empírico que establece cómo afectan las variables a

otras dependiendo de su valor (por ejemplo, cuál es el mejor valor de ciertas variables

para optimizar el resultado).

Mecánica: produce un modelo teórico que establece por qué las variables logran la

influencia antes establecida.

3.3 ¿CÓMO EXPERIMENTAR?

En esta sección se presentan a grandes rasgos los pasos que es necesario seguir para realizar un

experimento. Se describe qué tipo de relaciones se pueden buscar entres las variables a

considerar, la estrategia de refinamiento paso a paso, así como las fases que constituyen un

experimento. Finalmente, se introduce el rol de la estadística en la experimentación.

Page 28: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

23

3.3.1 Buscando Relaciones entre las Variables

El objetivo de todo experimento que estudia determinado fenómeno, es establecer (o descubrir)

las relaciones que existen entre las variables involucradas en dicho fenómeno, con el fin de

lograr luego predecir cuál será el comportamiento de las mismas bajo determinadas

circunstancias. Por ejemplo, podríamos querer establecer la relación que existe entre la robustez

de un sistema o aplicación y el lenguaje en el que fue implementado. Seguramente, si se

consulta sobre este aspecto a diferentes Programadores e Ingenieros en Sistemas obtendremos

distintas respuestas (dependiendo de la experiencia particular de cada uno). El hecho es que no

existe información científicamente válida en el área de Ingeniaría de Software para responder

esta y muchas otras preguntas similares. ¿Se conoce si algún paradigma de programación hace

más fácil mantener las aplicaciones? La orientación a objetos suele adjudicarse esta virtud, pero

¿hay pruebas formales en este sentido? Más que información científicamente válida, lo que

existen son opiniones.

Se distinguen tres categorías de relaciones entre variables, dependiendo de cuánto se conoce

sobre la relación en cuestión:

Relaciones descriptivas. Son relaciones donde sólo se conoce cierto patrón de

comportamiento, pero sin tener medida de cuánto afecta una variable a otra. Por

ejemplo, generalmente (no es posible afirmarlo, solo decir “generalmente”) si la etapa

de análisis lleva más de lo planeado, luego es de esperar que la etapa de desarrollo

también resulte ser más larga. Lo que no se puede especificar ni prever es por ejemplo

en qué proporción una etapa afecta a la otra.

Correlaciones. Este tipo de relación sucede cuando se conoce que cierta(s) variable(s)

afectan a una tercera, de acuerdo a determinada función conocida. Si bien se conocen

estas correlaciones, no necesariamente hay una teoría de fondo, por lo que no se puede

distinguir entre causa y efecto.

Relaciones causales. Existe este tipo de relación cuando, por ejemplo, se sabe que las

variables A y B causan todos los cambios en la variable C. O sea, se sabe que la

variable C varía dependiendo solamente de los valores de A y B. Es el grado máximo

de conocimiento que se puede tener sobre determinada relación.

Al último tipo de relación descrito se lo conoce como causalidad determinista, pues dada la

causa siempre se obtiene el efecto esperado. Existe también la causalidad probabilística, donde

dada la causa se sabe que se obtendrá el efecto esperado con una probabilidad menor a 1.

3.3.2 Estrategia de Refinamiento Paso a Paso

La idea básica en que se fundamenta esta estrategia es utilizar la experiencia adquirida a través

de sucesivos experimentos para diseñar y ejecutar los siguientes. En lugar de diseñar un

experimento exhaustivo que tenga en cuenta múltiples variables y todas las relaciones entre

ellas, resulta más conveniente realizar sucesivos experimentos más “elementales”, con menor

cantidad de variables que sean conocidas y resulten más fáciles de controlar. De esta manera, se

puede ir obteniendo gradualmente un mejor conocimiento del fenómeno en estudio, para así

poder perfeccionar el diseño y ejecución de los siguientes experimentos.

Es por esto que diseñar completamente un experimento por primera vez no resultaría

conveniente, ya que implicaría conocer qué variables son las más importantes, qué valores fijar

a los parámetros, entre otros. Este tipo de decisiones son más fáciles de tomar a medida que se

Page 29: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

24

va adquiriendo conocimiento del fenómeno en estudio. Se podría decir que el mejor momento

para diseñar un experimento es luego de haberlo ejecutado, y no al principio cuando el

conocimiento acerca del mismo es menor.

Existen más ventajas por las cuales es conveniente llevar a cabo una serie de experimentos de

moderado tamaño. Por ejemplo, a medida que se van ejecutando experimentos es posible

evaluar sus resultados y tomar ciertas decisiones tales como alterar los rangos de valores de las

variables, o inclusive quitar/agregar variables. Puede darse el caso también en que el objetivo

mismo del experimento sufra modificaciones.

3.3.3 Fases de un Experimento

Se definen cuatro fases para un experimento:

Definición de objetivos. Se transforma la hipótesis general en términos de qué variables

del fenómeno se van a examinar. Es importante poder definir un procedimiento

cuantitativo con el fin de evaluar la hipótesis.

Diseño Implica definir un plan para la ejecución del experimento. Se deben definir

todas las condiciones bajo las cuales se llevará a cabo el experimento, como ser las

variables que lo afectarán, quiénes van a participar, cuántas veces se repetirá el

experimento, entre otras. Un buen diseño, siempre apunta a obtener la mayor cantidad

de conocimiento posible, en la menor cantidad de experimentos.

Ejecución Se ejecuta el experimento de acuerdo al diseño.

Análisis del resultado. En esta etapa se analizan los datos obtenidos durante el

experimento, en busca de relaciones entres las variables consideradas.

Como ya se mencionó, existen distintos tipos de relaciones entre las variables: descriptivas,

correlaciones, y relaciones causales. Para identificar relaciones descriptivas, puede bastar con

examinar los datos en busca de patrones de comportamiento entre las variables. Ahora, para

identificar correlaciones o relaciones causales, hace falta aplicar técnicas de análisis de datos,

las que implican realizar análisis estadísticos sobre los datos. Uno de los estudios más comunes

que se realiza sobre los datos se conoce como “test de significancia”, el cual tiene como

objetivo establecer si las variaciones observadas en los datos recolectados tienen significado

estadístico.

3.4 CONCEPTOS BÁSICOS SOBRE EL DISEÑO DE

EXPERIMENTOS

El diseño es una parte fundamental de un experimento y puede repercutir en el mismo de

manera significativa. Es por ello que se tratan a continuación algunas nociones básicas sobre el

diseño de experimentos que es necesario conocer. Se establece además la terminología que es

utilizada para este fin, y que permite lograr un entendimiento común con el resto de la

comunidad científica.

3.4.1 Terminología para el Diseño de Experimentos

Se mencionan los principales conceptos que es preciso conocer con respecto al diseño de

experimentos y se presentan dos ejemplos a través de los cuales se introducen los mismos.

Page 30: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

25

Se considera un experimento que consiste en la evaluación de la efectividad de un analgésico en

personas de entre 25 y 40 años de edad, llamado Efec-Analgésico. El segundo experimento

consiste en la evaluación de la efectividad de 5 técnicas de verificación de software sobre un

conjunto de programas, llamado Efec-Técnicas (Apa, 2009). Este último experimento tiene gran

similitud con el caso de estudio del presente proyecto.

Unidad experimental (experimental unit): son los objetos sobre los cuales es llevado a

cabo un experimento. Aplicado al campo de la Ingeniería de Software, una unidad

experimental podría ser un proyecto de software, o alguno de los productos intermedios

obtenidos durante el mismo.

En Efec-Analgésico la unidad experimental es el grupo de personas entre 25 y 40 años,

mientras que en Efec-Técnica es el conjunto de programas al cuál se le aplican las

técnicas de verificación.

Sujetos del experimento (experimental subjects): son las personas que llevan a cabo el

experimento. Como ya se ha mencionado, el factor humano influye de manera

significativa en los resultados de un experimento dentro de la Ingeniería de Software (el

resultado del mismo será distinto dependiendo de la persona que lo aplique), y resulta

por lo tanto imprescindible considerar el efecto de esta variable a la hora de diseñar los

experimentos.

En el caso de Efec-Analgésico, los sujetos son quienes administran los analgésicos a los

pacientes, por ejemplo enfermeros. En Efec-Técnica, los sujetos son las personas que

ejecutan las técnicas de verificación.

Variable de respuesta (response/dependent variable): es el resultado cuantitativo de un

experimento. En el área de la Ingeniería de Software, es por ejemplo la característica del

proyecto de software que está siendo analizada.

Para el ejemplo Efec-Analgésico, podría ser el grado en que el analgésico calma el

dolor, o la rapidez con la actúa. En Efec-Técnica, podría ser para cada técnica la

cantidad de defectos encontrados sobre la cantidad de defectos totales del software

verificado.

Parámetros (parameters): son características que se mantienen invariadas durante el

experimento, y por lo tanto no se desea que afecte el resultado del mismo. Los

parámetros pueden ser cualitativos o cuantitativos. Resulta preciso mencionar que los

resultados arrojados por un experimento serán ciertos sólo bajo las condiciones

impuestas por los parámetros.

En el ejemplo Efec-Analgésico un parámetro a considerar es el rango de edades (25 a 40

años). En el ejemplo de Efec-Técnica un parámetro podría ser la cantidad de líneas de

código de los programas (entre 100 y 200 por ejemplo), o fijar cierto nivel de

experiencia para los verificadores.

Factores (factors, predictor/independent variables): son características variadas

intencionalmente durante el experimento, y por lo tanto afectan el resultado del mismo.

Para el caso de Efec-Analgésico el factor es el analgésico que se utilice, mientras que en

Efec-Técnica el factor es el conjunto de técnicas.

Alternativas (alternatives, levels, treatment): son los valores posibles que pueden tomar

los factores durante un experimento.

Page 31: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

26

Las alternativas en el caso de Efec-Analgésico serían los distintos analgésicos que se

utilicen (Perifar, Zolben,), mientras que para Efec-Técnica serían los distintos tipos de

técnicas que se utilicen (Inspecciones, Trayectorias Independientes, Partición de

Equivalencia).

Interacciones (interactions): suceden cuando el efecto de un factor depende del valor

de otro. Debido a que influencian el resultado del experimento, deben ser considerados

en el diseño del mismo.

Variaciones no deseadas (undesired variations, blocking variables): son variables

inevitables que afectan el resultado del experimento.

En Efec-Analgésico podrían provocarse este tipo de variaciones debido a la distinta

respuesta que presenta cada persona a los fármacos. En el caso de Efec-Técnica, el

hecho de no considerar la experiencia de los verificadores podría introducir variaciones

no deseadas.

Experimento unitario (elementary/unitary experiment): cada aplicación de una

combinación de alternativas de factores llevada a cabo por sujetos sobre una

determinada unidad experimental, constituye un experimento unitario.

Para el caso de Efec-Analgésico un experimento unitario involucra el analgésico x,

aplicado por el enfermero i al paciente j. Para el caso de Efec-Técnica, un experimento

unitario involucra la técnica x, aplicada por el verificador i al programa j.

Replicación externa (external replication): replicaciones de un experimento llevadas a

cabo por otros investigadores y con diferentes muestras. Recordar que en la Ingeniería

de Software la replicación exacta de un experimento no es posible, por lo tanto cuando

hablamos de “replicación” nos estamos refiriendo a “la mayor similitud posible”.

Existen distintos tipos de replicaciones externas.

o Sin alterar la hipótesis: este tipo de replicación se realiza con el fin de verificar

los resultados de un experimento, en alguna de las siguientes formas.

Repitiendo el experimento con la mayor similitud posible.

Variando la forma en que fue llevado a cabo el experimento.

o Alterando la hipótesis: el objetivo es generalizar los resultados de un

experimento (ampliando su campo de aplicación), en alguna de las siguientes

formas.

Alterando el diseño del experimento.

Alterando factores del experimento.

o Reformulando los objetivos e hipótesis del experimento: con el fin de analizar el

experimento en mayor profundidad.

Replicación interna (internal replication): repetición de uno o más experimentos

unitarios. La cantidad de repeticiones que serán llevadas a cabo en un experimento debe

ser establecido durante el diseño del mismo.

Error experimental (experimental error): se refiere a las variaciones inevitables que

ocurren entre repeticiones, tales como errores en la medición de los resultados, o

Page 32: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

27

variables no consideradas. Estas últimas pueden llegar a invalidar el resultado de un

experimento.

3.4.2 Las Variables de Respuesta en los Experimentos

Existen diferentes métricas que pueden ser utilizadas con el fin de medir las variables de

respuesta de un experimento, esto es, el resultado cuantitativo de un experimento luego de la

finalización del mismo. A través de un análisis estadístico pueden obtenerse promedios,

desviaciones estándar e intervalos de confianza. El análisis de resultados puede involucrar

diversas actividades, las cuáles no se mencionan aquí ya que no es el foco del presente proyecto.

Es posible medir los atributos internos o externos de una variable de respuesta. Los primeros se

miden al considerar un producto, proceso o recurso sin considerar su comportamiento. Por otra

parte, los últimos consideran el comportamiento de un producto, proceso o recurso y su relación

con el exterior. .

Page 33: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

28

4 EXPERIMENTO

Esta sección se basa fuertemente en el Informe de Proyecto de Grado realizado por Cecilia Apa

(Apa, 2009). Se describe el experimento que se llevó a cabo, y cuyos datos son objeto de

estudio y limpieza en el presente trabajo. Se describen brevemente algunos aspectos del mismo,

así como la herramienta utilizada para registrar la información acerca de los defectos detectados

durante la aplicación de las distintas técnicas de verificación.

4.1 DESCRIPCIÓN DEL EXPERIMENTO

El experimento fue realizado como un trabajo de proyecto de grado, por estudiantes de la

carrera Ingeniería en Computación de la Facultad de Ingeniería – Universidad de la República.

4.1.1 Contexto Experimental

El experimento fue desarrollado en un contexto académico, en el marco de la asignatura Módulo

de Taller que se dicta en el 4° año de la carrera Ingeniería en Computación de la Facultad de

Ingeniería - Universidad de la República. Participaron un total de 14 estudiantes. Las técnicas de

verificación que se utilizaron son:

Inspecciones (estática).

Particiones en Clases de Equivalencia y Análisis de Valores Límites (dinámica, caja

negra).

Tablas de Decisión (dinámica, caja negra).

Criterio de Cubrimiento de Condición Múltiple (dinámica, caja blanca).

Trayectorias Linealmente Independientes (dinámica, caja blanca).

Los verificadores clasificaron los defectos detectados según dos taxonomías: IBM y Beizer. La

taxonomía de IBM es una clasificación ortogonal de defectos. Se divide en dos grandes

categorías: Opener Section y Closer Section. Dentro de cada categoría, se clasifica un defecto

según distintos aspectos o sub-categorías. En el experimento solo interesó clasificar los defectos

según las sub-categorías DefectType y Qualifier, ambas pertenecientes a Closer Section.

Por otra parte, la taxonomía de Beizer es jerárquica. La clasificación de un defecto es un número

de 4 dígitos, por ejemplo: 3xxx se utiliza para defectos de estructura en el software

implementado, 32xx para defectos de procesamiento, 322x para evaluación de expresión. Las

categorías más generales (como 3xxx) se dividen en sub-categorías (como 32xx y 322x) que

representan una clasificación más específica del defecto. No fue requisito excluyente lograr la

máxima especificidad al clasificar los defectos.

Los programas a verificar fueron construidos por estudiantes de 4to año de la carrera Ingeniería

en Computación, en lenguaje Java, especialmente para uso del experimento.

4.1.2 Objetivos

Se destaca como principal objetivo conocer las relaciones de efectividad entre las técnicas de

verificación utilizadas y los distintos tipos de defectos.

Page 34: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

29

4.1.3 Unidad Experimental

La unidad experimental es el software. Se utilizan 4 programas de distinta naturaleza:

Contable con base de datos.

Cálculos matemáticos.

Generación de un documento consumiendo datos de una base de datos.

Procesador de texto.

El hecho de contar con varios tipos de programa surge de la suposición de que un programa

podría concentrar defectos de un determinado tipo y tener muy pocos de otros. Es por ello que

se trata de lograr una muestra más representativa de programas para tener la mayor cantidad de

tipos de defectos posible.

4.1.4 Ejecución de los Experimentos Unitarios

Los verificadores hicieron uso de Guías de Trabajo (Vallespir, Apa and De León, 2008), las

cuales explican detalladamente la forma de realizar la ejecución del experimento y cómo llevar

registro de los datos que se deben recolectar. Cada experimento unitario (llamado Experiencia

de Verificación) consistió en un verificador aplicando determinada técnica de verificación a

determinado programa. El diseño del experimento distribuye a los 14 participantes en 40

experiencias de verificación, cada una con un programa y una técnica de verificación a ejecutar.

De esta manera, cada verificador aplicó distintas técnicas a distintos programas, y registró (en la

sección 4.2 se explica el detalle de cómo se realizó el registro) los siguientes datos acerca de

cada experiencia:

Fecha y hora de comienzo.

Fecha y hora de finalización.

Tiempo de diseño de casos de prueba.

Tiempo de ejecución de la experiencia.

Defectos encontrados.

Para cada uno de los defectos fue necesario registrar los siguientes datos:

Archivo en el cual se encuentra el defecto.

Número de línea de código del defecto.

Clasificación del defecto en IBM y Beizer.

Estructura en la cual se encuentra el defecto (IF, FOR, WHILE, MÉTODO,

NINGUNA)

Número de línea en que comienza la estructura (si es que se ingresó estructura en el

ítem anterior).

Tiempo de detección del defecto.

Descripción del defecto.

Page 35: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

30

4.2 HERRAMIENTA PARA REGISTRO DE DEFECTOS

Para la recolección de datos se utilizó una herramienta disponible vía web llamada TVerificar, la

cual fue construida a medida para la recolección de datos del experimento (Apa et al., 2008).

En TVerificar se cargaron todos los experimentos unitarios identificados por: programa a

verificar, técnica de verificación a aplicar y nombre del verificador.

Cada verificador contaba con un usuario en la herramienta mediante el cual accedía a las

experiencias que tenía asignadas, y registraba los datos requeridos.

4.2.1 Descripción de la Herramienta

La herramienta TVerificar (o Grillo) centraliza el registro de los defectos por parte de todas las

experiencias de verificación en una misma base de datos, y permite tener un control y

seguimiento de las mismas. Sus principales funcionalidades son gestionar datos de las

entidades:

Usuarios.

Técnicas de Verificación.

Experiencias.

Registro de Defectos.

La herramienta es una aplicación web y la arquitectura está basada en un modelo cliente-

servidor. Como sistema gestor de Base de Datos se utiliza HSQLDB.

Page 36: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

31

4.2.2 Diseño de la Base de Datos

Se presenta en la Figura 1 el esquema de datos utilizado para almacenar la información

concerniente a los experimentos, las pruebas ejecutadas por los verificadores, así como el

registro de los defectos.

Archivo_Software

PK id

archivo_id

software_id

Software

PK id

nombre

descripcion

total_defectos

Categoria

PK id

taxonomia_id

nombre

Estructura

PK id

nombre

descripcion

Registro_Taxonomia

PK id

registro_id

taxonomia_id

valor_categoria_id

atributo_id

Perfil

PK id

nm_perfil

descripcion

Registro_Defecto

PK id

tipo_id

experimento_id

archivo_id

estructura_id

linea

descripcion

linea_estructura

time_deteccion

Taxonomia

PK id

nombre

numero

descripcion

Experimento

PK id

ejecutor_id

creador_id

software_id

tecnica_id

nombre

fecha_ini

fecha_fin

time_casos

time_ejecucion

Tecnica

PK id

nombre

descripcion

tipo

Archivo

PK id

nombre

nombre_usu

fecha

codigo

Tipo_Defecto

PK id

nombre

descripcion

Valor_Categoria

PK id

categoria_id

categoria_padre

nombre

Usuario

PK id

nombre

nm_usuario

apellido

email

password

habilitado

perfil_id

Atributo

PK id

nombre

categoria_id

Figura 1 – Esquema de la base de datos de la herramienta TVerificar

Page 37: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

32

La Tabla 1 muestra una breve descripción de cada tabla, indicando si contienen valores pre-

cargados (en cuyo caso se especifican los valores), o en caso contrario qué perfil de usuario

ingresa datos en las mismas.

Tabla 1 – Descripción de las tablas de la base de datos

Nombre Tabla Descripción Tabla Caso pre-cargada:

valores

Caso cargada: perfil

Archivo Representa un archivo que contiene

código fuente (.java).

Administrador

Software Representa un software (conjunto de

clases, métodos, etc.) que será

sometido a verificación.

Administrador

Archivo_Software Asocia un registro de la tabla Archivo

con otro registro de la tabla Software.

La relación entre las entidades Archivo

y Software se representa con la entidad

Archivo_Software ya que un Archivo

puede estar asociado a 0..N Software, y

a su vez un Software puede estar

asociado a 1..N Archivo.

Administrador

Usuario Representa un usuario que hará uso de

la herramienta.

Administrador

Perfil Representa el perfil que contiene el

usuario que utiliza la herramienta.

· Administrador

· Verificador

Experimento Representa un experimento a ejecutar y

su información asociada.

Los campos Fecha Fin,

Tiempo de Ejecución y

Tiempo de Casos no son

obligatorios y pueden ser

cargados tanto por un

usuario Administrador

como por un Verificador.

El resto de los campos son

obligatorios y solo pueden

ser completados por un

usuario Administrador.

Técnica Representa una Técnica de

Verificación. Cada registro de

Experimento tiene una única Técnica

asociada.

· Inspecciones

· CCCM

· Trayectorias

Independientes

· Tablas de Decisión

· Partición de

Equivalencia y A. de

Valores Límite

Registro_Defecto Representa un defecto hallado en el

código por un usuario Verificador.

Verificador

Estructura Representa los tipos de estructuras que

pueden existir en el código fuente. A

cada registro de la tabla

Registro_Defecto se le asocia un único

registro de la tabla Estructura.

· IF

· FOR

· WHILE

· SWITCH

· DO WHILE

· METODO

· CLASE

Tipo_Defecto Representa si el defecto está contenido

o no en una estructura. A cada registro

de la tabla Registro_Defecto se le

asocia un único registro de la tabla

Tipo_Defecto.

· Estructura

· Sin estructura

Taxonomia Representa las taxonomías existentes. · IBM

Page 38: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

33

· Beizer

Categoria Representa los "nieveles" de cada

taxonomía.

Para IBM:

· Section

· Actividad

· Trigger

· Impacto

· Defect Type

· Qualifier

· Age

· Source

Para Beizer:

· BeizerNivel1

· BeizerNivel2

· BeizerNivel3

· BeizerNivel4

Atributo Tabla vacía (sin uso)

Registro_Taxonomia Representa un la clasificación de un

registro de defecto según las

taxonomías de Beizer e IBM.

Verificador

Valor_Categoria Representa las categorías de cada nivel

de la taxonomía.

Ver base

Page 39: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

34

5 ANÁLISIS DE ERRORES EN LOS DATOS

En el presente capítulo se describe, para cada dimensión de la calidad de datos (descriptas en la

sección 2.2 DIMENSIONES DE LA CALIDAD DE DATOS), cuáles son los tipos de errores

que podrían contener los datos bajo estudio. Se clasifican además dichos errores según los

factores de cada dimensión.

5.1 METODOLOGÍA DE TRABAJO

De manera tal de lograr identificar los tipos de errores en los datos, se llevan a cabo las

siguientes tareas:

Estudio sobre Calidad de Datos. Conocimiento de las dimensiones y los factores de

calidad, y qué tipos de errores pueden suceder en cualquier base de datos, para luego

instanciarlos en nuestro proyecto en particular.

Estudio y conocimiento sobre experimentos en el área de la Ingeniería de Software

Empírica, y en particular sobre el experimento en cuestión: en qué consistió, cómo se

llevó a cabo, qué técnicas de verificación y taxonomías fueron utilizadas.

Exploración de la herramienta Grillo donde se registraron los defectos durante la

ejecución del experimento, para poder inducir qué errores pudieron haber sido

cometidos durante el ingreso de los datos.

Entendimiento y manipulación de la base de datos que contiene los registros de

defectos, exploración de la misma y realización de consultas para identificar nuevos

errores.

Trabajo en conjunto con María Eugenia Decia, estudiante de la carrera Ingeniería en

Computación de la Facultad de Ingeniería – Universidad de la República, quien

colaboró en la identificación de posibles errores en los datos como parte de su trabajo

de la asignatura Módulo de Taller que se dicta en el 4° año de la carrera.

Luego de analizar los posibles errores en los datos que fueron identificados en primera

instancia, se llega a una clasificación y descripción en detalle de los principales tipos de errores

encontrados.

Por cada tipo de error identificado, se describen los siguientes aspectos:

En qué consiste (breve descripción), estableciendo por qué resulta importante su

consideración.

Las posibles causas o causas conocidas (en caso de que se tenga conocimiento de cuales

son).

Las métricas utilizadas con el fin de medirlo, incluyendo su granularidad (puede ser a

nivel de celda, tupla, tabla o base entera). Para todos los casos la unidad del resultado

de la medida es un booleano. Esto es, se indica si el objeto medido contiene o no un

error.

Las dimensiones de calidad de datos que se miden son: Exactitud, Completitud, Consistencia

y Unicidad. En la Tabla 2 se muestran los tipos de errores para los cuales se definen métricas,

por cada factor y cada dimensión.

Page 40: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

35

Tabla 2 – Tipos de errores

Dimensión Factor Tipo de error

Exactitud Exactitud sintáctica Valor fuera de rango

Estandarización

Exactitud semántica Registro inexistente

Defecto mal registrado

Valor fuera de referencial

Completitud Densidad Valor nulo

Clasificación de defecto

Consistencia Integridad intra-relación Reglas de integridad intra-relación

Valor único

Integridad referencial Referencia inválida

Unicidad Duplicación Registro duplicado

Contradicción Registro contradictorio

5.2 EXACTITUD

Para la dimensión Exactitud, se identifican los tipos de errores que se mencionan a

continuación.

Dentro del factor exactitud sintáctica:

o Valor fuera de rango.

o Estandarización.

Dentro del factor exactitud semántica:

o Registro inexistente.

o Defecto mal registrado.

o Valores fuera de referencial.

Dentro del factor precisión, no se identifican errores en los a datos a tener en cuenta. A

pesar de que resulta de interés el nivel de precisión alcanzado en la clasificación de un

defecto según la taxonomía jerárquica de Beizer, no es considerado un error el hecho de

no haber logrado la clasificación más precisa.

A continuación se describe cada uno de estos tipos de errores de manera detallada.

5.2.1 Valor fuera de rango

Resulta de interés que los valores de los tiempos y líneas de código se encuentren dentro de un

rango determinado, el cual debe ser previamente definido. El valor de un tiempo que se

encuentra fuera de rango influiría significativamente a la hora de analizar los datos y obtener

resultados y conclusiones del experimento en cuestión (por ejemplo, cuánto se tardó en

promedio en detectar un defecto de tipo X). De la misma manera, un valor fuera de rango en las

líneas de código no permitiría identificar, por ejemplo, cuáles son los registros de defectos que

corresponden al mismo defecto de la realidad.

Es importante considerar, sin embargo, que si un valor cae fuera del rango determinado no

significa necesariamente que dicho valor sea erróneo. El hecho de que existan valores

“anómalos” pero correctos es parte de toda experiencia empírica. A pesar de tener conocimiento

Page 41: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

36

de ello, en muchos casos resulta complejo poder distinguir aquellos valores anómalos (pero

correctos) de los errores reales. Resulta particularmente complejo en lo que respecta a los

tiempos, como puede ser el caso de los tiempos de detección de errores, para los cuales se

establece un rango en base a promedios y desviaciones estándar (más adelante se detalla el

procedimiento). No así en el caso de las líneas de código, donde el rango está especificado por

la cantidad de líneas de cada archivo.

Debido a que todos los campos involucrados en el presente tipo de error son editables (sus

valores se “digitan” en la herramienta), es posible que ocurran errores al ingresar los mismos.

Una posible fuente de error en el caso de los tiempos, es que los mismos hayan sido tomados de

manera equivocada, ya sea porque no se comprendió cómo tomarlos o porque ocurrió un error

cuando se calcularon o registraron los mismos.

Por otra parte, una posible fuente de error para el caso de las líneas, puede deberse a que se haya

solicitado un pedido de corrección del código fuente, por encontrar un defecto bloqueante o que

cubra otros defectos. En este caso, a pesar de que se requiere registrar la línea del archivo

original, es posible que se haya registrado la línea del archivo corregido.

Medición

La granularidad es a nivel de celda, ya que involucra aquellos campos referentes a los tiempos y

líneas de código del defecto.

La forma de medir este tipo de error consiste en establecer, para todos los valores de las celdas

involucradas, si se encuentran o no dentro de determinado rango.

Para cada uno de los casos identificados (tiempos y líneas) se establecen los criterios para

determinar apropiadamente el rango que se va considerar para evaluar los valores, y se

identifican los outliers mediante consultas en SQL.

Para el caso de los tiempos, el rango tiene su mínimo en 0 y a priori no se podría definir un

valor máximo con certeza. Sin embargo, se determina estadísticamente un intervalo

considerando el valor medio y la desviación estándar de los tiempos registrados. Se considerará

libre de error a aquellos valores dentro del rango [0, media + 2*desviación estándar], mientras

que los tiempos fuera de dicho intervalo se considerarán como candidatos a contener errores, y

por lo tanto serán analizados de manera aislada.

Por otra parte, para el caso de las líneas de código se definirá un rango que tiene su mínimo en 1

y máximo igual a la cantidad de líneas que el archivo posee. Es necesario considerar aquí que

los defectos que no se encuentran asociados a ninguna línea en particular poseen en este campo

los valores 0, 999, 9999, y así sucesivamente. Por lo tanto, estos valores deberán tener un

tratamiento aparte ya que se situarán fuera del rango definido pero, sin embargo, se encuentran

libres de errores.

5.2.2 Estandarización

Interesa que todos los tiempos se encuentren registrados en la unidad de medida minutos, de

forma tal de que las operaciones (por ejemplo hallar promedios) o comparaciones que se

realicen entre los tiempos tengan sentido. Se considera, sin embargo, que dicha estandarización

queda incluida en el tipo de error Valor fuera de rango, ya que se puede pensar en tiempos muy

pequeños como expresados en horas, o por el contrario tiempos muy grandes expresados en

segundos (alejándose ambos del promedio definido).

Page 42: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

37

Interesa además que los valores de los tiempos y líneas sean enteros. El significado de un

tiempo con fracciones es difícil de interpretar, y no interesa lograr una precisión mayor a

minutos. Por otra parte, carece de sentido que un número de línea no sea un valor entero.

Debido a que existe un control en la herramienta que no permite el ingreso de valores con

decimales, la posible fuente de error sería en este caso que el valor haya sido directamente

almacenado en la base de manera errónea.

La estandarización de las fechas de inicio y fin del experimento no resultan de particular interés.

Medición

La granularidad es a nivel de celda, ya que involucra aquellos campos referentes a los tiempos y

líneas de código del defecto.

La forma de medir este tipo de error consiste en verificar mediante la ejecución de consultas

SQL si los valores de los tiempos y líneas son enteros.

5.2.3 Registro inexistente

En este caso se identifican aquellos registros (tuplas) que no corresponden a ningún objeto de la

realidad. Esto es, registros que se encuentran almacenados en la base de datos, pero que se

asocian a un objeto que en la realidad no existe. Los registros inexistentes no deberían formar

parte de la base en cuestión ya que no reflejan la realidad, además de que su consideración a la

hora de analizar los datos afectaría el resultado obtenido. Es por este motivo que interesa

identificarlos.

Se analizan dos casos:

Registro de defectos

La causa conocida de este error corresponde a una equivocación, ya sea de distracción o

concepto, por parte del verificador al registrar un defecto que fue detectado en el código,

pero que no corresponde a un defecto real (donde el verificador consideró que existe un

defecto, en realidad no hay defecto alguno).

Archivos

La causa conocida de este error corresponde a una equivocación por parte del administrador

de la herramienta, al registrar archivos (.java) que no forman parte del experimento en

cuestión.

Medición

La granularidad es a nivel de tupla, ya que tuplas de las tablas mencionadas intervienen en este

tipo de error.

No se identifica una forma automática de medir este tipo de error, ya sea mediante una sentencia

SQL o un algoritmo determinado.

La métrica utilizada consiste entonces en la revisión manual de las tuplas involucradas en el

presente tipo de error, con el fin de identificar si las mismas corresponden o no a objetos de la

realidad. En el Capítulo 6 se analizará la viabilidad de llevar a cabo esta actividad para cada

caso.

Page 43: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

38

5.2.4 Defecto mal registrado

Este tipo de error corresponde al caso de defectos que sí existen en la realidad, pero se “asocian”

de manera incorrecta a un registro de defecto. Esto significa que los datos que se registran de un

defecto no son válidos para ese defecto dado (a pesar de que sí son valores sintácticamente

correctos). Un defecto mal registrado no permite, en general, lograr identificarlo dentro del

código a partir de sus datos, ya que los mismos son incorrectos.

Cualquiera de los campos que se ingresan al registrar un defecto podría contener errores

ocasionados por una equivocación por parte del verificador, ya sea por falta de comprensión, un

error de concepto o distracción.

Con respecto a la clasificación del defecto, resulta sumamente complejo verificar si la misma se

realizó de manera correcta, motivo por el cual no se analizará este error en el marco del presente

proyecto.

Con respecto a la aplicación de las técnicas de testing, no resulta posible en principio identificar

cuándo las mismas fueron aplicadas de manera incorrecta a partir de errores en los datos. Una

posibilidad consiste en, ante la presencia de casos dudosos, chequear su correctitud contra los

casos de prueba diseñados. Este caso tampoco se analizará dentro del marco del presente

proyecto.

Medición

La granularidad es a nivel de celda, ya que involucra campos del registro de defecto.

No se identifica una forma automática de medir este tipo de error ya sea mediante una sentencia

SQL o un algoritmo determinado.

La métrica utilizada consiste entonces en la revisión manual de las celdas involucradas en el

presente tipo de error, con el fin de identificar si las mismas corresponden o no a datos válidos.

En el Capítulo 6 se analizará la viabilidad de llevar esta actividad a cabo para cada caso.

5.2.5 Valor fuera de referencial

Es posible verificar si, para ciertos campos, los valores que poseen en la base se encuentran

dentro de referenciales definidos. Además, para aquellos campos que contienen combos, se

pueden utilizar como referenciales los valores definidos para los mismos, de manera tal de

verificar que sólo existan valores permitidos en esos campos.

Puede suceder a causa de incorporación de datos externos, o de ingreso de datos directamente en

la base, que existan valores en los campos que no corresponden a ninguno de los permitidos por

un combo dado. Por otra parte, un usuario Administrador de la herramienta podría definir o

registrar de manera incorrecta el conjunto de valores permitidos para un campo. Este hecho

puede ocasionar que existan valores que es posible ingresar en la herramienta, pero que se

encuentran fuera del referencial considerado como válido para un campo dado.

Medición

La granularidad es a nivel de celda, ya que se verifica para determinados campos si existen

valores fuera de los referenciales.

La manera de medir este tipo de error consiste en comparar los valores de los campos

involucrados en este tipo de error contra los referenciales considerados como válidos

(previamente definidos).

Page 44: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

39

Debido a que no se incorporaron datos externos en la base, sino que el ingreso de los mismos se

realiza siempre mediante el uso de la herramienta, la estrategia (parte manual, parte mediante

consultas SQL) utilizada para la medición de este tipo de error es la siguiente. En primera

instancia, se verifica en conjunto con la persona responsable del experimento si los valores

actualmente cargados en ciertas tablas son correctos (esto es, si son todos los requeridos y nada

más que esos). En caso de encontrar valores incorrectos, se analiza si existen registros en la base

(mediante consultas SQL) que utilicen y/o referencien dichos valores.

5.3 COMPLETITUD

Para la dimensión Completitud, se identifican los tipos de errores que se mencionan a

continuación.

Dentro del factor densidad:

o Valor nulo.

o Clasificación de defectos.

Dentro del factor cobertura, no se identifican errores en los a datos a tener en cuenta.

Esto se debe a que la cobertura hace referencia (en este caso de estudio en particular) a

la cantidad de defectos registrados en comparación con la cantidad de defectos que

realmente hay en el código verificado. No resulta de interés medir este tipo de error,

además de que no se conoce a priori cuántos defectos reales existen en los programas

verificados.

A continuación se describe cada uno de estos tipos de errores de manera detallada.

5.3.1 Valor nulo

Interesa conocer qué información fue registrada y cuál fue omitida. Para aquella información

que fue omitida, interesa conocer la causa de la omisión, y en caso que sea posible, determinar

el valor que debería tomar en lugar de nulo.

La existencia de valores nulos influye en el análisis de los datos que se lleve a cabo, ya que al

obtener estadísticas de los mismos se hace necesario dejar de lado aquellos valores vacíos. A

modo de ejemplo, un nulo en cualquiera de los tiempos que no sea considerado como tal al

momento de calcular un promedio, afectará el resultado obtenido.

Resulta necesario identificar en primera instancia cuáles son los campos que admiten nulos y

cuáles no, según el esquema actual de la base de datos. Luego, se identifican aquellos campos

que admiten nulos, pero deberían en la realidad contener algún valor distinto de vacío (el hecho

de que admitan nulos es un error en el diseño de la base de datos). Este último caso es el que

interesa medir. Se asume que el control sobre los campos declarados como no nulos se realiza

correctamente por el SGBD.

El motivo de omisión de los campos podría ser cualquiera de los siguientes:

El Verificador no ingresa el valor (puede ser por omisión accidental o por no saber

determinarlo).

Un error en el manejo de los datos (ya sea de la aplicación web, o de la base) que

ocasiona que el valor ingresado por el Verificador no se almacene correctamente.

Page 45: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

40

Medición

La granularidad es a nivel de celda, ya que intervienen aquellos campos que deberían tener un

valor distinto de nulo.

Luego de identificados cuáles son los campos involucrados en este tipo de error, su forma de

medición consiste en verificar mediante la ejecución de consultas SQL si los mismos contienen

valores nulos.

5.3.2 Clasificación de defectos

Interesa que todos los defectos que han sido detectados en los distintos programas estén

clasificados según las categorías Defect Type y Qualifier dentro de la taxonomía IBM. Pueden

encontrarse además clasificados según otras categorías dentro de esta misma taxonomía, pero

estos datos no se tomarán en cuenta.

Con respecto a la taxonomía Beizer, interesa que el defecto haya sido clasificado en al menos el

Nivel 1 de dicha taxonomía. No es necesario que se logre la máxima precisión dentro de esta

taxonomía, pero sí que se cuente con una clasificación para cada defecto.

En resumen, todo defecto debe tener una clasificación según la taxonomía de Beizer y una

clasificación según la taxonomía de IBM, que consta de un valor en la categoría Defect Type y

un valor en la categoría Qualifier. Por lo tanto, la falta de cualquiera de ellas representa un error

de completitud.

La falta de clasificación en alguna de las categorías especificadas puede deberse a:

Una omisión por parte del Verificador al registrar un defecto, y omitir clasificarlo según

alguna de las taxonomías.

Falta de conocimiento por parte del Verificador al no saber cómo clasificar el defecto

que se está registrando.

Un error de la aplicación o la base de datos al almacenar la información referente a la

clasificación del defecto.

Medición

La granularidad es a nivel de tupla, ya que son las tuplas de registros de defectos las que

intervienen en este tipo de error.

La forma de medir este tipo de error consiste en verificar mediante la ejecución de consultas

SQL si los defectos han sido clasificados en las categorías de interés.

5.4 CONSISTENCIA

La consistencia captura la satisfacción de reglas semánticas definidas sobre los datos. Resulta

por lo tanto necesario identificar en primera instancia cuáles son las reglas existentes, para

evaluar luego su cumplimiento (ó no) en el dominio bajo estudio. Vale destacar que en la base

de datos del experimento muchos de estos aspectos son controlados por el SGBD.

Por otra parte, los controles realizados por el SGBD se aplican sobre todos los datos, ya que es

sabido que no se incorporan datos por fuera del manejador.

Para la dimensión Consistencia, se identificaron los tipos de errores que se mencionan a

continuación.

Page 46: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

41

Dentro del factor integridad intra-relación:

o Reglas de integridad intra-relación.

o Valor único.

Dentro del factor integridad referencial:

o Referencia inválida.

A continuación se describe cada uno de estos tipos de errores de manera detallada.

5.4.1 Reglas de integridad intra-relación

Se definen un conjunto de reglas sobre los atributos que deben ser satisfechas en la base bajo

estudio. El hecho de que alguna de estas reglas sea violada, afecta la consistencia de los datos y

por lo tanto cualquier análisis que se lleve a cabo a partir de estos.

La causa principal por la cual estas reglas no son satisfechas, es la falta de definición de

restricciones en la base de datos (a nivel de diseño). En este caso, podría ocurrir un error cuando

un usuario Verificador registra cierta información sobre los defectos y/o su experimento,

ocasionando la violación de una regla que no se encuentra controlada en la base. A modo de

ejemplo, puede ocurrir una confusión acerca de cuál es la técnica de verificación que se está

aplicando, ocasionando que los datos que se ingresen no sean correctos para la técnica en

cuestión.

Medición

La granularidad es a nivel de celda, ya que involucra aquellos campos que deben satisfacer las

reglas definidas.

La forma de medir este tipo de error consiste en verificar mediante la ejecución de consultas

SQL si se cumplen las reglas de integridad intra-relación definidas para la realidad bajo estudio.

5.4.2 Valor único

Interesan aquellas tuplas que contengan el mismo valor en ciertos atributos (distintos a la clave

primaria), pero que deberían ser únicos.

Resulta necesario identificar en primera instancia cuáles son los campos que son declarados

como únicos y cuáles no, según el esquema actual de la base de datos. Luego, se identifican

aquellos campos que no contienen la restricción de unicidad, pero que deberían tenerla (para

reflejar fielmente la realidad). Estas últimas tuplas son las que interesa medir. Se asume que el

control sobre los campos declarados como únicos se realiza correctamente por el SGBD.

La causa de este error es la no definición de restricciones unique sobre los campos involucrados.

Medición

La granularidad es a nivel de celda, ya que involucra aquellos campos que deben contener

valores únicos.

La forma de medir este tipo de error consiste en verificar mediante la ejecución de consultas

SQL si se cumplen las restricciones de unicidad en las celdas que interesa medir.

Page 47: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

42

5.4.3 Referencia inválida

Es necesario considerar en el presente análisis la satisfacción de reglas entre atributos de

distintas tablas. Instanciando esto a la base de datos bajo estudio, se identifican referencias hacia

determinadas tuplas que no existen, y por lo tanto resultan ser referencias inválidas.

La fuente de este tipo de error se debe a un error en el diseño del esquema de la base de datos,

ya que se omite la definición de foreign keys sobre ciertos atributos.

En primera instancia, se analizan las restricciones de integridad referencial existentes sobre la

base de datos en cuestión. A partir de dicho análisis, se obtienen los campos para los cuales la

definición de foreign key fue omitida.

Se analizan tres casos:

Taxonomía inválida

Se referencia a una taxonomía que no existe en la base del experimento.

Registro de defecto inválido

Se referencia a una registro de defecto que no existe en la base del experimento. Una

posible causa de este error podría ser que la eliminación de defectos no se realice de manera

correcta. Esto es, que al eliminar un defecto se elimine su registro, pero no las tuplas que

referencian al mismo.

Categoría padre inválido

Se referencia a categorías que no existen en la base en del experimento. Este hecho podría

ocasionar una inconsistencia que influye en cualquier análisis que se realice en los datos

respecto a la clasificación de los defectos encontrados.

Medición

La granularidad es a nivel de tupla, ya que involucra tuplas que referencian a otras inexistentes.

La forma de medir este tipo de error consiste en verificar mediante la ejecución de consultas

SQL si existen tuplas que contengan referencias inválidas.

5.5 UNICIDAD

Para la dimensión Unicidad, se identifican los tipos de errores que se mencionan a continuación.

Dentro del factor duplicación:

o Registro duplicado.

Dentro del factor contradicción:

o Registro contradictorio.

A continuación se describe cada uno de estos tipos de errores de manera detallada.

5.5.1 Registro duplicado

Se identifica este tipo de error cuando existen dos o más registros que aparecen repetidos de

manera exacta. Existen dos situaciones:

Page 48: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

43

Cuando contienen el mismo valor en la clave y demás atributos (o en su defecto valores

nulos).

A pesar de contener distinta clave primaria, hacen referencia al mismo objeto de la

realidad y contienen los mismos datos en los campos que se definan (según el criterio

de duplicación considerado).

A pesar de que los controles del SGBD evitan la existencia de registros duplicados con la

misma clave primaria, se realizan los chequeos necesarios para verificar que no existan registros

repetidos (según el criterio que será definido) en la base bajo estudio.

La causa de este tipo de error se puede deber a una equivocación por parte del usuario

Verificador (por ejemplo al registrar varias veces el mismo defecto), o un error de la

herramienta que ocasione se almacenen registros repetidos en la base.

Es importante considerar este tipo de error ya que, de no ser así, los resultados obtenidos a partir

del análisis de los datos que se lleve a cabo resultarían erróneos. A modo de ejemplo, si se

poseen registros de defectos duplicados, esto es, que hacen referencia al mismo defecto, la

cantidad de defectos total que se obtenga no será real (se estarán contando registros de más).

Medición

La granularidad es a nivel de tupla, ya que involucra aquellas tuplas que se encuentren

duplicadas.

La forma de medir este tipo de error consiste en verificar mediante la ejecución de consultas

SQL si existen tuplas duplicadas, según los criterios de duplicación que se definan.

5.5.2 Registro contradictorio

Se identifica este tipo de error cuando existen dos o más registros que aparecen repetidos de

manera contradictoria. Esto significa que contienen distinto valor en la clave y/o demás

atributos (o en su defecto valores nulos), a pesar de que hacen referencia al mismo objeto de la

realidad.

El ejemplo más claro de este tipo de error es tener dos clasificaciones distintas dentro de una

misma taxonomía, asociadas al mismo defecto. Es decir, un defecto debe estar clasificado de

una única manera según una misma taxonomía.

La causa de este tipo de error se puede deber a una equivocación por parte del Verificador, o un

error de la herramienta que ocasione se almacenen registros contradictorios en la base. Por

ejemplo, errores al refrescar los combos que contienen información de las categorías en la

herramienta utilizada, pudieron ocasionar que los niveles de las categorías ingresadas para

Beizer no se correspondan con la jerarquía definida.

Es importante considerar este tipo de error ya que, de no ser así, los resultados obtenidos a partir

del análisis de los datos que se lleve a cabo resultarían erróneos. A modo de ejemplo, si se

requiere conocer cuántos registros de defectos fueron clasificados según determinada categoría,

podría estar considerando dos veces el mismo defecto (en dos categorías distintas), sin lograr

conocer cuál es la clasificación real del mismo.

Medición

La granularidad es a nivel de tupla, ya que involucra aquellas tuplas que son contradictorias.

Page 49: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

44

La forma de medir este tipo de error consiste en verificar mediante la ejecución de consultas

SQL y algoritmos programados si existen tuplas contradictorias.

5.6 DIMENSIONES RELACIONADAS CON EL TIEMPO

Se considera que no existen errores en la calidad de los datos bajo estudio desde el punto de

vista de las dimensiones relacionadas con el tiempo.

Los datos son actuales y vigentes. Además, es conocido que los datos no han sufrido

modificaciones desde su ingreso, y que los mismos no cambian con el tiempo ya que son el

resultado de la ejecución de un experimento específico.

Page 50: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

45

6 MEDICIÓN DE LA CALIDAD

En este capítulo se muestra cómo se realiza la medición de los posibles errores identificados

sobre la base de datos de la herramienta Grillo. Llamamos error a cada instanciación de un tipo

de error (dentro de los identificados en el capítulo anterior) sobre un atributo y/o tabla

específica, dependiendo de su granularidad.

La gran mayoría de los posibles errores identificados fueron medidos (existen algunas pocas

excepciones correspondientes a mediciones manuales que no fueron realizadas). Se presenta a

continuación la medición de aquellos considerados significativos y representativos del total. El

detalle de todos los errores así como sus mediciones se presenta en el Anexo A - Catálogo de

Errores.

Para cada error detallado, se describe la siguiente información:

El atributo y/o tabla involucrada.

Su forma de medición.

El resultado obtenido a partir de la medición.

6.1 VALOR FUERA DE RANGO

El tipo de error Valor fuera de rango se mide sobre los tiempos y líneas de código.

La forma de medir estos errores consiste en establecer un rango al que debe pertenecer el valor

de cada celda, y verificarlo mediante la ejecución de consultas SQL.

Se presenta en esta sección el detalle de la medición realizada para el atributo time_deteccion de

la tabla Registro_Defecto.

6.1.1 Valor fuera de rango en el atributo time_deteccion de la tabla

Registro_Defecto

Para obtener el rango dentro del cual deben situarse los tiempos de detección de los defectos, se

calcula el promedio y desviación estándar discriminando por tipo de defecto (según la categoría

Defect Type de la taxonomía IBM). Es necesario además que no se consideren los defectos

detectados con la técnica “Inspecciones”, ya que los mismos tienen tiempo de detección igual a

0 y alterarían el promedio de manera no deseada.

La consulta que permite obtener dichos datos es la siguiente:

SELECT DISTINCT vc.nombre AS "IBM Defect Type", AVG(time_deteccion) AS "Promedio",

SQRT(VAR_SAMP(time_deteccion)) AS "Desviación estandar"

FROM registro_defecto rd, registro_taxonomia rt, valor_categoria vc, experimento e, tecnica t

WHERE rt.registro_id=rd.id AND rt.valor_categoria_id = vc.id AND vc.categoria_id=5 AND

rd.experimento_id=e.id AND e.tecnica_id=t.id AND t.nombre != 'Inspecciones'

GROUP BY vc.nombre

Page 51: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

46

La Tabla 3 muestra para cada tipo de defecto, el promedio y desviación estándar de los tiempos

de detección de los defectos que son obtenidos.

Tabla 3 – Promedio y desviación estándar por tipo de defecto

IBM Defect Type Promedio Desviación

estándar

Algorithm/Method 10 12

Assign/Initialization 7 9

Checking 6 25

Function/Class/Object 7 5

Interface/O-O Messages 6 6

En vista de los resultados obtenidos, es posible definir un rango para cada tipo de defecto (según

IBM Defect Type), y de esta forma identificar los tiempos de detección que no se encuentran

dentro del rango correspondiente. Como ya se mencionó, el rango a considerar es [0, promedio

+ 2*desv. estándar].

La consulta para hallar los outliers es la siguiente (el contenido de la tabla reg_rango_tiempos

se detalla en el Capítulo 7: REGISTRO DE ERRORES).

SELECT DISTINCT rd.id, rd.time_deteccion

FROM registro_defecto rd, registro_taxonomia rt, valor_categoria vc, tecnica t, experimento e,

reg_rango_tiempos ra

WHERE rt.registro_id=rd.id AND rt.valor_categoria_id=vc.id AND rd.experimento_id=e.id

AND e.tecnica_id=t.id AND t.nombre != 'Inspecciones' AND (vc.id=ra.valor_categoria_id

AND rd.time_deteccion > (ra.promedio + (ra.desv_estandar*2)))

La Tabla 4 resume el resultado obtenido a partir de la ejecución de la consulta, mostrando la

cantidad de registros con valores que se encuentran fuera de rango por cada tipo de defecto, en

al atributo time_deteccion de la tabla Registro_Defecto.

Tabla 4 – Cantidad de registros con valores fuera de rango

IBM Defect Type Cantidad de registros con valores fuera de rango

Function/Class/Object 1

Interface/O-O Messages 2

Checking 2

Algorithm/Method 7

Assign/Initialization 9

Se observa que se detectan un total de 21 registros que contienen valores en el campo

time_deteccion fuera del rango definido.

Page 52: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

47

En la Tabla 5 se destacan aquellas tuplas de la tabla Registro_Defecto cuyo valor se aleja de

manera más notoria del rango definido, incluyendo su tiempo de detección, tipo de defecto y

valor máximo para el rango definido. En particular, existen dos registros de defectos (348 y

317) cuyo valor en el campo time_deteccion es casi seis veces mayor en comparación al

máximo definido.

Tabla 5 – Tuplas con los valores más lejanos al rango definido

Id Registro_Defecto Tiempo de detección IBM Defect Type Máximo

360 35 Function/Class/Object 17

132 60 Assign/Initialization 25

304 64 Assign/Initialization 25

348 312 Checking 56

317 376 Checking 56

Considerando además que existen un total de 1009 tuplas en la tabla Registro_Defecto, la

proporción de aquellos que contienen valores fuera de rango en el tiempo de detección resulta

en un 2,1%. Sin embargo, estos valores pueden tener un peso importante a la hora de analizar la

información, debido a la importante distancia con la que se alejan del promedio definido.

6.2 VALOR FUERA DE REFERENCIAL

El tipo de error Valor fuera de referencial se mide sobre el atributo nombre de cada una de las

tablas Tecnica, Software, TipoDefecto, Estructura, Taxonomia y Categoria.

La forma de medir estos errores consiste en verificar mediante la ejecución de consultas SQL si

el valor de cada celda se encuentra dentro de un referencial previamente definido, y que es

considerado como válido.

Se presenta en esta sección el detalle de la medición realizada para el atributo nombre de la

tabla Categoria.

6.2.1 Valor fuera de referencial en el atributo nombre de la tabla Categoria

Como ya se mencionó, la taxonomía IBM es ortogonal. La clasificación de un defecto según

esta taxonomía consiste en un conjunto de valores correspondientes a distintas categorías. En el

experimento bajo estudio, solamente interesa registrar los valores correspondientes a las

categorías DefectType y Qualifier.

En este error en particular se distinguen dos casos distintos, con diferentes granularidades. Por

un lado, se busca de manera manual cuáles son los valores que se encuentran fuera del

referencial definido para el atributo nombre de la tabla Categoria. Como se observa, este caso

es a nivel de celda.

Por otro lado, se procede a encontrar cuáles son las tuplas de la tabla Registro_Taxonomia que

corresponden a alguna de estas categorías, ya que son valores que se encuentran fuera del

referencial válido. Aquí se mide (dentro del mismo error) con granularidad a nivel de tupla.

Se detecta manualmente que la tabla Categoria contiene cinco valores que no se encuentran

dentro del referencial definido. Estos son: Section, Actividad, Trigger, Impacto, Age y Source.

La consulta que mide este error a nivel de tupla (aquellas que se encuentran fuera del

referencial) es la siguiente:

Page 53: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

48

SELECT DISTINCT rd.id, rt.id, c.nombre

FROM registro_defecto rd, categoria c, valor_categoria vc, registro_taxonomia rt

WHERE rt.registro_id=rd.id AND rt.valor_categoria_id=vc.id AND vc.categoria_id=c.id

AND c.nombre NOT IN ('Defect Type', 'Qualifier', 'BezierNivel1', 'BezierNivel2', 'BezierNivel3',

'BezierNivel4')

Como resultado de la medición, se obtienen 3721 registros que contienen este error. A modo de

resumen, la Tabla 6 muestra la cantidad de registros de la tabla Registro_Defecto con valores

fuera de referencial por cada categoría. Vale destacar que existen 685 registros que por contener

el error Referencia inválida en el atributo registro_id no son considerados en la siguiente tabla.

Tabla 6 – Cantidad de registros con valores fuera de referencial

Categoría Cantidad de registros con valores fuera de referencial

Section 1009

Age 1006

Source 1006

Actividad 5

Trigger 5

Impacto 5

A partir de la Tabla 6 se observa que todos los defectos registrados han sido clasificados según

la categoría Section (recordar que existen un total de 1009 registros de defecto), y casi un 100%

en las categorías Age y Source. Por otra parte, solamente un 0,5% de los defectos han sido

clasificados según Actividad, Trigger e Impacto.

6.3 VALOR NULO

Se incluyen en este tipo de error los atributos que deberían ser no nulos, pero no fueron

definidos como tales en la base de datos.

La forma de medir estos errores consiste en verificar mediante la ejecución de consultas SQL si

los valores de las celdas que interesa medir se encuentran vacíos.

Se presenta en esta sección el detalle de la medición realizada para el atributo time_casos de la

tabla Experimento para experimentos asociados a técnicas de verificación dinámicas.

6.3.1 Valor nulo en el atributo time_casos de la tabla Experimento para

técnicas dinámicas

Mediante la siguiente consulta se verifica si existen valores nulos para el atributo involucrado.

SELECT e.id FROM tecnica t, experimento e

WHERE e.tecnica_id=t.id AND t.nombre !='Inspecciones' AND e.time_casos IS NULL

A partir del resultado obtenido, se observan un total de 3 registros que contienen este error.

Considerando que existen un total de 44 tuplas en la tabla Experimento, la proporción de

aquellos que contienen valores nulos en el campo time_casos para las técnicas dinámicas resulta

en un 6,8%. Vale destacar que los 3 registros obtenidos como resultado de esta consulta,

coinciden con aquellos obtenidos para la medición sobre el atributo time_ejecucion.

Page 54: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

49

El atributo time_casos representa el tiempo de diseño de casos de prueba. La existencia de nulos

en este campo en particular, se puede deber a una omisión por parte del Verificador al ingresar o

calcular dicho tiempo.

6.4 REGLAS DE INTEGRIDAD INTRA-RELACIÓN

Los atributos que intervienen en la definición de reglas de integridad intra-relación son los

correspondientes a tiempos, líneas de código, técnica de verificación y tipo del defecto.

La forma de medir este tipo de error consiste en verificar mediante la ejecución de consultas

SQL si se cumplen las reglas de integridad intra-relación definidas.

Se presenta en esta sección el detalle de la medición realizada sobre el atributo time_deteccion

de la tabla Registro_Defecto para el caso de ejecución de técnicas de verificación estáticas.

6.4.1 Regla sobre el atributo time_deteccion de la tabla Registro_Defecto

para técnicas estáticas

Para las técnicas de verificación estáticas, el tiempo de detección del defecto debe ser igual a 0.

Esto se debe a que durante la ejecución de una técnica estática se trabaja sobre el código,

detectando directamente los defectos (al contrario de las técnicas dinámicas en las cuales un

defecto se manifiesta a través de una falla externa).

Una posible causa de este error en particular, puede ser incluir el tiempo incurrido en clasificar

el defecto dentro del tiempo de detección del mismo, lo cual ocasiona que sea mayor a 0.

En este caso la regla que se define es que el atributo time_deteccion de la tabla

Registro_Defecto, debe tener el valor 0 para defectos hallados a partir de la ejecución de

técnicas estáticas.

La consulta que mide este error es la siguiente:

SELECT rd.id, rd.time_deteccion

FROM tecnica t, experimento e, registro_defecto rd

WHERE rd.experimento_id=e.id AND e.tecnica_id=t.id AND t.nombre='Inspecciones' AND

rd.time_deteccion!=0

A partir del resultado obtenido, se observan un total de 90 registros que contienen este error.

Considerando que existen un total de 1009 tuplas en la tabla Registro_Defecto, la proporción de

aquellos que no cumplen con la regla de integridad intra-relación recién definida resulta en un

8,9%.

6.5 REFERENCIA INVÁLIDA

Los atributos involucrados son aquellos sobre los cuales se deberían tener la restricción de

foreign key, pero no la poseen.

Se miden las tuplas que contienen referencias inválidas (esto es, apuntan a tuplas que no existen

en la base), mediante la ejecución de consultas SQL.

Se presenta en esta sección el detalle de la medición realizada sobre el atributo registro_id de la

tabla Registro_Taxonomia.

Page 55: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

50

6.5.1 Referencia inválida en el atributo registro_id de la tabla

Registro_Taxonomia

La consulta que mide este error es la siguiente:

SELECT rt.id FROM registro_taxonomia rt WHERE registro_id NOT IN

(SELECT id FROM registro_defecto)

order by registro_id

A partir del resultado obtenido, se observan un total de 472 registros que contienen este error.

Considerando que existen un total de 9682 tuplas en la tabla Registro_Taxonomia, la proporción

de aquellos que poseen referencias inválidas en el campo registro_id resulta en un 4,8%. Vale

destacar que dentro de los registros retornados por la consulta anterior, existen 421 que ya

fueron considerados dentro del error Valor fuera de referencial en el atributo nombre de la

tabla Categoria.

Por otra parte, los 472 registros devueltos por la consulta anterior referencian a 33 registros de

defectos que no existen (esto se debe a que cada tupla de la tabla Registro_Defecto se encuentra

asociada a varias de Registro_Taxonomia).

6.6 REGISTRO DUPLICADO

Las tuplas que intervienen en el presente tipo de error corresponden a tuplas de las tablas

Registro_Defecto y Registro_Taxonomia.

La forma de medir estos errores consiste en verificar la existencia de tuplas duplicadas mediante

la ejecución de consultas SQL, según criterios de duplicación definidos. Esto es, que existen dos

o más tuplas de la tabla Registro_Defecto con el mismo valor en ciertos atributos que serán

definidos, o que existen dos o más tuplas de las tablas Registro_Taxonomia que se asocien a la

misma categoría para el mismo defecto.

Se presenta en esta sección el detalle de la medición realizada sobre las tuplas de

Registro_Taxonomia para la taxonomía IBM.

6.6.1 Registro_Taxonomía duplicado para la taxonomía IBM

Se considera que dos o más tuplas de la tabla Registro_Taxonomia se encuentran duplicadas si

se asocian a una misma tupla de Registro_Defecto y una misma tupla de Categoria (dentro de la

taxonomía de IBM).

La consulta que traduce las condiciones recién mencionadas y mide este error, es la siguiente:

(SELECT r1.id, r1.registro_id

FROM registro_taxonomia r1, registro_taxonomia r2, valor_categoria vc1, valor_categoria

vc2

WHERE r1.valor_categoria_id = vc1.id AND r2. valor_categoria_id = vc2.id AND

r1.registro_id = r2.registro_id AND r1. valor_categoria_id =r2. valor_categoria_id AND

r1.id< r2.id AND r1.taxonomia_id = 1 AND r2.taxonomia_id = 1)

UNION

(SELECT r2.id, r2.registro_id

FROM registro_taxonomia r1, registro_taxonomia r2, valor_categoria vc1, valor_categoria

vc2

Page 56: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

51

WHERE r1. valor_categoria_id = vc1.id AND r2. valor_categoria_id = vc2.id AND

r1.registro_id = r2.registro_id AND r1. valor_categoria_id = r2. valor_categoria_id AND

r1.id< r2.id AND r1.taxonomia_id = 1 AND r2.taxonomia_id = 1)

El resultado de la ejecución de esta consulta retorna un total de 1705 registros de la tabla

Registro_Taxonomia, los cuales corresponden a 171 registros de la tabla Registro_Defecto (esto

se debe a que cada tupla de Registro_Defecto se encuentra asociada a varias tuplas de

Registro_Taxonomia). Debido a que el resultado de la consulta incluye también los registros

“originales”1, la cantidad que se encuentran duplicados son un total de 1534. Considerando que

existen 9682 tuplas en la tabla Registro_Taxonomia, la proporción de aquellas que se

encuentran duplicadas resulta en un valor del 15,8%.

Vale destacar que dentro de los registros retornados por la consulta anterior, existen 773 ya

considerados dentro del error Valor fuera de referencial en el atributo nombre de la tabla

Categoria y 204 incluidos en el error Referencia inválida en el atributo registro_id.

Se observa a partir del resultado obtenido que la cantidad de tuplas de la tabla

Registro_Taxonomia duplicados para un mismo defecto y una misma categoría, varía desde un

valor mínimo de 2 hasta un máximo de 44. La Tabla 7 permite visualizar, a modo de ejemplo,

algunos de las tuplas de la tabla Registro_Defecto que contienen tuplas de Registro_Taxonomia

duplicados, así como su cantidad para cada caso.

Tabla 7- Cantidad de registros duplicados por tupla

Identificador Registro_Defecto Cantidad de registros duplicados

29 2

48 6

79 8

473 16

165 20

40 25

49 29

901 44

Se puede concluir además que ocurren errores en la herramienta al almacenar los datos, que

ocasionan la existencia de tuplas duplicadas en la base.

6.7 REGISTRO CONTRADICTORIO

Existen dos casos de contradicción. El primero involucra las tuplas de la tabla

Registro_Taxonomia, y se presenta cuando dos o más tuplas que representan distintas

clasificaciones en una misma taxonomía, están asociadas a un mismo defecto (es decir,

referencian a una misma tupla de la tabla Registro_Defecto). La contradicción radica en que un

defecto no puede tener dos clasificaciones distintas según una misma taxonomía. Esta situación

se debe a un error en el diseño de la base de datos, que se describe en el Capítulo 8: LIMPIEZA

Y MIGRACIÓN DE LOS DATOS.

El segundo caso de contradicción involucra las tuplas de la tabla Archivo_Software. Se presenta

cuando existen dos o más tuplas de la tabla Archivo_Software que asocian una misma tupla de

1 Decimos que un registro A es “original” si existe al menos un registro B que sea duplicado de A. Estos

registros no se deben considerar dentro del total de duplicados.

Page 57: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

52

la tabla Archivo con distintas tuplas de la tabla Software (es decir, cuando un archivo pertenece

a dos o más softwares distintos). La contradicción está en que en la realidad planteada, dos

software distintos no pueden tener ningún archivo en común. Una vez más, esta situación se

debe a un error en el diseño de la base de datos.

La forma de medir estos errores consiste en verificar mediante la ejecución de consultas SQL y

algoritmos programados la existencia de tuplas contradictorias.

Se presenta en esta sección el detalle de la medición realizada sobre la tabla

Registro_Taxonomia para la taxonomía Beizer.

6.7.1 Registro_Taxonomia contradictorio para la taxonomía Beizer

La forma de medir este error consiste en verificar la existencia de tuplas contradictorias.

Recordar que la taxonomía de Beizer es jerárquica. Existen distintas categorías y subcategorías

para clasificar los defectos, numeradas 1xxx, 2xxx, 3xxx y 4xxx. Las subcategorías son de la

forma 11xx, 12xx, 21xx, y así sucesivamente. De esta forma, un defecto se clasifica, por

ejemplo, como 1xxx, 11xx (más específico) o 211x.

En los datos bajo estudio se miden de manera distinta dos casos similares de contradicción con

respecto a esta taxonomía. El primer caso de contradicción se presenta cuando un defecto tiene

asociadas dos (o más) clasificaciones distintas, pero hijas de una misma categoría en la

jerarquía. Por ejemplo, un defecto aparece clasificado como 11xx y como 12xx, ambas

clasificaciones hijas de la categoría 1xxx.

El otro caso de contradicción, se da cuando un defecto tiene asociadas dos (o más)

clasificaciones distintas, las cuales no están relacionadas en la jerarquía. Por ejemplo, un defecto

aparece clasificado como 11xx y como 22xx.

Debido al diseño del esquema de la base de datos (inadecuado para representar la jerarquía), se

requiere definir dos procesos de medición distintos para cada caso de contradicción descripto.

Existe un tercer caso que no es considerado una contradicción y sucede cuando un defecto tiene

asociadas varias clasificaciones, pero todas ellas pertenecientes a una misma rama de la

jerarquía. Por ejemplo, un defecto puede estar clasificado como 1xxx y como 12xx. En este

caso, simplemente se considera la clasificación más precisa (12xx en el ejemplo).

La consulta que realiza la medición del primer caso de contradicción es la siguiente:

(SELECT r1.id, r1.registro_id

FROM registro_taxonomia r1, registro_taxonomia r2, valor_categoria vc1, valor_categoria

vc2

WHERE r1.valor_categoria_id = vc1.id AND r2. valor_categoria_id = vc2.id AND

r1.registro_id = r2.registro_id

AND r1. valor_categoria_id!= r2. valor_categoria_id AND vc1.categoria_id =

vc2.categoria_id AND r1.taxonomia_id = 2 AND r2.taxonomia_id = 2)

UNION

(SELECT r2.id, r2.registro_id

FROM registro_taxonomia r1, registro_taxonomia r2, valor_categoria vc1, valor_categoria

vc2

WHERE r1. valor_categoria_id = vc1.id AND r2. valor_categoria_id = vc2.id AND

r1.registro_id = r2.registro_id

Page 58: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

53

AND r1. valor_categoria_id!= r2. valor_categoria_id AND vc1.categoria_id =

vc2.categoria_id AND r1.taxonomia_id = 2 AND r2.taxonomia_id = 2)

A partir de la ejecución de la consulta, se obtienen 2 registros contradictorios, los cuales

corresponden al mismo registro de defecto.

Para la medición del segundo caso de contradicción, se define un algoritmo mediante

programación. Como resultado de su ejecución, se obtienen un total de 63 registros de la tabla

Registro_Taxonomia, los cuales corresponden a 21 registros de la tabla Registro_Defecto.

Se encuentran entonces un total de 65 tuplas de la tabla Registro_Taxonomia contradictorios,

que corresponden a 22 tuplas de la tabla Registro_Defecto. Debido a que el resultado de la

consulta incluye también los registros “originales”, la cantidad de registros contradictorios son

un total de 43. Considerando que existen 9682 tuplas en la tabla Registro_Taxonomia, la

proporción de aquellos contradictorios resulta en tan solo un 0,4%. Sin embargo, es necesario

conocer para todas estas tuplas cuál es la categoría (dentro del conjunto de posibles valores) en

la cual se clasificó el registro de defecto para la taxonomía de Beizer.

Se observa a partir del resultado obtenido que la cantidad de registros contradictorios, varía

desde un valor mínimo de 2 hasta un máximo de 6. La Tabla 8 permite visualizar, a modo de

ejemplo, algunas tuplas de la tabla Registro_Defecto que contienen tuplas de

Registro_Taxonomia contradictorios, así como su cantidad para cada caso.

Tabla 8 – Cantidad de registros contradictorios por tupla

Identificador Registro_Defecto Cantidad de registros contradictorios

asociados

897 2

278 3

432 6

6.8 RESUMEN

La Tabla 9 muestra todos los errores que fueron identificados sobre la base de datos, indicando

a qué dimensión, factor y tipo de error corresponden. Se incluye si fue posible llevar a cabo la

medición de cada error, y en caso positivo si la medición es manual o automática (SQL,

programación). Finalmente, se muestra cuántos objetos erróneos se obtienen como resultado de

la ejecución de la medición (discriminado por error y por tipo de error).

Tabla 9 – Errores identificados

Dimensión Factor Tipo de error Objeto Medición

Cantidad de

instancias con

error

Exactitud Exactitud

sintáctica

Valor fuera de

rango

Experimento.time_c

asos

NO 0

32

Experimento.time_e

jecucion

NO 0

Registro_Defecto.ti

me_deteccion

SQL 21

Registro_Defecto.li

nea

SQL 8

Page 59: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

54

Registro_Defecto.li

nea_estructura

SQL 3

Estandarización

Experimento.time_c

asos

SQL 0

0

Experimento.time_e

jecucion

SQL 0

Registro_Defecto.ti

me_deteccion

SQL 0

Registro_Defecto.li

nea

SQL 0

Registro_Defecto.li

nea_estructura

SQL 0

Exactitud

semántica

Registro

inexistente

Registro_Defecto NO 0 1

Archivo Manual 1

Defecto mal

registrado

Registro_Defecto.li

nea

NO 0

0

Registro_Defecto.li

nea_estructura

NO 0

Registro_Defecto.ti

me_deteccion

NO 0

Registro_Defecto.d

escripcion

NO 0

Registro_Defecto.es

tructura_id

NO 0

Registro_Defecto.a

rchivo_id

NO 0

Registro_Defecto.ti

po_id

NO 0

Registro_Taxonomi

a.valor_categoria_i

d

NO 0

Valor fuera de

referencial

Tecnica.nombre Manual 0

3721

Software.nombre Manual 0

Tipo_Defecto.nomb

re

Manual 0

Estructura.nombre Manual 0

Taxonomia.nombre Manual 0

Categoria.nombre /

Registro_Taxonomi

a

SQL 3721

Completitud Densidad Valor nulo

Usuario.perfil_id SQL 0

1332

Registro_Defecto.ti

po_id

SQL 0

Registro_Defecto.li

nea

SQL 0

Experimento.nombr

e

SQL 0

Registro_Defecto.ti

me_deteccion

SQL 0

Registro_Taxonomi

a.registro_id

SQL 0

Experimento.time_e

jecucion

SQL 3

Registro_Taxonomi

a.taxonomia_id

SQL 1324

Page 60: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

55

Registro_Taxonomi

a.valor_categoria_i

d

SQL 2

Experimento.time_c

asos (técnica

dinámica)

SQL 3

Clasificación de

defectos

Registro_Defecto

(para IBM)

SQL 3

3 Registro_Defecto

(para Beizer)

SQL 0

Consistencia

Integridad

intra-relación

Regla de

integridad intra-

relación

Experimento.time_c

asos (técnica

estática)

SQL 0

92

Experimento.time_c

asos (técnica

dinámica)

SQL 0

Registro_Defecto.ti

me_deteccion

SQL 90

Registro_Defecto.li

nea_estructura

SQL 0

Experimento.time_e

jecucion

SQL 2

Valor único

Categoria.nombre SQL 0

0

Valor_Categoria.no

mbre,

categoria_padre

SQL 0

Experimento.nombr

e

SQL 0

Integridad

referencial

Referencia

inválida

Registro_Taxonomi

a.taxonomia_id

SQL 0

491 Registro_Taxonomi

a.registro_id

SQL 472

Valor_Categoria.ca

tegoria_padre

SQL 19

Unicidad

Duplicación Registro

duplicado

Registro_Defecto SQL 0

1705 Registro_Taxonomi

a (para IBM)

SQL 1705

Registro_Taxonomi

a (para Beizer)

SQL 0

Contradicción Registro

contradictorio

Archivo_Software SQL 4

214

Registro_Taxonomi

a (para IBM)

SQL 145

Registro_Taxonomi

a (para Beizer)

SQL y

Programa-

ción

65

Page 61: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

56

6.9 VALOR DE CALIDAD DE LOS DATOS

La Tabla 10 muestra el valor de calidad obtenido por cada tabla discriminada por tipo de error, y

por cada tipo de error que fue medido. El valor de calidad se calcula como: cantidad de tuplas

sin error / cantidad de tuplas totales (por tabla).

Para calcular el valor de calidad por tipo de error (sin discriminar por tabla), se realiza un

promedio del valor de calidad obtenido por cada tabla que interviene en dicho tipo de error.

Tabla 10 – Valor de calidad

Dimensión Factor Tipo de error Tabla

Valor de

calidad por

tabla por tipo

de error

Valor de

calidad

por tipo

de error

Exactitud Exactitud

sintáctica

Valor fuera de rango Registro_Defecto 0,97 0,97

Estandarización Registro_Defecto 1,00 1,00

Experimento 1,00

Exactitud

semántica

Registro inexistente Archivo 0,98 0,98

Defecto mal registrado N/A N/A N/A

Valor fuera de

referencial

Tecnica 1,00

0,87

Software 1,00

Tipo_Defecto 1,00

Estructura 1,00

Taxonomia 1,00

Categoria 0,50

Registro_Taxonomia 0,62

Completitud Densidad Valor nulo Usuario 1,00

0,93 Experimento 0,86

Registro_Defecto 1,00

Registro_Taxonomia 0,86

Clasificación de

defectos

Registro_Defecto 1,00 1,00

Consistencia Integridad

intra-relación

Regla de integridad

intra-relación

Experimento 0,95 0,93

Registro_Defecto 0,91

Valor único Experimento 1,00

1,00 Categoria 1,00

Valor_Categoria 1,00

Integridad

referencial

Refrencia inválida Registro_Taxonomia 0,95 0,93

Valor_Categoria 0,90

Unicidad Duplicación Registro duplicado Registro_Defecto 1,00 0,91

Registro_Taxonomia 0,82

Contradicción Registro contradictorio Registro_Taxonomia 0,98 0,95

Archivo_Software 0,92

Page 62: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

57

Se observa que los tipos de errores con menor valor de calidad (esto es, aquellos para los que se

identificaron una mayor cantidad de tuplas erróneas) son:

Valor fuera de referencial en el atributo nombre de la tabla Categoria.

Valor nulo en los atributos time_ejecucion, time_casos para técnicas dinámicas y

taxonomía_id.

Registro_Taxonomía duplicado para las taxonomías IBM y Beizer.

Page 63: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

58

7 REGISTRO DE ERRORES

Luego de identificar cuáles son los tipos de errores en los datos y su forma de medición, se

procede al registro de los mismos. En el presente capítulo se indica de qué forma se lleva a cabo

el registro de los metadatos. El Anexo B – Evaluación de Alternativas para el Registro de

Errores describe el análisis de tres alternativas distintas para el registro de errores, y el motivo

por el cual se opta por una de ellas.

A continuación, se presentan ejemplos de registro para tres tipos de errores (considerados

significativos del total), para los cuales se aplica la alternativa seleccionada. El Anexo C –

Metadata: Registro de Errores detalla el registro de todos los tipos de errores identificados.

7.1 DESCRIPCIÓN DE LA ALTERNATIVA SELECCIONADA

La alternativa elegida consiste en la creación de una nueva tabla por cada tipo de error, la cual

contiene el resultado de las mediciones de todos los errores correspondientes a ese tipo de error.

El nombre de la nueva tabla será igual al nombre del tipo de error que se está registrando, más

un prefijo „reg_‟.

Dependiendo del tipo de error a registrar la estructura de la tabla será distinta, y contendrá para

todos los casos el identificador del registro, además de información relevante y particular del

tipo de error que se está midiendo. Cada tabla de registro contiene además referencias (foreign

keys) a aquellas tablas de la base que participan del tipo de error en cuestión.

Se crea además un catálogo de errores (reg_catalogo_errores) que contiene información

específica de cada error. Todas las tablas que registran los tipos de errores harán referencia a

esta tabla, indicando cuál es el error que se está registrando.

7.2 APLICACIÓN DEL REGISTRO

A continuación se describe cómo se aplica la forma de registro de errores seleccionada a tres

tipos de errores en particular: Valor fuera de rango (Exactitud), Referencia inválida

(Consistencia) y Registro duplicado (Unicidad).

7.2.1 Ejemplo 1: Valor fuera de rango

Para registrar el tipo de error Valor fuera de rango, se crean dos tablas auxiliares en la base

origen:

reg_rango_tiempos: contiene el promedio y la desviación estándar por cada tipo de

defecto (IBM Defect Type).

reg_cant_lineas: contiene la cantidad de líneas por cada archivo de cada software.

Se crea además una nueva tabla reg_valor_fuera_rango, en la cual se registra el resultado de las

mediciones para los error de este tipo. En este caso, se muestra el registro para el error Valor

fuera de rango en el atributo time_deteccion. La estructura de la misma se describe a

continuación:

id. Identificador autonumerado.

Page 64: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

59

registro_id. Registro de defecto que contiene el error (clave foránea a la tabla

Registro_Defecto).

error_id. Indica cuál es el error que se está registrando (clave foránea a la tabla

reg_catalogo_errores).

valor. Indica el valor erróneo.

7.2.2 Ejemplo 2: Referencia inválida

Para registrar el tipo de error Referencia inválida, se crea una nueva tabla de nombre

reg_referencia_invalida, en la cual se registra el resultado de la medición para los errores de

este tipo. En este caso, me muestra el registro para el error Referencia inválida en el atributo

registro_id. La estructura de la misma se describe a continuación:

id. Identificador autonumerado.

registro_taxonomia_id. Identificador del registro que contiene una referencia inválida

(clave foránea a la tabla Registro_Taxonomia).

valor_categoria_id. Identificador del valor de la categoría que contiene una referencia

inválida (clave foránea a la tabla Valor_Categoria).

error_id. Indica cuál es el error que se está registrando (clave foránea a la tabla

reg_catalogo_errores).

7.2.3 Ejemplo 3: Registro duplicado

Para registrar el tipo de error Registro duplicado, se crea una nueva tabla de nombre

reg_duplicado, en la cual se registra el resultado de la medición para los errores de este tipo. En

este caso, se muestra el registro para el error Registro_Taxonomia duplicado para la taxonomía

IBM. La estructura de la misma se describe a continuación:

id. Identificador autonumerado.

registro_id. Identificador del registro de defecto que se encuentra duplicado (clave

foránea a Registro_Defecto).

registro_taxonomia_id. Identificador del registro que se encuentra duplicado (clave

foránea a Registro_Taxonomia).

id_duplicado. Identifica cuáles son los registros duplicados (aquellas tuplas que

contengan el mismo valor en este campo corresponderán a los registros duplicados,

junto con el “original”).

error_id. Indica cuál es el error que se está registrando (clave foránea a

reg_catalogo_errores).

7.3 DIAGRAMA

En la Figura 2 se muestra el diagrama que representa el esquema de la base de datos origen

luego de ejecutada la medición y registro (para los tres tipos de errores mencionados),

incluyendo las tablas de registro que son creadas. Estas últimas se visualizan en color

anaranjado, mientras que las tablas de la base de datos origen para las cuales se genera la

metadata se observan en color verde.

Page 65: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

60

Figura 2 – Esquema de la base con metadatos

7.4 RESUMEN

Luego de ejecutadas la medición y registro de todos los errores que fueron identificados en los

datos, se detalla en la Tabla 11 las características principales de cada error y tipo de error, así

como el resultado obtenido para cada caso.

Page 66: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

61

Tabla 11 – Características de los errores identificados

Dimensión Factor Tipo de error Error Granula-

ridad Objeto Medición Tabla de registro

Cantidad de objetos

con error

Exactitud

Exactitud

sintáctica

Valor fuera de

rango

1 Celda Experimento.time_c

asos

NO 0

32

2 Celda Experimento.time_e

jecucion

NO 0

3 Celda Registro_Defecto.ti

me_deteccion

SQL reg_valor_fuera_rango 21

4 Celda Registro_Defecto.li

nea

SQL 8

5 Celda Registro_Defecto.li

nea_estructura

SQL 3

Estandarización

6 Celda Experimento.time_c

asos

SQL reg_estandarizacion 0

0

7 Celda Experimento.time_e

jecucion

SQL 0

8 Celda Registro_Defecto.ti

me_deteccion

SQL 0

9 Celda Registro_Defecto.li

nea

SQL 0

10 Celda Registro_Defecto.li

nea_estructura

SQL 0

Exactitud

semántica

Registro

inexistente

11 Tupla Registro_Defecto NO reg_registro_inexistente 0 1

12 Tupla Archivo Manual 1

Defecto mal

registrado

13 Celda Registro_Defecto.li

nea

NO 0

0

14 Celda Registro_Defecto.li

nea_estructura

NO 0

15 Celda Registro_Defecto.ti

me_deteccion

NO 0

16 Celda Registro_Defecto.d

escripcion

NO 0

Page 67: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

62

17 Celda Registro_Defecto.es

tructura_id

NO 0

18 Celda Registro_Defecto.a

rchivo_id

NO 0

19 Celda Registro_Defecto.ti

po_id

NO 0

20 Celda Registro_Taxonomi

a.valor_categoria_i

d

NO 0

Valor fuera de

referencial

21 Celda Tecnica.nombre Manual reg_valor_fuera_referencial 0

3721

22 Celda Software.nombre Manual 0

23 Celda Tipo_Defecto.nomb

re

Manual 0

24 Celda Estructura.nombre Manual 0

25 Celda Taxonomia.nombre Manual 0

26 Celda /

Tupla

Categoria.nombre /

Registro_Taxonomi

a

SQL 3721

Completitud Densidad Valor nulo

27 Celda Usuario.perfil_id SQL reg_valor_nulo 0

1332

28 Celda Registro_Defecto.ti

po_id

SQL 0

29 Celda Registro_Defecto.li

nea

SQL 0

30 Celda Experimento.nombr

e

SQL 0

31 Celda Registro_Defecto.ti

me_deteccion

SQL 0

32 Celda Registro_Taxonomi

a.registro_id

SQL 0

33 Celda Experimento.time_e

jecucion

SQL 3

34 Celda Registro_Taxonomi

a.taxonomia_id

SQL 1324

Page 68: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

63

35 Celda Registro_Taxonomi

a.valor_categoria_i

d

SQL 2

36 Celda Experimento.time_c

asos (técnica

dinámica)

SQL 3

Clasificación de

defectos

37 Tupla Registro_Defecto

(para IBM)

SQL reg_clasificacion 3

3 38 Tupla Registro_Defecto

(para Beizer)

SQL 0

Consistencia

Integridad

intra-relación

Regla de

integridad intra-

relación

39 Celda Experimento.time_c

asos (técnica

estática)

SQL reg_integridad_intra 0

92

40 Celda Experimento.time_c

asos (técnica

dinámica)

SQL 0

41 Celda Registro_Defecto.ti

me_deteccion

SQL 90

42 Celda Registro_Defecto.li

nea_estructura

SQL 0

43 Celda Experimento.time_e

jecucion

SQL 2

Valor único

44 Celda Categoria.nombre SQL reg_valor_unico 0

0

45 Celda Valor_Categoria.no

mbre,

categoria_padre

SQL 0

46 Celda Experimento.nombr

e

SQL 0

Integridad

referencial

Referencia

inválida

47 Tupla Registro_Taxonomi

a.taxonomia_id

SQL reg_referencia_invalida 0

491 48 Tupla Registro_Taxonomi

a.registro_id

SQL 472

49 Tupla Valor_Categoria.ca

tegoria_padre

SQL 19

Page 69: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

64

Unicidad

Duplicación Registro

duplicado

50 Tupla Registro_Defecto SQL reg_duplicado 0

1705 51 Tupla Registro_Taxonomi

a (para IBM)

SQL 1705

52 Tupla Registro_Taxonomi

a (para Beizer)

SQL 0

Contradicción Registro

contradictorio

53 Tupla Archivo_Software SQL reg_contradictorio 4

214

54 Tupla Registro_Taxonomi

a (para IBM)

SQL 145

55 Tupla Registro_Taxonomi

a (para Beizer)

SQL y

Programa-

ción

65

Page 70: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

65

8 LIMPIEZA Y MIGRACIÓN DE LOS DATOS

En los capítulos anteriores, se realiza un análisis detallado acerca de cuáles son los errores que

contienen los datos bajo estudio, y se establece como se miden y registran, así como los

resultados obtenidos en las mediciones. Para completar el ciclo de la calidad de los datos, se

describe en el presente capítulo cómo se lleva a cabo la limpieza de los errores que fueron

previamente presentados. Esta limpieza se lleva a cabo durante la migración de la base de datos

de la herramienta Grillo. El detalle de la limpieza de todos los errores se encuentra en el Anexo

D – Detalle de la Migración y Limpiezas sobre los Datos.

Para comenzar, se aplican los conceptos previamente introducidos (Capítulo 2 CALIDAD DE

DATOS), y que influyen en la calidad de los datos. Esto incluye el análisis de técnicas y

actividades de limpieza que apliquen en el contexto del presente proyecto. Posteriormente, se

define un esquema para la base de datos destino de la migración, que permite corregir los

errores identificados sobre el esquema actual de la base. Se describe además cómo se lleva a

cabo la migración de los datos del experimento, junto con la ejecución de las limpiezas.

Finalmente, se detallan los resultados obtenidos a partir de la limpieza y migración de los datos,

por cada error detallado en el Capítulo 6: MEDICIÓN DE LA CALIDAD.

Se incluye también el trabajo realizado por María Eugenia Decia en la asignatura Módulo de

Taller, el cual consistió en la implementación de parte del programa de limpieza y migración.

8.1 TÉCNICAS DE LIMPIEZA APLICADAS

Se describen a continuación distintas técnicas y actividades para análisis y limpieza de datos

(introducidas en las Secciones 1.3, 1.4 y 1.5), enfatizando aquellas que resulten de utilidad y

aplican para el análisis y limpieza de los datos de este caso en particular.

La primera fase de todo proceso de limpieza es la Detección de Errores, la cual fue presentada

en el capítulo Capítulo 6 MEDICIÓN DE LA CALIDAD. En esta sección se retoma dicha fase,

presentando las técnicas aplicadas y como antecedente de la etapa de Corrección de Errores.

Detección de errores. Consiste en evaluar si los registros cumplen o no con ciertas

condiciones previamente especificadas. Las técnicas que se describen a continuación son

algunas de las aplicadas para la detección de errores.

o Data editing (detección de inconsistencias). La aplicación de esta técnica consiste

en la definición de reglas de consistencia, más específicamente, reglas de integridad

intra-relación e integridad referencial.

Dentro de esta técnica se incluye la detección de los tipos de errores Reglas de

integridad intra-relación, Valor único y Referencia inválida.

o Detección de datos incompletos (valores nulos). Mediante la ejecución de consultas

SQL, se detectan cuáles son los datos que contienen nulos pero que deberían

contener un valor distinto de vacío.

Dentro de esta técnica se incluye la detección de los tipos de errores Valor nulo y

Clasificación de defectos.

o Detección de anomalías. Esta técnica consiste en identificar casos “extraños” (o

anómalos) que será necesario corregir. Esto puede realizarse, por ejemplo,

Page 71: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

66

estableciendo rangos o definiendo referenciales a los cuales los valores de ciertos

campos deben pertenecer.

Luego de identificadas las anomalías, es necesario decidir si corresponden a datos

correctos de sucesos de la realidad (generalmente poco comunes), ó si corresponden

a datos incorrectos y deben ser corregidos.

Dentro de esta técnica se incluye la detección de los tipos de errores Valor Fuera de

rango y Valor fuera de referencial.

o Estandarización. Debido a que las mediciones realizadas indican que no hay errores

de estandarización en los datos, no se aplican técnicas de limpieza en este caso. Se

incluye aquí la detección del tipo de error Estandarización.

o Integración de datos. Debido a que no se llevó a cabo integración de datos de

distintas fuentes en la base bajo estudio, no se aplican técnicas de este tipo.

o Identificación de Objetos. Se identifican los registros que hacen referencia al mismo

objeto de la realidad (duplicación), y se realiza la limpieza (unificación)

correspondiente. Se identifican además aquellos objetos que aparecen repetidos

pero con distintos datos (contradicción). Vale destacar que el caso correspondiente

a registros de defecto que representan a un mismo defecto en el código, no se

analiza en el marco del presente proyecto.

Dentro de esta técnica se incluye la detección de los siguientes tipos de errores:

Registro duplicado y Registro contradictorio.

Corrección de errores. Esta es la última fase del proceso de limpieza, y es aquella en la cual

se establecen las acciones a llevar a cabo para la corrección de los errores que fueron

detectados durante el análisis de los datos. A continuación se presentan algunas de las

técnicas a utilizar.

o Definición de transformaciones de datos y reglas de mapeo: se utilizan sentencias

SQL y funciones programadas en Java para llevar a cabo las limpiezas automáticas.

o Corrección de inconsistencias. Para cada caso particular de inconsistencia, la

acción correctiva a tomar será distinta. Se incluye aquí la limpieza de los errores

identificados a partir de la aplicación de la técnica data editing.

o Corrección de datos incompletos (valores nulos). Es necesario tomar una acción

correctiva para los valores nulos detectados. Algunas estrategias posibles son:

No hacer nada: permanecer con valor nulo.

Asignar un valor por defecto a todos valores nulos.

Estudiar los casos uno a uno para intentar identificar las causas de su

incompletitud, y encontrar su valor correcto siempre que sea posible.

Se incluye aquí la limpieza de los errores identificados a partir de la aplicación de la

técnica detección de datos incompletos.

o Corrección de anomalías. Resulta necesario establecer, siempre que sea posible,

cuál fue la causa de cada anomalía detectada (ya sea que el valor fue mal medido o

mal ingresado en la base, que corresponde a una “muestra” distinta a la de todos los

demás, ó es correcto y simplemente corresponde a algún suceso inusual de la

Page 72: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

67

realidad). A partir de la identificación de las causas, es posible determinar las

acciones correctivas que se llevarán a cabo en consecuencia.

Se incluye aquí la limpieza de los errores identificados a partir de la aplicación de la

técnica detección de anomalías.

o Obtención de nueva información. Esta técnica se lleva a cabo mediante la

realización de consultas concretas a los sujetos y responsables del experimento. De

esta manera, es posible limpiar y actualizar ciertos datos que hayan sido

previamente identificados como candidatos a contener errores. Las consultas se

realizan mediante email (el detalle de estas consultas se encuentran en el Anexo E –

Consulta a Sujetos).

También se realiza la comparación de los valores candidatos a contener errores, con

planillas utilizadas por los sujetos para el registro de los defectos (en paralelo a la

herramienta Grillo). Vale destacar que no se cuenta con la totalidad de las planillas,

y las mismas no contienen toda la información requerida.

Dentro de esta técnica se incluye la limpieza de los tipos de errores Valor fuera de

rango, Registro inexistente, Valor nulo y Reglas de integridad intra-relación.

Es importante mencionar aquí que todos los errores que se resuelven mediante esta

técnica deberán ser limpiados de manera manual, ya que corresponden a casos

particulares de limpieza. Esto es, dependiendo de cada valor erróneo en particular,

la limpieza a aplicar será distinta (no resulta posible su automatización).

8.2 DISEÑO DE LA BASE DE DATOS DESTINO

A partir de un estudio detallado del diseño de la base de datos de la herramienta Grillo, es

posible identificar errores en el mismo que se traducen en errores en los datos. Por este motivo,

es necesario definir un nuevo diseño que corrija estos errores, y que será el esquema destino

para la migración de datos a llevar a cabo.

A continuación se detallan los errores que fueron identificados sobre el diseño del esquema de

la base de datos.

En la realidad planteada, cada defecto hallado en el código es categorizado según dos

taxonomías: IBM y Beizer. En el diseño actual de la base, existe una tabla

Registro_Defecto que representa un defecto en el código, y otra tabla

Registro_Taxonomía que representa una clasificación dentro de alguna taxonomía. La

relación entre Registro_Taxonomía y Registro_Defecto es N a 1. Luego, esto puede

producir varios errores en los datos de la base. Por ejemplo, puede suceder que un

defecto esté clasificado más de una vez en una misma taxonomía, o al contrario, que

solamente esté clasificado en una de ellas. En este caso podría pensarse en un diseño

que se ajuste mejor a la realidad y que deje menos margen de error a los datos de la

base.

En resumen, el diseño debe asegurar que una tupla de la tabla Registro_Defecto esté

asociada a exactamente tres tuplas de la tabla Registro_Taxonomía (uno para Beizer,

uno para IBM Qualifier y otro para IBM Defect Type).

La representación de las diferentes categorías dentro de cada taxonomía se realiza

mediante las tablas Categoria y ValorCategoria. Con respecto a la clasificación de un

Page 73: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

68

defecto dentro de la taxonomía jerárquica de Beizer, interesa conocer solamente la

categoría más específica a la que se logra llegar al clasificar. Según el esquema actual,

sin embargo, puede darse el caso de que un defecto en el código esté asociado a más de

una categoría dentro de una misma taxonomía.

Según el esquema actual de la base de datos, es posible que un mismo archivo

pertenezca (esto es, esté asociado) a más de un software. Este hecho ocasiona la

existencia de contradicciones en los datos, generando errores del tipo Registro

contradictorio (específicamente sobre la tabla Archivo_Software). La contradicción

radica en que en la realidad planteada, dos softwares distintos no pueden tener ningún

archivo en común.

Se omite la definición de la restricción not null y unique sobre ciertos atributos, así

como la definición de determinadas foreign keys, las cuales es necesario considerar en

el nuevo esquema definido. El detalle de estos errores se describen en los tipos de

errores Valor nulo, Valor único y Referencia inválida respectivamente.

Se presenta en la Figura 3 el esquema de la base de datos destino, que corrige los errores recién

mencionados.

Page 74: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

69

Software

PK id

nombre

descripcion

Estructura

PK id

nombre

descripcion

Perfil

PK id

nm_perfil

descripcion

Registro_Defecto

PK id

fk_tipo_id

fk_experimento_id

fk_archivo_id

fk_estructura_id

linea

descripcion

linea_estructura

time_deteccion

fk_defect_type

fk_qualifier

fk_beizer

Experimento

PK id

fk_ejecutor_id

fk_creador_id

fk_software_id

fk_tecnica_id

nombre

fecha_ini

fecha_fin

time_casos

time_ejecucion

Tecnica

PK id

nombre

descripcion

tipo

Archivo

PK id

nombre

nombre_usu

fecha

fk_software_id

Tipo_Defecto

PK id

nombre

descripcion

Usuario

PK id

nombre

nm_usuario

apellido

email

password

habilitado

fk_perfil_id

IBM_Defect_Type

PK id

categoria

Taxonomia_Beizer

PK id

categoria

fk_categoria_padre

codigo

IBM_Qualifier

PK id

categoria

Figura 3 – Esquema de la base de datos destino

Page 75: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

70

La Tabla 12 muestra una breve descripción de cada tabla contenida en el nuevo esquema

definido.

Tabla 12 – Descripción de las tablas del nuevo esquema

Nombre Tabla Descripción Tabla

Archivo Representa un archivo que contiene código fuente (.java).

Cada archivo pertenece a un único Software.

Software Representa un software (conjunto de clases, métodos, etc.) que será sometido a

verificación.

Usuario Representa un usuario que hará uso de la herramienta.

Perfil Representa el perfil que contiene el usuario que utiliza la herramienta.

Experimento Representa un experimento a ejecutar y su información asociada.

Técnica Representa una Técnica de Verificación. Cada registro de Experimento tiene

una única Técnica asociada.

Registro_Defecto Representa un defecto hallado en el código por un usuario Verificador.

Estructura Representa los tipos de estructuras que pueden existir en el código fuente. A

cada registro de la tabla Registro_Defecto se le asocia un único registro de la

tabla Estructura.

Tipo_Defecto Representa si el defecto está contenido o no en una estructura. A cada registro

de la tabla Registro_Defecto se le asocia un único registro de la tabla

TipoDefecto.

Taxonomia_Beizer Representa la taxonomía de Beizer. Implementa la jerarquía utilizando una

clave foránea sobre sí misma (fk_categoría_padre), la cual apunta al “padre”

en la jerarquía. Cada registro representa entonces una clasificación de defecto

en el código según la taxonomía mencionada.

A cada registro de la tabla Registro_Defecto se le asocia un único registro de la

tabla Taxonomia_Beizer.

IBM_Qualifier Cada registro de esta tabla representa un valor de la categoría Qualifier (de

Closer Section), dentro de la taxonomía IBM de defectos en el código. A cada

registro de la tabla Registro_Defecto se le asocia un único registro de la tabla

IBM_Qualifier.

IBM_DefectType Cada registro de esta tabla representa un valor de la categoría Defect Type (de

Closer Section), dentro de la taxonomía IBM de defectos en el código. A cada

registro de la tabla Registro_Defecto se le asocia un único registro de la tabla

IBM_DefectType.

8.3 PLANIFICACIÓN DE LA LIMPIEZA Y MIGRACIÓN

Por una parte, es necesario ordenar la ejecución de la limpieza de los distintos errores, ya que

existen dependencias en los datos que hay que considerar. Por este motivo, se diferencian tres

etapas que deben realizarse de manera secuencial. El orden en el cual se limpien los errores que

forman parte de una misma etapa no resulta relevante (no así para el orden de ejecución entre

etapas). El detalle acerca de qué errores se incluyen en cada etapa se encuentra en el Anexo D –

Detalle de la Migración y Limpiezas sobre los Datos.

Por otra parte, el orden establecido para llevar a cabo la migración de los datos comienza desde

las tablas que no contienen referencias a otras, siguiendo con aquellas que referencian a tuplas

ya cargadas, y así sucesivamente.

En resumen, cada error será limpiado durante la ejecución de la migración de las distintas

tablas, considerando las etapas de la limpieza y el orden de la migración previamente definidos.

Page 76: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

71

8.4 EJECUCIÓN DE LIMPIEZAS Y MIGRACIÓN

Tanto la migración de los datos como la limpieza de la mayoría de los errores se realizan de

manera automática. En esta sección se describe para cada tabla de la base origen a migrar, en

qué tabla de la base destino se almacenarán sus datos. Se mencionan también las modificaciones

realizadas sobre las estructuras de las tablas (cuando corresponda) y las limpiezas sobre los

datos que se realizan de manera automática durante la migración de cada una de ellas. Para

aquellos errores cuya limpieza no es posible automatizar, se establece la forma manual en la

cual serán limpiados al finalizar el programa de limpieza y migración.

La descripción de la aplicación implementada para ejecutar la limpieza y migración de los datos

se encuentra en el Capítulo 9 APLICACIÓN.

La Figura 4 muestra el diagrama que representa la migración tabla por tabla desde la base de

datos origen hacia la destino, en el mismo orden en que se migran (de arriba hacia abajo). Se

incluyen también las limpiezas automáticas que se aplican durante la migración, y aquellas

manuales al finalizar la misma. La numeración de los errores corresponde a la establecida en el

Anexo A – Catálogo de Errores. Se resaltan las de los errores que fueron descriptos en el

Capítulo 6 MEDICIÓN DE LA CALIDAD en color anaranjado. Las tablas que intervienen en la

limpieza y migración de esos errores se muestran en color gris.

Page 77: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

72

Base de Datos Origen Base de Datos Destino

Tipo_Defecto Tipo_Defecto

Registro_Defecto

Registro_Taxonomia

Registro_Defecto

Perfil Perfil

Estructura Estructura

Software Transformación 1 Software

Archivo

Archivo_Software Archivo

Tecnica Tecnica

Usuario Usuario

Experimento Experimento

Categoria

Valor_Categoria

IBM_Defect_Type

IBM_Qualifier

Taxonomia_Beizer

Limpieza

Error 53Transformación 2

Transformación 3

Transformación 4

Transformación 5Limpieza

Error 26

Transformación 6

Transformación 7

Transformación 8

Limpieza

Error 26

Limpieza

Error 49

Limpieza

Errores 26,

34, 41, 48, 51,

54, 55

Limpiezas

manuales:

Errores 3,

4, 5, 53

Limpiezas

manuales:

Error 12

Limpiezas

manuales:

Errores 33.

36, 43

Valor fuera de

referencial en el

atributo nombre

de la tabla

Categoria

Referencia

inválida en el

atributo

registro_id

Referencia inválida en el

atributo registro_id

Registro_Taxonomía

contradictorio para la

taxonomía IBM

Registro_Taxonomía

contradictorio para la

taxonomía Beizer

Valor fuera de

rango en el

atributo

time_deteccion

Valor fuera de

referencial en el

atributo nombre de

la tabla Categoria

Valor fuera de

referencial en el

atributo nombre de la

tabla Categoria

Valor nulo en el atributo

time_casos para

técnicas dinámicas

Figura 4 – Migración y limpieza de los datos

Page 78: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

73

8.4.1 Migración y limpiezas automáticas

A continuación se presenta la migración de los datos tabla por tabla, así como los errores que

son limpiados de manera automática durante la misma. Se detallan las limpiezas de los errores

que fueron previamente presentados (Capítulo 6: MEDICIÓN DE LA CALIDAD). La forma en

que se limpian todos los errores se encuentra en el Anexo D – Detalle de la Migración y

Limpiezas sobre los datos.

Las tablas Perfil, Estructura, Tipo_Defecto y Tecnica se migran sin sufrir modificaciones a las

tablas del mismo nombre de la base destino.

La tabla Software se migra a la tabla del mismo nombre de la base destino, llevando a cabo la

Transformación 1. Esta transformación consiste en la eliminación del campo total_defectos,

debido a que el mismo no es utilizado.

Las tablas Archivo y Archivo_Software se migran a la tabla Archivo de la base destino, llevando

a cabo la Transformación 2. Esta transformación consiste en las siguientes modificaciones sobre

la estructura de la tabla Archivo:

Se elimina la restricción unique sobre el campo nombre, ya que pueden existir distintos

archivos que tengan el mismo nombre.

Se elimina el campo codigo, ya que el mismo se encuentra vacío en todos los casos (no

es utilizado).

Se agrega el campo software_id, el cual corresponde a una clave foránea a la tabla

Software. De esta manera, la relación entre Archivo y Software es ahora N a 1 (deja de

ser N a N). La tabla Archivo_Software es consultada con el fin de actualizar el campo

software_id por cada archivo migrado.

La tabla Usuario se migra a la tabla del mismo nombre de la base destino, llevando a cabo la

Transformación 3. Esta transformación consiste en la definición de la restricción not null sobre

el campo perfil_id.

La tabla Experimento se migra a la tabla del mismo nombre de la base destino, llevando a cabo

la Transformación 4. Esta transformación consiste en las siguientes modificaciones sobre su

estructura:

Definición de la restricción not null sobre los campos time_ejecucion y nombre.

Definición de la restricción unique sobre el campo nombre.

Las tablas Categoria y Valor_Categoria son migradas a las nuevas tablas IBM_Defect_Type,

IBM_Qualifier y Taxonomia_Beizer de la base destino a través de las Transformaciones 5, 6 y 7

respectivamente. Dichas transformaciones consisten en migrar solamente las tuplas de la tabla

Valor_Categoria, filtrando por la categoría correspondiente (dependiendo de la tabla que se esté

cargando). El detalle de estas transformaciones se encuentra en el Anexo D – Detalle de la

Migración y Limpiezas sobre los Datos.

Durante la migración de estas tablas es necesario considerar la limpieza del error Valor fuera de

referencial en el atributo nombre de la tabla Categoria. Se distinguen dos aspectos. Por un

lado, se deben eliminar todas las tuplas de la tabla Categoria que corresponden a valores que se

encuentran fuera del referencial definido como válido. La creación las dos nuevas tablas

IBM_Defect_Type y IBM_Qualifier, las cuales corresponden a las únicas categorías válidas para

la taxonomía de IBM, no permite que se almacene la clasificación de ninguna otra. Por otro

Page 79: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

74

lado, es necesario eliminar aquellos registros que referencien a alguno de los valores que se

encuentran fuera del referencial. Esto se describe durante la migración de la tabla

Registro_Defecto.

Las tablas Registro_Defecto y Registro_Taxonomia se migran a la tabla Registro_Defecto de la

base destino. Durante la migración de la tabla Registro_Defecto se lleva a cabo la

Transformación 8. Esta transformación consiste en las siguientes modificaciones sobre la

estructura de la tabla Registro_Defecto:

Definición de la restricción not null sobre los campos tipo_id, línea y time_deteccion.

Definición de restricciones de clave foránea hacia cada una de las nuevas tablas

IBM_Defect_Type, IBM_Qualifier y Taxonomia_Beizer.

Además, durante esta misma transformación se almacena la información acerca de la

categorización de un defecto según las taxonomías de IBM y Beizer. Estos datos se obtienen a

partir de las tablas Categoria, Valor_Categoria, Registro_Defecto y Registro_Taxonomia,

como se muestra en la Figura 4. El detalle de estas transformaciones se encuentra en el Anexo D

– Detalle de la Migración y Limpiezas sobre los Datos.

Durante la migración de estas tablas es necesario considerar la limpieza de los siguientes

errores:

Valor fuera de referencial en el atributo nombre de la tabla Categoria

Durante la migración de las clasificaciones de los registros de defectos para la

taxonomía de IBM, se consideran solamente aquellas que correspondan a las categorías

Defect Type y Qualifier. Los datos correspondientes a todas aquellas clasificaciones que

sean distintas a las recién mencionadas no serán migrados.

Regla sobre el atributo time_deteccion para técnicas estáticas

En este caso (verificación utilizando técnicas estáticas), el tiempo de detección de un

defecto es 0, ya que el defecto se identifica en el código mismo y no a través de una

falla al utilizar el software. La forma de limpiar este error consiste en consultar al

usuario del programa de limpieza y migración entre dos opciones: migrar el valor

almacenado en la base bajo estudio, ó ingresar el valor cero en el campo

correspondiente al tiempo de detección.

Referencia inválida en el atributo registro_id

La forma de limpiar este error consiste en no migrar a la base destino aquellas tuplas de

la tabla Registro_Taxonomía que contienen una referencia inválida en el campo

registro_id. Esto se debe a que las tuplas de Registro_Defecto contienen la información

más relevante de un defecto, por lo que carece de sentido contar con tuplas de la tabla

Registro_Taxonomia que no estén asociados a ningún registro de defecto válido.

Para ello, toda tupla que contenga una referencia inválida en el registro de defecto no

será migrada a la base de datos destino.

Registro_Taxonomía duplicado para la taxonomía IBM

Para limpiar este error, se eliminan las N-1 tuplas que se encuentren duplicadas (siendo

N la cantidad de tuplas iguales de la tabla Registro_Taxonomia que existen para una

Page 80: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

75

determinada tupla de la tabla Registro_Defecto), siempre manteniendo el registro

“original”.

Para ello, se migra solamente una de las categorizaciones en caso de que se encuentren

duplicados (mismo registro defecto y misma categoría).

Registro_Taxonomía contradictorio para la taxonomía Beizer

En este caso es necesario definir una única tupla de la tabla Registro_Taxonomia (de

entre las contradictorias) que permanecerá asociada al registro de defecto. Las demás

tuplas son descartadas.

Para ello, se consulta al usuario del programa de limpieza y migración, quien debe

seleccionar una única clasificación para cada defecto involucrado, de entre el conjunto

de clasificaciones contradictorias.

8.4.2 Limpiezas manuales

Luego de finalizado el programa de limpieza y migración, se llevan a cabo las limpiezas

manuales directamente sobre la base de datos origen. Los siguientes errores deben ser limpiados

de esta manera:

Valor fuera de rango en el atributo time_deteccion

Valor nulo en el atributo time_casos para técnicas dinámicas

Para el caso del error Valor fuera de rango en el atributo time_deteccion, el primer paso para la

limpieza consiste en conocer (siempre que sea posible) si realmente existe un error en los datos,

y en caso de ser así determinar cómo corregirlo. Para ello se llevan a cabo las siguientes

actividades:

Consultas a los sujetos que formaron parte del experimento mediante el envío de mails,

para conocer si creen o recuerdan que existe o no un error en los datos (el detalle de

estas consultas se encuentran en el Anexo E – Consulta a Sujetos).

Comparación de los valores que se encuentran fuera de rango con planillas utilizadas

por los sujetos, donde se registraron los datos del experimento y los defectos detectados

(en paralelo al registro en la herramienta Grillo).

A continuación, se actualiza (esto es, se corrige) el valor de la base con el de la planilla de

registro de defectos solamente en el siguiente caso:

el valor de la planilla es distinto al ingresado en la herramienta, se encuentra dentro del

rango definido y la respuesta del sujeto establece que probablemente existe un error en

el valor ingresado.

Por otra parte, se mantiene el mismo valor de la base origen (esto es, no se realiza corrección)

cuando ocurre alguna de estas situaciones:

el valor de la planilla es el mismo valor que el de la base,

la respuesta del sujeto establece que el valor ingresado es correcto,

no se cuenta con las planillas,

la respuesta del sujeto establece que probablemente existe un error en el dato, pero no se

conoce con certeza cuál debería ser el valor correcto para dicho dato.

Page 81: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

76

Para el caso del error Valor nulo en el atributo time_casos para técnicas dinámicas, se actualiza

el valor de la base con el de la planilla de registro de defectos siempre que se encuentre el valor

faltante. En caso contrario, se consulta a los responsables del experimento por el dato, ya que

pueden tener conocimiento del motivo de alguno de los errores así como de su forma de

corrección.

8.5 RESULTADOS OBTENIDOS

En la presente sección se detallan los resultados obtenidos a partir de la limpieza y migración de

los datos, por cada error descripto anteriormente. El resultado de la limpieza de todos los errores

para los cuales se hallaron tuplas erróneas se encuentran en el Anexo F – Resultado Detallado

de la Limpieza.

Valor fuera de rango en el atributo time_deteccion

Se detectaron un total de 21 tuplas erróneas de la tabla Registro_Defecto como resultado de la

medición de este error. Los resultados obtenidos a partir de la limpieza son los siguientes.

o Para 9 registros, los sujetos establecen que el tiempo registrado es el correcto

(recordar que las tuplas encontradas por este error son sólo candidatas a contener

errores). Dentro de esos 9 registros, 4 de ellos pudieron ser comparados con las planillas

de registros de defectos, comprobando en todos los casos que el tiempo ingresado en la

herramienta coincide con el tiempo registrado en la planilla. Estos registros no serán

modificados (permanecerá el valor original), al comprobarse la no existencia de errores

en los mismos.

o Para 3 registros, el sujeto responde con el envío de la planilla, no estableciendo si

cree que existe o no un error. Se comprueba que el tiempo ingresado en la herramienta

coincide con el tiempo registrado en la planilla. Por lo tanto, estos registros no serán

modificados.

o Para 2 registros, la respuesta del sujeto establece que no recuerda si el tiempo

registrado es correcto, y tampoco se cuenta con la planilla correspondiente. Estos

registros no serán modificados (permanecerá el valor original), debido a que no es

posible confirmar si contienen errores.

o Para 3 registros, los sujetos establecen que efectivamente existe un error en el

tiempo registrado. Sin embargo, no es posible especificar el tiempo exacto invertido en

la detección de dichos defectos debido a que no se cuenta con la planilla

correspondiente. Por lo tanto, estos registros no pueden ser modificados, a pesar de que

se comprueba la existencia de errores en sus datos.

o Finalmente, los 4 registros restantes serán limpiados. Se comprueba, mediante la

comparación de los valores ingresados en la herramienta con la planilla correspondiente,

que efectivamente existe un error. En este caso, el sujeto no establece si cree que existe

un error o no. Se aprecia que la causa del error para 3 de ellos se debe a que se ingresa

el valor de la línea de código en el campo correspondiente al tiempo de detección (se

puede deber a un error de distracción). En el registro restante, existe diferencia de un

dígito entre el valor registrado y la planilla (se puede deber a un error de tipeo). Para

todos los casos, la limpieza consiste en actualizar el valor del campo

Registro_Defecto.time_deteccion con el de la planilla correspondiente.

Page 82: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

77

En conclusión, se comprueba la existencia de errores para la tercera parte (7 tuplas de un total

de 21) de las tuplas resultantes de la medición del presente error, logrando aplicar limpieza

manual para 4 de estas (19%).

Vale destacar que 3 de los 4 registros que fueron limpiados corresponden a valores que se

alejan más notoriamente del rango definido (tal como se muestra en la Tabla 5 del Capítulo 6),

incluyendo aquellos cuyo valor es casi seis veces mayor en comparación al máximo definido.

Valor fuera de referencial en el atributo nombre de la tabla Categoria

Como resultado de la limpieza de este error, existen 6 tuplas de la tabla Categoria

correspondientes a la taxonomía IBM que no son consideradas durante la migración (Section,

Actividad, Trigger, Impacto, Age y Source). Por otra parte, tampoco son consideradas ninguna

de las 3721 clasificaciones de registros de defectos que corresponden a las categorías antes

mencionadas.

Valor nulo en el atributo time_casos para técnicas dinámicas

Se detectan un total de 3 tuplas de la tabla Experimento que contienen este error.

Para 2 de ellas, se consulta con los responsables de la ejecución del experimento, estableciendo

que corresponden a experimentos inválidos (ya sea porque no se culminaron o porque fueron

reemplazados por otro).

Para el caso restante se detecta que existe un valor faltante, el cual se obtiene a partir de la

planilla donde se registra el tiempo de actividades del sujeto en cuestión.

Vale destacar que las 3 tuplas que contienen este error coinciden con lo resultantes del error

Valor nulo en el atributo time_ejecucion. Por lo tanto, se aplican las mismas limpiezas para

ambos errores.

Regla sobre el atributo time_deteccion para técnicas estáticas

Se detectan un total de 90 tuplas de la tabla Registro_Defecto que contienen este error.

De acuerdo a la decisión que toma el usuario del programa de limpieza y migración, el valor del

tiempo de detección de cada uno de los registros de defectos en cuestión se modificará por 0 ó

se mantendrá el original.

Referencia inválida en el atributo registro_id

Se detectan 472 tuplas de la tabla Registro_Taxonomia que contienen este error, los cuales son

limpiados en su totalidad al no ser migrados.

Registro_Taxonomía duplicado para la taxonomía IBM

Como resultado de la limpieza de este error se eliminan 1534 tuplas de la tabla

Registro_Taxonomia. Como consecuencia a ello, existen 171 tuplas de la tabla

Registro_Defecto que ahora contienen solamente una única clasificación, eliminando aquellas

que se encontraban duplicadas.

Registro_Taxonomía contradictorio para la taxonomía Beizer

Como resultado de la limpieza de este error se eliminan 43 tuplas de la tabla

Registro_Taxonomia. Como consecuencia a ello, existen 22 tuplas de la tabla Registro_Defecto

que ahora contienen solamente una única clasificación, eliminando aquellas que se encontraban

Page 83: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

78

contradictorias. La elección de la clasificación que queda asociada al registro de defecto la

realiza el usuario del programa de limpieza y migración.

8.6 RESUMEN

La Tabla 13 muestra por cada error que fue identificado sobre los datos y cuya medición es

distinta de vacío, si se lleva a cabo su limpieza. En caso positivo, se indica si la misma es

automática (mediante programación), semiautomática (incluyendo consultas al usuario) o

manual (mediante la ejecución de un script). Finalmente se detalla la cantidad de tuplas que

contienen errores y la cantidad que fueron limpiadas.

Tabla 13 – Limpieza de los errores

Tipo de error Objeto Limpieza

Cantidad de

objetos con

error

Cantidad de

objetos

limpiados

Valor fuera de

rango

RegistroDefecto.time_detecc

ion

Manual 21 7

RegistroDefecto.linea Manual 8 4

RegistroDefecto.linea_estru

ctura

Manual 3 2

Registro

inexistente

Archivo Manual 1 1

Valor fuera de

referencial

Categoria.nombre /

Registro_Taxonomia

Automática 3721 3721

Valor nulo

Experimento.time_ejecucion Manual 3 3

RegistroTaxonomia.taxonom

ia_id

NO 1324 1324

RegistroTaxonomia.valor_c

ategoria_id

NO 2 2

Experimento.time_casos

(técnica dinámica)

Manual 3 3

Clasificación de

defectos

Registro_Defecto (para

IBM)

NO 3 0

Regla de

integridad intra-

relación

RegistroDefecto.time_detecc

ion

Semiautomática 90 Depende de la

decisión del

usuario

Experimento.time_ejecucion Manual 2 1

Referencia

inválida

RegistroTaxonomia.registro

_id

Automática 472 472

ValorCategoria.categoria_p

adre

Automática 19 19

Registro

duplicado

RegistroTaxonomia (para

IBM)

Automática 1705 1705

Registro

contradictorio

Archivo_Software Manual /

Automática

4 4

RegistroTaxonomia (para

IBM)

Semiautomática 145 145

RegistroTaxonomia (para

Beizer)

Semiautomática 65 65

Page 84: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

79

9 APLICACIÓN

En este capítulo se describe brevemente la aplicación implementada para ejecutar la limpieza y

migración de los datos. Incluye información técnica (ambiente, herramientas utilizadas,

implementación), así como un breve manual de usuario.

9.1 INFORMACIÓN TÉCNICA

El programa que implementa la limpieza y migración de los datos bajo estudio es una aplicación

Java de escritorio. Se utilizó la versión 1.6 de Java, y Eclipse 3.4 como entorno de desarrollo

(IDE), incluyendo el plug-in VisualSwing para la construcción de la interfaz gráfica. El acceso a

los datos (tanto de la base de datos origen como destino) se realiza a través del sistema gestor de

base de datos HSQLDB.

En la Tabla 14 se observan las principales características técnicas (ambiente y herramientas) del

programa construido.

Tabla 14 – Características técnicas

Ambiente Herramientas

Ecplipse 3.4

Java 1.6 VisualSwing plug-in

HSQLDB Windows XP, Vista

En cuanto a la implementación, se definieron las siguientes clases:

Inicio: Esta clase implementa la ventana principal.

TipoError: Esta clase es responsable de ejecutar las mediciones y crear el registro de

todos los errores que se encuentren en la base de datos origen. Es decir, crea todas las

tablas de registros incluyendo el catálogo de errores, realiza las mediciones definidas, y

carga, a partir del resultado de las mediciones, todas las tablas donde se almacena la

metadata sobre los errores de los datos bajo estudio.

MigracionDatos: Esta clase implementa la limpieza y migración de los datos. Se

cargan todas las tablas de la base destino a partir de los datos limpios de la base origen

(cada limpieza se aplica durante la migración de la tabla correspondiente). En caso de

que se requiera la decisión del usuario, se lo consulta a través de ventanas emergentes.

ValorCategoria y ValorCategoriaCandidatos: Clases auxiliares para la limpieza de

los registros de defectos que poseen clasificaciones contradictorias.

9.2 MANUAL DE USUARIO

El uso de la aplicación es muy sencillo. Se asume que el usuario tiene perfil técnico y posee

conocimiento de los datos a procesar. La ventana principal contiene cuatro browsers para

seleccionar:

Page 85: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

80

Ubicación del esquema origen: Se selecciona un directorio que debe contener los archivos

esquemaorigen.script y esquemaorigen.properties, correspondientes a la base de datos

HSQLDB origen.

Ubicación del esquema destino: Se selecciona un directorio que debe contener los archivos

esquemadestino.script y esquemadestino.properties, correspondientes a la base de datos

HSQLDB destino.

(opcional) Script SQL de limpiezas manuales a ejecutar sobre la base de datos destino:

Luego de realizada la limpieza y migración automática, puede ser necesario realizar

correcciones “manuales”. En caso de seleccionar un archivo en este browser, el

programa ejecuta todas las sentencias SQL especificadas en dicho archivo sobre la base

de datos destino.

(opcional) Archivo de log: Si se desea generar un log de las operaciones realizadas durante

la ejecución del programa, se debe indicar en este browser el archivo correspondiente al

log.

Para comenzar con la migración se debe presionar el botón “Comenzar Migración”, tal como se

muestra en la Figura 5.

Figura 5 – Ventana de Inicio

Para algunos procesos de limpieza “semi-automáticos” es necesario indicarle al programa cómo

proceder en la corrección de los datos. En estos casos, se consulta al usuario a través de

ventanas emergentes. Se despliega la información relevante y el usuario decide entre las

opciones disponibles, luego presiona “Aceptar”. Estos casos se muestran en la Figura 6 y Figura

7.

Page 86: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

81

Figura 6 – Consulta a Usuario

Figura 7 – Consulta a Usuario

Page 87: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

82

Si la migración se completó con éxito se despliega el mensaje indicado en la Figura 8.

Figura 8 – Fin de Migración

En caso de que la migración no se haya completado con éxito, ya sea porque el usuario canceló

u ocurrió algún error durante la ejecución del programa o del script, se muestra en pantalla el

mensaje “Migración incompleta”, junto con la excepción que provocó la cancelación.

9.3 ADAPTACIÓN DEL PROGRAMA DE LIMPIEZA Y MIGRACIÓN

A OTROS EXPERIMENTOS

Una característica muy importante del programa de limpieza y migración es que su uso puede

generalizarse a otros experimentos similares, que utilicen la herramienta Grillo para el registro

de sus datos. En esta sección se detalla qué aspectos deben considerarse a la hora de aplicar el

programa en otro experimento.

9.3.1 Elementos particulares de cada experimento

A continuación se describen los elementos que pueden variar con cada experimento, y que es

necesario tener en cuenta para aplicar el programa de limpieza y migración:

Catálogo de errores (tabla reg_catalogo_errores): los errores identificados para este

caso de estudio pueden presentarse en cualquier otro experimento. El catálogo que crea

el programa contiene una gran cantidad de errores, identificados a partir de un detallado

análisis de los datos. Solamente será necesario modificar el mismo si se desea no

considerar algún error o por el contrario introducir uno nuevo. La forma de agregar un

nuevo error al catálogo consiste simplemente en introducir un nuevo registro en la tabla

reg_catalogo_errores.

Tablas de registro: Análogamente al punto anterior, los tipos de errores identificados

en los datos bajo estudio pueden presentarse en cualquier experimento similar. Son el

resultado de un estudio detallado de los datos, por lo que se cuenta con un amplio

conjunto de tipos de errores. De nuevo, las tablas de registro solamente deberían

modificarse si se desea no considerar algún tipo de error o por el contrario introducir

uno nuevo. La forma de crear nuevas tablas de registro es la misma para todos los casos,

la cual se detalla en el Capítulo 6: Registro de errores.

Tabla reg_cant_lineas: esta tabla indica la cantidad de líneas que posee cada archivo

fuente. Si los fuentes varían con el experimento, entonces el contenido deberá

actualizarse con la información correspondiente.

Mediciones y limpiezas manuales: Para cualquier limpieza manual que se requiera

realizar sobre los datos, el programa ofrece la posibilidad de ejecutar un script

Page 88: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

83

directamente sobre la base de datos destino, luego de realizadas todas las mediciones y

limpiezas automáticas. El contenido de este script depende de los casos particulares que

se identifiquen en cada experimento.

En el caso de las mediciones manuales, a modo de ejemplo, se registra en la tabla

reg_registro_inexistente la metadata correspondiente al tipo de error Registro

Inexistente. Este tipo de error fue medido y registrado de manera manual, esto es, se

identificó manualmente una tupla que representa un archivo que no existe en la realidad

y se insertó en la tabla mencionada. En cualquier otro experimento, para casos de

mediciones manuales se debe proceder de la misma manera que para el ejemplo

presentado.

Valores fuera de referencial: en caso de que se identifiquen nuevos referenciales, la

medición y limpieza de los datos se realizaría de la misma manera que para el presente

caso de estudio, pero utilizando los nuevos referenciales que sean definidos como

válidos.

En conclusión, resulta sumamente sencillo y práctico aplicar el programa de limpieza y

migración a otros experimentos similares, con ajustes menores como los que se mencionaron

anteriormente. Se puede ejecutar el programa sin realizar ninguna modificación, salvo para las

mediciones manuales. Las limpiezas manuales son opcionales, y complementan a las

automáticas por deberse a casos particulares que no es posible generalizar. En comparación con

las limpiezas manuales, las automáticas son las que eliminan la mayor cantidad de errores, los

cuales se corrigen durante la ejecución del programa de limpieza y migración.

Vale destacar que los errores identificados sobre los datos refieren tanto a la base de datos

particular de la herramienta Grillo, como a la ejecución de un experimento en sí. Debido a esto

último, existen ciertos tipos de errores que podrían ocurrir también en otra experiencia empírica

de las mismas características que la que aquí se describe, sin necesariamente utilizar la

herramienta Grillo.

Page 89: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

84

10 PREVENCIÓN DE ERRORES Y OPORTUNIDADES DE

MEJORA

Considerando los diversos tipos de errores que presentan los datos y sus causas, en este capítulo

se establecen alternativas para evitar que los mismos errores sucedan en futuros experimentos.

No se presenta aquí un análisis exhaustivo ni un detalle de cómo implementar mejoras en un

determinado experimento, sino pautas generales que pueden ser útiles.

10.1 SOBRE EL DISEÑO DE LA BASE DE DATOS Y LA

APLICACIÓN

Un correcto diseño de la base de datos es de suma importancia en cualquier sistema de

información. Además, es necesario considerar que los datos almacenados en la base de un

experimento serán luego el punto de partida de análisis estadísticos, estudios comparativos,

entre otros. Cualquier error en el diseño de la base, puede traducirse fácilmente en errores en los

datos (como se vio en el caso bajo estudio), distorsionando luego los resultados que se quieran

obtener a partir de los mismos. Es por esto que asegurar un correcto diseño de la base resulta

necesario, sino imprescindible. Es natural también, que luego de ejecutado un experimento, se

identifiquen varios aspectos a mejorar. El diseño de la base donde se recolectan resultados

puede y debe formar parte del ciclo de “refinamiento paso a paso” (donde se utiliza la

experiencia adquirida a través de sucesivos experimentos para diseñar y ejecutar los siguientes).

En el diseño de la base bajo estudio se detectan varios errores. Muchos de ellos se encuentran

relacionados con la omisión de ciertas restricciones, como ser not null, unique y foreing key (tal

como se detalla en los tipos de errores Valor nulo, Valor único y Referencia inválida

respectivamente).

En cuanto a otro tipo de reglas de integridad intra-relación, pueden definirse triggers a nivel de

la base y/o programar controles a nivel de la aplicación que no permitan a los usuarios generar

errores de este tipo. Dichas reglas se encuentran definidas en el tipo de error Reglas de

integridad intra-relación. Por otra parte, la definición de ciertos controles ya sea a nivel de base

o de aplicación en lo que respecta a la clasificación de defectos, evitaría la ocurrencia de errores

del tipo Clasificación de Defectos. Dichos controles no deberían permitir que un defecto sea

registrado sin ser clasificado según las categorías de interés (siempre y cuando la clasificación

sea realizada por el mismo Verificador que registra el defecto). Errores del tipo Estandarización

se evitarían fácilmente definiendo controles que no permitan el ingreso de valores con

decimales. Vale destacar que este control se encuentra actualmente implementado en la

herramienta Grillo.

Se identifican errores también en tablas pre-cargadas, ya que en algunos casos contienen valores

que no interesan. Por ejemplo, en las categorías dentro la taxonomía IBM, tal como se detalla en

el tipo de error Valor fuera de referencial. La correcta definición y validación de los valores que

deben contener dichas tablas, es una forma de prevenir la ocurrencia de este tipo de error.

Otros errores detectados corresponden al diseño de las entidades y sus relaciones. Existen dos

casos: la representación de un defecto y sus clasificaciones mediante la entidad

Registro_Taxonomia, y la representación de la relación entre un archivo y un software mediante

la entidad Archivo_Software. Estas relaciones no reflejan fielmente la realidad, permitiendo que

ocurran errores de contradicción y duplicados, como se observa en los tipos de errores Registro

Page 90: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

85

duplicado y Registro contradictorio. Modificaciones sobre el esquema de la base de datos

ayudan a prevenir algunos de estos errores, y/o mejorar la calidad de los datos almacenados.

Por otra parte, en caso de que se pueda definir con certeza un criterio que establezca cuándo dos

o más registros de defectos se encuentran duplicados (por ejemplo: misma línea, mismo archivo,

mismo sujeto), sería posible implementar controles sobre la aplicación que verifiquen este

hecho. Sin embargo, este criterio resulta complejo de definir. A modo de ejemplo, es posible

que exista más de un defecto en la misma línea del mismo archivo. Sumado a esto, errores del

tipo Defecto mal registrado podrían incurrir en una equivocación en los controles, al considerar

que dos defectos están duplicados cuando en realidad el error se encuentra en los datos

registrados.

En conclusión, el diseño de la base de datos a utilizar debe ser objeto de una fuerte revisión,

evaluando que todos los aspectos mencionados (restricciones, entidades, relaciones) reflejen

fielmente la realidad. De esta manera la calidad de los datos almacenados se verá sin dudas

beneficiada. Vale destacar que en el marco del presente proyecto se presenta un nuevo esquema

de base de datos, el esquema destino de la migración de datos, que considera y corrige todos los

aspectos antes mencionados.

10.2 SOBRE EL REGISTRO DE TIEMPOS DE ACTIVIDADES

Durante la ejecución del experimento bajo estudio, muchas de las actividades realizadas por los

verificadores requerían ser cronometradas y el tiempo insumido en cada una registrado, tiempo

de diseño de casos de prueba, tiempo de detección de un defecto, entre otros. Cada verificador

era responsable de medir sus tiempos y luego registrarlos, ingresando su valor a través de la

herramienta Grillo. Se identifica aquí una posible causa de varios errores en los datos, como ser

tiempos mal registrados (mal tipeados), mal medidos, y también registros de tiempos

inconsistentes (por ejemplo, tiempos de detección de defectos mayores a cero durante la

ejecución de una técnica de verificación estática). Estos errores forman parte de los tipos Valor

fuera de rango, Estandarización, Defecto mal registrado y Reglas de integridad intra-relación.

Una posible solución a estos errores, es incluir un cronómetro interactivo en la herramienta

utilizada para el registro (por ejemplo ofreciendo opciones de “comienzo”, “fin” y “pausa”). De

esta manera, cada verificador solamente debe indicar qué actividad está realizando y manipular

el cronómetro adecuadamente. Una vez finalizada la tarea, el tiempo medido quedaría

automáticamente registrado, evitando que el verificador lo ingrese desde el teclado y en

consecuencia los errores que ello podría ocasionar. En el caso de tiempos de detección de

defectos para técnicas estáticas, el cronómetro no estaría disponible y un cero se guardaría

automáticamente. Con esta alternativa, se uniformiza el registro de tiempos, se estandariza la

unidad de medida y se logra una mayor precisión.

Otro aspecto importante con respecto a los tiempos, es tener claramente definido qué es lo que

se debe medir. Por ejemplo, para el tiempo de detección de defectos, tener claro si el tiempo

invertido en estudio debe incluirse en el registro o no. Esto surge a partir de la respuesta de un

sujeto que es consultado respecto al valor del tiempo de detección de un defecto, que se

encuentra fuera del rango definido. En su respuesta, el sujeto establece haber incluido dentro de

este tiempo aquel dedicado en estudio (búsqueda en Internet más específicamente) del posible

defecto. En otro caso, la respuesta del sujeto establece que se incluye también el tiempo de

corrección del defecto junto con el de detección. Los verificadores no deberían tener dudas en

cuanto a si el tiempo utilizado en determinada tarea o actividad debe registrarse.

Page 91: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

86

10.3 OTRAS CONSIDERACIONES

Con respecto a otros errores que fueron identificados en los datos, existen ciertas pautas a tener

en cuenta que podrían ayudar a evitarlos en futuros experimentos. Tal es el caso del registro de

la línea de código en donde se identifica determinado defecto. Conociendo los archivos sobre

los cuáles van a trabajar los verificadores, resulta posible tener contabilizadas sus líneas

previamente. De esta manera, cuando se hace un registro de defecto para un archivo el número

de línea pueda ser verificado (evitando los errores del tipo Valor fuera de rango). Para el caso

de los defectos que no tienen una línea de código asociada, resultaría más adecuado poder

indicarlo de manera explícita, por ejemplo agregando un campo que indique si el defecto tiene

una línea asociada. De esta manera se evitan situaciones como la del experimento bajo estudio,

donde se indica que un defecto no tiene línea asociada ingresando determinados valores (0,

999*) en el campo línea de la tabla correspondiente.

Otro aspecto a tener en cuenta, son las clasificaciones de los defectos. Dependiendo de los

objetivos del experimento que se esté ejecutando, puede no interesar que los verificadores

realicen la clasificación de los defectos. Si este es el caso, hay dos opciones para evitar varios

errores relacionados a este punto. La primera es que luego de contar con todos los defectos que

los verificadores detectaron, el o los responsables del experimento clasifiquen los defectos

según su criterio. Otra opción es conocer de antemano los defectos que presentan los archivos

que se verifican durante el experimento, y tenerlos ya clasificados. Esta última opción puede ser

más costosa (ya que contar con la información correspondiente a todos los defectos en el código

fuente puede no resultar trivial y requiere cierto esfuerzo) pero permitiría evitar ciertos errores.

Se podría saber si se registró algún defecto que no existe, o si se registró de manera incorrecta, y

además conocer de qué tipo son los defectos que se encuentran (evitando errores del tipo

Registro inexistente y Defecto mal registrado). A pesar de que no es posible evitar

completamente la ocurrencia de estos errores, sí se puede mejorar la calidad de los datos

registrados.

En conclusión, cuanto mayor sea el control sobre el experimento (dependiendo también de sus

objetivos), mayor será la seguridad en que los datos registrados sean de buena calidad. Sin

embargo, es importante considerar que existen ciertos tipos de errores que, dadas las

características de toda experiencia empírica, no es posible solucionar (a modo de ejemplo,

errores de tipeo, de distracción o de concepto introducidos por los sujetos).

10.4 MEJORAS EN LA CALIDAD DE LOS DATOS

Teniendo en cuenta las pautas presentadas anteriormente, se presenta en esta sección un análisis

acerca del beneficio en la calidad de los datos en caso de implementar las mismas.

De un total de 55 errores identificados sobre la base de datos bajo estudio, es posible evitar la

ocurrencia de 38 de ellos mediante las estrategias planteadas anteriormente. Otros 7 quedarían

contemplados, su ocurrencia podría verse disminuida ocasionando una mejora en la calidad de

los datos. Por otra parte, existen 10 errores para los cuales habría que considerar otras formas de

prevención que escapan el alcance de este proyecto, ya que las presentadas en las secciones

anteriores no prevendrían su ocurrencia.

A continuación se presenta una discusión acerca de cuáles son los errores que se encuentran

dentro de cada categoría mencionada.

Errores que es posible evitar

Page 92: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

87

Del tipo Valor fuera de rango es posible prevenir los 2 errores sobre las líneas, al

establecer el rango al cual deben pertenecer estos valores (incluyendo como dato la

cantidad de líneas por archivo).

Los 16 errores correspondientes a Valor nulo, Valor único y Referencia inválida,

pueden ser prevenidos mediante la definición de nuevas restricciones en el esquema de

la base de datos. .

Los tipos de errores Reglas de integridad intra-relación, Clasificación de Defectos y

Estandarización, que involucran 12 errores diferentes, pueden evitarse mediante la

definición de triggers a nivel de la base y/o controles a nivel de la aplicación. El tipo de

error Estandarización también se previene con la inclusión de un cronómetro en la

herramienta, al asegurar que se registran todos los tiempos en la misma unidad de

tiempo, y con la misma precisión.

La ocurrencia de los 6 errores correspondientes al tipo Valor fuera de referencial se

previene mediante la correcta definición y validación de los valores que contienen las

tablas precargadas por parte de los responsables del experimento. Se evita de esta

manera que los valores de las celdas que se eligen de entre un conjunto (combos),

correspondan siempre a valores válidos.

El tipo de error Registro inexistente se puede prevenir mediante la comparación de los

registros con objetos de la realidad, siempre y cuando sea posible conocer cuáles son

dichos objetos. Para el caso de la tabla Archivo, resulta sencillo hacer esto (se poseen

los fuentes del experimento), por lo cual se puede prevenir este error.

La instanciación del tipo de error Registro contradictorio sobre la tabla

Archivo_Software se soluciona con el nuevo esquema de la base definido, al no permitir

que un mismo archivo se encuentre asociado a más de un software.

Errores contemplados (potencial mejora en la calidad de los datos)

Con respecto a la representación de los defectos y sus clasificaciones, es posible mejorar

la forma en que se representa esta realidad en el diseño de la base, evitando que cada

registro de defecto se encuentre asociado a una cantidad de tuplas mayor a las

estrictamente necesarias. Se requiere que cada registro de defecto se encuentre asociado

a exactamente 3 tuplas que representan su clasificación (IBM Defect Type, IBM

Qualifier y Beizer), tal como se refleja en el nuevo esquema definido. A modo de

ejemplo, en la base actual existen registros de defectos que poseen hasta 28 registros

taxonomía asociados. No es posible asegurar, sin embargo, que este nuevo esquema

prevenga la ocurrencia de los 4 errores del tipo Registro duplicado y Registro

contradictorio referentes a la clasificación de los defectos. Sí se puede establecer con

certeza que el nuevo esquema mejora y simplifica la forma en que esto se representa,

haciendo que el análisis de los datos resulte más sencillo al eliminar tuplas innecesarias.

Los 3 errores del tipo Valor fuera de rango sobre los tiempos, se contemplan mediante

la inclusión de un cronómetro a la herramienta. A pesar de que esta propuesta no

asegura su prevención (el cronómetro puede no ser utilizado correctamente), sin duda

mejoraría la calidad de los tiempos que son registrados.

Errores no contemplados

Page 93: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

88

Más allá de los controles que sean implementados, no es posible garantizar la

prevención de los 8 errores del tipo Defecto mal registrado que ocurren al registrar los

datos de un defecto (por ejemplo debido a errores de tipeo, de distracción o de

concepto), aunque sin duda dichos controles contribuirán en mejorar la calidad de los

datos. Bajo la suposición de que se conozca de antemano cuáles son los registros de

defectos que existen en el código verificado, tampoco resulta factible distinguir un error

del tipo Defecto mal registrado (donde algunos de los datos que se registran son

erróneos) con uno de Registro inexistente instanciado sobre tuplas de Registro_Defecto

(donde el defecto que se está registrando no existe en la realidad).

Tampoco es posible asegurar que cierto registro de defecto se corresponda o no con uno

de la realidad (tipo de error Registro inexistente), y por lo tanto no resulta posible la

prevención del tipo de error. Por el mismo motivo, no es posible asegurar la prevención

del tipo de error Registro duplicado sobre tuplas de Registro_Defecto. Dos defectos que

se registran con los mismos datos pueden corresponder a defectos en el código distintos,

si sucede que los datos fueron mal registrados.

Page 94: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

89

La Tabla 15 resume la discusión recién presentada. Se detallan cuáles son los tipos de errores

que podrían ser prevenidos, cuáles contemplados (no se pueden prevenir pero sí mejorar), y

cuáles no poseen solución. Se muestra además la posible solución (en caso que exista una), y la

cantidad de errores en cada caso.

Tabla 15 – Tipos de errores evitables, contemplados y no contemplados

Tipos de errores Cantidad de

errores por

tipo de error

Solución Cantidad

de errores

total

EVITABLES

Valor fuera de rango Líneas (2) Control incluyendo cantidad de

líneas por archivo

38

Estandarización Todos (5) Cronómetro en herramienta

Registro inexistente Archivo_Software

(1)

Comparación con fuentes de

cada Software

Valor fuera de

referencial

Todos (6)

Definición y validación de

valores en tablas pre-cargadas

Valor nulo Todos (10) Definición de restricciones not

null

Clasificación de

defectos

Todos (2) Controles a nivel de

base/aplicación

Reglas de integridad

intra-relación

Todos (5) Controles a nivel de

base/aplicación

Valor único Todos (3) Definición de restricciones

unique

Referencia inválida Todos (3) Definición de foreign keys

Registro

contradictorio

Archivo_Software

(1)

Cambio en esquema (relación

Archivo y Software)

CONTEM-

PLADOS

Valor fuera de rango Tiempos (3) Cronómetro en herramienta

7

Registro duplicado Registro_Taxono

mia para IBM y

Beizer (2)

Cambio en esquema

(clasificación de defectos)

Registro

contradictorio

Registro_Taxono

mia para IBM y

Beizer (2)

Cambio en esquema

(clasificación de defectos)

NO CONTEM-

PLADOS

Registro inexistente Registro_Defecto

(1)

10 Defecto mal

registrado

Todos (8)

Registro duplicado Registro_Defecto

(1)

Page 95: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

90

11 CONCLUSIONES Y TRABAJOS A FUTURO

Es fundamental que los datos resultantes de todo experimento gocen de buena calidad, ya que

estos son el punto de partida para análisis estadísticos, estudios comparativos y análisis de

datos. En este trabajo se presenta un caso de estudio en la calidad de los datos obtenidos a partir

de la ejecución de un experimento. El objetivo de dicho experimento consiste en conocer el

rendimiento y costo de diferentes técnicas de verificación unitaria. Los datos recolectados

durante el experimento se almacenaron en una base de datos relacional. Dichos datos contienen

errores, los cuales es necesario corregir en la mayor medida posible.

Los aspectos a destacar de este trabajo son: el análisis de los posibles errores a encontrar en los

datos generados en este tipo de experimentos, la limpieza de los datos del experimento bajo

estudio, migrando los mismos a un nuevo esquema que se adecúa mejor a la realidad planteada,

y la construcción de un programa que automatiza la gran mayoría de los procesos de limpieza y

migración.

11.1 CONCLUSIONES

Con el fin de detectar errores sobre la base de datos bajo estudio, se aplican un conjunto de

técnicas y actividades definidas en el área de calidad de datos. Algunas de ellas son: Data

editing para la detección de inconsistencias, Detección de datos incompletos para valores nulos,

Detección de anomalías, Identificación de objetos, entre otras.

Como resultado del análisis de los datos y la aplicación de dichas técnicas, se identifican un

total de 12 tipos de errores asociados a 4 dimensiones de la calidad de datos: Exactitud,

Completitud, Consistencia y Unicidad. Si bien los mismos surgen del estudio de los datos de

este caso en particular, errores de estos tipos podrían presentarse en cualquier experimento

similar.

Se establecen pautas de trabajo que, análogamente a los tipos de errores identificados, resultan

ser aplicables a la Calidad de Datos sobre la Ingeniería de Software Empírica. A partir de estos

resultados es posible replicar este trabajo para otros experimentos, logrando una mejora en la

calidad de los datos obtenidos, e influyendo directamente sobre la validez de sus resultados.

Se destaca que el presente trabajo es la primera experiencia de Calidad de Datos aplicada al área

de Ingeniería de Software Empírica, dentro del Instituto de Computación de la Facultad de

Ingeniería. Este dominio de aplicación no había sido explorado con anterioridad en dicho

Instituto, y no se poseía ninguna experiencia previa al respecto. En la comunidad académica en

general, a pesar de que no se ha logrado un gran avance, se observa que existe interés en este

tema. Este año se realizó el primer workshop de calidad en Ingeniería de Software (Caballero et

al., 2009).

La instanciación de cada uno de los 12 tipos de errores sobre las tablas y/o atributos de la base,

da como resultado un total de 55 errores sobre los datos. Para 38 de ellos, es posible realizar su

medición de manera automática, esto es, mediante sentencias SQL y/o algoritmos programados

en Java. Por otro parte, existen 6 errores cuya medición es manual por no ser posible su

automatización. No resulta factible en el marco de este proyecto realizar la medición para los 11

errores restantes por motivos de tiempo y alcance.

Los resultados de las mediciones indican la presencia de 18 errores sobre las tuplas de la base,

de entre los 44 que fue posible medir. Estos resultados se registran en la base de datos original.

Page 96: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

91

Se crean para ello un total de 14 nuevas tablas, las cuales contienen la metadata de los errores,

almacenando la información de aquellas tuplas que los contienen.

Para realizar la corrección de los datos se implementa un programa en Java que automatiza la

gran mayoría de los procesos de limpieza, y la migración de los datos en su totalidad. Se destaca

como un logro importante la fácil adaptación del programa implementado a otros experimentos

de características similares, que utilicen la herramienta Grillo para registrar sus datos.

Para llevar a cabo la limpieza de los datos, se aplican técnicas y actividades de la calidad de

datos, tales como: Definición de transformaciones de datos y reglas de mapeo, Corrección de

anomalías e inconsistencias, Corrección de datos incompletos y Obtención de nueva

información. De un total de 55 errores identificados, se trabaja sobre la limpieza de los 18 de

ellos que fue posible medir y para los cuales se encontraron tuplas erróneas. No resulta posible

realizar la medición de 11 errores, mientras que para los restantes 26 no se identifican tuplas

erróneas.

Los procesos de limpieza automáticos que son ejecutados por el programa implementado,

permiten la corrección de tuplas correspondientes a 7 errores diferentes. A través de procesos

semiautomáticos de limpieza, también ejecutados durante el programa implementado y que

requieren la intervención del usuario, se corrigen tuplas correspondientes a 3 errores distintos.

Para todos los casos, la limpieza que se aplique dependerá de la elección del usuario. Se aplican

limpiezas manuales sobre 7 errores. En la mayoría de los casos dichas limpiezas consisten en

realizar consultas a los sujetos que participaron en el experimento y a sus responsables. No

resulta posible aplicar limpieza para 1 caso, el cual no es de especial interés que sea corregido.

Se detectan errores a nivel del diseño de la base de datos de la herramienta Grillo que se

traducen en errores en los datos, y por lo tanto deben ser corregidos mediante la definición de un

nuevo esquema. Se lleva a cabo la migración de los datos desde la base destino hacia el

esquema definido, durante la cual se ejecutan los procesos de limpieza automáticos y

semiautomáticos.

De un total de 6906 errores identificados sobre las tuplas de la base, lograron ser limpiados

6793. A modo de resumen, la Tabla 16 muestra el valor de calidad obtenido para las tablas

sobre las cuales se identifican tuplas erróneas. Vale destacar que una tupla errónea puede

contener más de un error diferente. Se puede apreciar cómo mejora el valor de calidad de todas

las tablas luego de aplicar las limpiezas definidas.

Tabla 16 – Valor de calidad por tabla

Tabla Valor de calidad por tabla

(antes limpieza)

Valor de calidad por tabla

(después limpieza)

Archivo 0,98 1,00

Archivo_Software 0,92 1,00

Experimento 0,89 0,98

Valor_Categoria 0,90 1,00

Registro_Defecto 0,88 0,98

Categoria 0,50 1,00

Registro_Taxonomia 0,48 1,00

Page 97: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

92

Uno de los logros que destacamos de este trabajo es la limpieza de los datos del experimento

bajo estudio, y la migración de los mismos hacia un nuevo esquema definido para tal fin, y que

se adecúa de mejor manera a la realidad planteada. Más de un 98% de los errores detectados

son corregidos. Esto se realiza mediante la implementación de un programa que automatiza la

gran mayoría de las limpiezas y la migración de los datos. La definición de tipos de errores y

pautas de trabajos aplicables no a uno, sino a un conjunto de experimentos, es sin duda otro

logro fundamental.

A nivel personal, este trabajo nos brindó la posibilidad de profundizar nuestro conocimiento en

dos grandes áreas de conocimiento, como son la Calidad de Datos y la Ingeniería de Software

Empírica.

Las limitaciones de este trabajo están dadas por el programa implementado para la limpieza y

migración de los datos, el cual es generado para la base de la herramienta Grillo. A pesar de

que sí resulta fácilmente adaptable a otros experimentos que utilicen la misma herramienta,

requeriría de mayores ajustes el poder extender su aplicabilidad a experimentos que utilicen

otras herramientas con otras bases. Sin embargo, vale destacar que los tipos de errores

identificados sí resultan ser aplicables a cualquier otra experiencia, independientemente de la

herramienta utilizada.

11.2 TRABAJOS A FUTURO

Como primer paso a realizar sobre este trabajo, sería muy interesante llevar a cabo un análisis

estadístico de los datos limpios. A partir de la comparación de los resultados de este análisis con

los ya realizados sobre los datos originales, se podrían obtener valiosas conclusiones acerca de

la limpieza y de su impacto sobre la calidad de los datos. A su vez, las conclusiones mismas del

experimento podrían llegar a verse afectadas, dependiendo de la medida en que la limpieza

ejecutada afecte los análisis realizados.

De manera de seguir avanzando en pos de lograr experiencias empíricas de mayor calidad y

pensando en futuras replicaciones del experimento bajo estudio, creemos resultaría conveniente

adaptar la herramienta Grillo para que trabaje con el nuevo esquema de la base de datos.

Sumado a esto se debería adaptar el programa de limpieza y migración para que solamente

realice las limpiezas sobre el nuevo esquema. En caso de detectar nuevos errores, se podrían

implementar más procesos de limpieza en el mismo programa.

De la mano con esta evolución de la herramienta, podrían implementarse las mejoras propuestas

en el capítulo Prevención de Errores y Oportunidades de Mejora. Como se explica en dicho

capítulo, a través de la aplicación de estas mejoras es posible evitar 38 de los 55 errores

detectados. Es una proporción importante de errores a evitar y aportaría a mejorar la calidad de

los datos de los experimentos. Para otros 7 errores se presentan pautas para disminuir su

ocurrencia, aunque no se asegura evitarlos. Existen 10 errores para los cuales habría que seguir

indagando para encontrar una forma factible de evitarlos, o de lo contrario prevenirlos en la

mayor medida posible.

Si bien logramos obtener un conjunto de tipos de errores aplicados al área de Calidad de Datos

sobre Ingeniería de Software Empírica, se podrían agregar nuevos tipos de errores que puedan

eventualmente detectarse. Esto podría ser también el punto de partida para continuar con la

identificación de tipos de errores para otras disciplinas dentro de la Ingeniería de Software

Empírica. Seguramente aportaría a ambas áreas el poder contar con tipos de errores catalogados

según la disciplina a la cual se aplican.

Page 98: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

93

El hecho de poder verificar que los mismos tipos de errores definidos para este caso de estudio

particular aplican sobre otro experimento de las mismas características, y obteniendo resultados

similares, permitiría avanzar en este sentido y concluir más fehacientemente la aplicabilidad de

estos tipos de errores para cualquier experimento similar.

Page 99: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

94

12 GLOSARIO

Defectos (aplicado a Testing): imperfecciones en el software, detectados sobre el código

fuente.

Falla: manifestación externa de un defecto en el software.

Tipo de error: dada una dimensión y un factor de calidad de datos, es la definición de

un error conceptual sobre la calidad de los datos.

Errores (aplicado a Calidad de Datos): es la instanciación de un tipo de error sobre un

atributo y/o tabla específica. Se refiere a un error en la calidad de los datos.

Page 100: CALIDAD DE DATOS - Facultad de Ingeniería...Si bien dichos tipos de errores surgen del estudio de los datos de este caso de estudio en particular, son de carácter general y podrían

95

13 BIBLIOGRAFÍA

Apa, C. (2009) Proyecto de Grado: Diseño y Ejecución de un Experimento con 5 Técnicas de

Verificación Unitaria, Instituto de Computación, Facultad de Ingeniería de la UdelaR.

Batini, C. and Scannapieca, M. (2006) Data Quality: Concepts, Methodologies and

Techniques, Springer - ISBN-13 978-3-540-33172-8.

Caballero, I., Calero, C., Al-Hakim, L. and Serrano, M.Á. (2009) 1st International

Workshop on Data Quality for Software Engineering (DQ4SE 2009), [Online], Available:

HYPERLINK "http://alarcos.esi.uclm.es/DQ4SE/" http://alarcos.esi.uclm.es/DQ4SE/ .

Erhard Rahm, H.H.D. (2000) Data Cleaning: Problems and Current Approaches, Universidad

de Leipzig, Alemania: IEEE Data Engineering Bulletin, Vol. 23(4): 3-13, 2000.

Faggiano, J., Apa, C., De León, S. and Robaina, R. (2008) Documentación Herramienta

Grillo, Instituto de Computación, Facultad de Ingeniería de la UdelaR: Documentos de trabajo

interno.

Juristo, N. and Moreno, A.M. (2001) Basics of Software Experimentation, Boston: Kluwer

Academic Publishers - ISBN 0-7923-7990-X.

Marotta, A. (2009) Material Curso Calidad de Datos, Instituto de Computación, Facultad de

Ingeniería de la UdelaR.

Vallespir, D., Apa, C. and De León, S. (2008) Material Módulo de Taller de Verificación,

Instituto de Computación, Facultad de Ingeniería de la UdelaR: Documentos de trabajo interno.

Vallespir, D. and Herbert, J. (2009) Effectiveness and cost of verification techniques,

preliminary conclusions on five techniques, Mexican International Conference on Computer

Science.

Vallespir, D., Herbert, J., Apa, C., De León, S. and Robaina, R. (2009) Effectiveness of Five

Verification Techniques, XXVIII International Conference of the Chilean Computer Society.