Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

72
Clasificación de usuarios basada en la detección de errores usando técnicas de procesadores de lenguaje Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle Departamento de Informática Tesis Doctoral

description

Departamento de Informática. Tesis Doctoral. Clasificación de usuarios basada en la detección de errores usando técnicas de procesadores de lenguaje. Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle. Contenidos. Planteamiento del problema Objetivos de la tesis - PowerPoint PPT Presentation

Transcript of Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

Page 1: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

Clasificación de usuarios basada en la detección de errores usando técnicas de procesadores de lenguaje

Juan Ramón Pérez PérezDirector: Dr. Juan Manuel Cueva Lovelle

Departamento de Informática

Tesis Doctoral

Page 2: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 2

Contenidos

Planteamiento del problema Objetivos de la tesis Análisis de las soluciones actuales Definición de un modelo para el aprendizaje de la

programación Prototipo: Sistema SICODE Clasificación de usuarios basada en detección de

errores Conclusiones Líneas futuras de investigación

Page 3: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 3

Contenidos

Planteamiento del problema Objetivos de la tesis Análisis de las soluciones actuales Definición de un modelo para el aprendizaje de la

programación Prototipo: Sistema SICODE Clasificación de usuarios basada en detección de

errores Conclusiones Líneas futuras de investigación

Page 4: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 4

El problema de ensañar a programar Cada día los entornos de desarrollo

profesionales son más complejos. ¿Cómo facilitar el aprendizaje de la

programación a alumnos principiantes con un entorno de desarrollo profesional?

¿Cómo lograr que los alumnos relacionen los mensajes de error con las causas reales de ese error?

Planteamiento del problema

Page 5: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 5

La comprensión de los errores Corrección de errores de un programa:

Entender el mensaje de error Comprender las causas Proporcionar la solución.

¿Podemos diseñar un entorno que guíe al desarrollador para corregir y prevenir errores de forma efectiva?

Planteamiento del problema

Page 6: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 6

Limitaciones de los entornos de desarrollo actuales Difíciles de integrar en una dinámica de

aprendizaje. Explicación de los errores es pobre para un

programador sin experiencia. Carecen de herramientas que permitan guiar

al programador para mejorar su estilo de programación.

Son sistemas pasivos que analizan el código de forma superficial [Jacobson 2002]

Planteamiento del problema

Page 7: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 7

El difícil trabajo del desarrollo del software El desarrollo de software nunca ha sido tan

complejo como lo es ahora. Los desarrolladores de software trabajan intensivamente con el conocimiento. No sólo deben comprender nuevas tendencias y tecnologías, sino que necesitan saber cómo aplicarlas de forma rápida y productiva.

[Ivar Jacobson, 2002]

Planteamiento del problema

Page 8: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 8

Software de calidad: gestión de errores El primer aspecto de la calidad está relacionado

necesariamente con los defectos del software. Gestión de errores trabajo habitual en un proceso

de desarrollo de software: Mantenimiento de software: corregir errores de software

defectuoso. Existen técnicas de ingeniería del software centradas en el

análisis y diseño, para evitar errores. Subproceso de escritura de software: es un punto clave

para evitar y subsanar errores. La fuente de muchos defectos software son simples

descuidos y errores del programador [Humphrey, 1997]

Planteamiento del problema

Page 9: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 9

Prevenir errores aumentando la experiencia de los programadores La calidad del software producido depende

inevitablemente de la destreza y experiencia de los programadores involucrados [Allen 2002].

Aprendizaje de técnicas de detección y corrección de errores.

Es necesario unos conocimientos teóricos; pero sobre todo adquirir unas habilidades prácticas.

A programar se aprende programando. Este es un proceso continuo debido a los

constantes cambios en el mundo del desarrollo.

Planteamiento del problema

Page 10: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 10

Contenidos

Planteamiento del problema Objetivos de la tesis Análisis de las soluciones actuales Definición de un modelo para el aprendizaje de la

programación Prototipo: Sistema SICODE Clasificación de usuarios basada en detección de

errores Conclusiones Líneas futuras de investigación

Objetivos de la tesis

Page 11: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 11

Objetivos principales

Diseñar un sistema para Mejorar el aprendizaje de la programación. Incrementar la calidad del software.

Clasificar usuarios en base a la detección de errores.

Objetivos de la tesis

Page 12: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 12

Diseñar un sistema de aprendizaje de la programación (I) Orientado a la mejora de la calidad del

código fuente Permite detectar, eliminar y prevenir errores de

