ular via the channelling of funds, contributed to strengthening the rule of law as it relates to legal systems and access to jus-
7 EQ: To what extent have the implementation modalities of Joint Programmes employed by the CoE been appropriate to help
7.1 JC Degree to which CoE implementation has reflected best practice of programme cycle management
El sistema elegido para el módulo corrector es un sistema híbrido en el que en primer lugar se compara la solución enviada por el alumno con la del profesor. Este sistema se utiliza para todos los comandos SQL, ahora bien, en las consultas SELECT como que una misma consulta se puede formular de muchas maneras distintas, si la solución enviada no es ninguna de las contempladas por el profesor, ejecutaremos las sentencias sobre varias bases de datos de pruebas y compararemos los resultados obtenidos. De esta forma, una vez el alumno ha enviado su solución a corregir, el sistema corrector actúa en tres fases, tal como muestra la Figura 9.4
Figura 9.4 Proceso de corrección en ACME-SQL.
Verificación de las sentencias
El sistema recibe la sentencia SQL enviada por el alumno al pulsar el botón de corregir. De entrada se comprueba si la sentencia es exactamente igual a alguna de las definidas en la estructura del problema para este ejercicio. Si es así la consideramos correcta. Si no es exactamente igual se comprueba si es equivalente. Se entiende por equivalente si el orden de los campos es distinto pero hay la misma información. Por ejemplo, en una consulta SELECT, se entiende por equivalente si los campos escritos a continuación del SELECT, si el nombre de las tablas después del FROM o las distintas expresiones que vienen a continuación del WHERE están en distinto orden. Si el sistema detecta que son equivalentes, envía el mensaje de “correcto”. De esta forma y sin necesidad de ejecutar la sentencia ya detectamos las soluciones correctas. Esta situación se da en respuestas de ejercicios sencillos y en los que generalmente las soluciones enviadas suelen ser correctas. Si la solución no es igual o equivalente se envía el mensaje de solución incorrecta a no ser que sea una sentencia SELECT. En este caso puede haber muchas soluciones correctas por lo que para comprobar si es correcta ejecutaremos la SELECT enviada por el alumno y la correcta disponible en el repositorio. Una vez ejecutadas las dos compararemos los resultados obtenidos.
PROCESO CORRECCIÓN CONSULTAS SQL
VERIFICACIÓN SENTENCIAS
Mensaje : Solución Correcta Iguales o equivalentes a la
solución del profesor ? NO SI
EJECUCIÓN SELECT’s
Mensaje : Solución Incorrecta Es una SELECT ?
SI NO
Mensaje : Error sintaxis Error ejecución Select alunmo?
NO SI
COMPROBACIÓN RESULTADOS
Visualización Resultados Mensaje: Solución incorrecta Resultados ejecución SELECT’s del
alumno y profesor iguales o equiv. ?
SI NO
Mensaje : Solución Correcta Hay más tests de pruebas ?
Acceder primer test de pruebas
NO SI
Acceder siguiente test
PROCESO CORRECCIÓN CONSULTAS SQL
VERIFICACIÓN SENTENCIAS
Mensaje : Solución Correcta Iguales o equivalentes a la
solución del profesor ? NO SI
EJECUCIÓN SELECT’s
Mensaje : Solución Incorrecta Es una SELECT ?
SI NO
Mensaje : Error sintaxis Error ejecución Select alunmo?
NO SI
COMPROBACIÓN RESULTADOS
Visualización Resultados Mensaje: Solución incorrecta Resultados ejecución SELECT’s del
alumno y profesor iguales o equiv. ?
SI NO
Mensaje : Solución Correcta Hay más tests de pruebas ?
Acceder primer test de pruebas
NO SI
Ejecución de las SELECT’s
En el caso que la solución sea una SELECT y que sea distinta (o no equivalente) a las correctas guardadas en la estructura del problema tendremos que ejecutar ambas en un SGBD (Postgres en nuestro caso) y comparar los resultados obtenidos. En el caso que el SGBD nos dé un error en la ejecución de la SELECT del alumno, el sistema mandará el mensaje de “error de sintaxis” al alumno. Para dar una mayor independencia al sistema y no tener que estar vinculado a un único SGBD, el acceso a éste se hace a través de las librerías Pear. La Figura 9.5 muestra la arquitectura del sistema de ejecución de sentencias SELECT.
Figura 9.5 Arquitectura del sistema ACME-SQL.
Comentar que la primera vez que se ejecuta una consulta el sistema todavía no dispone de la base de datos creada. En este caso, de forma totalmente automática, se crean cada una de las tablas a partir de las especificaciones del problema.
Este proceso se repetirá sobre varias bases de datos con la misma estructura pero con distintos valores para evitar al máximo posibles aciertos por casualidad.
Comprobación de los resultados
Una vez se dispone de los resultados obtenidos con la ejecución de las dos SELECT sólo nos queda comprobar si son iguales. En esta comprobación nos podemos encontrar con la casuística siguiente:
Los dos resultados obtenidos tengan distinto número de filas y/o columnas. En este caso la solución es incorrecta y se da el mensaje de error correspondiente.
ADMINISTRADOR
NAV E G ADO R W E B
Pla ta fo rm a e -lea rning ACM E B AS E DE DATO S DEL S ISTE MA ALUMNO S P ROFE SORE S REP OS IT ORIO P ROBLE MA S
P ear lib raries
DB MS ’s SQ LS erver DB M S’s Oracle C or r ec to r A C ME - S Q L In t er f az A C M E -S Q L
…
ADMINISTRADOR NAV E G ADO R W E BPla ta fo rm a e -lea rning ACM E B AS E DE DATO S DEL S ISTE MA ALUMNO S P ROFE SORE S REP OS IT ORIO P ROBLE MA S
P ear lib raries
DB MS ’s SQ LS erver DB M S’s Oracle C or r ec to r A C ME - S Q L In t er f az A C M E -S Q L
…
Los dos resultados obtenidos tengan el mismo número de filas y columnas. En este caso iremos comprobando si los valores de cada una de los campos son coincidentes. Si efectivamente es así la solución será correcta.
Los dos resultados obtenidos tengan el mismo número de filas y columnas pero los valores sean distintos. En este caso se hará la comprobación de que los valores no estén en distinto orden (los campos estén en distinto orden). En este caso se comprueba para cada tupla si los valores coinciden con los esperados a pesar del orden distinto. En caso de coincidir se dará el mensaje de correcto, al igual que en el apartado anterior y en caso de no coincidir, el mensaje de incorrecto. En caso de que la respuesta sea incorrecta el alumno visualizará en la zona 3 de la Figura 9.3 el resultado obtenido con su consulta y el obtenido con la SELECT correcta del profesor, obtenidos según los valores del test de pruebas en el que se han detectado las diferencias. Para evitar posibles soluciones correctas “por casualidad” se pasan los diferentes tests de pruebas especificados en el problema base. Si con la ejecución de todos los test de pruebas se obtienen soluciones correctas consideramos la solución correcta y así lo notificamos al alumno. En la misma zona anterior el alumno visualizará los dos resultados y además el sistema le mostrará la sentencia del profesor, como solución óptima, para que el alumno la pueda conocer.