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.

1 Clasificación de usuarios basada en la detección de err...
Author: Gregorio Salas Maldonado
0 downloads 2 Views

1 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

2 28 de marzo de 20062 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

3 28 de marzo de 20063 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

4 28 de marzo de 20064 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

5 28 de marzo de 20065 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

6 28 de marzo de 20066 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

7 28 de marzo de 20067 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

8 28 de marzo de 20068 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

9 28 de marzo de 20069 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

10 28 de marzo de 200610 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

11 28 de marzo de 200611 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

12 28 de marzo de 200612 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

13 28 de marzo de 200613 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

14 28 de marzo de 200614 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

15 28 de marzo de 200615 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

16 28 de marzo de 200616 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

17 28 de marzo de 200617 Metodología de trabajo Modelado del sistema Desarrollo del sistema Proyectos Resultados del Análisis de error Clasificación usuario basándose en los errores Objetivos de la tesis Primer objetivo Segundo objetivo

18 28 de marzo de 200618 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

19 28 de marzo de 200619 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

20 28 de marzo de 200620 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

21 28 de marzo de 200621 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

22 28 de marzo de 200622 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

23 28 de marzo de 200623 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

24 28 de marzo de 200624 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

25 28 de marzo de 200625 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

26 28 de marzo de 200626 Herramientas de análisis estático Herramientas que buscan errores / herramientas que comprueban el estilo. Distintas herramientas pueden complementarse. NombreVersiónEntradaInterfacesTécnica de análisisComprobaciones JLint3.0BytecodeLCSintaxis, Flujo de datos Incorrecciones, problemas de concurrencia FindBugs0.7.3 (2004) BytecodeLC, GUI, IDE, Ant Sintaxis (patrones de error), Flujo de datos Incorrecciones, problemas de concurrencia, mal rendimiento PMD1.6FuenteLC, GUI, IDE, Ant Sintaxis (patrones de error) Incorrecciones, normas de estilo CheckstyleFuenteLC, AntSintaxisNormas de estilo JCSCLC, AntSintaxisNormas de estilo DoctorJLCSintaxisCoherencia entre documentación y código JwizFuenteLCSintaxisIncorrecciones Análisis de las soluciones actuales

27 28 de marzo de 200627 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

28 28 de marzo de 200628 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

29 28 de marzo de 200629 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

30 28 de marzo de 200630 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

31 28 de marzo de 200631 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

32 28 de marzo de 200632 Esquema del modelo del sistema Base de conocimiento sobre errores Búsqueda, almacenamiento y visualización de errores Fichero fuente Genera avisos para prevenir errores Errores Información semántica sobre 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 en el desarrollo

33 28 de marzo de 200633 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

34 28 de marzo de 200634 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

35 28 de marzo de 200635 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

36 28 de marzo de 200636 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

37 28 de marzo de 200637 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

38 28 de marzo de 200638 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

39 28 de marzo de 200639 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

40 28 de marzo de 200640 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

41 28 de marzo de 200641 PBA: Sistema de análisis de errores de los programas IDEWeb: Entorno Integrado de desarrollo en Web COLLDEV: Entorno de colaboración en el desarrollo Historia de compilación Base de conocimientos Colaborativa Ficheros del proyecto / historia de trabajo Añadir nuevos conocimientos Crear nuevas páginas Avisos e Informe análisis errores Lanza la compilación Mensajes error Envío y Recepción De mensajes Mecanismo De toma de decisiones Intercambio ficheros dir compartido Prototipo diseñado: Sistema SICODE

42 28 de marzo de 200642 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

43 28 de marzo de 200643 Prototipo diseñado: Sistema SICODE

44 28 de marzo de 200644 IDEWeb: Entorno Integrado de desarrollo en Web COLLDEV: Entorno de colaboración en el desarrollo Historia de compilación Base de conocimientos Colaborativa PBA: Sistema de análisis de errores de los programas Ficheros del proyecto / historia de trabajo Añadir nuevos conocimientos Crear nuevas páginas Avisos e Informe análisis errores Lanza la compilación Mensajes error Envío y Recepción De mensajes Mecanismo De toma de decisiones Intercambio ficheros dir compartido Prototipo diseñado: Sistema SICODE

45 28 de marzo de 200645 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

46 28 de marzo de 200646 Prototipo diseñado: Sistema SICODE

47 28 de marzo de 200647 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

48 28 de marzo de 200648

49 28 de marzo de 200649 Ficheros del proyecto / historia de trabajo IDEWeb: Entorno Integrado de desarrollo en Web COLLDEV: Entorno de colaboración en el desarrollo Historia de compilación Base de conocimientos Colaborativa PBA: Sistema de análisis de errores de los programas Añadir nuevos conocimientos Crear nuevas páginas Avisos e Informe análisis errores Lanza la compilación Mensajes error Envío y Recepción De mensajes Mecanismo De toma de decisiones Intercambio ficheros dir compartido Prototipo diseñado: Sistema SICODE

50 28 de marzo de 200650 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

51 28 de marzo de 200651

52 28 de marzo de 200652 Ficheros del proyecto / historia de trabajo IDEWeb: Entorno Integrado de desarrollo en Web COLLDEV: Entorno de colaboración en el desarrollo Historia de compilación Base de conocimientos Colaborativa PBA: Sistema de análisis de errores de los programas Consultar / Añadir nuevos conocimientos Crear nuevas páginas Avisos e Informe análisis errores Lanza la compilación Mensajes error Envío y Recepción De mensajes Mecanismo De toma de decisiones Intercambio ficheros dir compartido Prototipo diseñado: Sistema SICODE Inicio de sesión Edición proyecto Pide compilación javac Antic Jlint Findbugs PMD

53 28 de marzo de 200653 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

54 28 de marzo de 200654 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

55 28 de marzo de 200655 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

56 28 de marzo de 200656 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

57 28 de marzo de 200657 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

58 28 de marzo de 200658 Elección de muestras 689 proyectos / 14.377 ficheros Java Tamaño mínimo del proyecto: 14 ficheros de código fuente Clasificación de usuarios

59 28 de marzo de 200659 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

60 28 de marzo de 200660 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

61 28 de marzo de 200661 Algunos resultados Análisis de los proyectos de primer curso: Metodología de la Programación Clasificación de usuarios

62 28 de marzo de 200662 Media de errores por proyecto

63 28 de marzo de 200663 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

64 28 de marzo de 200664 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

65 28 de marzo de 200665 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

66 28 de marzo de 200666 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

67 28 de marzo de 200667 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

68 28 de marzo de 200668 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

69 28 de marzo de 200669 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

70 28 de marzo de 200670 Publicaciones derivadas (I) "Development Web Environment" for Learing Programming Languages Pérez Pérez, Juan Ramón; Paule Ruíz, María del Puerto; González Rodríguez, Martín ICWE 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ón Pérez Pérez, Juan Ramón; Paule Ruiz, Mª del Puerto; González Rodríguez, Martín Actas 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 programming Pérez Pérez, Juan Ramón; Gonzalez Rodríguez, Martín; Paule Ruiz, María del Puerto En Actas del V Congreso Interacción Persona Ordenador. Interacción 2004. Seminario de Doctorado. Mayo de 2004. Publicaciones

71 28 de marzo de 200671 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 Styles 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. SACODE: Sistema de Aprendizaje Colaborativo de la Programación Pé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

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