forma más eficiente a través técnicas de procesadores de lenguaje.

Gestiona una historia de errores. Analiza los errores de programación cometidos

por los desarrolladores.

Objetivos de la tesis

Page 13: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 13

Diseñar un sistema de aprendizaje de la programación (II) Capaz de asistir al alumno en cualquier

momento y desde cualquier sitio Proporciona información de forma activa, que

ayuda a una escritura del código. Facilita la colaboración en el desarrollo y revisión

de programas. Permite aprender y adquirir experiencia en las

nuevas técnicas de construcción de aplicaciones.

Objetivos de la tesis

Page 14: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 14

Diseñar un sistema de aprendizaje de la programación (III) Usando y construyendo una base de

conocimientos colaborativa Asocia información semántica a cada uno de los

tipos de error. Recoge información contextualizada y derivada

de la experiencia de los desarrolladores lo que permite que cualquier desarrollador pueda aprender de la experiencia de los demás.

Se realimenta dinámicamente.

Objetivos de la tesis

Page 15: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 15

Diseñar un sistema para mejorar la calidad del software (IV) Analizando en profundidad del código Elaborando estadísticas sobre los errores Construyendo una base de conocimiento

colaborativamente Utilizando la experiencia acumulada de otros

desarrollos Permitiendo el desarrollo en equipo de los

proyectos

Objetivos de la tesis

Page 16: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 16

Clasificación de usuarios basada en la detección de errores Caracterizar los errores que cometen los

desarrolladores en distintos niveles de aprendizaje basándose en el sistema.

Obtener un perfil de desarrollador dependiendo de su experiencia, utilizando los datos del análisis anterior.

Objetivos de la tesis

Page 17: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 17

Metodología de trabajo

Modelado delsistema

Desarrollodel sistema

Proyectos

Resultados delAnálisis de error

Clasificaciónusuario

basándose enlos errores

Objetivos de la tesis

Primer objetivoSegundo objetivo

Page 18: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 18

Contenidos

Planteamiento del problema Objetivos de la tesis Análisis de las soluciones actuales Definición de un modelo para el aprendizaje de la

programación Prototipo: Sistema SICODE Clasificación de usuarios basada en detección de

errores Conclusiones Líneas futuras de investigación

Page 19: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 19

Distintas soluciones analizadas Sistemas de aprendizaje virtual de la

programación Entornos para el aprendizaje de la

programación Entornos de desarrollo comerciales Entornos colaborativos Gestores de prácticas avanzados Herramientas de detección de errores

Análisis de las soluciones actuales

Page 20: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 20

Sistemas de aprendizaje virtual de la programación Entornos analizados:

Algorithms in action, JCAT, HalVis, KBS-Hyperbook Introduction to Java Programming, Curso interactivo de programación en Pascal, Exploring Computer Science Concepts with Scheme, ELM-ART, WWW-Based C++ Course, DSTool

Ventajas Web como medio de comunicación entre el estudiante y el

sistema. Carencias:

Son demasiado teóricos. Muy pocos disponen de herramientas de programación. Los ejemplos de código alejados de los problemas reales.

Análisis de las soluciones actuales

Page 21: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 21

Entornos de desarrollo aprendizaje Entornos analizados:

BlueJ [Kölling 2003], AnimPascal [Satratzemi 2001]

Carencias No proporcionan ayuda:

Sobre la interpretación de los errores cometidos, Sobre la solución de los mismos.

Necesitan instalación y configuración por parte del usuario. Los estudiantes tienen problemas en la transición hacia

entornos comerciales

Análisis de las soluciones actuales

Page 22: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 22

Entornos de desarrollo comerciales Entornos analizados:

Eclipse, NetBeans, JBuilder Carencias

Gestión de errores pobre. No señalan errores conceptuales. Es necesaria una experiencia para poder relacionar los

síntomas de los defectos con sus verdaderas causas para poder repararlos.

Información ambigua. No siempre la información del error es correcta.

No proporcionan ayuda para solucionar errores. Complejos para programadores principiantes

Análisis de las soluciones actuales

Page 23: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 23

Entornos de colaboración

Entornos analizados RECIPE, (Real-time Collabortive Interactive Programming

Environment) [Shen 2000] COLLEGE [Bravo C. 2004], PlanEdit [Redondo 2002]

Ventajas Facilita la revisión del código por personas distintas al

autor lo que permite detectar y eliminar. Permiten realizar el trabajo de forma síncrona.

