Clasificaci - PowerPoint PPT Presentation

About This Presentation
Title:

Clasificaci

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 – PowerPoint PPT presentation

Number of Views:76
Avg rating:3.0/5.0
Slides: 73
Provided by: Juanyp4
Category:

less

Transcript and Presenter's Notes

Title: Clasificaci


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

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

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

4
El problema de ensañar a programar
Planteamiento del problema
  • 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?

5
La comprensión de los errores
Planteamiento del problema
  • 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?

6
Limitaciones de los entornos de desarrollo
actuales
Planteamiento del problema
  • 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

7
El difícil trabajo del desarrollo del software
Planteamiento del problema
  • 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

8
Software de calidad gestión de errores
Planteamiento del problema
  • 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

9
Prevenir errores aumentando la experiencia de los
programadores
Planteamiento del problema
  • 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.

10
Contenidos
Objetivos de la tesis
  • 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

11
Objetivos principales
Objetivos de la tesis
  • 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.

12
Diseñar un sistema de aprendizaje de la
programación (I)
Objetivos de la tesis
  • 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.

13
Diseñar un sistema de aprendizaje de la
programación (II)
Objetivos de la tesis
  • 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.

14
Diseñar un sistema de aprendizaje de la
programación (III)
Objetivos de la tesis
  • 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.

15
Diseñar un sistema para mejorar la calidad del
software (IV)
Objetivos de la tesis
  • 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

16
Clasificación de usuarios basada en la detección
de errores
Objetivos de la tesis
  • 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.

17
Metodología de trabajo
Objetivos de la tesis
Segundo objetivo
Primer objetivo
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

19
Distintas soluciones analizadas
Análisis de las soluciones actuales
  • 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

20
Sistemas de aprendizaje virtual de la programación
Análisis de las soluciones actuales
  • 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.

21
Entornos de desarrollo aprendizaje
Análisis de las soluciones actuales
  • 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

22
Entornos de desarrollo comerciales
Análisis de las soluciones actuales
  • 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

23
Entornos de colaboración
Análisis de las soluciones actuales
  • 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.

24
Gestores de prácticas avanzados
Análisis de las soluciones actuales
  • 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.

25
Técnicas de detección de errores
Análisis de las soluciones actuales
  • 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.

26
Herramientas de análisis estático
Análisis de las soluciones actuales
  • 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
27
Resumen de la situación actual (I)
Análisis de las soluciones actuales
  • 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.

28
Resumen de la situación actual (II)
Análisis de las soluciones actuales
  • 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

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

30
Detección automática de errores
Definición de un modelo
  • 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?

31
Definición de un modelo para el aprendizaje de la
programación
Definición de un modelo
  • 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

32
Esquema del modelo del sistema
Definición de un modelo
Fichero fuente
Búsqueda, almacenamiento y visualización de
errores
Errores
Genera avisos para prevenir errores
Análisis de los errores de programación
Base de conocimiento sobre errores
Información semántica sobre el error
Aprendizaje continuo con información de los
propios desarrolladores
Colaboración en el desarrollo
33
Definición de un modelo para el aprendizaje de la
programación (I)
Definición de un modelo
  • 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.

34
Historia de compilación
Definición del modelo ? Busqueda y almacenamiento
de errores
  • 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

35
Definición del modelo (II)
Definición de un modelo
  • 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.

36
Definición del modelo (III)
Definición de un modelo
  • 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.

37
Base de conocimientos colaborativa
Definición del modelo ? Aprendizaje continuo
  • 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.

38
Definición del modelo (IV)
Definición de un modelo
  • 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.

39
Entorno de desarrollo colaborativo e historia de
trabajo
Definición de un modelo
  • 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.

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

41
Prototipo diseñado Sistema SICODE
Base de conocimientos Colaborativa
Añadir nuevos conocimientos
Crear nuevas páginas
IDEWeb Entorno Integrado de desarrollo en Web
Lanza la compilación
Mensajes error
PBA Sistema de análisis de errores de los
programas
Avisos e Informe análisis errores
Intercambio ficheros dir compartido
Historia de compilación
COLLDEV Entorno de colaboración en el
desarrollo
Envío y Recepción De mensajes
Ficheros del proyecto / historia de trabajo
Mecanismo De toma de decisiones
42
COLLDEV Entorno para la colaboración en el
desarrollo de aplicaciones
Prototipo diseñado Sistema SICODE
  • 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.

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

46
Prototipo diseñado Sistema SICODE
47
IDEWeb Base de conocimiento colaborativa
Prototipo diseñado Sistema SICODE
  • 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

48
(No Transcript)
49
Prototipo diseñado Sistema SICODE
Base de conocimientos Colaborativa
Añadir nuevos conocimientos
Crear nuevas páginas
IDEWeb Entorno Integrado de desarrollo en Web
Lanza la compilación
Mensajes error
PBA Sistema de análisis de errores de los
programas
Avisos e Informe análisis errores
Intercambio ficheros dir compartido
Historia de compilación
COLLDEV Entorno de colaboración en el
desarrollo
Envío y Recepción De mensajes
Ficheros del proyecto / historia de trabajo
Mecanismo De toma de decisiones
50
PBA Sistema de análisis de errores de programas
Prototipo diseñado Sistema SICODE
  • 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

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

54
Objetivos
Clasificación de usuarios
  • 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.

55
Precedentes
Clasificación de usuarios
  • 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.

56
Características de nuestro trabajo
Clasificación de usuarios
  • 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.

57
Fases
Clasificación de usuarios
  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.

58
Elección de muestras
Clasificación de usuarios
689 proyectos / 14.377 ficheros Java
Tamaño mínimo del proyecto 14 ficheros de código
fuente
59
Búsqueda de errores
Clasificación de usuarios
  • 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

60
Tipos de errores buscados
Clasificación de usuarios
  • 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.

61
Algunos resultados
Clasificación de usuarios
Análisis de los proyectos de primer curso
Metodología de la Programación
62
Media de errores por proyecto
63
Resultados generales
Clasificación de usuarios
  • 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

64
Resultados errores significativos de cada curso
Clasificación de usuarios
  • 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

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

66
Desarrollo de un entorno que facilita el
aprendizaje de la programación
Conclusiones
  • 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

67
Elaboración de una clasificación de usuarios en
relación a la experiencia del usuario
Conclusiones
  • 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.

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

69
Líneas futuras de investigación
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.

70
Publicaciones derivadas (I)
Publicaciones
  • "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.

71
Publicaciones derivadas (II)
Publicaciones
  • 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).

72
Clasificación de usuarios basada en la detección
de errores usando técnicas de procesadores de
lenguaje
Departamento de Informática
Tesis Doctoral
  • Juan Ramón Pérez Pérez
  • Director Dr. Juan Manuel Cueva Lovelle
Write a Comment
User Comments (0)
About PowerShow.com