Aplicación extensible = Plugable

La nueva idea en desarrollo es que la amplicación sea lo más extensible posible sin realizar esfuerzos muy costosos. La intención es poder agregar paquetes para poder añadir nuevos tipos de preguntas a la aplicación, incluyendo sólo unos determinados ficheros, sin modificar en la aplicación en sí. De este modo, se permitirá crear nuevos tipos de preguntas sin tener que recodificar el core de la aplicación. Cada paquete de nueva pregunta o plugin tendrá que incluir:

Controlador: Se encargará de la interacción con la gui de la pregunta, controles de la gui, recuperación de datos, etc.

Validador: Validará los datos que recogió el controlador.

Clase Pregunta: La nueva pregunta tendrá una lógica de negocio que quedará recogida en esta clase.

Render: Para que la pregunta puede visualizarse de algún modo, deberá crearse una clase que se encargué de mostrarla, por ejemplo en HTML, LaTeX, etc.

Código Base de Datos: Se tendrán que añadir un par de funciones para posibilitar tanto el almacenamiento como la recuperación de este tipo de preguntas.

Avances varios

Hace días que no escribo… en este tiempo, me he dedicado a muy variados asuntos. He estado creando una plantilla para la documentación según la normativa del PFC, he juntado, maquetado y revisado toda la documentación que había creado hasta el momento. Además, me he personalizado el paquete fncychap, que es un paquete de LaTeX para modificar el formato de los capítulos.

En cuanto a el framework que comenté en el anterior post, me he leído los capítulos básicos del libro de Django, estuve diseñando el aspecto de la aplicación y modificando el aspecto del render de las preguntas de HTML. El complemento para Iceweasel está muy curioso para el diseño web.

De todos modos, enseguida dejé aparcado el tema de Django, y volví a la aplicación de escritorio. He modificado la capa de persistencia, y he realizado los cambios necesarios en la capa de dominio, para que el Agente siempre devuelva objetos de la capa de dominio. De este modo se consiguen varios objetivos, pero hay que destacar que este es el modo para facilitar el uso de Slice e ICE. La aplicación todavía no la he modificado para que sea distribuida, espero hacerlo en breve. Sí he realizado el fichero slice, digamos que es un lenguaje que sirve para establecer un contrato entre las distintos lados(peers) de la aplicación. En este caso, un lado siempre hará de servidor y otro siempre de cliente. El lado del servidor se basará en el Agente y la base de datos. También he actualizado los diagramas de clases.

Los otros avances se han centrado en mejorar la interfaz a la hora de crear exámenes, así como en los render, a parte del comentado en HTML anteriormente, también se ha mejorado el render de LaTeX. Se ha añadido la lógica de negocio necesaria para trabajar con exámenes, así como las tablas en la base de datos, en la línea de la especificación IMS QTI v2.1. También, se crea el fichero xml de acuerdo a ésta especificación.

Las nuevas ideas que se están implementado ahora son ideas referentes a que una pregunta que ha sido utilizada en un examen, no puede ser editada, ya que si se edita una pregunta y se quiere ver el examen o datos almacenados relacionados a esa pregunta, se contemplarían datos falseados. Por lo tanto, hay que poner una barrera para no poder editar las preguntas utilizadas. Con objeto de no tener que crear de nuevo la pregunta con la modificación que se pretendía realizar, se trabaja en el clonado de una pregunta. Es decir, poder disponer de una pregunta igual(el mismo contenido) pero no la misma(no es el mismo archivo xml ni la misma instancia en la base de datos), de este modo, se puede editar la pregunta clonada para realizar las modificaciones que se deseen, utilizarla en futuros exámenes sin tener que crearla desde cero.