Carencias No utilizan la información de los errores para generar

conocimiento. Muchas veces es difícil aprovechar el conocimiento

aportado por un usuario para reutilizarlo en un futuro.

Análisis de las soluciones actuales

Page 24: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 24

Gestores de prácticas avanzados

Sistemas analizados: Sistema de entrega y evaluación de objetivos de

aprendizaje [Huizinga 2001], Praktomat [Zeller 2000] Carencias:

Informe sobre errores de compilación y prueba Información proporcionada no es muy reveladora

de los verdaderos problemas Protocolo petición-respuesta

Sistema sólo ayuda a corregir errores; pero no a evitarlos.

No permite revisar del proceso de desarrollo que ha seguido el alumno.

Análisis de las soluciones actuales

Page 25: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 25

Técnicas de detección de errores Inspección manual

Técnica muy eficiente. Consumen tiempo y se requiere práctica para aplicarlas

correctamente. Técnicas dinámicas (pruebas y asertos)

Técnica imprescindible para comprobar que se cumplen los requisitos.

Es difícil construir un conjunto de prueba adecuado en programas complejos.

Técnicas estáticas No están limitados a la calidad de los casos de prueba. El análisis no siempre es suficientemente preciso y

exceciva cantidad de información poco relevante.

Análisis de las soluciones actuales

Page 26: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 26

Herramientas de análisis estático Herramientas que buscan errores / herramientas que

comprueban el estilo. Distintas herramientas pueden complementarse.

Nombre Versión Entrada Interfaces Técnica de análisis Comprobaciones

JLint 3.0 Bytecode LC Sintaxis, Flujo de datos

Incorrecciones, problemas de concurrencia

FindBugs 0.7.3 (2004)

Bytecode LC, GUI, IDE, Ant

Sintaxis (patrones de error), Flujo de datos

Incorrecciones, problemas de concurrencia, mal rendimiento

PMD 1.6 Fuente LC, GUI, IDE, Ant

Sintaxis (patrones de error)

Incorrecciones, normas de estilo

Checkstyle Fuente LC, Ant Sintaxis Normas de estilo

JCSC LC, Ant Sintaxis Normas de estilo

DoctorJ LC Sintaxis Coherencia entre documentación y código

Jwiz Fuente LC Sintaxis Incorrecciones

Análisis de las soluciones actuales

Page 27: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 27

Resumen de la situación actual (I) Sistemas no sirven para las distintas etapas de

experiencia de un programador Sistemas y entornos orientados al aprendizaje, están

planteados para etapas iniciales de aprendizaje. Sistemas profesionales sólo accesible con cierto grado de

experiencia. Importancia fundamental de utilizar la Web como

interfaz; pero sólo se utiliza para proporcionar contenidos.

Colaboración es fundamental, sin embargo se utiliza de forma limitada: Proceso de desarrollo: sistemas de control de versiones Pocos sistemas utilizan la colaboración para recoger la

experiencia de los desarrolladores.

Análisis de las soluciones actuales

Page 28: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 28

Resumen de la situación actual (II) Gestión de errores

Proporcionan poca ayuda para comprender cada mensaje de error

Es difícil relacionar el mensaje con las causas del error. Carecen de un registro de las compilaciones que va realizando el

desarrollador Análisis de errores sólo para generar código.

Herramientas para la detección automática de errores Pueden ahorrar tiempo Generan gran cantidad de warnings que son difíciles de analizar

para un usuario

Análisis de las soluciones actuales

Page 29: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 29

Contenidos

Planteamiento del problema Objetivos de la tesis Análisis de los planteamientos actuales Definición de un modelo para la mejora de la

calidad del código fuente. Prototipo diseñado: Sistema SICODE Clasificación de usuarios basada en detección de

errores Conclusiones Líneas futuras de investigación

Page 30: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 30

Detección automática de errores ¿Por qué no diseñamos un entorno activo

que con la información sobre los errores guíe al estudiante para construir software sin errores?

¿Por qué no articular todo este proceso de mejora en la calidad del software en base a los errores detectados automáticamente en el código usando técnicas de procesadores de lenguaje?

Definición de un modelo

Page 31: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 31

Definición de un modelo para el aprendizaje de la programación Características

Búsqueda, almacenamiento y visualización de errores

Análisis de los errores de programación Aprendizaje continuo con información de los

propios desarrolladores Colaboración en el desarrollo

Definición de un modelo

Page 32: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 32

Esquema del modelo del sistema

