PACA: Corrector Automático de Prácticas Ingenierı́a Técnica en Informática de Gestión Estructuras de Datos y de la Información En la URL http://platon.escet.urjc.es/edi/correccion se encuentra disponible la aplicación PACA (Plataforma de Agentes inteligentes aplicados a la Corrección Automática). Básicamente, dicha aplicación permite corregir automáticamente el código fuente de una práctica de la asignatura. A continuación se describen la funcionalidad básica de la aplicación, la estructura de la evaluación, y algunas recomendaciones sobre su uso. 1 Funcionalidad de PACA La herramienta ofrece al alumno dos tipos de funcionalidad: la evaluación de los paquetes y programas principales pedidos en la práctica, y la entrega de dicho código fuente. Por otra parte, los resultados de la evaluación automática de la práctica mediante dicha herramienta serán tenidos en cuenta en la nota definitiva de la práctica. Para utilizar la herramienta el alumno deberá hacer un login donde el usuario será su número de expediente, y utilizar un password que será facilitado al alumno por los profesores de la asignatura. Dicha clave de acceso es individual, y el alumno será responsable de su correcta utilización. 1.1 Evaluación de la Práctica La evaluación de la práctica se encuentra estructurada en dos niveles principales. En un primer nivel se consideran varios tests sobre las distintas partes de la práctica. Por ejemplo, imaginemos que una parte diferenciada de la práctica fuera la implementación del paquete Listas. En un segundo nivel se encuentran los distintos casos de prueba seleccionados para corregir la parte correspondiente a cada test. La corrección de un test determinado conlleva la entrega a la aplicación por parte del alumno de los ficheros fuente correspondientes a dicha parte. Por ejemplo, en el caso del test sobre el paquete Listas, el alumno tendrı́a que entregar únicamente los ficheros listas.ads y listas.adb. La aplicación compiları́a dichos ficheros y los enlazarı́a con el resto de ficheros que hagan falta para probar el paquete Listas. Pueden pasar dos cosas: 1. Se pudo generar un ejecutable para el test. En ese caso, dicho programa será utilizado para ejecutar el conjunto de casos de prueba para la parte correspondiente de la práctica. 1 2. Se produjeron errores de compilación. La causa más probable de dichos errores será el incumplimiento de algún requisito de implementación descrito en el enunciado de la práctica. Los casos de prueba se configuran en base a un conjunto de datos de entrada y salida. Por ejemplo, un caso de prueba para el test del paquete Listas puede consistir en una lista y un elemento a buscar. La ejecución del programa generado para un test con los datos de entrada de un determinado caso de prueba, puede producir las siguientes salidas: 1. Un error de ejecución. Por ejemplo, una excepción del tipo CONSTRAINT ERROR. 2. Un aborto de la ejecución. Actualmente el corrector está configurado para no permitir un tiempo de ejecución para cada caso de prueba superior a 5 segundos (posibles bucles infinitos). 3. Una terminación correcta, pero con resultados incorrectos. Por ejemplo, para el test del paquete Listas con un caso de prueba correspondiente a la posición de un elemento en la lista, el programa podrı́a terminar, pero el valor resultante podrı́a no coincidir con el correcto. La salida por pantalla del error se corresponde con el resultado del comando diff de unix: Esperado: resultado correcto --Obtenido: resultado de la ejecución 4. Una terminación correcta, con resultados correctos. 1.2 Entrega de la Práctica Además de la memoria de la práctica, será obligatorio realizar la entrega del código fuente a través de la herramienta. Para ello, los alumnos deberán proporcionar al sistema su clave de acceso. Téngase en cuenta que el sistema sólo permite una entrega por alumno, por lo que una vez entregada la práctica de un grupo, ninguno de sus componentes podrán realizar una entrega adicional (por separado, o con otro compañero de prácticas). La entrega de la práctica se realizará solamente a través de uno de los componentes del grupo. Si el grupo sólo es de una persona, se deberá dejar el usuario del segundo componente en blanco (borrando el valor que aparece por defecto). 2 Ejemplo de Estructura de Evaluación de una Práctica Un ejemplo de tests diseñados para una páctica pueden ser los siguientes: • Parte I. Prueba del paquete Listas. • Parte II. Prueba del programa de prueba del paquete Listas. • Parte III. Programa de aplicación del paquete Listas. 2 La herramienta ofrece la ventaja fundamental de poder probar las distintas partes de la práctica de manera independiente. Por ejemplo, el test correspondiente a la implementación del programa de prueba del paquete Listas requiere únicamente el fichero test listas.adb. Como la prueba de dicho paquete requiere a su vez el paquete Listas, la herramienta utilizará la implementación realizada por los profesores de la asignatura. De esa forma se consigue: (1) que los posibles errores cometidos por el alumno en la implementación del paquete Listas no se propaguen a la prueba del programa test listas, (2) que los alumnos puedan trabajar en paralelo sobre distintas partes de la práctica. 3 Recomendaciones de Uso A continuación se ofrecen algunas recomendaciones sobre el uso de la herramienta: • La corrección de cada práctica conlleva la compilación de los ficheros fuente entregados para cada test, y la ejecución de todos sus casos de prueba. Con el objetivo de no sobrecargar el servidor donde se ejecuta el corrector, y de ofrecer unos tiempos de respuesta razonables, se recomienda no solicitar la evaluación de más de un test al mismo tiempo. • Releer el enunciado de la práctica cuando se produzcan errores de compilación en la generación del ejecutable de un test, ya que dichos errores se deberán por lo general al incumplimiento de alguna especificación descrita en el enunciado (nombres de procedimientos/funciones, orden/tipo de los parámetros, ...). • En cualquier caso, se recomienda el uso del foro para comunicar cualquier posible problema que se haya encontrado a este respecto. • Los datos de entrada/salida asociados a cada caso de prueba se encuentran ocultos. El alumno tiene la obligación de configurar por su cuenta un conjunto de casos de prueba adecuado para probar por sı́ mismo la práctica. Los casos de prueba de la aplicación se proporcionan, por tanto, como ayuda y no como sustituto para la realización de las pruebas. Además, tened en cuenta que la corrección final incluirá casos de prueba adicionales a los actuales. • Se recomienda no esperar al último dı́a para realizar la entrega definitiva de la práctica, ya que el servidor puede estar sobresaturado ese dı́a, y más tarde no podrá realizarse la entrega. 3