Title: Clasificaci
1Clasificació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
2Contenidos
- 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
3Contenidos
- 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
4El 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?
5La 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?
6Limitaciones 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
7El 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
8Software 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
9Prevenir 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.
10Contenidos
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
11Objetivos 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.
12Diseñ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.
13Diseñ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.
14Diseñ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.
15Diseñ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
16Clasificació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.
17Metodología de trabajo
Objetivos de la tesis
Segundo objetivo
Primer objetivo
18Contenidos
- 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
19Distintas 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
20Sistemas 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.
21Entornos 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
22Entornos 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
23Entornos 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.
24Gestores 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.
25Té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.
26Herramientas 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
27Resumen 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.
28Resumen 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
29Contenidos
- 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
30Detecció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?
31Definició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
32Esquema 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
33Definició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.
34Historia 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
35Definició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.
36Definició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.
37Base 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.
38Definició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.
39Entorno 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.
40Contenidos
- 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
41Prototipo 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
42COLLDEV 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.
43Prototipo diseñado Sistema SICODE
44Prototipo 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
45IDEWeb 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
46Prototipo diseñado Sistema SICODE
47IDEWeb 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)
49Prototipo 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
50PBA 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)
52Prototipo 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
53Contenidos
- 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
54Objetivos
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.
55Precedentes
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.
56Caracterí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.
57Fases
Clasificación de usuarios
- Recopilación de proyectos de distintos niveles
(cursos) a partir de los proyectos entregados por
los alumnos en cada asignatura. - Análisis de los mismos utilizando nuestro sistema
SICODE. - Comparación de los datos de los proyectos en
distintas etapas de aprendizaje de la
programación. - Caracterización de los errores en relación a los
niveles de experiencia de los desarrolladores.
58Elecció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
59Bú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
60Tipos 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.
61Algunos resultados
Clasificación de usuarios
Análisis de los proyectos de primer curso
Metodología de la Programación
62Media de errores por proyecto
63Resultados 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
64Resultados 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
65Contenidos
- 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
66Desarrollo 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
67Elaboració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.
68Contenidos
- 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
69Lí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.
70Publicaciones 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.
71Publicaciones 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).
72Clasificació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