Base deconocimientosobre errores

Búsqueda, almacenamiento y visualización de errores

Fichero fuente

Genera avisos para prevenir errores

Errores

Información semánticasobre el error

Definición de un modelo

Análisis de los errores de programación

Aprendizaje continuo con información de los propios desarrolladores

Colaboración enel desarrollo

Page 33: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 33

Definición de un modelo para el aprendizaje de la programación (I) Búsqueda, almacenamiento y visualización

de errores Búsqueda de errores mediante técnicas de

procesadores de lenguaje. Creación de una historia de compilación. Visualización de los errores. Todo se realiza en tiempo de escritura de código.

Definición de un modelo

Page 34: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 34

Historia de compilación

Para realizar una búsqueda exhaustiva de posibles errores se han combinado una serie de herramientas de análisis estático.

Se invocarán cada vez que el desarrollador quiera compilar su código.

Todos los avisos generados se guardan en un base de datos para formar la historia de compilación: Asociados a un desarrollador y a un proyecto. Clasificados por el tipo de error

Definición del modelo Busqueda y almacenamiento de errores

Page 35: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 35

Definición del modelo (II)

Análisis de los errores de programación Obtención de métricas de errores mediante el

análisis de la historia de compilación. Análisis de evolución por tipo de errores. Análisis de frecuencias. Análisis comparados entre un usuario y el grupo.

Generación de avisos personalizados adaptados al perfil de los desarrolladores.

Definición de un modelo

Page 36: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 36

Definición del modelo (III)

Aprendizaje continuo con información de los propios desarrolladores Base de conocimientos con información

semántica sobre errores. Colaboración entre los usuarios para completar la

información de la base de conocimientos. Información orientada a la solución y prevención

de errores. Accesible continuamente y de forma

deslocalizada.

Definición de un modelo

Page 37: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 37

Base de conocimientos colaborativa La importancia no es su estructuración Facilidad para llegar hasta la información relevante

Sistema crea hiperenlaces automáticamente. Creación de índices que relacionan contenidos.

Facilidad para introducir nuevos contenidos: Cualquier desarrollador puede hacerlo en cualquier

momento sin necesidad de herramientas extra. Con este modelo la información crece

constantemente Se va enriqueciendo con la experiencia de los

desarrolladores. El conocimiento se realimenta.

Definición del modelo Aprendizaje continuo

Page 38: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 38

Definición del modelo (IV)

Colaboración en el desarrollo de aplicaciones Características del entorno para permitir este

objetivo: Entorno integrado. Entorno orientado hacia código real. Entorno fácil y disponible en cualquier sitio. Soporte para trabajo en grupo.

Seguimiento mediante una historia de trabajo.

Definición de un modelo

Page 39: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 39

Entorno de desarrollo colaborativo e historia de trabajo La historia de trabajo permite hacer una

navegación por la evolución del proyecto de forma asíncrona: Permite buscar el origen de un problema Permite estudiar el trabajo de cada desarrollador

Entorno de desarrollo que requiera la mínima instalación y configuración.

Herramientas de comunicación y coordinación entre los desarrolladores.

Definición de un modelo

Page 40: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 40

Contenidos

Planteamiento del problema Objetivos de la tesis Análisis de los planteamientos actuales Definición de un modelo para la mejora de la

calidad del código fuente. Prototipo diseñado: Sistema SICODE Clasificación de usuarios basada en detección de

errores Conclusiones Líneas futuras de investigación

Page 41: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 41

PBA: Sistema de análisis

de errores de los programas

IDEWeb: Entorno Integrado

de desarrolloen Web

COLLDEV:Entorno

de colaboración en el desarrollo

Historia decompilación

Base de conocimientos

Colaborativa

Ficherosdel proyecto

/historia de

trabajo

Añadir nuevos conocimientos

Crear nuevaspáginas

Avisos eInforme análisis errores

Lanza la compilación

Mensajeserror

Envío yRecepciónDe mensajes

MecanismoDe toma dedecisiones

Intercambioficheros dircompartido

Prototipo diseñado: Sistema SICODE

Page 42: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 42

COLLDEV: Entorno para la colaboración en el desarrollo de aplicaciones Sistema colaborativo asíncrono que facilita

la coordinación y colaboración de grupos para trabajar sobre un proyecto software. Facilita la comunicación, coordinación y toma

de decisiones conjunta por parte de los usuarios. Gestiona los espacios de trabajo compartidos

para los proyectos y permite el trabajo simultáneo de varios usuarios con los archivos.

