Herramienta para la generación aleatoria de enunciados de examen de tipo test
Texto completo
(2)
(3) A mis padres y mi hermana, por su apoyo incondicional en toda mi vida. A Alberto, por su paciencia y sus ánimos para seguir adelante.. I.
(4)
(5) Resumen Las pruebas de evaluación de algunas asignaturas en la Escuela Técnica Superior de Ingenieros Informáticos de la Universidad Politécnica de Madrid se realizan mediante exámenes de tipo test que contienen diferentes ejercicios relacionados con el temario impartido. Es habitual generar diferentes versiones del mismo examen que se reparten en un orden determinado entre todos alumnos con el fin de evitar la copia de resultados y por ello se requiere que el mismo contenido de la prueba aparezca ordenado de forma aleatoria en cada una de las versiones del examen, conservando el mismo enunciado del examen, número de preguntas y respuestas. Hasta el momento, dentro del Departamento de Lenguajes y Sistemas e Ingenierı́a del Software se ha estado utilizando una herramienta que permite la generación de diferentes enunciados, combinando el orden de las respuestas de las distintas preguntas que componen el examen. Debido a una serie de limitaciones y nuevas necesidades derivadas de la experiencia con la herramienta anterior, se decide desarrollar una nueva herramienta que mejore el formato de especificación de los exámenes y amplı́e sus funcionalidades, reduciendo el tiempo de ejecución y permitiendo que pueda ser ejecutada en cualquier plataforma. Este proyecto fin de carrera analiza las limitaciones encontradas en la herramienta anterior, determinando qué tecnologı́as pueden ayudar a satisfacer los objetivos identificados, definiendo un nuevo formato de definición de exámenes y diseñando y realizando un nuevo componente software que permita conservar y ampliar las funcionalidades de la herramienta anterior, mejorando el rendimiento y asegurando que pueda ser ejecutado bajo cualquier sistema operativo. En primer lugar se realiza el estudio de la herramienta Barajador.sh, identificando las funcionalidades que ofrece y el lenguaje de especificación definido. El resultado de este estudio permite conocer los elementos que configuran un examen a partir de los cuales se definirá un XSD que represente tanto la cabecera de un examen como los ejercicios contenidos, soportando las nuevas funcionalidades solicitadas. En segundo lugar se diseña y desarrolla una nueva herramienta siguiendo el paradigma de la orientación a objetos, puesto que entre otras cosas, permite modularidad, mantenibilidad, fiabilidad y reusabilidad, caracterı́sticas necesarias para poder afrontar las lı́neas futuras identificadas. Se utiliza java como lenguaje de desarrollo y ası́ que consigue disponer de una herramienta que puede ejecutarse en múltiples plataformas, cumpliendo otro de los objetivos identificados.. III.
(6)
(7) Agradecimientos A lo largo de mi carrera académica, personal y profesional, me he cruzado con multitud de personas que me han acompañado y que me han servido de experiencia y referencia en mi aprendizaje y evolución, permitiéndome llegando hasta donde estoy hoy en dı́a. En primer lugar me gustarı́a agradecer a Jaime la oportunidad de poder realizar este proyecto fin de carrera, su paciencia, tiempo, consejos y seguimiento. Mi madre y mi hermana son mis incondicionales, mostrándome en todo momento su apoyo y confianza y animándome a seguir adelante y superar las metas pendientes. Me gustarı́a agradecerles todo lo que me aportan cada dı́a y en concreto, el ánimo que me han dado para continuar y finalizar este proyecto. No creo que hubiese tenido ánimos suficientes para finalizar esta carrera si no hubiese sido por Alberto, al que le debo su perseverancia para asegurarse de que finalizaba este proyecto. Le agradezco su eterna paciencia, sus ánimos infinitos y que haya estado ahı́ siempre que he necesitado un empujón. Me gustarı́a agradecer a mis amigos, en especial a Alfonso y Ángela y a mi familia, su constante preocupación y apoyo, sus ánimos y consejos y la confianza que han depositado en mi en todo momento. Por último, me gustarı́a agradecer a mi padre haber sido un referente al que seguir en mi vida, del que he intentado siempre tomar como ejemplo y gracias al que empecé a estudiar esta carrera. Fue quien me acompañó desde el primer dı́a a matricularme y el que siempre confió en mi. Siento profundamente que no vaya a poder ver que finalmente he conseguido cerrar esta etapa pero estoy segura de que confiaba en que serı́a capaz de retomar y finalizar mis estudios.. V.
(8)
(9) Índice general. Índice de Figuras. XI. Índice de Tablas. XII. Acrónimos y abreviaturas. 1. I. 3. Introducción y Objetivos. Introducción 1.1. Problemática y motivación . . . . . . . . . . . . . . . . . . . . . . . . . 1.2. Objetivos y tareas a realizar . . . . . . . . . . . . . . . . . . . . . . . . 1.3. Estructura del documento . . . . . . . . . . . . . . . . . . . . . . . . .. 5 5 6 7. II. 9. Estado de la Cuestión. LA TE X 2.1. TE X . . . . . . . . . . . 2.2. LA TE X . . . . . . . . . . 2.2.1. Comandos LaTeX 2.2.2. Entornos LaTeX. . . . .. 11 11 11 12 13. . . . . . . . . .. 15 15 16 19 20 21 22 23 23 23. XML y XSD 4.1. XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.1. Estructura de un documento XML . . . . . . . . . . . . . . . . 4.1.2. Documentos XML bien formados y control de errores . . . . . .. 29 29 29 30. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. Barajador script bash 3.1. Barajador.sh . . . . . . . . . . . . . . . . . . . 3.2. Fichero de entrada examenItFlexible.tst . . . . 3.3. Fichero generado examenItFlexible.mix.tex . . 3.4. Fichero generado .key . . . . . . . . . . . . . . 3.5. Fichero de configuración opcionesItFlexible.tex 3.6. Fichero .tex examenItFlexible.tex . . . . . . . 3.7. Fichero de estilos ordinal.sty . . . . . . . . . . 3.8. Fichero de estilos configur.sty . . . . . . . . . 3.9. Fichero de estilos examennew.sty . . . . . . .. VII. . . . .. . . . . . . . . .. . . . .. . . . . . . . . .. . . . .. . . . . . . . . .. . . . .. . . . . . . . . .. . . . .. . . . . . . . . .. . . . .. . . . . . . . . .. . . . .. . . . . . . . . .. . . . .. . . . . . . . . .. . . . .. . . . . . . . . .. . . . .. . . . . . . . . .. . . . .. . . . . . . . . .. . . . .. . . . . . . . . .. . . . .. . . . . . . . . ..
(10) VIII. ÍNDICE GENERAL. 4.1.3. 4.2. XSD 4.2.1. 4.2.2.. Partes de un documento XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ¿Para qué sirve? . . . . . . . . . . . . . . . . . . Conceptos . . . . . . . . . . . . . . . . . . . . . 4.2.2.1. Cómo hacer referencia a un esquema Definition (XSD) . . . . . . . . . . . . 4.2.2.2. Validación del XML usando XSD . . . 4.2.2.3. Declaraciones y definiciones . . . . . . 4.2.2.4. Estructura del esquema XSD . . . . .. . . . . . . . . . . . . . . . . XML . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . Schema . . . . . . . . . . . . . . . . . . . .. 30 31 31 32. JAXB 5.1. Uso de JAXB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2. Asociaciones de tipos de datos por defecto . . . . . . . . . . . . . . . .. 37 38 38. III. 41. Diseño y Desarrollo de la Solución. 32 32 32 32. Especificación de requisitos 6.1. Requisitos funcionales . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2. Requisitos no funcionales . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3. Limitaciones del Barajador.sh . . . . . . . . . . . . . . . . . . . . . . .. 43 43 45 45. Desarrollo 7.1. Diseño del xml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.1. Elemento examen . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.1.1. Tipo examenType . . . . . . . . . . . . . . . . . . . 7.1.1.2. Ejemplo xml del examen . . . . . . . . . . . . . . . . 7.1.2. Elemento cabecera . . . . . . . . . . . . . . . . . . . . . . . . 7.1.2.1. Ejemplo xml de la cabecera examen . . . . . . . . . 7.1.3. Elemento ejercicios . . . . . . . . . . . . . . . . . . . . . . . . 7.1.3.1. Ejemplo xml de los ejercicios del examen . . . . . . . 7.2. Diseño orientado a objetos . . . . . . . . . . . . . . . . . . . . . . . . 7.2.1. Arquitectura . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2.1.1. Diagrama de actividades . . . . . . . . . . . . . . . . 7.2.1.2. Diagrama de paquetes . . . . . . . . . . . . . . . . . 7.2.2. Modelo estático . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2.2.1. Paquete entrada\salida . . . . . . . . . . . . . . . . . 7.2.2.2. Paquete servicios . . . . . . . . . . . . . . . . . . . . 7.2.2.3. Paquete modelo.elementosexamen . . . . . . . . . . . 7.2.2.4. Paquete modelo.elementosexamenbarajado . . . . . . 7.2.2.5. Paquete modelo.examenfichero . . . . . . . . . . . . 7.2.2.6. Paquete modelo.elementosexamenlatex . . . . . . . . 7.2.2.7. Paquete modelo.jaxb.modeloexamen . . . . . . . . . 7.2.3. Modelo dinámico . . . . . . . . . . . . . . . . . . . . . . . . . 7.2.3.1. Diagrama de secuencia - Leer XML . . . . . . . . . . 7.2.3.2. Diagrama de secuencia - Validar contenido XML . . 7.2.3.3. Diagrama de secuencia - Transformar contenido XML 7.2.3.4. Diagrama de secuencia - Barajar contenido . . . . . 7.2.3.5. Diagrama de secuencia - Generar fichero Latex . . .. 47 47 47 49 51 52 61 62 69 70 70 71 72 74 74 75 77 83 83 85 88 90 90 90 90 98 101. . . . . . . . . . . . . . . . . . . . . . . . . . ..
(11) ÍNDICE GENERAL. IX. 7.2.3.6. Diagrama de secuencia - Generar fichero claves . . . . 102 7.2.3.7. Diagrama de secuencia - Generar fichero PDF . . . . . 104 Conclusiones y lı́neas futuras 105 8.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 8.2. Lı́neas futuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Bibliografı́a. 109.
(12)
(13) Índice de figuras 3.1. 3.2. 3.3. 3.4. 3.5. 3.6. 3.7.. Diagrama de documentos relacionados con Barajador.sh . Etiquetas de un fichero .tst . . . . . . . . . . . . . . . . . Etiqueta EXAMEN en fichero.tst . . . . . . . . . . . . . Etiqueta EJERCICIO en fichero.tst . . . . . . . . . . . . Etiqueta PREGUNTA en fichero.tst . . . . . . . . . . . . Fichero de claves .key . . . . . . . . . . . . . . . . . . . . Partes configurables de la cabecera del examen . . . . . .. . . . . . . .. 16 17 17 18 19 21 21. 5.8. Diagrama de JAXB . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 37. 7.9. Definición XSD del elemento raı́z examen . . . . . . . . . . . . . . . 7.10. Tipo XSD complejo examenType . . . . . . . . . . . . . . . . . . . 7.11. Tipo XSD numEnunciadosType en examenType . . . . . . . . . . . 7.12. Tipo XSD barajaEnumType en examenType . . . . . . . . . . . . . 7.13. Tipo XSD tipoNumeracionType en examenType . . . . . . . . . . . 7.14. Definición XSD del elemento cabecera de un examen . . . . . . . . 7.15. Elemento XSD infoUniversidad de la cabecera de un examen . . . . 7.16. Tipo XSD nombreType de la cabecera de un examen . . . . . . . . 7.17. Tipo XSD siglasType de la cabecera de un examen . . . . . . . . . 7.18. Elemento XSD infoFacultad de la cabecera de un examen . . . . . . 7.19. Elemento XSD infoDepartamento de la cabecera de un examen . . . 7.20. Elemento XSD infoAsignatura de la cabecera de un examen . . . . 7.21. Tipo XSD tipoAsignaturaType de la cabecera de un examen . . . . 7.22. Elemento XSD fechaexamen de la cabecera de un examen . . . . . . 7.23. Tipo XSD fechaLiteralType de la cabecera de un examen . . . . . . 7.24. Tipo XSD fechaSeparadoresType de la cabecera de un examen . . . 7.25. Elemento XSD tituloExamen de la cabecera de un examen . . . . . 7.26. Tipo XSD elementoSeleccionadoType de la cabecera de un examen 7.27. Elemento XSD subtituloExamen de la cabecera de un examen . . . 7.28. Elemento XSD textoCaratulaExamen de la cabecera de un examen 7.29. Elemento XSD prefacioDelExamen de la cabecera de un examen . . 7.30. Tipo XSD elementoPrefacioType de la cabecera de un examen . . . 7.31. Definición XSD del elemento ejercicios de un examen . . . . . . . . 7.32. Elemento XSD ejercicio en los ejercicios de un examen . . . . . . . 7.33. Tipo XSD ejercicioType en los ejercicios de un examen . . . . . . . 7.34. Tipo XSD pesoEjercicioType en los ejercicios de un examen . . . . 7.35. Elemento XSD metadatos en los ejercicios de un examen . . . . . . 7.36. Definición XSD del elemento preguntas de un examen . . . . . . . .. 48 49 50 50 51 52 53 53 53 54 54 55 55 56 56 57 57 58 59 60 60 60 62 62 63 63 64 64. XI. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . ..
(14) XII. ÍNDICE DE FIGURAS 7.37. Definición XSD del elemento pregunta de un examen . . . . . . . . . . 65 7.38. Tipo XSD preguntaType en los ejercicios de un examen . . . . . . . . . 65 7.39. Tipo XSD pesoPreguntaType en los ejercicios de un examen . . . . . . 65 7.40. Tipo XSD respuestasType en los ejercicios de un examen . . . . . . . . 66 7.41. Elemento XSD respuestasUnica en los ejercicios de un examen . . . . . 66 7.42. Tipo XSD respuestaType en los ejercicios de un examen . . . . . . . . 67 7.43. Elemento XSD respuestasMultiple en los ejercicios de un examen . . . . 68 7.44. Diagrama de actividades . . . . . . . . . . . . . . . . . . . . . . . . . . 71 7.45. Diagrama de paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 7.46. Diagrama de clases EntradaSalida . . . . . . . . . . . . . . . . . . . . . 74 7.47. Diagrama de clases Fachada del Servicio . . . . . . . . . . . . . . . . . 75 7.48. Diagrama de clases Servicio . . . . . . . . . . . . . . . . . . . . . . . . 75 7.49. Diagrama de clases ElementosExamen . . . . . . . . . . . . . . . . . . 77 7.50. Diagrama de clases Cabecera de ElementosExamen . . . . . . . . . . . 79 7.51. Diagrama de clases Contenido de ElementosExamen . . . . . . . . . . . 81 7.52. Diagrama de clases ElementosExamenBarajado . . . . . . . . . . . . . 83 7.53. Diagrama de clases ExamenFichero . . . . . . . . . . . . . . . . . . . . 84 7.54. Diagrama de clases ElementosExamenLatex . . . . . . . . . . . . . . . 86 7.55. Diagrama de clases Modelo JAXB . . . . . . . . . . . . . . . . . . . . . 89 7.56. Diagrama de secuencia-Leer XML . . . . . . . . . . . . . . . . . . . . . 91 7.57. Diagrama de secuencia-Validar contenido XML . . . . . . . . . . . . . 92 7.58. Diagrama de secuencia-Transformar contenido XML-Cabecera . . . . . 93 7.59. Diagrama de secuencia-Transformar contenido XML-Cabecera-Titulo . 94 7.60. Diagrama de secuencia-Transformar contenido XML-Cabecera-SubTitulo 94 7.61. Diagrama de secuencia-Transformar contenido XML-Cabecera-Texto . . 95 7.62. Diagrama de secuencia-Transformar contenido XML-Contenido . . . . . 96 7.63. Diagrama de secuencia-Transformar contenido XML-Contenido-Ejercicios 97 7.64. Diagrama de secuencia-Barajar contenido . . . . . . . . . . . . . . . . . 99 7.65. Diagrama de secuencia-Barajar contenido-Copia Ejercicios . . . . . . . 100 7.66. Diagrama de secuencia-Barajar contenido-Copia Ejercicios . . . . . . . 101 7.67. Diagrama de secuencia-Generar fichero Latex . . . . . . . . . . . . . . . 102 7.68. Diagrama de secuencia-Generar fichero claves . . . . . . . . . . . . . . 103 7.69. Diagrama de secuencia-Generar fichero PDF . . . . . . . . . . . . . . . 104.
(15) Índice de cuadros 4.1. 4.2. 4.3. 4.4.. Restricciones de tipos simples en XSD Indicadores de orden en XSD . . . . . Indicadores de ocurrencia en XSD . . . Indicadores de grupo en XSD . . . . .. . . . .. 34 34 34 35. 5.5. Asociación de tipos de datos con JAXB . . . . . . . . . . . . . . . . . .. 38. XIII. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . ..
(16)
(17) Acrónimos y abreviaturas DATSI Departamento de Arquitectura y Tecnologı́a de Sistemas Informáticos. DTD Definición Tipo Documento. JAXB Java Architecture for XML Binding. PDF Portable Document Format. SGML Standard Generalized Markup Language. UML Unified Mmodeling Language. UPM Universidad Politénica de Madrid. W3C World Wide Web Consortium. XML eXtensible Markup Language. XSD XML Schema Definition.. 1.
(18)
(19) Parte I. Introducción y Objetivos. 3.
(20)
(21) Introducción. Este capı́tulo presenta las motivaciones subyacentes al desarrollo de este proyecto, ası́ como sus objetivos principales. Por último, se dará una visión general de la estructura de este documento.. 1.1.. Problemática y motivación. Las pruebas de evaluación de algunas asignaturas en la Escuela Técnica Superior de Ingenieros Informáticos de la Universidad Politécnica de Madrid se realizan mediante exámenes de tipo test que contienen diferentes ejercicios relacionados con el temario impartido. La realización de las pruebas de evaluación de este tipo requieren de un documento que presente el enunciado de la prueba y de una plantilla de respuestas que será procesada por un corrector automático que obtendrá la nota alcanzada por cada alumno. Es habitual generar diferentes versiones del mismo examen, que se reparten en un orden determinado entre todos los alumnos, con el fin de evitar que los alumnos se copien entre ellos. Por ello, se requiere que el mismo contenido de la prueba aparezca ordenado de forma aleatoria en cada una de las versiones del examen conservando las mismas preguntas y respuestas. En la actualidad, dentro del Departamento de Lenguajes y Sistemas Informáticos e Ingenierı́a de Software (DLSIIS) se dispone de una herramienta de generación de enunciados de exámenes de tipo test desarrollada por el profesor Francisco Rosales. Esta herramienta se emplea en la generación de pruebas de tipo test mediante la configuración de varios ficheros de entrada que definen y contienen las normas de evaluación y la redacción de los diferentes problemas/ejercicios relacionados con el contenido de una asignatura. Tras varios años utilizando esta herramienta, se han identificado una serie de posibles mejoras que han motivado el rediseño de la misma, que será el objeto de este proyecto fin de carrera. Básicamente, se pretende mejorar el formato de especificación de los exámenes; reducir considerablemente el tiempo de ejecución de la herramienta; y conseguir una herramienta multiplataforma. 5.
(22) 6. 1.2. OBJETIVOS Y TAREAS A REALIZAR. 1.2.. Objetivos y tareas a realizar. Debido a un conjunto de limitaciones y nuevas necesidades derivadas de la experiencia con la anterior herramienta de generación de enunciados, surge la idea de desarrollar una nueva herramienta que supere estas limitaciones y de respuestas a las nuevas necesidades. Para ello se plantean los siguientes objetivos: 1. Crear un lenguaje de especificación de exámenes de tipo test para la nueva herramienta que permita configurar al menos los mismos parámetros que el lenguaje utilizado por la herramienta anterior, pero que sea más fácilmente editable que dicho lenguaje. 2. El tiempo de ejecución de la nueva herramienta debe ser más bajo que el de la herramienta anterior. 3. La mantenibilidad de la nueva herramienta debe ser mejor que la de la herramienta anterior. 4. La nueva herramienta debe ser multiplataforma. Para alcanzar los objetivos descritos se tendrán que llevar a cabo las tareas que se enumeran a continuación: 1. Tareas relacionadas con el primer objetivo: • Se estudiará el sistema anteriormente desarrollado, tanto la definición de sus ficheros de entrada como el funcionamiento de la herramienta. Será necesario conocer los elementos que forman parte de un examen, los parámetros de configuración establecidos, las acciones seguidas durante el proceso de generación de los enunciados, los ficheros intermedios generados antes de la formación del Portable Document Format (PDF) final y los ficheros de estilos utilizados. • Se desglosará la información manejada durante el proceso para conservar la estructura del examen e intentar reutilizar en la medida de lo posible la maquetación del fichero .tex generado, adaptándolo a los nuevos requerimientos y funcionalidades. • Con el fin de cumplir el conjunto de requisitos que se recogen en este proyecto fin de carrera (detallados en el capı́tulo III), será necesario conocer y profundizar en las diferentes tecnologı́as que se presentan en el apartado Estado de la cuestión. • Se diseñará un único fichero de entrada con los contenidos del examen expresado en un formato de fácil compresión, ampliamente conocido y fácilmente extensible. El contenido del fichero de entrada presentará toda la información del examen, tanto los datos de la cabecera, como el conjunto de ejercicios, preguntas y respuestas, y al mismo tiempo, permitirá establecer la configuración que determinará qué elementos pueden aparecer en distinto orden en cada versión del enunciado, el número de versiones a generar y el tipo de numeración de los elementos contenidos. 2. Tareas asociadas al resto de objetivos:.
(23) CAPÍTULO 1. INTRODUCCIÓN. 7. • Se realizará un diseño siguiendo el paradigma de orientación a objetos y se aplicarán patrones de diseño. • Se implementará el diseño en un lenguaje de programación orientado a objetos y multiplataforma más rápido que el lenguaje de script bash.. 1.3.. Estructura del documento. El actual documento se divide en tres partes que, a su vez, contienen varios capı́tulos que estructuran la información presentada: La primera parte del documento está constituida por esta introducción. En la segunda parte del documento se presentarán las herramientas y tecnologı́as más relevantes que se han necesitado conocer para el desarrollo de la nueva herramienta: • Se introducirá el lenguaje LaTeX y los principales elementos que serán utilizados en la generación de un fichero .tex intermedio. • Se describirá la herramienta Barajador.sh utilizada hasta el momento para la generación de exámenes de tipo test. • Se presentará el lenguaje de marcado XML y los esquemas XSD. • Por último se explicará brevemente el framework JAXB que será utilizado para el manejo y transformación de ficheros XML. La tercera parte del documento contendrá el diseño y desarrollo de la solución: • Se recopila el conjunto de los diferentes requisitos del proyecto (tanto funcionales como no funcionales) • Se detalla el diseño realizado previo al desarrollo de la nueva herramienta generada: • Se define el XSD creado para representar la estructura de un examen. • Se presentan los diferentes diagramas realizados durante la fase de diseño de la herramienta que permiten introducir una visión sobre su arquitectura, sus componentes y las acciones realizadas durante el proceso de generación de exámenes. • Por último se recogerán las conclusiones alcanzadas y se presentarán las lı́neas futuras que pueden acometerse de cara a la mejora o ampliación del desarrollo realizado..
(24)
(25) Parte II. Estado de la Cuestión. 9.
(26)
(27) LATE X LA TE X es un lenguaje de marcado utilizado para la creación de documentos, especialmente libros y documentos cientı́fico-técnicos. Está formado por un gran conjunto de macros (u órdenes) del lenguaje TeX, de código abierto y que permite crear libros, tesis y artı́culos técnicos con una elevada calidad tipográfica, comparable a la de una editorial cientı́fica. En este capı́tulo se introduce el lenguaje de programación TeX y aquellos comandos de LaTex utilizados a lo largo del desarrollo de este proyecto.. 2.1.. TE X. TeX es un lenguaje de programación de bajo nivel creado por Donald Knuth para componer documentos de forma atractiva y consistente. Knuth empezó a escribir el motor de TeX en 1977 para explorar el potencial de los equipos de impresión digital que comenzaban a infiltrarse en la industria editorial en ese momento, sobre todo, con la esperanza de que pudiese revertir la tendencia de deterioro de la calidad tipográfica que afectaba a sus propios libros y artı́culos [LaT13a]. El nombre TeX, creado por su desarrollador, se corresponde con τ χ, con la consonante final de loch o Bach. (Donald E. Knuth, El TeXbook). Las letras del nombre tienen el propósito de representar a las letras griegas tau, épsilon y chi, ası́ como TeX es una abreviatura de τ χ ν η (TEXNHtechne), del griego ”arte” y ”artesanal”, que es también la raı́z de la palabra ”técnica” . La programación en TeX generalmente progresa a lo largo de una curva de aprendizaje muy gradual, lo que requiere una importante inversión de tiempo para construir macros personalizadas para el formato de texto. Afortunadamente, los sistemas de preparación de documentos basados en TeX, que consisten en colecciones de macros pre-construidas existen. Estas macros pre-construidas suponen un ahorro de tiempo, automatizan ciertas tareas repetitivas y ayudan a reducir los errores introducidos por el usuario; sin embargo, esta comodidad viene a costa de sacrificar parte de la flexibilidad de diseño. Uno de los paquetes de macros más populares se llama LaTeX.. 2.2.. LATE X. LaTeX (pronunciado ya sea ”Lah − tech” o ”Lay − tech”) es un paquete de macros basado en TeX creado por Leslie Lamport. Su propósito es simplificar la composición 11.
(28) 2.2. LA TE X. 12. tipográfica TeX, especialmente para los documentos que contengan fórmulas matemáticas. Dentro del sistema de composición, su nombre está formateado como LA TE X. Muchos autores posteriores han contribuido extensiones para LaTeX, llamados paquetes o estilos. Algunos de éstos se incluyen con la mayorı́a de las distribuciones de software TeX / LaTeX. Desde que LaTeX comprende un grupo de comandos TeX, la edición de documentos LaTeX es un ejercicio de programación. Ası́, se puede crear un archivo de texto con el marcado LaTeX, que posteriormente será procesado/compilado para producir el documento final. Este enfoque tiene algunas desventajas en comparación con un WYSIWYG (What You See Is What You Get, o lo que ves es lo que obtienes) como el que se aplica en Openoffice.org o Microsoft Word. En LaTeX: • Por lo general no se verá la versión final del documento durante la edición de la misma. • Previamente se deben conocer los comandos necesarios para el marcado LaTeX. • A veces puede ser difı́cil obtener una visión completa del documento. El documento LaTeX es un archivo de texto plano con el contenido del documento y marcas adicionales, de forma que cuando el archivo de origen es procesado por el paquete de macros se pueden producir documentos en varios formatos. LaTeX soporta de forma nativa DVI y PDF, pero utilizando software adicional se puede crear fácilmente PostScript, PNG, JPEG, etc. También posee capacidades gráficas para representar fórmulas complejas, ecuaciones, notación cientı́fica, etc., y permite estructurar de una manera muy sencilla el documento, con capı́tulos, secciones, generación automática de ı́ndices, etc. Para la creación de un documento con LaTeX se puede utilizar un editor de texto para crear los archivos fuente, con las macros y el contenido adecuado, para posteriormente procesarlo, compilarlo y generar la salida, normalmente en PDF. Para la generación del presente documento, se ha utilizado LaTeX, usando como editor de textos TeXnicCenter, el cual es un editor de software libre para sistemas Windows que proporciona las herramientas necesarias para la composición y compilación de textos escritos en LaTeX. En la siguiente sección se especifican las macros [LaT13b] más utilizadas y relevantes en la generación del documento .tex que representa el contenido de un examen.. 2.2.1.. Comandos LaTeX. LaTeX permite crear comandos o sobreescribir otros ya existentes. Para distinguir los comandos (también llamados secuencias de control) del texto plano, éstos comienzan con \. El nombre de un comando es una secuencia de letras finalizada por un espacio en blanco o un caracter que no representa una letra (como un punto, coma, corchete, etc.). Si el nombre del comando termina en espacio, éste es ”consumido” por LaTeX y no aparece en la salida. También hay comandos que consisten en una barra invertida seguida de un carácter que no representa una letra. A menudo, este tipo de comandos se utilizan para poner un sı́mbolo especial en el texto, por ejemplo\$ imprime un $ (que no se puede introducir directamente porque LaTeX los usa para iniciar el modo de matemáticas). LaTeX es case-sensitive y la mayorı́a de sus comandos se escriben en minúsculas. Algunos comandos tienen un argumento, que se sitúa entre llaves a.
(29) CAPÍTULO 2. LA TE X. 13. continuación del nombre del propio comando. Los argumentos pueden ser de dos tipos, obligatorios u opcionales: • Argumento obligatorio: proporciona información requerida por un comando para ser ejecutado. Los argumentos obligatorios se representan entre dos llaves: { }. • Argumento opcional: son permitidos en algunos comandos y son representados entre dos corchetes [ ]. La definición de un nuevo comando tiene la siguiente estructura: \newcomand {nombre} [num] {definición} Básicamente, un comando requiere de dos argumentos: el nombre del comando que se desea crear y la definición del comando. El nombre del comando puede ir o no encerrado entre llaves, mientras que el argumento num entre corchetes es opcional y especifica el número de argumentos que el nuevo comando toma (hasta un máximo de 9). Si no se indica este número, por defecto será 0, es decir, ningún argumento. Para referir a los argumentos dentro de la descripción del comando se utilizará la notación #N, siendo N el número de argumento del comando. LaTeX no permite crear un nuevo comando que sobreescriba a otro ya existente, pero existe un comando especial para el caso de que se quiera dar una nueva definición a un comando ya existente: \renewcommand, que utiliza la misma sintaxis que la orden \newcommand. Con LaTeX2e1 , también es posible añadir un parámetro por defecto a un comando siguiendo la siguiente sintaxis: \newcomand {nombre} [num] [predeterminado] {definición} En caso de que se indique el valor predeterminado, el primer argumento del conjunto especificado por num es opcional, con un valor por defecto establecido por el valor predeterminado, y a continuación, todos los argumentos son obligatorios.. 2.2.2.. Entornos LaTeX. Los entornos en LaTeX son bloques de texto que reciben un procesamiento especial. Al igual que con la orden \newcommand, hay un comando para crear un entorno propio. El comando \newenvironment utiliza la siguiente sintaxis: \newenvironment {nombre} [num] [predeterminado] {defEntrada} {defSalida} La orden \newenvironment admite argumentos (hasta 9) opcionalmente con el primero de ellos optativo. La diferencia con los comandos \newcommand reside principalmente en que en el argumento defEntrada se indican las órdenes que se deben ejecutar antes de entrar en el entorno, y en el argumento defSalida las que se deben ejecutar al salir del entorno. Una vez definido el nuevo entorno, se debe utilizar de la siguiente forma: \begin {nombre} {Arg1} ... {ArgN} Texto y comandos \end {nombre} 1. LaTeX2e es el nombre asignado a la versión de LaTeX 2.09.
(30) 14. 2.2. LA TE X. Es importante tener en cuenta que los argumentos de un entorno sólo pueden utilizarse en la definición de entrada (defEntrada). Los entornos pueden anidarse, es decir, el primero que comienza es el último en terminar..
(31) Barajador script bash Durante el año 2004, en el Departamento de Arquitectura y Tecnologı́a de Sistemas Informáticos (DATSI), el profesor Francisco Rosales desarrolló un proceso que automatiza la generación de combinaciones de contenido, llamado Barajador.sh. La ejecución de dicho proceso lleva a cabo la lectura de un fichero de entrada con un formato especı́fico, el procesamiento de su contenido y la redirección a un fichero de salida con extensión ’.mix.tex’ en formato latex.. 3.1.. Barajador.sh. El script bash Barajador.sh se crea para dar solución a la necesidad de generar diferentes enunciados de exámenes de tipo test con las mismas preguntas. Se trata de un script que puede ser ejecutado en la mayorı́a de los sistemas operativos de tipo Unix. El script realiza la lectura y procesamiento de un fichero de entrada con extensión ’.tst’: • examenItFlexible.tst: Fichero en un formato especı́fico definido que contiene la definición inicial del examen que se desea combinar. Ver apartado 3.2. Y genera diferentes combinaciones del contenido del examen, alterando el orden de las respuestas de cada pregunta. Como resultado, el script genera dos ficheros de salida: • examenItFlexible.mix.tex: Fichero en formato latex, que contendrá el cuerpo del examen con las posibles combinaciones que han sido realizadas a partir del contenido del fichero de entrada. Ver apartado 3.3. • .key: Fichero de texto plano con la información necesaria para el corrector automático de exámenes. Ver apartado 3.4. Una vez generados los ficheros resultantes, el usuario tendrá que configurar las opciones de la cabecera del examen en el fichero definido para ello: • opcionesItFlexible.tex: Fichero en formato latex con la configuración de los elementos de la cabecera del examen, que serán comunes a todas las combinaciones generadas. Ver apartado 3.5 La creación del PDF final se realizará a partir del fichero examenFlexibleIt.tex que importará el fichero examenItFlexible.mix.tex, la configuración de la cabecera del examen 15.
(32) 16. 3.2. FICHERO DE ENTRADA EXAMENITFLEXIBLE.TST. en opcionesItFlexible.tex y una serie de ficheros de estilos y parámetros de configuración: • examenItFlexible.tex: Fichero principal en formato latex que importa el resto de ficheros necesarios para la generación del PDF. Ver apartado 3.6 • ordinal.sty: Fichero de estilos que realiza la conversión de un número a su formato ordinal. Ver apartado 3.7 • configur.sty: Fichero de estilos que da soporte a la definición de parámetros configurables. Ver apartado 3.8 • examennew.sty: Fichero de estilos que define la maquetación y generación del documento pdf final. Ver apartado 3.9. A continuación se muestra un diagrama que presenta el conjunto total de ficheros necesarios durante la generación del examen:. Figura 3.1: Diagrama de documentos relacionados con Barajador.sh. 3.2.. Fichero de entrada examenItFlexible.tst. El fichero con extensión .tst será la entrada del Barajador.sh. El contenido de este fichero debe componerse siguiendo una estructura acordada que representa tanto la configuración de la combinatoria que se quiere realizar como el contenido del examen. Se definen para ello unas plantillas de texto que representan el comienzo y final de cada elemento, siendo diferentes en cada grupo de información (figura 3.2): Los elementos contenidos dentro de la etiqueta ’EXAMEN’ se utilizarán para configurar las opciones de generación del examen (ver figura 3.3), que serán consultadas durante el proceso de realización de los diferentes enunciados que pueden generarse combinando el orden de las respuestas de las preguntas de cada ejercicio..
(33) CAPÍTULO 3. BARAJADOR SCRIPT BASH ETIQUETA EXAMEN < <-’::’ :: EJERCICIO codigoEj < <-’:::’ ENUNCIADO < <-’:’ : APARTADO ESCOGE n PREGUNTA codigoPr ::: PREGUNTA codigoPr : ENUNCIADO < <-’::’ :: SELECCION < <-’::’ ::. 17. DESCRIPCIÓN Comienzo de la configuración del examen Fin de configuración del examen Comienzo de la configuración de un ejercicio identificado con el texto codigoEj Comienzo de la definición del enunciado del ejercicio Fin de la definición del enunciado Comienzo de la definición del apartado del ejercicio con el número de preguntas contenidas (n) y el código de la/s pregunta/s que lo componen (codigoPr ) Fin de la configuración del ejercicio Comienzo de la definición de una pregunta de un ejercicio del examen Fin de la definición de la pregunta Comienzo del enunciado de la pregunta Fin del enunciado de la pregunta Comienzo del listado de respuestas seleccionables dentro de la pregunta Fin del listado de selección de la pregunta. Figura 3.2: Etiquetas de un fichero .tst. Figura 3.3: Etiqueta EXAMEN en fichero.tst. Donde: • NUMERO ENUNCIADOS: se trata un número comprendido entre el 1 y el 31, que se corresponde con el número de enunciados/combinaciones diferentes del examen que se desean obtener. La codificación de los diferentes exámenes podrá realizarse por la aparición o no de los primeros 5 caracteres del abecedario (a-e) y esto condicionará la generación de hasta un máximo de 25 − 1 códigos diferentes, al quedar excluida la combinación vacı́a. • NUMERO SOLUCIONES: indica cómo escoger las respuestas de cada PREGUNTA de cara a componer el EXAMEN, indicando: • −1: solución múltiple pero como mı́nimo una..
(34) 18. 3.2. FICHERO DE ENTRADA EXAMENITFLEXIBLE.TST • 0: solución múltiple y puede que sin solución. • 1: solución única. • NUMERO RESPUESTAS: indica el número de respuestas alternativas que se desea que tenga cada PREGUNTA en el EXAMEN, y debe ser: • 0: todas las posibles • [2..5]: un número exacto • NUMERO RANDOMSEED: indica cuál será la semilla del generador de números aleatorios para la obtención de combinaciones de exámenes, donde 0 representará la opción de no realizar combinaciones diferentes. • INCLUIR EJERCICIO codigoEj: incluye el ejercicio etiquetado por codigoEj dentro de todo el conjunto de ejercicios definidos dentro del fichero, dejando fuera de la generación aquellos que no se configuren mediante este mandato.. Una vez se han establecido las caracterı́sticas para la combinatoria, a continuación se definen los ejercicios del examen mediante la etiqueta ’EJERCICIO’ (ver figura 3.4).. Figura 3.4: Etiqueta EJERCICIO en fichero.tst. Donde: • PESO REL: indica el peso relativo del ejercicio respecto al peso total del examen..
(35) CAPÍTULO 3. BARAJADOR SCRIPT BASH. 19. • ENUNCIADO: contiene el texto del enunciado del ejercicio en formato latex. • APARTADO: indica el comienzo de un contenido dentro del ejercicio. • ESCOGE n PREGUNTA codigoPr : contiene la referencia a la pregunta del ejercicio, etiquetada con codigoPr dentro del fichero de texto. Cada pregunta de un ejercicio aparecerá identificada por la etiqueta ’PREGUNTA’ junto a un código único que la identifique respecto al resto de preguntas que se definen en el fichero. Una pregunta contendrá un enunciado y un conjunto de respuestas, donde cada respuesta deberá identificarse por una letra, el valor de verdad correspondiente (TRUE—FALSE) y el texto asociado a la misma (ver figura 3.5).. Figura 3.5: Etiqueta PREGUNTA en fichero.tst. Donde: • ENUNCIADO TF: contiene el texto del enunciado de la pregunta en formato latex. • SELECCION TF: representa la única sección válida en la pregunta y debe contener una fila por respuesta alternativa, definiendo cada respuesta en tres columnas: • Identificador: letra que identifica a la respuesta en el conjunto seleccionable. • TRUE—FALSE: valor de verdad de la respuesta. • Texto: texto de la respuesta.. 3.3.. Fichero generado examenItFlexible.mix.tex. Una vez procesado el fichero de entrada examenItFlexible.tst, el Barajador.sh genera un fichero en formato latex con el contenido del examen definido bajo una estructura.
(36) 20. 3.4. FICHERO GENERADO .KEY. de comandos y entornos que agrupan las diferentes combinaciones de enunciados barajados. Cada enunciado del examen se define dentro el entorno \begin {ENUNCIADOS} {varnum-enunciados}, donde var-num-enunciados indica el número total de enunciados contenidos. Un enunciado representa una combinación de ejercicios y se identifica por una clave generada (que será la clave mostrada en la cabecera del examen) mediante el entorno \begin {ENUNCIADO} {var-clave-enunciado}. El conjunto de ejercicios del enunciado se agrupan bajo el entorno \begin {EJERCICIOS} {var-num-ejercicios}, donde varnum-ejercicios toma el valor del total de ejercicios contenidos. Cada ejercicio del enunciado se representa por el entorno \begin {EJERCICIO} {varnum-ejercicio} {var-puntos-ejercicio} {var-id-ejercicio}, cuyo var-num-ejercicio será interpretado por el paquete ordinal.sty para generar el tı́tulo del ejercicio en función de la posición que ocupa en el listado, el valor de var-puntos-ejercicio será mostrado junto al texto del ejercicio en caso de que se encuentre informado y el valor de var-id-ejercicio se utilizará para identificar al ejercicio con el fin de aplicarle un estilo particular, en caso de haberlo definido previamente en el fichero de configuración opcionesItFlexible.tex. Un ejercicio contiene varios apartados que presentan su contenido, de modo que, tanto el enunciado de un ejercicio como el listado de sus preguntas se encuentran dentro de diferentes apartados definidos por \begin {APARTADO} [var-nombre-apartado] {varid-apartado}. El apartado que contiene el enunciado del ejercicio contendrá un texto en formato latex, mientras que el apartado de preguntas tendrá un entorno \begin {ELEMENTOS} {var-num-elementos}, donde var-num-elementos represente el número de elementos contenidos. Los elementos de un ejercicio serán preguntas representadas por \begin {PREGUNTA} {var-num-pregunta} {var-puntos-pregunta} {var-id-pregunta} cuyo var-num-pregunta será interpretado por el paquete ordinal.sty para generar el tı́tulo de la pregunta en función del ordinal informado, el valor de var-puntos-pregunta será mostrado junto al texto de la pregunta en caso de que se encuentre informado y el valor de var-idpregunta se utilizará para identificar a la pregunta con el fin de aplicarle un estilo particular, en caso de haberlo definido previamente en el fichero de configuración opcionesItFlexible.tex. El texto de la pregunta se encontrará dentro del entorno definido en formato latex, mientras que el conjunto de posibles respuestas se definirá en el entorno \begin {RESPUESTAS} {var-num-respuestas}, donde var-num-respuestas representa el número total de elementos contenidos. Cada respuesta se representa por \RESPUESTA [0F/1T] {var-char-respuesta}, comando a partir del cual se indica el texto de la respuesta. La opción de verdad de la respuesta viene definida en el primer argumento del comando, representando con un 0F el valor falso y con 1T el valor verdad. El caracter mostrado en el segundo argumento var-char-respuesta será el utilizado para identificar a la respuesta en el examen (caracter comprendido en el rango A-Z).. 3.4.. Fichero generado .key. El Barajador.sh genera un segundo fichero que representa las diferentes combinaciones del examen y que, a su vez, será la entrada para el proceso automático de corrección de exámenes (ver figura 3.6)..
(37) CAPÍTULO 3. BARAJADOR SCRIPT BASH. 21. Figura 3.6: Fichero de claves .key. Por cada enunciado se crea una lı́nea en el fichero de texto plano con el siguiente formato: 0,,var-clave-enunciado var-id-pregunta,listadoRespuestas,var-char-respuesta Donde: • var-clave-enunciado: es la clave definida para representar de forma unı́voca al enunciado generado, compuesta por una combinación de letras de forma ordenada en el rango a-e. • var-id-pregunta: es el identificador único de la pregunta en el enunciado. • listadoRespueta: es un listado de caracteres que representa al conjunto de respuestas respecto al orden inicial (por ejemplo acbd). • var-char-respuesta: es el caracter asociado a la respuesta correcta en el listado.. 3.5.. Fichero de configuración opcionesItFlexible.tex. La cabecera de cada enunciado generado se define a través de la modificación del fichero opcionesItFlexible.tex, que establece el contenido y la presencia de cada parte haciendo uso de los comandos de configuración definidos en el fichero de estilos 3.8. La cabecera de un examen se estructura en los siguientes apartados (ver figura 3.7):. Figura 3.7: Partes configurables de la cabecera del examen.
(38) 22. 3.6. FICHERO .TEX EXAMENITFLEXIBLE.TEX. El contenido de la carátula se generará según la configuración definida en la opción LaCaratula, que recibirá como parámetros de entrada las siguientes opciones: • CUADRO DE IDENTIDAD DEL ALUMNO: configuración relacionada con la parte de la cabecera que muestra la información de identificación del alumno. El cuadro de identidad del alumno formará parte de la cabecera según se especifique en el fichero de configuración, de modo que la apariencia y contenido del mismo podrán verse modificados a través de la opción CuadroDeIdentidadDelAlumno. • TÍTULO DEL EXAMEN: texto que compone el tı́tulo del examen. El tı́tulo puede parametrizarse configurando la opción TituloDelExamen, que recibe como parámetros: • NombreDeLaUniversidad: nombre de la universidad. • NombreDeLaFacultad: nombre de la facultad. • NombreDelDepartamento: nombre del departamento. • SiglasDeLaUniversidad: siglas de la universidad. • SiglasDeLaFacultad: siglas de la facultad. • SiglasDelDepartamento: siglas del departamento. • SUBTÍTULO DEL EXAMEN: texto que compone el subtı́tulo del examen. El subtı́tulo puede parametrizarse configurando la opción SubtituloDelExamen, que recibe como parámetros: • NombreDeLaAsignatura: nombre de la asignatura. • SiglasDeLaAsignatura: siglas de la asignatura. • TipoDeAsignatura: tipo de asignatura. • TipoDeExamen: tipo del examen. • FechaDelExamen: fecha de celebración del examen. • TEXTO DE LA CARÁTULA: texto con las normas de evaluación del examen, que contendrá información sobre la estructura, revisión, duración del examen, etc. a través de la configuración de las opciones TextoDeLaCaratula y PrefacioDelExamen.. 3.6.. Fichero .tex examenItFlexible.tex. El fichero examenItFlexible.tex en formato latex, contiene la importación de todos aquellos ficheros necesarios para la generación del pdf final, incluyendo todos los ficheros de estilos comentados, las opciones de la cabecera y el resultado del barajador con extensión .mix.tex..
(39) CAPÍTULO 3. BARAJADOR SCRIPT BASH. 3.7.. 23. Fichero de estilos ordinal.sty. La generación del valor ordinal de un número se realiza mediante los comandos definidos en este fichero de estilos, que será utilizado para la creación de los tı́tulos de ejercicios y preguntas en el examen.. 3.8.. Fichero de estilos configur.sty. El fichero de estilos configur.sty da soporte a parámetros configurables del examen, definiendo tanto mandatos que representan métodos de invocación como la configuración del cuerpo de cada uno de ellos. Se definen los siguientes mandatos: • \noCONFIGURARXL{name body}: mandato que no hace nada. • \noCONFIGURAR{name body}: versión monopárrafo del anterior. • \CONFIGURARXL{name body}: mandato que redefine \@@x@@. • \CONFIGURAR{name body}: versión monopárrafo del anterior. • \CONFIGURABLEXL{name argv head body tail}: mandato que define \@x@ (método de invocación) y \@@x@@ (cuerpo re-configurable). • \CONFIGURABLE{name argv head body tail}: versión monopárrafo del anterior. • \OPCIONAL{x}: mandato monopárrafo como mecanismo para usar el cuerpo re-configurable de la opción x que haya podido ser configurada sin haber sido declarada explı́citamente como CONFIGURABLE.. 3.9.. Fichero de estilos examennew.sty. El fichero examennew.sty establece el conjunto de estilos utilizados para la presentación de exámenes tipo test barajados. En él se definen las opciones de configuración, presentando los comandos de cada elemento del examen y estableciendo su contenido por defecto y los estilos del pdf resultante. Las opciones declaradas aportarán la caracterı́stica de configuración a elementos generales, elementos relacionados con la identidad, partes de la carátula y encolumnado del examen. A continuación se presentan algunos de ellos: %%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%% Generales %%%%%%%%% \@CONFIGURABLE{CentrarLosTextosDe} {0} {}{#1}{} % 0 ó 1 \@CONFIGURABLE{CopyRight}% {%% Recibirá \copyright {\the\year}.
(40) 24. 3.9. FICHERO DE ESTILOS EXAMENNEW.STY. {\uppercase\expandafter{\romannumeral\year}} \@NombreDeLaUniversidad@ \@NombreDeLaFacultad@ \@NombreDelDepartamento@ \@SiglasDeLaUniversidad@ \@SiglasDeLaFacultad@ \@SiglasDelDepartamento@ }{% HEAD \begin{footnotesize} }{% BODY {Copyright #1 #3, \sc#4.}% }{% TAIL \end{footnotesize} } %%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%% Identidad %%%%%%%%% \@CONFIGURABLE{IdentidadSobreEnunciado} {1} {}{#1}{} % 0 ó 1 \@CONFIGURABLE{IdentidadSobreCuestiones}{1} {}{#1}{} % 0 ó 1 \@CONFIGURABLE{CuadroDeIdentidadDelAlumno}% {%% Void }{% HEAD \begin{normalsize}% \noindent }{% BODY {\bf Apellidos,~{}Nombre:\hspace{\stretch{5}}% No ~{}Matrı́cula:\hspace{\stretch{1}}% D.N.I.:\hspace{\stretch{1}}% }% }{% TAIL \end{normalsize}% \vspace{2ex}% \hrule height0.1pt%--------------------} %%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%% Carátula %%%%%%%%% \@CONFIGURABLE{NombreDeLaUniversidad} {{Universidad Politécnica de Madrid}} {}{#1}{} \@CONFIGURABLE{NombreDeLaFacultad} {{Facultad de Informática}} {}{#1}{} \@CONFIGURABLE{NombreDelDepartamento} {{Departamento de Arquitectura y Tecnologı́a de Sistemas Informáticos}} {}{#1}{} \@CONFIGURABLE{SiglasDeLaUniversidad} {{UPM}} {}{#1}{} \@CONFIGURABLE{SiglasDeLaFacultad} {{F\/I}} {}{#1}{} \@CONFIGURABLE{SiglasDelDepartamento} {{DATSI}} {}{#1}{}.
(41) CAPÍTULO 3. BARAJADOR SCRIPT BASH. 25. \@CONFIGURABLE{TituloDelExamen}% {%% Recibirá: \@NombreDeLaUniversidad@ \@NombreDeLaFacultad@ \@NombreDelDepartamento@ \@SiglasDeLaUniversidad@ \@SiglasDeLaFacultad@ \@SiglasDelDepartamento@ }{% HEAD }{% BODY {\rm #1. #2.}% \\ {\rm #3.}% }{% TAIL } \@CONFIGURABLE{NombreDeLaAsignatura} {{\@NECESARIO[Nombre~{}De~{}La~{} Asignatura]{NombreDeLaAsignatura}}} {}{#1}{} \@CONFIGURABLE{SiglasDeLaAsignatura} {{\@NECESARIO[Siglas~{}De~{}La~{} Asignatura]{SiglasDeLaAsignatura}}} {}{#1}{} \@CONFIGURABLE{TipoDeAsignatura} {{\@NECESARIO[Tipo~{}De~{}Asignatura] {TipoDeAsignatura}}} {}{#1}{} \@CONFIGURABLE{TipoDeExamen} {{\@NECESARIO[Tipo~{}De~{}Examen] {TipoDeExamen}}} {}{#1}{} \@CONFIGURABLE{FechaDelExamen} {{\@NECESARIO[dd--Mmm--aaaa] {FechaDelExamen}}} {}{#1}{} \@CONFIGURABLE{SubtituloDelExamen}% {%% Recibirá: \@NombreDeLaAsignatura@ \@SiglasDeLaAsignatura@ \@TipoDeAsignatura@ \@TipoDeExamen@ \@FechaDelExamen@ }{% HEAD }{% BODY {\rm #4 de #1. #5.}% \\ }{% TAIL } \@CONFIGURABLE{FechaDePublicacion} {{\@NECESARIO[dd--Mmm--aaa] {FechaDePublicacion}}} {}{#1}{} \@CONFIGURABLE{FechaDeRevision} {{\@NECESARIO[dd--Mmm--aaa] {FechaDeRevision}}} {}{#1}{} \@CONFIGURABLE{CuantosEnunciados} {{\@NECESARIO[??] {CuantosEnunciados}}} {}{#1}{} \@CONFIGURABLE{PesoTotalDelEnunciado} {{\@NECESARIO[??].
(42) 26. 3.9. FICHERO DE ESTILOS EXAMENNEW.STY. {PesoTotalDelEnunciado}}} {}{#1}{} \@CONFIGURABLE{DuracionDelExamen} {{\@NECESARIO[??] {DuracionDelExamen}}} {}{#1}{} \@CONFIGURABLE{TextoDeLaCaratula}% {%% Recibirá: \@FechaDePublicacion@ \@FechaDeRevision@ \@PesoTotalDelEnunciado@ \@DuracionDelExamen@ }{% HEAD \begin{footnotesize}% }{% BODY El peso total de este examen son #3 puntos. Para su realización dispone de #4. \\ Las notas se publicarán el #1. La revisión se realizará el #2. }{% TAIL \end{footnotesize}% } \@CONFIGURABLEXL{PrefacioDelExamen}% {%% Recibirá: }{% HEAD ~{}\\ \hrule height0.1pt%--------------------\begin{flushleft}% \begin{footnotesize}% }{% BODY }{% TAIL \end{footnotesize}% \end{flushleft}% } \@CONFIGURABLEXL{LaCaratula}% {%% Recibirá: \@TituloDelExamen@ \@SubtituloDelExamen@ \@TextoDeLaCaratula@ \@PrefacioDelExamen@ }{% HEAD \begin{center}% \begin{normalsize}% }{% BODY #1\par #2\par #3\par #4% }{% TAIL.
(43) CAPÍTULO 3. BARAJADOR SCRIPT BASH. 27. \end{normalsize}% \end{center}% } El fichero de estilos del examen no sólo define las opciones de configuración sino también verifica la estructura de los elementos del examen (navegando por niveles de anidamiento); se ocupa de validar si se encuentran todos los elementos necesarios en la generación del pdf; usa la conversión de números por el ordinal correspondiente en los tı́tulos de ejercicios y preguntas; y establece los estilos del documento resultante (tamaño de letra, margen, paginación, etc..)..
(44)
(45) XML y XSD Un esquema XML, conocido comúnmente como una definición de esquema XML (XSD), describe formalmente lo que un documento XML puede contener. El esquema XML define la forma o estructura de un documento XML junto con las reglas relacionadas con los datos contenidos y la semántica que define lo que un elemento puede contener, ası́ como los sub-elementos y cuáles deben estar presentes. También se pueden describir los tipos y valores que pueden asignarse a cada elemento o atributo [XML13a].. 4.1.. XML. XML, siglas en inglés de eXtensible Markup Language (XML), es un lenguaje de marcas desarrollado por el World Wide Web Consortium (W3C) utilizado para almacenar datos de forma legible. Deriva del lenguaje SGML2 y permite definir la gramática de lenguajes especı́ficos para estructurar documentos grandes. A diferencia de otros lenguajes, XML da soporte a bases de datos, siendo útil cuando varias aplicaciones deben comunicarse entre sı́ o integrar información. XML no ha nacido sólo para su aplicación en Internet, sino que se propone como un estándar para el intercambio de información estructurada entre diferentes plataformas. Se puede usar en bases de datos, editores de texto, hojas de cálculo, etc. XML es una tecnologı́a sencilla que tiene a su alrededor otras que la complementan y la hacen mucho más grande y con unas posibilidades mucho mayores. Tiene un papel muy importante en la actualidad ya que permite la compatibilidad entre sistemas para compartir información de una manera segura, fiable y fácil.. 4.1.1.. Estructura de un documento XML. La tecnologı́a XML busca dar solución al problema de expresar información estructurada de la manera más abstracta y reutilizable posible. Que la información sea estructurada quiere decir que se compone de partes bien definidas y que esas partes se componen, a su vez, de otras partes. Entonces se tiene un árbol de partes de información. Estas partes se llaman elementos y se señalan mediante etiquetas. Una etiqueta consiste en una marca hecha en el documento que señala una porción de este documento como un elemento. Un pedazo de información con un sentido claro y 2. Standard Generalized Markup Language (SGML) o Lenguaje de Marcado Generalizado Estándar. Consiste en un sistema para la organización y etiquetado de documentos. 29.
(46) 30. 4.1. XML. definido. Las etiquetas tienen la forma < nombre >, donde nombre es el nombre del elemento que se está señalando. Los bloques básicos de construcción de esquemas XML son los elementos y atributos, cuyo contenido viene definido por los tipos de datos definidos. Al crear un esquema XML se definen los elementos individuales, los atributos y los tipos de datos válidos para ellos. Los elementos describen datos, mientras que los atributos son las propiedades de un elemento, ya que proporcionan una definición más precisa sobre la forma en la que se describen las caracterı́sticas de los objetos y clases.. 4.1.2.. Documentos XML bien formados y control de errores. Los documentos denominados considerados bien formados son aquellos que cumplen con todas las definiciones básicas de formato que se enumeran a continuación: • Los documentos han de seguir una estructura estrictamente jerárquica en lo que respecta a las etiquetas que delimitan sus elementos. Una etiqueta debe estar correctamente incluida en otra, es decir, las etiquetas deben estar correctamente anidadas. Los elementos con contenido deben estar correctamente cerrados. • Los documentos XML sólo permiten un elemento raı́z del que todos los demás sean parte, es decir, sólo puede tener un elemento inicial. • Los valores de los atributos en XML siempre deben estar encerrados entre comillas simples o dobles. • El XML es sensible a mayúsculas y minúsculas. Existe un conjunto de caracteres llamados espacios en blanco (espacios, tabuladores, retornos de carro, saltos de lı́nea) que los procesadores XML tratan de forma diferente en el marcado XML. • Es necesario asignar nombres a las estructuras, tipos de elementos, entidades, elementos particulares, etc. • Las construcciones como etiquetas, referencias de entidad y declaraciones se denominan marcas, y son partes del documento que el procesador XML espera poder reconocer.. 4.1.3.. Partes de un documento XML. Un documento XML está formado por el prólogo y por el cuerpo del documento: • Prólogo: aunque no es obligatorio, los documentos XML pueden empezar con unas lı́neas que describen la versión XML, el tipo de documento y otras cosas. El prólogo de un documento XML contiene: • Una declaración XML. Es la sentencia que declara al documento como un documento XML. • Una declaración de tipo de documento. Enlaza el documento con su DTD3 3. Definiciǿn Tipo Documento (DTD) (siglas en inglés de document type definition) es una descripción de estructura y sintaxis de un documento XML o SGML..
(47) CAPÍTULO 4. XML Y XSD. 31. o el DTD puede estar incluido en la propia declaración o ambas cosas al mismo tiempo. • Uno o más comentarios e instrucciones de procesamiento. • Cuerpo: A diferencia del prólogo, el cuerpo no es opcional en un documento XML, y debe contener sólo un elemento raı́z, caracterı́stica indispensable también para que el documento esté bien formado. • Elementos: Los elementos XML pueden tener contenido (más elementos, caracteres o ambos), o bien ser elementos vacı́os. • Atributos: Los elementos pueden tener atributos, que son una manera de incorporar caracterı́sticas o propiedades a los elementos de un documento. Se trata de pares nombre/valor que aparecen a continuación del nombre del elemento, dentro de las etiquetas de comienzo y fin, y cuyo valor debe ir entre comillas. • Entidades predefinidas: Entidades para representar caracteres especiales para que de esa forma no sean interpretados como marcado en el procesador XML. • Secciones CDATA: Es una construcción XML para especificar datos utilizando cualquier caracter sin que se interprete como marcado XML.. 4.2.. XSD. XSD es un lenguaje de esquema utilizado para describir la estructura y las restricciones de los contenidos de los documentos XML de una forma muy precisa [XML13a], más allá de las normas sintácticas impuestas por el propio lenguaje XML. Se consigue ası́ una percepción del tipo de documento con un mayor nivel de abstracción que el de un documento XML sin restricciones. Fue desarrollado por el W3C y alcanzó el nivel de recomendación en mayo de 2001.. 4.2.1.. ¿Para qué sirve?. Un esquema XSD sirve para definir la correcta estructura de los elementos del documento XML (al igual que un DTD): • Define los elementos que pueden aparecer en el documento XML. • Define los atributos de los elementos que pueden aparecer en el documento XML. • Define qué elementos son hijos de los elementos principales del documento XML. • Define la secuencia en la cual los hijos de los elementos pueden aparecer en el documento XML. • Define el número de hijos de los elementos. • Define cuándo un elemento es vacı́o o puede incluir texto. • Define el tipo de datos para los elementos y sus atributos. • Define los valores predeterminados para algunos elementos y atributos..
(48) 32. 4.2. XSD. Si el documento XML no concuerda con la estructura definida en el archivo XSD al que referencia, entonces el documento XML será erróneo.. 4.2.2.. Conceptos. 4.2.2.1.. Cómo hacer referencia a un esquema XSD. Una vez escrita una especificación XSD, podemos escribir un documento XML y hacer constar en el mismo que debe ser confirme a dicha especificación. Esto se hace añadiendo algunos atributos al elemento raı́z del documento XML: el atributo xsi:schemaLocation indica la ubicación del esquema XSD contra el que se debe validar el documento XML. 4.2.2.2.. Validación del XML usando XSD. La validación es el proceso por el cual se comprueba que una instancia de un documento XML se ajusta a la definición de un esquema XML, es decir, que el documento se encuentra en el formato esperado. Un esquema XSD se utiliza para: • Validar el contenido de un documento XML. • Determinar si el documento XML es una instancia válida del vocabulario expresado por el XSD. • Define los elementos que pueden aparecer dentro de un documento XML y los atributos que pueden ser asociados con un elemento. • Define si un elemento debe estar vacı́o o si por el contrario, puede contener texto. • Define el valor por defecto de un atributo. • Define qué elementos pueden contener elementos hijos. • Define la secuencia en que los elementos hijos pueden aparecer en un elemento padre. • Define el número permitido de elementos hijo. 4.2.2.3.. Declaraciones y definiciones. • Declaración: Las declaraciones describen los modelos de contenido (la estructura) de elementos y atributos dentro de las instancias de un documento XML. • Definición: Las definiciones crean nuevos tipos de datos (simples o complejos). 4.2.2.4.. Estructura del esquema XSD. En el esquema se definen los elementos de los que puede constar el documento XML y los tipos de datos que pueden contener mediante lineas de la forma:.
(49) CAPÍTULO 4. XML Y XSD. 33. <xs : e l e m e n t name=” n o m b r e d e l e l e m e n t o ” type=” t i p o d e d a t o s ” />. Los tipos de datos simples más comunes son: • xs:string • xs:decimal • xs:integer • xs:boolean • xs:date • xs:time Los elementos también pueden tener atributos, que se definen de igual manera que los elementos, pero reemplazando xs:element por xs:attribute: <xs : a t t r i b u t e name=” n o m b r e d e l a t r i b u t o ” type=” t i p o d e d a t o s ” u s e=” r e q u e r i d o / o p c i o n a l ” d e f a u l t=” v a l o r d e f e c t o ” />. También se pueden crear nuevos tipos de datos, estableciendo restricciones sobre los valores posibles de un tipo de datos predefinido. A continuación se presentan las restricciones aplicables a tipos de datos simples (ver cuadro 4.1). Se pueden definir tipos de datos compuestos mediante elementos <xs:complexType>. Los tipos de datos compuestos contienen un conjunto de tipos de datos simples o compuestos. Estos se pueden agrupar mediante indicadores de orden y también se pueden emplear indicadores de ocurrencia. A continuación se presentan los diferentes tipos de indicadores aplicables: 1. Indicadores de orden: (ver cuadro 4.2). 2. Indicadores de ocurrencia: Por defecto los elementos definidos como parte de un tipo compuesto deben aparecer exactamente una vez. Los atributos maxOccurs y minOccurs modifican este requisito (ver cuadro 4.3). 3. Indicadores de grupo: (ver cuadro 4.4).
(50) 34. 4.2. XSD. RESTRICCIÓN enumeration. DESCRIPCIÓN Define un listado de valores aceptados Especifica el número máximo de decimales permitidos. Debe ser igual o mayor que cero. Especifica el número exacto de caracteres o lista de elementos permitido. Debe ser igual o mayor que cero. Especifica los lı́mites superiores de valores numéricos (el valor debe ser menor a este valor). Especifica los lı́mites superiores de valores numéricos (el valor debe ser menor o igual a este valor). Especifica el número máximo de caracteres o lista de elementos permitido. Debe ser igual o mayor que cero. Especifica los lı́mites inferiores de valores numéricos (el valor debe ser mayor a este valor). Especifica los lı́mites inferiores de valores numéricos (el valor debe ser mayor o igual a este valor). Especifica el mı́nimo número de caracteres o lista de elementos permitido. Debe ser igual o mayor que cero. Define la secuencia exacta de caracteres que es aceptada. Especifica el número exacto de dı́gitos permitidos. Debe ser mayor que cero. Especifica cómo se manejan los espacios en blanco (tabulaciones, espacios, retornos de carro).. fractionDigits length maxExclusive maxInclusive maxLength minExclusive minInclusive minLength pattern totalDigits whiteSpace. Cuadro 4.1: Restricciones de tipos simples en XSD INDICADOR. DESCRIPCIÓN Los elementos que contiene pueden aparecer en cualquier orden.. <xs:all>...</xs:all> <xs:choice>...</xs:choice> <xs:sequence> ...</xs:sequence>. Sólo puede aparecer uno de los elementos contenidos. Los elementos que contiene deben aparecer exactamente en el mismo orden en que están definidos.. Cuadro 4.2: Indicadores de orden en XSD INDICADOR maxOccurs = ”n”. minOccurs = ”n” minOccurs = ”0”. DESCRIPCIÓN Atributos que indica que el elemento puede aparecer varias veces, hasta un máximo de ”n” veces. Si especificamos maxOccurs= ”unbounded”, el elemento puede aparecer un máximo indefinido de veces. Atributo que indica que el elemento debe aparecer un mı́nimo de ”n” veces. Significa que el elemento es opcional y puede o no aparecer. Cuadro 4.3: Indicadores de ocurrencia en XSD.
(51) CAPÍTULO 4. XML Y XSD. INDICADOR <xs:group name= ”nombre − grupo” > ...</xs:group> <xs:attributeGroup name= ”nombre − grupo” >... </xs:attributeGroup>. 35. DESCRIPCIÓN Podemos definir y asignar un nombre a un grupo de elementos. Una vez definido, en la declaración de un tipo de datos compuesto podemos hacer referencia al mismo utilizando la sintaxis <xs:group ref= ”nombre − grupo” />. De la misma forma, podemos definir y asignar un nombre a un grupo de atributos. Una vez definido, podemos hacer referencia a dicho grupo con la sintaxis <xs:attributegroup ref = ”nombre − grupo” />. Cuadro 4.4: Indicadores de grupo en XSD.
(52)
(53) JAXB Java Architecture for XML Binding (JAXB) permite a los desarrolladores Java asignar clases de Java a representaciones XML. JAXB proporciona dos caracterı́sticas principales: la capacidad de serializar4 las referencias de objetos Java a XML y a la inversa, es decir, deserializar XML en objetos Java. En otras palabras, JAXB permite almacenar y recuperar datos en memoria en cualquier formato XML, sin necesidad de implementar un conjunto especı́fico de rutinas que se encarguen de ello. JAXB es particularmente útil cuando la especificación es compleja y cambiante, ya que en tal caso cambiar regularmente las definiciones del XSD para mantenerlas sincronizadas con las definiciones de Java puede llevar mucho tiempo y ser propenso a errores. JAXB [JAX14a] es una parte de la plataforma Java SE5 y una de las APIs de la plataforma Java EE7 , y es parte del Java Web Services Development Pack (JWSDP8 ). JAXB está disponible desde la versión 1.6 SE.. Figura 5.8: Diagrama de JAXB 4. En ciencias de la computación, la serialización (o marshalling en inglés [Ser14]) consiste en un proceso de codificación de un objeto en un medio de almacenamiento con el fin de trasmitirlo a través de una conexión de red como una serie de bytes o en un formato humanamente más legible como XML o JSON 5 Java Platform, Standard Edition o Java SE es una colección de APIs6 del lenguaje de programación Java útiles para muchos programas de la Plataforma Java 7 Java Platform, Enterprise Edition o Java EE es una plataforma de programación que permite utilizar arquitecturas de N capas distribuidas y se apoya ampliamente en componentes de software modulares ejecutándose sobre un servidor de aplicaciones 8 Java Web Services Development Pack es el paquete de desarrollo de servicios web de java.. 37.
(54) 38. 5.1.. 5.2. ASOCIACIONES DE TIPOS DE DATOS POR DEFECTO. Uso de JAXB. La herramienta ”xjc” se puede utilizar para convertir un XSD y otros tipos de archivo de esquemas (en Java 1.6, XML DTD, WSDL son compatibles experimentalmente) a representación de clases. Las clases son marcadas usando anotaciones del espacio de nombres javax.xml.bind.annotation.∗, por ejemplo, @XmlRootElement y @XmlElement. Las secuencias de listas XML se representan con atributos de tipo java.util.List. Los serializadores y deserializadores se crean a través de una instancia de JAXBContext. Además JAXB incluye la herramienta ”schemagen” que en esencia puede llevar a cabo la inversa de ”xjc”, creando un XSD a partir de un conjunto de clases anotadas.. 5.2.. Asociaciones de tipos de datos por defecto. La siguiente tabla muestra las asignaciones de tipos de datos XSD a tipos de datos Java en JAXB: Tipo XSD xsd:string xsd:positiveInteger xsd:int xsd:long xsd:short xsd:decimal xsd:float xsd:double xsd:boolean xsd:byte xsd:QName xsd:dateTime xsd:base64Binary xsd:hexBinary xsd:unsignedInt xsd:unsignedShort xsd:unsignedByte xsd:unsignedLong xsd:time xsd:date xsd:g xsd:anySimpleType (para xsd:element de ese tipo) xsd:anySimpleType (para xsd:attribute de ese tipo) xsd:duration xsd:NOTATION. Tipo de dato Java java.lang.String java.math.BigInteger int long short java.math.BigDecimal float double boolean byte javax.xml.namespace.QName javax.xml.datatype.XML.GregorianCalendar byte[] byte[] long int short java.math.BigDecimal javax.xml.datatype.XML.GregorianCalendar javax.xml.datatype.XML.GregorianCalendar javax.xml.datatype.XML.GregorianCalendar java.lang.Object java.lang.String javax.xml.datatype.Duration javax.xml.namespace.QName. Cuadro 5.5: Asociación de tipos de datos con JAXB.
(55) CAPÍTULO 5. JAXB. 39.
(56)
(57) Parte III. Diseño y Desarrollo de la Solución. 41.
(58)
(59) Especificación de requisitos La situación que motiva el desarrollo de este proyecto es, en esencia, disponer de una herramienta para la generación de exámenes de tipo test que, cumpliendo con las funcionalidades proporcionadas por la herramienta anterior, amplı́e y mejore la usabilidad, funcionalidad, ejecución y formato de salida del documento resultante. Con el fin de estandarizar el formato de entrada de la herramienta, se requiere el uso de un lenguaje que permita estructurar información en un documento de forma intuitiva y comprensible. Dicho documento de entrada debe ser procesado por una herramienta que pueda ser ejecutada sin limitaciones en cuanto a la arquitectura de la plataforma y que mejore los tiempos de respuesta de la herramienta anterior. El documento de salida se presentará en formato pdf, cuyo contenido se ajuste a los estilos definidos en un fichero de estilos de LaTeX. Al mismo tiempo se desea reducir tanto el número de ficheros a configurar por el usuario como el número de pasos a seguir para obtener la salida en formato pdf.. 6.1.. Requisitos funcionales. Manteniendo la funcionalidad proporcionada por el sistema anterior, se desea obtener una serie de mejoras y ampliaciones que faciliten la escritura del contenido del examen y que presenten mayor configurabilidad: 1. Se desea estructurar la información del examen de entrada en un formato conocido, intuitivo y ampliable que permita organizar los contenidos de forma jerárquica y que su vez permita definir tanto el contenido de la cabecera del examen, como los ejercicios, preguntas y respuestas del mismo y al mismo tiempo refleje las opciones de combinatoria deseados. 2. Se necesita que cada ejercicio y pregunta del examen puedan identificarse para: • Poder seleccionar qué ejercicios de todos los definidos se desean utilizar. • Poder conocer el orden de combinación en el resultado de las preguntas y respuestas asociadas a la misma. 3. Se necesita configurar el tipo de numeración asignada a cada elemento del examen según el siguiente listado, y que a su vez tengan una configuración por defecto en caso de no indicar una concreta: • Decimal : Se identificarán con números decimales los elementos del examen según su posición en el conjunto al que pertenecen. 43.
(60) 44. 6.1. REQUISITOS FUNCIONALES • Los ejercicios se representarán como: Ejercicio 1 • Las preguntas se representarán como: Pregunta 1 • Las respuestas se representarán como: 1 • Ordinal literal : Se identificarán con literales que representen el ordinal del elemento del examen respecto al orden establecido en el conjunto al que pertenecen. • Los ejercicios se representarán como: Primer Ejercicio • Las preguntas se representarán como: Primera Pregunta • Las respuestas se representarán como: Primera • Ordinal numérico : Se identificarán con el número ordinal los elementos dentro del conjunto al que pertenecen. • Los ejercicios se representarán como: 1er Ejercicio • Las preguntas se representarán como: 1a Pregunta • Las respuestas se representarán como: 1a • Caracteres minúsculas : Se identificarán con una letra minúscula del alfabeto los elementos dentro del conjunto al que pertenecen. • Los ejercicios se representarán como: Ejercicio a • Las preguntas se representarán como: Pregunta a • Las respuestas se representarán como: a • Caracteres mayúsculas : Se identificarán con una letra mayúscula del alfabeto los elementos dentro del conjunto al que pertenecen. • Los ejercicios se representarán como: Ejercicio A • Las preguntas se representarán como: Pregunta A • Las respuestas se representarán como: A 4. Se desea definir el número máximo de combinaciones de exámenes diferentes a generar. 5. Se desea tener la opción de establecer un orden estático y predefinido de los ejercicios del examen en todos los exámenes resultantes. 6. Se desea poder seleccionar qué ejercicios de todos los contenidos en el fichero de entrada son aquellos que deben seleccionarse para configurar el examen de salida. 7. Un examen puede contener un listado de ejercicios. 8. Cada ejercicio del examen tendrá un enunciado y un listado de preguntas. 9. A cada ejercicio podrán asociarse una serie de metadatos que puedan explotarse en un futuro.. 10. Una pregunta podrá contener un texto y un listado de respuestas..
Documento similar
You may wish to take a note of your Organisation ID, which, in addition to the organisation name, can be used to search for an organisation you will need to affiliate with when you
Where possible, the EU IG and more specifically the data fields and associated business rules present in Chapter 2 –Data elements for the electronic submission of information
The 'On-boarding of users to Substance, Product, Organisation and Referentials (SPOR) data services' document must be considered the reference guidance, as this document includes the
In medicinal products containing more than one manufactured item (e.g., contraceptive having different strengths and fixed dose combination as part of the same medicinal
Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in
Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in
This section provides guidance with examples on encoding medicinal product packaging information, together with the relationship between Pack Size, Package Item (container)
Package Item (Container) Type : Vial (100000073563) Quantity Operator: equal to (100000000049) Package Item (Container) Quantity : 1 Material : Glass type I (200000003204)