Permite realizar un seguimiento del proceso de desarrollo mediante una historia activa de trabajo.

Prototipo diseñado: Sistema SICODE

Page 43: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 43

Prototipo diseñado: Sistema SICODE

Page 44: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 44

IDEWeb: Entorno Integrado

de desarrolloen Web

COLLDEV:Entorno

de colaboración en el desarrollo

Historia decompilación

Base de conocimientosColaborativa

PBA: Sistema de análisis

de errores de los programas

Ficherosdel proyecto

/historia de

trabajo

Añadir nuevos conocimientos

Crear nuevaspáginas

Avisos eInforme análisis errores

Lanza la compilación

Mensajeserror

Envío yRecepciónDe mensajes

MecanismoDe toma dedecisiones

Intercambioficheros dircompartido

Prototipo diseñado: Sistema SICODE

Page 45: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 45

IDEWeb: Entorno de desarrollo integrado en Web Entorno de desarrollo sobre Web

El usuario puede ponerse a programar sin necesidad de instalar nada

Arquitectura Web permite centralizar la información sobre el proceso de desarrollo

Independencia del lugar de trabajo Permite la creación, modificación y

compilación de programas Es un entorno abierto que permite la

programación en distintos lenguajes

Prototipo diseñado: Sistema SICODE

Page 46: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 46

Prototipo diseñado: Sistema SICODE

Page 47: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 47

IDEWeb: Base de conocimiento colaborativa Los desarrolladores pueden:

Consultar ayuda sobre los errores: Descripción Contexto Causas según contexto Forma de solucionarlo

Introducir experiencia sobre los errores El prototipo lo implementa sobre un Wiki

Información introducida manualmente por los desarrolladores.

Sistema enlaza automáticamente la información del error con cada de los avisos procedentes del análisis de errores

Prototipo diseñado: Sistema SICODE

Page 48: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 48

Page 49: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 49

Ficherosdel proyecto

/historia de

trabajo

IDEWeb: Entorno Integrado

de desarrolloen Web

COLLDEV:Entorno

de colaboración en el desarrollo

Historia decompilación

Base de conocimientos

Colaborativa

PBA: Sistema de análisis

de errores de los programas

Añadir nuevos conocimientos

Crear nuevaspáginas

Avisos eInforme análisis errores

Lanza la compilación

Mensajeserror

Envío yRecepciónDe mensajes

MecanismoDe toma dedecisiones

Intercambioficheros dircompartido

Prototipo diseñado: Sistema SICODE

Page 50: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 50

PBA: Sistema de análisis de errores de programas Sistema de gestión de errores utilizando

compiladores y herramientas de análisis estático El tratamiento incluye:

Captura, clasificación, almacenamiento y análisis de los errores.

El sistema genera estadísticas sobre los errores Crea documentos HTML con los datos y las gráficas.

Objetivo resaltar errores más importantes del usuario para que trate de evitarlos

Prototipo diseñado: Sistema SICODE

Page 51: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 51

Page 52: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 52

Ficherosdel proyecto

/historia de

trabajo

IDEWeb: Entorno Integrado

de desarrolloen Web

COLLDEV:Entorno

de colaboración en el desarrollo

Historia decompilación

Base de conocimientos

Colaborativa

PBA: Sistema de análisis

de errores de los programas

Consultar / Añadir nuevos conocimientos

Crear nuevaspáginas

Avisos eInforme análisis errores

Lanza la compilación

Mensajeserror

Envío yRecepciónDe mensajes

MecanismoDe toma dedecisiones

Intercambioficheros dircompartido

Prototipo diseñado: Sistema SICODE

Inicio desesión

Ediciónproyecto

Pide compilación

javac

Antic

Jlint

Findbugs

PMD

Page 53: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 53

Contenidos

Planteamiento del problema Objetivos de la tesis Análisis de los planteamientos actuales Definición de un modelo para la mejora de la

calidad del código fuente. Prototipo diseñado: Sistema SICODE Clasificación de usuarios basada en detección de

errores Conclusiones Líneas futuras de investigación

Page 54: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 54

Objetivos

Analizar los errores de programación con los que se encuentran los estudiantes cuando realizan un proyecto software. Proyectos reales realizados por los alumnos en

asignaturas de distintos cursos de ingeniería informática. Análisis estático de los proyectos ya finalizados.

Obtener los errores más frecuentes en cada curso. Comparar los errores entre distintos niveles de

experiencia y analizar su evolución. Establecer los errores que caracterizan a los

usuarios para su clasificación.

Clasificación de usuarios

Page 55: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 55

Precedentes

Huizinga [Huizinga 2001] realizan un estudio sobre los problemas encontrados en una práctica de una asignatura de programación. Define objetivos de cada proyecto y los relaciona con

características de la entrega. Herramienta de entrega automática de prácticas. Datos estadísticos sobre el comportamiento del conjunto de los

alumnos al presentar una práctica. Satratzemi [Satratzemi 2001] estudia evolución de los

errores según los alumnos realizan una determinada práctica. Herramienta AnimPascal Registro de acciones de AnimPascal se hace un seguimiento.

Clasificación de usuarios

Page 56: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 56

Características de nuestro trabajo Los proyectos analizados son todos relativamente

grandes: Proyectos realizados en Java Proyectos más pequeños: 14 ficheros java con más de

4KB cada uno. No se limita a una práctica de una única asignatura:

cinco asignaturas cada una de un curso 14377 ficheros en Java.

Se utiliza el sistema diseñado en esta tesis: SICODE Detectar errores en el código fuente Análisis estático más profundo que el que realiza un simple

compilador.

Clasificación de usuarios

Page 57: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 57

Fases

1. Recopilación de proyectos de distintos niveles (cursos) a partir de los proyectos entregados por los alumnos en cada asignatura.

2. Análisis de los mismos utilizando nuestro sistema SICODE.

3. Comparación de los datos de los proyectos en distintas etapas de aprendizaje de la programación.

4. Caracterización de los errores en relación a los niveles de experiencia de los desarrolladores.

Clasificación de usuarios

Page 58: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 58

Elección de muestras

Asignatura Curso Duración Tipo Año de las muestrasMetodología de la programación 1º 2º cuatrimestre Troncal Curso 2002-2003Estructura de datos y de la información 2º Anual Troncal Curso 2003-2004

Curso 2004-2005Bases de Datos 3º Anual Troncal Curso 2004-2005Procesadores de Lenguaje 4º Anual Troncal Curso 2004-2005Proyecto Fin de Carrera 5º Obliga Distintos años.

Asignatura CursoNúm. proyectos

Num. Fich. *.java

Media fich/proy

Tamaño fich .java (bytes)

Media tam/fich (bytes)

Metodología de la programación 1º 316 4.473 14,16 14.029.045 3.136,38Estructura de datos y de la información 2º 337 8.319 24,69 45.192.259 5.432,41Bases de Datos 3º 22 492 22,36 3.427.435 6.966,33Procesadores de Lenguaje 4º 5 398 79,60 1.692.506 4.252,53Proyectos Fin de Carrera 9 695 77,22 5.509.856 7.927,85

689 proyectos /14.377 ficheros Java

Tamaño mínimo del proyecto:14 ficheros de código fuente

Clasificación de usuarios

Page 59: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 59

Búsqueda de errores

Herramientas que utiliza el prototipo Sistema de análisis de errores de programas (PBA) para realizar el análisis: Javac, compilador comercial, Sun Microsystems Antic [Knizhnik 2003], verificación sintáctica. Jlint [Knizhnik 2003], verificación semántica. FindBugs [Hovemeyer 2004a], detección de

errores basándose en patrones de error PMD [Copeland], detección de posibles errores

mediante la comprobación de reglas

Clasificación de usuarios

Page 60: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 60

Tipos de errores buscados

Errores lógicos: comparaciones, estructuras de control, inicialización.

Problemas de ocultación o ámbito de nombres. Tratamiento de excepciones. Código innecesario o no utilizado. Mejoras en el diseño refactorización. Se han eliminado los avisos correspondientes al

incumplimiento de convenios de nombres y de código.

Clasificación de usuarios

Page 61: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 61

Algunos resultados

Código error Descripcion

Número errores

Núm. proyectos con errores

Media errores por proyecto

Porcentaje de proy errores

13044 Avoid calls to overridable methods during construction 2456 260 9,45 82,28%12001 Component in this class shadow s one in base class. 1873 118 15,87 37,34%13039 Avoid unnecessary comparisons in boolean expressions 1484 183 8,11 57,91%13080 The same String literal appears several times in this f ile. 1213 268 4,53 84,81%13084 Avoid unused local variables. 1181 275 4,29 87,03%12002 Local variable shadow s component of class. 1033 176 5,87 55,70%12014 Compare strings as object references. 769 119 6,46 37,66%13040 Sw itch statements should have a default label 520 191 2,72 60,44%13000 Avoid empty catch blocks 416 237 1,76 75,00%11004 Comparison of String objects using "==" or "!=" 296 117 2,53 37,03%13016 An empty statement (semicolon) not part of a loop 289 229 1,26 72,47%

Número total de proyectos 316erroresconproyectosNúm

erroresNúmeroproyectoporerroresMedia

___

____

100_

_____

proyecTotal

erroresconproyectosNúmerroresproyPorcentaje

Análisis de los proyectos de primer curso: Metodología de la Programación

Clasificación de usuarios

Page 62: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 62

Código error Descripción del error curso 1 curso 2 curso 3 curso 4 pfc

13080 The same String literal appears several times in this f ile. 4,53 7,84 6,53 12,50 88,5013084 Avoid unused local variables. 4,29 6,83 8,69 21,33 29,7513039 Avoid unnecessary comparisons in boolean expressions 8,11 8,30 3,00 16,50 29,3313000 Avoid empty catch blocks 1,76 8,52 4,20 10,00 64,00

11004 Comparison of String objects using "==" or "!=" 2,5313016 An empty statement (semicolon) not part of a loop 1,26

13040 Sw itch statements should have a default label 2,72 5,0412002 Local variable shadow s component of class. 5,87 6,4313044 Avoid calls to overridable methods during construction 9,45 6,06 55,0012001 Component in this class shadow s one in base class. 15,87 7,0012014 Compare strings as object references. 6,46 9,00

11021 Unread f ield: should this f ield be static? 17,9713046 This f inal f ield could be made static 18,5813042 Avoid reassigning parameters. 5,03 18,0010013 May be w rong assumption about ELSE branch association 6,14

13078 A method should'nt have Exception in throw s declaration. 13,86 17,93 11,25 65,00

13061 Avoid unused imports 4,46 220,0013059 Avoid duplicate imports 3,1711011 Redundant comparison of a reference value to null. 12,5013083 Avoid unused private f ields. 3,0011023 This f ield is never read. Consider removing it from the class. 8,69

13081 Avoid instantiating String objects; this is usually unnecessary. 23,50 29,0011003 Innecesary calls to methods. 11,3312005 Value of referenced variable may be NULL. 23,00

13011 Avoid returning from a f inally block 32,67

25,00 Total errores especif icados 11,00 11,00 11,00 10,00 10,00

Media de errores por proyecto

erroresconproyectosNúm

erroresNúmeroproyectoporerroresMedia

___

____

Page 63: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 63

Resultados generales

Distribución de los avisos detectados: 1er y 2º cursos: bastantes avisos que afectan a más del 75% de

los proyectos. 3º, 4º un único aviso poco significativo. PFC ningún error afecta a más del 50% de los proyectos.

Existen errores exclusivos para cada curso nivel de experiencia del programador.

Hay errores que permanecen a lo largo de todos los cursos: Información importante para los profesores, pueden significar

lagunas de conocimiento. Errores que evolucionan a lo largo de los cursos:

Desaparecen por el incremento de la experiencia Aparecen por los nuevos temas tratados en las asignaturas

Clasificación de usuarios

Page 64: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 64

Resultados: errores significativos de cada curso Primer curso

Avoid calls to overridable methods during construction Avoid empty catch blocks Comparison of String objects using "==" or "!="

Segundo curso Local variable shadows component of class Avoid reassigning parameters

Tercer curso A method shouldn't have Exception in throws declaration

Cuarto curso Innecesary calls to methods

Proyecto fin de carrera Avoid returning from a finally block

Clasificación de usuarios

Page 65: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 65

Contenidos

Planteamiento del problema Objetivos de la tesis Análisis de las soluciones actuales Definición de un modelo para el aprendizaje de la

programación Prototipo: Sistema SICODE Clasificación de usuarios basada en detección de

errores Conclusiones Líneas futuras de investigación

Page 66: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 66

Desarrollo de un entorno que facilita el aprendizaje de la programación Basado en el análisis automático de errores.

El sistema realiza un registro de errores (historia de compilación) y se utiliza su evolución para generar avisos personalizados al usuario.

Aporta un conocimiento amplio a los usuarios: alumnos y profesores de los errores más frecuentes.

Construyendo un entorno Web que permite el desarrollo de aplicaciones. Proporciona soporte asíncrono para equipos de desarrollo.

Usando una base de conocimiento construida colaborativamente: Incorpora información semántica sobre los avisos de error Permite la realimentación de la información del sistema con el

nuevo conocimiento de los desarrolladores

Conclusiones

Page 67: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 67

Elaboración de una clasificación de usuarios en relación a la experiencia del usuario Utilizando el sistema diseñado. Estudio amplio y transversal:

Cantidad de proyectos Distintos niveles considerados

Se han descubierto distintos patrones de comportamiento de los errores.

Permite conocer la evolución de los errores de los alumnos en función de su experiencia.

Conclusiones

Page 68: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 68

Contenidos

Planteamiento del problema Objetivos de la tesis Análisis de las soluciones actuales Definición de un modelo para el aprendizaje de la

programación Prototipo: Sistema SICODE Clasificación de usuarios basada en detección de

errores Conclusiones Líneas futuras de investigación

Page 69: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 69

Líneas futuras de investigación Entorno y avisos al desarrollador:

Reducción de la granularidad en la comprobación y generación de avisos de ayuda al desarrollador.

Integración del sistema en entornos de desarrollo comerciales mediante el desarrollo de plug-ins específicos

Análisis de errores: Aplicación de técnicas de minería de datos para mejorar el análisis

de los errores. Potenciación del análisis dinámico del código y combinación con la

información extraída del análisis estático. Potenciar historia de trabajo, permitir el seguimiento real de la

evolución de un proyecto. Utilización de los perfiles de usuario basados en errores para

mejorar la adaptación del entorno de desarrollo a los usuarios.

Líneas futuras de investigación

Page 70: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 70

Publicaciones derivadas (I)

"Development Web Environment" for Learing Programming LanguagesPérez Pérez, Juan Ramón; Paule Ruíz, María del Puerto; González Rodríguez, MartínICWE 2003, LNCS 2722, 2003. Springer, Berlin 2003

DSTool: A Reflection-based debugger for Data Structures Comprehension in Computing Science Learning.Sama Villanueva, Sergio; Pérez Pérez, Juan Ramón; Ocio Barriales, Sergio; González Rodríguez, Martín Human - Computer Interaction: Theory and Practice. Lawrence Erlabaum Associates, Publishers. Mahwah, New Jersey. 2003.

Entorno web de desarrollo para el aprendizaje de paradigmas de programaciónPérez Pérez, Juan Ramón; Paule Ruiz, Mª del Puerto; González Rodríguez, MartínActas de IX Jornadas de Enseñanza Universitaria de la Informática. Jenui 2003, pp 465-471. Thomson Paraninfo, S.A., Madrid, 2003.

A development environment for cooperative programmingPérez Pérez, Juan Ramón; Gonzalez Rodríguez, Martín; Paule Ruiz, María del PuertoEn Actas del V Congreso Interacción Persona Ordenador. Interacción 2004. Seminario de Doctorado. Mayo de 2004.

Publicaciones

Page 71: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

28 de marzo de 2006 71

Publicaciones derivadas (II)

Adaptable Contents Visulization (VIC)Fernández González, Raúl; Paule Ruíz, María del Puerto; Pérez Pérez, Juan Ramón; González Rodríguez, Martín; González Gallego, Marcos ICWE 2003, LNCS 2722, 2003. Springer, Berlin 2003.

Feijoo.net: An Approach to Personalized E-learning Using Learning StylesFernández González, Raúl; Paule Ruíz, María del Puerto; Pérez Pérez, Juan Ramón; González Rodríguez, Martín; González Gallego, Marcos ICWE 2003, LNCS 2722, 2003. Springer, Berlin 2003.

SACODE: Sistema de Aprendizaje Colaborativo de la ProgramaciónPérez Pérez, Juan Ramón; Iglesias Suárez, Mª Cristina; Paule Ruiz, Mª del Puerto; (2004)VI Simposio Internacional de Informática Educativa (SIIE 2004).

¿Es posible la eliminación de los errores de los programas?Pérez Pérez, Juan Ramón; Rodríguez Fernández, Daniel; González Rodríguez, Martín; (2004) VI Simposio Internacional de Informática Educativa (SIIE 2004).

Publicaciones

Page 72: Juan Ramón Pérez Pérez Director: Dr. Juan Manuel Cueva Lovelle

Clasificación de usuarios basada en la detección de errores usando técnicas de procesadores de lenguaje

Juan Ramón Pérez PérezDirector: Dr. Juan Manuel Cueva Lovelle

Departamento de Informática

Tesis Doctoral