scieee AI-readable full text Open interactive document viewer

qtGprog: Herramienta para la visualización de tipos de datos en lenguaje C

Martínez Gómez, Ibán

Full text

1 Títol: qtGprog: Herramienta para la visualización de tipos de datos en lenguaje C. Volum: 1/1 Alumne: Ibán Martínez Gómez Director/Ponent: Beatriz Otero Calviño. Departament: AC Data: Juny 2008 DADES DEL PROJECTE Títol del Projecte: qtGprog: Herramienta para la visualización de tipos de datos en lenguaje C Nom de l'estudiant: Ibán Martínez Gómez Titulació: Enginyeria Informàtica Crèdits: 37,5 Director/Ponent: Beatriz Otero Calviño Departament: AC MEMBRES DEL TRIBUNAL (nom i signatura) President: Pablo Bofill Soliguer Vocal: M. Pilar Brigida Nivela Alos Secretari: Beatriz Otero Calviño QUALIFICACIÓ Qualificació numèrica: Qualificació descriptiva: Data: 2 Para los míos. Para los implicados en el proyecto. Para los que han sufrido mi periplo universitario. Para los que hemos disfrutado de mi periplo universitario. Para los que he conocido durante mi periplo universitario. Para los que he perdido durante mi periplo universitario. Para los que hemos crecido durante nuestro periplo universitario. Y para el resto. Gracias a todos. Junio 2008 3 Índice Índice 1 Introducción.........................................................................................7 1.1 qtGprog........................................................................................7 1.2 Motivación......................................................................................7 1.3 Formulación del proyecto....................................................................8 1.3.1 ¿ Por qué lenguaje C ?..................................................................9 1.4 El proyecto....................................................................................10 1.4.1 Objetivos................................................................................10 1.4.2 Partes del proyecto....................................................................10 2 Análisis de requisitos..............................................................................11 2.1 Metodología usada...........................................................................11 2.2 El Propósito del proyecto...................................................................11 2.2.1 La problemática del usuario..........................................................11 2.2.2 Los objetivos del proyecto............................................................12 2.3 Los usuarios del proyecto...................................................................13 2.4 Estudio sobre los usuarios ( los estudiantes)............................................14 2.4.1 Objetivo general.......................................................................14 2.4.2 Preguntas realizadas...................................................................15 2.4.3 Ficha técnica de las muestras.......................................................19 2.4.4 Resultados obtenidos..................................................................20 2.4.5 Conclusiones del estudio.............................................................24 2.5 Restricciones. (Mandated constraints) ...............................................24 2.6 Casos de uso ..............................................................................25 2.7 Requisitos Funcionales. ................................................................35 2.8 Requisitos No Funcionales...............................................................42 3 Estudio de herramientas similares..............................................................44 3.1 Herramientas para UML..................................................................44 3.1.1 Análisis de las interfícies gráficas...................................................45 3.1.2 Conclusiones............................................................................47 3.2 Herramientas para entornos industriales.............................................48 3.2.1 El lenguaje LADDER LOGIC............................................................48 3.2.2 Conclusiones............................................................................50 3.3 Scratch del MIT...........................................................................51 3.3.1 Conclusiones............................................................................54 3.4 Conclusiones del estudio................................................................55 4 La aplicación (qtGprog)..........................................................................56 4.1 Descripción general.........................................................................56 4.2 Un breve paseo por la aplicación.........................................................56 5 Especificación......................................................................................58 5.1 El importador de C..........................................................................58 5.1.1 Gramática del lenguaje..............................................................58 5.1.2 Comunicación entre importador e interfície......................................59 5.2 La interfície gráfica.........................................................................61 5.2.1 Diagrama de clases....................................................................62 5.2.2 Descripción de las clases..............................................................63 5.2.2.1 DataType...........................................................................63 5.2.2.2 SimpleDataType...................................................................64 5.2.2.3 interactiveRegion.................................................................64 4 5.2.2.4 myArray............................................................................65 5.2.2.5 MyMatrix...........................................................................66 5.2.2.6 MyStruct...........................................................................66 6 Diseño de la aplicación...........................................................................67 6.1 Arquitectura del proyecto..................................................................67 6.1.1 Importador e interfície, dos mundos separados...................................67 6.2 Tecnologías usadas...........................................................................68 6.2.1 Tecnología QT versión 4.3.............................................................68 6.2.1.1 Motivación.........................................................................68 6.2.2 pccts.....................................................................................69 6.2.3 Motivación...........................................................................69 6.3 Diseño de la interfície gráfica.............................................................70 7 Ejecución del proyecto...........................................................................72 7.1 Tareas de formación.........................................................................73 7.1.1 Formación en tecnología QT.........................................................73 7.1.2 Formación en diseño de interfícies gráficas.......................................74 7.2 Prototipos..................................................................................75 7.3 Coste estimado del proyecto...........................................................77 7.3.1 Costes de los recursos materiales...................................................78 7.3.2 Costes del personal....................................................................78 8 Conclusiones.......................................................................................80 8.1 Trabajo futuro................................................................................81 9 Bibliografía.........................................................................................82 5 6 1 1 Introducción Introducción 1.1 1.1 qtGprog qtGprog qtGProg es un aplicación que a partir de código escrito en lenguaje C, crea representaciones gráficas de los tipos de datos complejos definidos por el usuario, entre estos tipos de datos se incluyen : vectores, matrices y estructuras. Esta herramienta ayuda a la comprensión de dichos tipos de datos, asimismo mediante un sistema de interacción con dichas representaciones gráficas, el usuario aprende a usar esos tipos de datos en lenguaje C. 1.2 1.2 Motivación Motivación Seguir implantando nuevas herramientas docentes en la asignatura de Introducción a los ordenadores1, tal y como se hizo con la librería tortuga. Dicha librería, tenía como objetivo enseñar a usar las llamadas a función, usando un conjunto de instrucciones muy simples que al ejecutarse, representan el movimiento de una tortuga en la pantalla, veamos un ejemplo : void main() { inicializar(); avanzar(10); // Mover la tortuga 10 posiciones girar(90); // Rotar la tortuga 90º finalizar(); }Dada la sencillez de esta herramienta, y el éxito que tuvo entre el alumnado, se ha querido seguir buscando herramientas docentes complementarias que permitan mejorar la comprensión de otros temas. Uno de los temas para el cual se consideraba prioritario incorporar nuevas herramientas docentes, era el de uso y la comprensión de los tipos de datos complejos, aquellos que van más allá de los tipos básicos, como los enteros, coma flotante etc. Por esa razón se ha decidido crear una herramienta que permitiera “ver” cómo son esos tipos de datos, para que su comprensión fuera más visual que conceptual. 1 Información de la asignatura en http://studies.ac.upc.edu/ETSETB/IO/ 7 1.3 1.3 Formulación del proyecto Formulación del proyecto qtGprog, se planteó como un banco de pruebas para que los alumnos vieran y pudieran decidir, si lo que estaban programando, en este caso en lo que respecta a la declaración de tipos de datos, era correcto o no, con un simple vistazo a una representación gráfica de sus líneas de código. En el apartado de análisis de requisitos, comentaremos más el tema de la formulación y las premisas en las que se basa el proyecto, pero a modo de introducción podemos resumir el proyecto de la siguiente forma: Una herramienta que permite importar declaraciones de tipos de datos (vectores, matrices y estructuras) escritos en lenguaje C y obtener una representación gráfica de los mismos. De esta forma, el estudiante entenderá cómo acceder y modificar un determinado campo de dichos tipos de datos. Con esta formulación, podremos ayudar tanto a comprender los conceptos como a aplicarlos. Diagrama que muestra el funcionamiento general de qtGProg 8 Interfície Gráfica matricula coche1 Km modelo[50] propietario b m w ... nombre a n a ... sueldo FAX descuento 1.3.1 1.3.1 ¿ Por qué lenguaje C ? ¿ Por qué lenguaje C ? El motivo por el que se ha elegido al lenguaje de programación C, como epicentro del proyecto es la posibilidad de implantar la herramienta en un entorno docente real, en este caso la asignatura de Introducción a los ordenadores. En esta asignatura se usa este lenguaje de programación por lo que orientar la herramienta a este lenguaje parece una opción sensata para abrir el camino a su implantación. Por otro lado, usar un lenguaje de programación orientado a objetos ( C++ o java ) no habría aportado demasiado, ya que para tales efectos el lenguaje UML cumple muy bien su función, además en general al aprender un lenguaje orientado a objetos, siempre se introduce un poco el tema de UML, por lo que invertir tiempo en crear una especie de UML reducido y simplificado no parece demasiado útil. 9 2 - Las siguientes preguntas no has de escribir nada, SÓLO DIBUJAR. Se recomienda no pensar demasiado, simplemente reflejar en un dibujo la imagen mental de los elementos de programación mencionados. ¿ Cómo te imaginas ? : Vector Matriz Struct Intenta dibujar el siguiente struct. typedef char Tcadena[2]; typedef struct { int x[3]; char y; Tcadena z[2]; } TipoX; En esta pregunta entramos en el tema de representaciones gráficas, se insta a los alumnos a dibujar tal y como ellos se imaginan, los elementos que corresponden a los ejes centrales de la asignatura. La segunda pregunta, “Intenta dibujar el siguiente struct.” Intenta centrar más los esfuerzos del alumno en el tema estructuras, a la vez tiene otro objetivo, es de ver el grado de comprensión del tema, para después contrastarlo con la percepción de dificultad y encontrar contradicciones del tipo, “ lo encuentro fácil pero realmente no he entendido nada” . 16 3 - En las siguientes preguntas sólo has de escribir. ¿ Qué dirías que es esto ? (Si puedes, escribe un trozo de código equivalente) En esta pregunta lo que se pretende es validar algunas propuestas de representaciones gráficas. Se insta al alumno a interpretar las figuras, y si puede a escribir un poco de código en lenguaje C, que implemente las figuras. La representaciones escogidas corresponden, a los típicos dibujos que se usan comúnmente en la docencia, aunque reordenando los nombres y valores de los campos de forma que no se puedan confundir. La razón de la elección de dichas representaciones gráficas es simple, se basan en la experiencia acumulada de muchos años de clases por parte de los docentes, además son representaciones con una larga vida. 17 4 - Puntúa de 1 a 5 ( 1 Poco Interés - 5 Mucho interés ) Vectores Matrices Structs La programación. ¿ Te gustaría hacer algunas tareas de programación de forma profesional ? Contesta brevemente. ¿Habías programado anteriormente a este curso ? Sí [ ] No [ ] Si conoces el nombre de algún otro lenguaje de programación, por favor, indícalo aquí : ¿ Qué tema estudiado, te ha llamado más la atención ? ¿ Cuántas horas de estudio/ trabajo dedicas a la asignatura a la semana ? ¿ Qué elementos docentes, sean cuales sean, usas para estudiar ? Esta última pregunta sirve para contextualizar el resto de preguntas, según el perfil de alumno. Des este modo podemos descartar respuestas de lo que podríamos llamar estudiantes pro, aquellos que ya han programado mucho anteriormente y que su percepción de dificultad ya no es del todo objetiva, por lo que respecta a los objetivos docentes de la asignatura. 18 2.4.3 2.4.3 Ficha técnica de las muestras Ficha técnica de las muestras Número de encuestas : 21 Origen de los alumnos : Estudiantes del cuatrimestre 1A 2007-2008 de la ETSETB. Ponderación de las respuestas cualitativas : Demasiado : 5 Mucho : 4 Normal : 3 Poco : 2 Nada : 1 Nota acerca de la muestra: Estadísticamente esta muestra no es representativa de una población de un curso de la asignatura de Introducción a los ordenadores, por lo que el valor estadístico que se le ha de dar a los resultados es reservado. Sin embargo, a la hora de sacar conclusiones, los resultados se han contrastado con la experiencia acumulada de los profesores de la asignatura, dando como resultado su parcial validez, es decir, la percepción general de los resultados es bastante acertada, según el personal docente de la asignatura, por lo que podemos llegar a validar ciertas conclusiones que servirán para orientar el diseño de la aplicación. 19 2.4.4 2.4.4 Resultados obtenidos Resultados obtenidos A continuación expondremos un resumen de los resultados obtenidos y las conclusiones extraídas de los mismos. Para ver los detalles, consultar los anexos. En primer lugar, analizaremos la percepción que tienen los estudiantes de la asignatura (nivel de dificultad), estos resultados son las medias de las respuestas según los temas de cada alumno. Cada barra representa a un alumno. Podemos ver que la media ronda el 2,60 sobre una escala de 5 y que hay igualdad entre los alumnos que opinan que la asignatura es más fácil que la media y los que opinan que es más difícil. Apreciación de la dificultad general de la asignatura. 20 0,00 0,50 1,00 1,50 2,00 2,50 3,00 3,50 4,00 3,20 3,20 2,80 2,502,40 3,40 2,402,40 3,10 2,70 3,40 2,60 3,103,00 1,80 1,30 3,10 2,60 2,10 2,402,50 Apreciación de la dificultad (1 - 5) Si ahora nos fijamos en la apreciación de dificultad por temas, podemos ver que, en general la aplicación práctica, cuesta más que la simple asimilación de los conceptos teóricos. Este hecho es especialmente relevante en el tema de las estructuras, contrariamente a lo previsto, la teoría de estructuras es percibida como menos dificultosa por los alumnos que la teoría de otros temas como matrices o vectores, en cambio, la aplicación práctica es percibida como el tema más difícil. El haber usado como referencia el tema de condicionales, permite ver en qué grado considera el alumno la dificultad de los temas clave del curso, en relación con una cota inferior de dificultad. Tema Medía teoría Cota inferior teoría Diferencia Media práctica Cota inferior práctica Diferencia Variables y parámetros (E,S,E/S) 2,67 1,76 +0,91 2,90 2,05 +0,85 Vectores 2,76 1,76 +1 2,86 2,05 +0,81 Matrices 2,90 1,76 +1,14 3,05 2,05 +1 Estructuras 2,67 1,76 +0,91 3,05 2,05 +1 Tal y como vemos en la tabla, los temas que son percibidos como más difíciles son las matrices y las estructuras. 21 0,00 0,50 1,00 1,50 2,00 2,50 3,00 3,50 Apreciación por temas (1-5) Variables y parámetros (E,S,E/S) Teoría Variables y parámetros (E,S,E/S) Práctica Condicionales (Teoría) Condicionales (Práctica) Vectores (Teoría) Vectores (Práctica) Matrices (Teoría) Matrices (Práctica) Structs (Teoría) Structs (Práctica) Por último para acabar con el tema de la percepción de la dificultad, comparemos teoría y práctica. Los resultados son claros, la aplicación práctica de los conceptos, cuesta más que su parte teórica. Pasemos a ver los resultados de las propuestas de representaciones gráficas que han hecho los alumnos. En esta figura se muestra un resumen de las representaciones gráficas creadas por los alumnos. Podemos ver que en general predominan las formas rectangulares y uniformes. A simple vista, la diferencia visual entre una matriz y una estructura puede ser poca, pero la mayoría de alumnos son capaces de entender que el contenido de éstos es diferente, y sobre todo el concepto de dimensión no lo suelen aplicar a las estructuras, cosa que sí hacen con las matrices y vectores. 22 0 1 2 3 4 5 6 Teoría vs Práctica Práctica Teoría En el siguiente punto, veremos la aceptación de nuestras propuestas de representaciones entre el alumnado. En este punto, para evaluar cómo de bien han implementado en C nuestras representaciones gráficas se ha usado una puntuación, 10 si el código era 100% correcto y por cada error se descuenta un punto, los errores son de todo tipo, desde sintácticos, hasta de concepto. Podemos ver que el 95 % ha reconocido que la figura : correspondía a un vector de caracteres. Por lo que respecta a la matriz : el porcentaje se eleva al 100% y por último la figura : que corresponde a una estructura, fue identificada por el 90 % de los encuestados. En cuanto a la calidad del código en C, que correspondía a la estructura, fue bastante satisfactorio, una media de 8.7 puntos sobre 10. 23 2.4.5 2.4.5 Conclusiones del estudio Conclusiones del estudio En general a los alumnos les cuesta más aplicar los conocimientos que asimilarlos, por lo que necesariamente, una herramienta docente deberá cubrir la parte teórica y práctica de los temas que se decidan tratar. Por lo que respecta a las representaciones gráficas propuestas por nosotros, parecen que gozan de un alto índice de aceptación, por lo que se seguirá por esa línea. Temas que debe cubrir la herramienta, deberá tratar vectores, matrices y sobretodo estructuras, en cuanto a las estructuras, se han de aportar conocimientos prácticos sobre su uso en lenguaje C. 2.5 2.5 Restricciones. (Mandated constraints) Restricciones. (Mandated constraints) Descripción : La herramienta deberá ser multiplataforma. Motivación : Garantizar la independencia tecnológica en el uso de la herramienta. Criterio de verificación : Poder ejecutar la herramienta en entornos GNU/Linux y sistemas Microsoft Windows. Descripción : No habrán sistemas de identificación de usuario. Motivación : Simplificar al máximo el uso de la herramienta y no limitar el acceso a la misma. Criterio de verificación : No se pedirá ningún tipo de identificación al usuario al ejecutar la herramienta. 24 2.6 2.6 Casos de uso Casos de uso Diagrama de casos de uso. Caso de Uso Crear lienzo para vectores Id: 01 Descripción: Crear un nuevo espacio de trabajo donde se podrá interactuar con vectores Actor principal: Usuario. Precondición: Curso típico de acontecimientos Actor Sistema 1- El actor selecciona la opción de creación del lienzo. 2 – Se crea la ventana y se habilita la inserción de vectores. Cursos alternativos Actor Sistema 25 Caso de Uso Importar una estructura Id: 09 Descripción: Leer de un fichero de texto que contenga un programa escrito en lenguaje C, la parte de declaración de estructuras y añadirlo a la lista de estructuras representables por la aplicación, para su posterior inserción en un lienzo. Actor principal: Usuario. Precondición: El fichero de texto seleccionado ha de estar escrito en lenguaje ANSI C. Curso típico de acontecimientos Actor Sistema 1- El actor selecciona un fichero. 2- Se invoca al parser de C y se crean todos los recursos necesarios para posteriormente poder usar la representación gráfica de esa estructura. 3– Se añade la estructura a la lista de estructuras utilizables por el usuario. Cursos alternativos Actor Sistema 2b – Si el fichero no está escrito en ANSI C se informa al usuario y se cancela la importación. 2b – Si el fichero contiene errores de sintaxis, se intenta obtener la máxima información de la estructura para poder dibujarlo posteriormente. Se informa al usuario de la detección de errores pero se añade esa estructura a la lista de utilizables. 32 Caso de Uso Interactuar Id: 10 Descripción: Poder seleccionar un campo/posición de una estructura, vector o matriz y ver por pantalla un mensaje que explique cómo se podría acceder a ese campo en lenguaje C. Actor principal: Usuario. Precondición: El vector/matriz/estructura ha de haber sido previamente insertado en algún lienzo. Curso típico de acontecimientos Actor Sistema 1- El actor selecciona un campo de datos/ posición del vector/matriz/estructura. 2- Se muestra por pantalla, un mensaje en forma de texto y apunte teórico, explicando cómo acceder en lenguaje C a ese campo desde un programa. Cursos alternativos Actor Sistema Caso de Uso Modificar zoom de un lienzo Id: 11 Descripción: Acercar o alejar el nivel de zoom en un lienzo para ver los elementos insertados en él a diferentes escalas. Actor principal: Usuario. Precondición: Tener un lienzo abierto. Curso típico de acontecimientos Actor Sistema 1- El actor selecciona un lienzo. 2- Modifica el zoom 2- Cambia el tamaño de las representaciones gráficas que contiene el lienzo. Cursos alternativos Actor Sistema 33 Caso de Uso Imprimir un lienzo Id: 12 Descripción: Poder hacer una impresión física de un lienzo con todos los elementos contenidos en él. Actor principal: Usuario. Precondición: Tener un lienzo abierto. Curso típico de acontecimientos Actor Sistema 1- El actor selecciona un lienzo. 2- Selecciona la opción de Imprimir. 3- Se muestran las opciones típicas para configurar la impresora, en función del sistema operativo. 4- Se imprime el lienzo seleccionado. Cursos alternativos Actor Sistema 34 2.7 2.7 Requisitos Funcionales. Requisitos Funcionales. Aclaración sobre los campos a rellenar según el método Volere: Requisito Funcional ID : Identificador único del requisito Nombre del requisito. Ha de ser claro para saber cuál es el objetivo del requisito. Casos de uso relacionados: Identificadores de los casos de uso que están relacionados con este requisito. Descripción: Descripción detallada del requisito. Justificación: Todo requisito ha de tener una motivación, una razón de ser, si no se puede explicar dicha motivación, es posible que el requisito no sea necesario para la aplicación. Originador: Quién provoca el requisito. Criterio de validación: Algún criterio, prueba, hecho u objeto tangible, que permita verificar el cumplimiento del requisito. Es decir, si el requisito se cumple, ha de haber alguna prueba tangible que lo demuestre. Satisfacción del usuario: Cómo de satisfecho estará el usuario si se cumple el requisito. Insatisfacción del usuario: Cómo de insatisfecho estará el usuario si NO se cumple el requisito. Prioridad:Conflictos:El cumplimiento de este requisito, entra en conflicto con otro requisito. 35 Requisito Funcional ID : F01 Importar Vectores desde ficheros de programación en lenguaje C. Casos de uso relacionados: 07 Descripción: Permitir al usuario añadir nuevos vectores a su colección de vectores. Justificación: Ampliar con nuevos ejemplos de vectores, la aplicación. Originador: Estudiante. Criterio de validación: Ver que el nuevo vector se ha añadido a la lista de vectores utilizables por el usuario. Satisfacción del usuario: 4Insatisfacción del usuario: 3 Prioridad:4Conflictos:-- Requisito Funcional ID : F02 Importar Matrices desde ficheros de programación en lenguaje C. Casos de uso relacionados: 08 Descripción: Permitir al usuario añadir nuevas Matrices a su colección de Matrices. Justificación: Ampliar con nuevos ejemplos de Matrices, la aplicación. Originador: Estudiante. Criterio de validación: Ver que la nueva matriz se ha añadido a la lista de matrices utilizables por el usuario. Satisfacción del usuario: 4Insatisfacción del usuario: 3 Prioridad:4Conflictos:-- 36 Requisito Funcional ID : F03 Importar estructuras desde ficheros de programación en lenguaje C. Casos de uso relacionados: 09 Descripción: Permitir al usuario añadir nuevas estructuras a su colección de estructuras. Justificación: Ampliar con nuevos ejemplos de estructuras, la aplicación. Originador: Estudiante. Criterio de validación: Ver que la nueva estructura se ha añadido a la lista de estructuras utilizables por el usuario. Satisfacción del usuario: 4Insatisfacción del usuario: 4 Prioridad:5Conflictos:-- Requisito Funcional ID : F04 Visualizar representaciones gráficas de vectores. Casos de uso relacionados: 01, 04, 10 Descripción: Permitir al usuario ver una representación gráfica del vector que haya seleccionado de la lista de utilizables. Justificación: Poder aprender a usar y entender los vectores. Originador: Profesorado. Criterio de validación: Ver en pantalla, la representación gráfica del vector, poder seleccionarla, moverla, eliminarla e interactuar con ella. Satisfacción del usuario: 4Insatisfacción del usuario: 5 Prioridad:5Conflictos:-- 37 Requisito Funcional ID : F05 Visualizar representaciones gráficas de matrices. Casos de uso relacionados: 02, 05, 10 Descripción: Permitir al usuario ver una representación gráfica de la matriz que haya seleccionado de la lista de utilizables. Justificación: Poder aprender a usar y entender las matrices. Originador: Profesorado. Criterio de validación: Ver en pantalla, la representación gráfica de la matriz, poder seleccionarla, moverla, eliminarla e interactuar con ella. Satisfacción del usuario: 4Insatisfacción del usuario: 5 Prioridad:5Conflictos:-- Requisito Funcional ID : F06 Visualizar representaciones gráficas de estructuras. Casos de uso relacionados: 03, 06, 10 Descripción: Permitir al usuario ver una representación gráfica de la estructura que haya seleccionado de la lista de utilizables. Justificación: Poder aprender a usar y entender las estructuras. Originador: Profesorado. Criterio de validación: Ver en pantalla, la representación gráfica de la estructura, poder seleccionarla, moverla, eliminarla e interactuar con ella. Satisfacción del usuario: 4Insatisfacción del usuario: 5 Prioridad:5Conflictos:-- 38 Requisito Funcional ID : F07 Aprender como se accede a la información de un vector en lenguaje C. Casos de uso relacionados: 10 Descripción: Permitir al usuario ver un breve texto, sobre cómo se puede acceder a una posición de un vector en el lenguaje de programación C. Justificación: Aprender a usar en la práctica un vector. Originador: Profesorado. Criterio de validación: Ver en pantalla, el mensaje explicativo. Satisfacción del usuario: 4Insatisfacción del usuario: 2 Prioridad:3Conflictos:-- Requisito Funcional ID : F08 Aprender como se accede a la información de una matriz en lenguaje C. Casos de uso relacionados: 10 Descripción: Permitir al usuario ver un breve texto, sobre cómo se puede acceder a una posición de una matriz en el lenguaje de programación C. Justificación: Aprender a usar en la práctica una matriz. Originador: Profesorado. Criterio de validación: Ver en pantalla, el mensaje explicativo. Satisfacción del usuario: 4Insatisfacción del usuario: 2 Prioridad:3Conflictos:-- 39 Requisito Funcional ID : F09 Aprender como se accede a la información de una estructura en lenguaje C. Casos de uso relacionados: 10 Descripción: Permitir al usuario ver un breve texto, sobre cómo se puede acceder a un campo de una estructura en el lenguaje de programación C. Justificación: Aprender a usar en la práctica una estructura. Originador: Profesorado. Criterio de validación: Ver en pantalla, el mensaje explicativo. Satisfacción del usuario: 4Insatisfacción del usuario: 3 Prioridad:4Conflictos:-- Requisito Funcional ID : F10 Imprimir Casos de uso relacionados: 12 Descripción: Imprimir en soporte físico un conjunto de representaciones gráficas. Justificación: Poder combinar la experiencia con la aplicación con los apuntes de los alumnos. Originador: Profesorado. Criterio de validación: Obtener una copia en formato físico de lo dibujado por la pantalla. Satisfacción del usuario: 3Insatisfacción del usuario: 3 Prioridad:2Conflictos:-- 40 Requisito Funcional ID : F11 Zoom Casos de uso relacionados: 11 Descripción: Acercar o alejar las representaciones gráficas en su lienzo. Justificación: Facilitar la interacción con múltiples elementos. Originador: Usuario. Criterio de validación: Ver cómo en pantalla se altera el tamaño de cada elemento. Satisfacción del usuario: 2Insatisfacción del usuario: 3 Prioridad:1Conflictos:-- 41 3.2 3.2 Herramientas para entornos industriales. Herramientas para entornos industriales. En este apartado, no nos fijaremos demasiado en las interfícies gráficas, nos fijaremos en el concepto de lenguaje: la idea que se usa para simplificar ciertas tareas a través de un lenguaje gráfico y que no requiere mucha formación para los operarios. Para tal efecto, pondremos como ejemplo un lenguaje de programación que se usa en entornos industriales, especialmente en los que hay sistemas de control y obtención de datos apoyados por un hardware llamado PLC. 3.2.1 3.2.1 El lenguaje LADDER LOGIC El lenguaje LADDER LOGIC Ladder Logic es una filosofía de dibujo de esquemas eléctricos. Con el tiempo se ha convertido en un lenguaje gráfico de programación muy popular para la programación de Controladores Lógicos Programables (PLC). Fue originalmente inventado para describir la lógica en sistemas que usaban relés. El nombre se basa en la observación de que los programas en este idioma, se asemejan a las escaleras, con dos "raíles" verticales y una serie de "escalones" entre ellos.11 Otro aspecto a destacar de Ladder, es que, con su abstracción, permite imaginarse la creación de ciertos circuitos eléctricos lógicos, como un flujo de agua que atraviesa ciertos puntos de control, esa es la manera en que durante años se ha enseñado a operarios a entender lo que representan esos esquemas basados en Ladder. En esta breve descripción de lo que es el Ladder Logic, se han mencionado las claves de nuestro interés por este paradigma de programación : “ El nombre se basa en la observación de que los programas en este idioma, se asemejan a las escaleras ” perfecto, es decir, se pasa de una teoría (filosofía), a una herramienta práctica y más abstracta, usando una especie de metáfora que permite obtener un equivalente gráfico de la teoría. De este modo los tiempos, y por consiguiente los costes de formación del personal, se reducen drásticamente. Finalmente, para entender la utilidad de esta abstracción conceptual, comentaremos un ejemplo. 11 Traducción de http://en.wikipedia.org/wiki/Ladder_logic 48 Para interpretar un código Ladder, se ha de saber cómo va el flujo de ejecución; cada línea horizontal es un cálculo que se ejecuta en paralelo al resto de líneas horizontales y que concluye con una operación final representada al final de dicha línea, en este caso los círculos son coils , que lo único que representan son almacenamiento del resultado, pero en entornos industriales de este tipo, el hecho de almacenar puede ser simplemente encender una luz o un indicador en la planta de producción. Flujo de ejecución de instrucciones en LADDER. Los símbolos -| |- , representan la lectura de un valor lógico ( cierto/falso) de señales dentro del sistema. La posición consecutiva y horizontal de éstas, representa la operación lógica AND, en cambio si se ponen en lo que en teoría de circuitos sería paralelo, la operación lógica que representan es una OR. En este ejemplo vemos como en la primera línea del programa se hace el siguiente cálculo : Alarma = sensor_1 AND puerta_almacen y en la segunda línea tenemos : subir = (presencia_habitacion OR carga) AND NOT(plataforma_ocupada) 49 3.2.2 3.2.2 Conclusiones Conclusiones ¿Qué nos aporta el estudio de este tipo de herramientas industriales tan específicas? Sencillo, un poco de perspectiva histórica. La programación gráfica, lleva muchos lustros aplicándose en entornos industriales que son muy competitivos, por esa razón podemos afirmar que herramientas, que traten la programación desde un punto de vista más visual podrían tener cabida en ámbitos docentes. 50 3.3 3.3 Scratch del MIT Scratch del MIT En lo que llevamos de análisis, hemos visto los elementos comunes en las interfícies gráficas, comprobado que la abstracción de conceptos y la obtención de una representación gráfica, se utiliza en entornos productivos reales desde hace tiempo y con bastante aceptación, pero nos falta ver si estas ideas, son aplicables al ámbito de la docencia, ya que en estos momentos podríamos empezar a invertir esfuerzos en crear una aplicación de estas características, con el peligro de perder el tiempo, ya que no sabríamos si una iniciativa de este calibre tendría cabida en dicho entorno. Por fortuna, el MIT ya experimentó con algo parecido : SCRATCH12. Veamos cómo lo definen en el mismo MIT : Scratch is a new programming language that makes it easy to create your own interactive stories, animations, games, music, and art -- and share your creations on the web. Scratch is designed to help young people (ages 8 and up) develop 21st century learning skills. As they create Scratch projects, young people learn important mathematical and computational ideas, while also gaining a deeper understanding of the process of design. Lo que no se menciona es que dicho lenguaje de programación es 100% gráfico. Esta herramienta nos ha llevado a pensar que es posible (con bastante probabilidad de acierto) que las herramientas que ofrecen una información más gráfica que teórica puedan contribuir significativamente con la comprensión de ciertos temas de carácter educativo. A continuación describiremos brevemente esta herramienta. 12 http://scratch.mit.edu/ 51 Tal y como se anuncia, es un programa que permite programar animaciones de forma sencilla para un público infantil, eso queda patente en su interfície gráfica. Lo que sí que es interesante ver es cómo trata a un típico elemento de programación : Podemos ver que los condicionales y los bucles, no son más que espacios que permiten poner dentro de ellos, otros elementos de programación. Este concepto se asemeja bastante a nuestro planteamiento de proyecto, el de dotar de representaciones gráficas a elementos de programación. Todas estas sofisticadas ideas, no responden a nuestra pregunta : ¿Tiene cabida en la docencia una herramienta de este tipo? Para poder responder a esta pregunta, seremos pragmáticos, nos centraremos en la cantidad de programas creados con SCRATCH. Observaremos las estadísticas que existen de su utilización en su página Web: 52 104.758 proyectos han sido son creados y compartidos por Internet utilizando esta herramienta. Sin embargo, es importante aclarar que aunque la complejidad de los proyectos implementados es diversa, existen otros, como por ejemplo juegos interactivos de cierta complejidad, lo que implica que la cifra obtenida no sea nada desdeñable. A parte de las estadísticas, es conveniente ver si alguien, ha utilizado la herramienta en algún colegio, y vemos que en la Web de SCRATCH, hay un comentario al respecto, por parte de una profesora de Minnesota : "There is a buzz in the room when the kids get going on Scratch projects. Students set design goals for their projects and problem-solve to fix program bugs. They collaborate, cooperate, co-teach. They appreciate the power that Scratch gives them to create their own versions of games and animations." - Karen R., teacher, Minnesota y en el propio MIT : "Although designed for a younger audience, we've deployed Scratch at the undergraduate level in introductory computer science courses at Harvard College, Harvard Summer School, and Harvard Extension School. In our view, Scratch lowers the bar to programming, empowering first-time programmers not only to master programmatic constructs before syntax but also to focus on 53 problems of logic before syntax. At the undergraduate level, then we view Scratch as a gateway for students to languages like Java." - David M., Computer Science Instructor, Massachusetts 3.3.1 3.3.1 Conclusiones Conclusiones El uso de herramientas docentes alternativas, en el ámbito de la programación, ha demostrado tener una buena acogida y con ciertos resultados, por lo que pensar en proyectos similares no debe suponer un freno, dados los precedentes. Por otro lado el hecho de tratar gráficamente conceptos de programación, supone un nuevo punto de vista y que sin duda ha dado buenos resultados en el MIT. 54 3.4 3.4 Conclusiones del estudio Conclusiones del estudio Después de este análisis, parece necesario que nuestra aplicación cumpla las siguientes características: La interfície gráfica, debería contener los elementos básicos y típicos vistos anteriormente, además no se deberían permitir interacciones con la misma que no sean las comunes, por ejemplo : arrastrar y soltar elementos desde la zona de herramientas de la izquierda a la zona de trabajo o lienzo; en este caso, con un doble click sería suficiente, notar que en la mayoría de entornos de desarrollo, en la parte izquierda están los ficheros a abrir, y se accede a ellos con un doble click. Por otro lado la líneas generales del diseño de la interfície han de seguir las siguientes directrices : ●Sencillez. ●Ubicación de iconos y otros recursos en posiciones que resulten familiares a los usuarios. ●Evitar extravagancias o métodos de internación complejos o demasiado innovadores, usar click, doble click y arrastras elementos nada más. Las representaciones gráficas, han de ser concisas y centradas sólo en lo que realmente interesa, en nuestro caso, la manipulación de información en los campos/elementos de las estructuras de datos especificadas en el lenguaje de programación C, sin incluir la creación, inicialización o la gestión de memoria de estos tipos de datos. Por último, decir que han tenido una enorme aceptación, por parte de los usuarios, las herramientas que proveen resultados visuales sobre temas determinados y que este hecho ha motivado la implementación de qtGprog. 55 4 4 La aplicación (qtGprog) La aplicación (qtGprog) 4.1 4.1 Descripción general Descripción general El proyecto qtGprog, es una herramienta que permite crear representaciones gráficas de elementos de programación para el lenguaje C, consta de dos partes, un importador de vectores/matrices/estructuras y un entorno gráfico que permite ver e interactuar con las representaciones gráficas de los elementos mencionados. La función del importador es permitir extraer de un programa hecho en C, las definiciones de vectores, matrices y estructuras para su posterior dibujado en pantalla. Con esto, forzamos a que los estudiantes primero escriban código en C y después puedan ver gráficamente los posibles errores cometidos. Dado que hemos diseñado las representaciones gráficas de tal manera que sean similares a lo que los alumnos esperarían ver (ver sección sobre el estudio realizado a los estudiantes), si después de programar,el dibujo resultante no es el que intuitivamente esperaban, procederán a repasar el código escrito en busca de posibles errores. 4.2 4.2 Un breve paseo por la aplicación Un breve paseo por la aplicación Llegados a este punto, es conveniente ver cómo es la aplicación, para eso usaremos algunas capturas de pantalla para mostrar la interfície gráfica. No nos extenderemos demasiado en cómo funciona la aplicación, ya que se puede consultar cualquier detalle en el CD que se anexa a esta memoria. Primero enumeraremos los tipos de datos y las características de los mismos que son representables por la aplicación: ●Vectores: De tipos básicos, y de estructuras. ●Matrices: De tipos básicos, y de estructuras. ●Estructuras : Con campos de tipo básico, incluyendo punteros y con campos que pueden ser a su vez otras estructuras o punteros a otras estructuras. 56 Aquí podemos ver los principales componentes de la interfície gráfica : ●A la izquierda, se encuentra el selector de tipos de datos. Este selector contiene una lista con todos los datos asociados a los tipos de datos considerados (por ejemplo, su nombre y tipo). ●En el centro se encuentra el área de trabajo o lienzo, es el lugar donde se van dibujando los tipos de datos ●En la parte inferior, se irán escribiendo los resultados de las interacciones con las representaciones gráficas, es decir, cada vez que el usuario haga doble click en un miembro o campo de algún tipo de dato, se escribirá la secuencia de comandos en lenguaje C necesaria para acceder a él. 57 5.2.2.2 5.2.2.2 SimpleDataType SimpleDataType Esta es la primera de las clases que dibuja tipos de datos, en este caso tipos simples: enteros, booleanos, coma flotante y caracteres. La operación paint17 es la encargada de dibujar el tipo de dato. En apartados sucesivos, se explicará con más detalle cómo funciona el algoritmo de dibujado de todas las clases, dado que es algo de muy bajo nivel y hace uso extensivo de la tecnología QT. 5.2.2.3 5.2.2.3 interactiveRegion interactiveRegion Esta clase tiene un papel auxiliar dentro de la aplicación, nos permite gestionar las interacciones con las representaciones gráficas. Dado que queremos que cada vez que se haga doble click en una parte de la representación, nos devuelva un mensaje con la con la secuencia de los nombres de los campos que nos permiten acceder/modificar el elemento seleccionado, necesitamos una clase que nos ayude a gestionarlo. Cada campo de las representaciones gráficas tiene asociado una interactiveRegion, dicha interactiveRegion nos permitirá decidir si mostrar o no la secuencia de acceso al campo seleccionado. Veamos un sencillo ejemplo : 17 Blanchette, Jasmin y Summerfield, Mark . C++ GUI programming with Qt 4. Págs. 175  190 Paint Devices and QPainter 64 Vemos que cada representación gráfica, tiene n interactiveRegions, una para cada mensaje que queramos mostrar según el lugar en que el usuario haga doble click. Notar que las interactiveRegions, a efectos de representación gráfica son invisibles, en este ejemplo simplemente se han mostrado para entender su funcionamiento. 5.2.2.4 5.2.2.4 myArray myArray Esta es la clase que dibuja un vector por pantalla. Todos los elementos que usan esta clase, saben que el algoritmo de dibujado que aplica, da como resultado una representación gráfica de un vector. m_size: Cuántas posiciones tiene el vector. La clave de esta clase es la función paint. Cuando se invoca sobre un área de la pantalla, ejecuta una serie de instrucciones de bajo nivel que permiten dibujar la representación del vector. 65 hola Texto devuelto al hacer doble click char unArray[4] unArray[2] Se almacenan las coordenadas de los rectángulos que contienen las áreas en que queremos establecer las interacciones y el mensaje a mostrar para cada una de ellas. Donde : Son interactiveRegion h o l a Es la representación gráfica de un myArray 5.2.2.5 5.2.2.5 MyMatrix MyMatrix Esta es la clase que dibuja una matriz por pantalla. Todos los elementos que usan esta clase, saben que el algoritmo de dibujado que aplica, da como resultado una representación gráfica de una matriz. m_rows: Cuántas filas tiene la matriz. m_cols : Cuántas columnas tiene la matriz. La clave de esta clase es la función paint18. Cuando se invoca sobre un área de la pantalla, ejecuta una serie de instrucciones de bajo nivel que permiten dibujar la representación de la matriz. 5.2.2.6 5.2.2.6 MyStruct MyStruct Esta es la clase que dibuja una estructura por pantalla. m_structINIFile: Contiene el path del fichero .ini que se usará para dibujar la estructura. m_fields : Es una lista que contiene la definición de todos los campos que contiene la estructura. Notar que un myStruct, tiene descendencia, es decir, cada campo puede ser un objeto del tipo myArray, myMatrix, simpleDatasType o myStruct; para que el framework de dibujado funcione correctamente, si un objeto crea otro objeto dibujable, ha de asumir la paternidad, de este modo la gestión de memoria dinámica queda controlada. La descendencia queda patente a nivel de la clase QGraphicItem. 18 Blanchette, Jasmin y Summerfield, Mark . C++ GUI programming with Qt 4. Págs. 175  190 Paint Devices and QPainter 66 6 6 Diseño de la aplicación Diseño de la aplicación 6.1 6.1 Arquitectura del proyecto. Arquitectura del proyecto. Para este proyecto se ha optado por una arquitectura de cliente, dado que no se manejan grandes volúmenes de datos ni tampoco se requiere acceso remoto. Lo único que sí es necesario es la portabilidad de la aplicación, eso significa poder ejecutar la aplicación en cualquier sistema operativo y en cualquier cuenta de usuario aunque no se tengan permisos de administrador. Para tal efecto, la herramienta dispone de un conjunto de ficheros ejecutables que se pueden copiar en cualquier directorio en el que se tenga permiso de escritura, y en máquinas que funcionen con alguno de los siguientes sistemas operativos : Entornos Microsoft Windows y GNU/Linux, una versión para MAC OSX es factible, pero dadas los limitaciones de acceso a dicho entorno por parte del proyectista, no se han podido efectuar la oportunas pruebas de portabilidad. 6.1.1 6.1.1 Importador e interfície, dos mundos separados. Importador e interfície, dos mundos separados. La aplicación, está formada por dos partes separadas, ya mencionadas previamente, la interfície y el importador. Estos dos elementos a efectos prácticos, son dos ejecutables distintos, la razón es la siguiente: Como el importador usa técnicas y herramientas de generación de compiladores, que son muy distintas a las técnicas y tecnologías usadas para crear entornos gráficos, resulta difícil integrar las modificaciones realizadas en una parte sin que afecten a la otra parte. Además, los más importante del importador, la gramática de ANSI C, suele ser bastante portable a otras herramientas de generación de parsers, por lo que es recomendable separar al máximo las partes y no ligar en exceso el conocimiento con la tecnología, para que posteriores ampliaciones de la aplicación sean factibles. En definitiva lo que se ha conseguido con esto es una mayor modularidad y mejoras a la hora de mantener la aplicación. Por otro lado, como la comunicación entre interfície e importador, no ha de ser síncrona, los ficheros de texto *.ini intermedios, ayuda aún más a independizar las partes de la aplicación. 67 6.2 6.2 Tecnologías usadas Tecnologías usadas 6.2.1 6.2.1 Tecnología QT versión 4.3 Tecnología QT versión 4.3 Qt es una librería multiplataforma para desarrollar interfaces gráficas de usuario. Fue creada por la compañía noruega Trolltech19. Qt es utilizada en KDE, un entorno de escritorio para sistemas como GNU/Linux o FreeBSD, entre otros. Utiliza el lenguaje de programación C++ de forma nativa y además existen bindings para C, Python (PyQt), Java (Qt Jambi), Perl (PerlQt),Gambas (gb.qt), Ruby (QtRuby), PHP (PHP-Qt) y Mono (Qyoto) entre otros. El API de la librería cuenta con métodos para acceder a bases de datos mediante SQL, así como uso de XML y una multitud de otros para el manejo de ficheros, además de estructuras de datos tradicionales. 6.2.1.1 6.2.1.1 Motivación Motivación ¿Por qué usar QT? El primer motivo que impulsó la decisión de usar esta tecnología era la posibilidad de crear entornos multiplataforma, requisito del proyecto, además como desarrollador ya tenía experiencia con dicha tecnología y conocía en primera persona su gran productividad. Aunque el principal motivo fue el lanzamiento de la versión 4.2, en él se incluía un nuevo framework de dibujado vectorial que tenía todo lo necesario para poder crear nuestras representaciones gráficas : The Graphics View Framework20 21. QT usa licencias Open Source, idóneas para proyectos con finalidades docentes como este. 19 http://trolltech.com 20 http://doc.trolltech.com/4.3/graphicsview.html 21 Blanchette, Jasmin y Summerfield, Mark . C++ GUI programming with Qt 4. Capítulo 8: 2D and 3D Graphics. 68 6.2.2 6.2.2 pccts pccts Purdue Compiler-Compiler Tool Set22, son una serie de pequeñas herramientas multiplataforma, que permiten construir compiladores. Pccts es una tecnología obsoleta, substituida por ANTLR23, que es la evolución de dichas herramientas. Pccts a partir de la descripción de un lenguaje mediante una gramática, permite implementar todos los análisis típicos de un compilador, sintáctico, semántico y generación de código objeto. Para nuestro proyecto, simplemente usaremos una fracción de un compilador : el analizador sintáctico. Para nuestros objetivos lo único que necesitamos hacer es reconocer el lenguaje y en ciertos puntos del código a interpretar, recoger información y pasarla a los ficheros ini tal y como hemos visto anteriormente. 6.2.3 6.2.3 Motivación Motivación Aparte de ser un conjunto de herramientas multiplataforma, en este caso ese no fue el factor clave, el hecho de que estas herramientas se usaban en la asignatura de Compiladores, le daban mucha ventaja, ya que este tipo de herramientas suelen ser muy complejas y el tiempo de aprendizaje es elevado. Como esa etapa ya estaba pasada, se optó por aprovechar los conocimientos ya adquiridos a pesar de ser una tecnología en desuso. Además para fines docentes no hay problemas con las licencias de uso. 22 http://www.polhode.com/pccts.html 23 http://www.antlr.org/ 69 6.3 6.3 Diseño de la interfície gráfica Diseño de la interfície gráfica Tal y como se comentaba en el aparatado 3, las directrices generales que se han seguido para el diseño de la interfície son las siguientes: ●Familiaridad. ○ La interfície recuerda lo máximo posible a otras de aplicaciones similares, en general se ha usado como referente principal Microsoft Visual Studio, ya que esta herramienta se usa en la asignatura de Introducción a los ordenadores, por lo que los usuarios ya la conocen. ○Las representaciones gráficas de los vectores, matrices y estructuras, no son del todo desconocidas por los usuarios, dado que se aproximan lo máximo posible, a las usadas por el personal docente. ○El grafismo escogido (iconos), usa las metáfotas24 típicas en cuanto a palabras clave como: zoom (una lupa), imprimir (una impresora) , abrir (una carpeta) etc ... ●Simplicidad ○El usuario quiere una satisfacción instantánea25, por lo que no se le puede exigir que instale, configure y personalice mucho la aplicación, simplemente, seleccionar un fichero y seleccionar el tipo de datos y disponerse a ver la representación gráfica. ●Dado que algunos usuarios no les gusta estudiar delante de una pantalla, se proporciona la posibilidad de imprimir en papel la representación gráfica del tipo de dato con un simple click. ●Funcionalidades limitadas y muy bien definidas. ○La interfície sigue al pie de la letra el objetivo del proyecto, dibujar representaciones gráficas de vectores, matrices y estructuras y su interacción mediante un simple doble click, nada más, ni modificar valores de los campos, ni valores iniciales, ni interacción entre representaciones, todas estas nuevas funcionalidades no harán más que distraer al usuario del verdadero objetivo docente de la aplicación. 24 Joel Spolsky. User interface design for programmers. Apress  2001. Pág. 23  33 Affordances and Metaphors. 25 Jenifer Tidwell. Designing interfaces. O'Reilly  Noviembre 2005. Página 11 : Instant gratification. 70 ●Estilo en general, ○Los colores que se usan no son chillones, ya que podrían distraer la atención de lo verdaderamente importante. ○Los colores se usan para asociar conceptos, por ejemplo los nombres de los campos de una estructura, son los mismos, mientras que para los valores de dichos campos se usan otros. 71 7 7 Ejecución Ejecución del proyecto del proyecto Todo el proyecto se ha realizado siguiendo una premisa : Saber antes de actuar, por eso, una parte importante del tiempo se ha dedicado al análisis de tecnologías, herramientas y requisitos y a la formación en las tecnologías elegidas para la implementación del proyecto. En cuanto a la implementación del proyecto, se ha seguido una metodología basada en entregables y prototipos, veamos la secuencia de tareas realizadas. Un poco más de dos meses se han dedicado a formación en varias disciplinas y tecnologías que eran esenciales para el proyecto, un mes dedicados a especificaciones y el resto de tiempo a la creación de prototipos que iban aumentando las funcionalidades poco a poco. Si nos fijamos en un detalle, la segunda semana de febrero se dedicó a una completa reespecificación de la interfície gráfica, ya que se había llegado a un punto en que aumentar las prestaciones del prototipo era muy costoso, por lo que se decidió añadir a la especificación la nueva experiencia adquirida en tecnología QT de los prototipos anteriores; el resultado fue una nueva versión fácil de extender y una reducción de cerca del 30% de líneas de código. En los sucesivos apartados, se detallarán las 72 tareas más importantes del proyecto. 7.1 7.1 Tareas de formación. Tareas de formación. 7.1.1 7.1.1 Formación en tecnología QT Formación en tecnología QT En este apartado comentaremos los detalles de las tareas de formación relacionadas con la tecnología QT versión 4 y de su framework de dibujado vectorial. En primer lugar se ha de aclarar que Trolltech, los desarrolladores de la tecnología, incorporaron un gran número de cambios en la versión 4, no sólo funcionalidades y mejoras de rendimiento, sino una nueva filosofía en cuanto a las herramientas de desarrollo que proporcionan para usar su tecnología. La más destacable afectaba a su software de creación de interfícies gráficas, en versiones anteriores a la 4, dicho software se fue orientando para que se pudiera desarrollar todo el el software sólo con esa herramienta, es decir sin usar editores de código externos, como podrían ser eclipse o Visual Studio de Microsoft, a partir de la versión 4 esa herramienta ya no permitía crear código, sólo diseñar las interfícies sin poder programar nada, esa tarea se delega a herramientas externas. Esta circunstancia dificultaba la configuración de un entorno de trabajo adecuado, si no se tienen los conocimientos renovados a la versión 4. Para llevar a cabo la formación de forma óptima se adquirieron dos libros recomentados por trolltech : C++ GUI programming with Qt 426 de Jasmin Blanchette y Mark Summerfield y An introduction to design patterns in C++ with Qt 427 de Alan y Paul Ezust. Los comentados libros, permitieron no sólo entender los cambios que afectan ala versión 4 de Qt, sino que además, permitieron configurar un entrono de desarrollo óptimo en la plataforma GNU/Linux, usada durante todo el proyecto. Por lo que respecta al framework de dibujado vectorial, no está suficientemente comentado en los dos libros, por lo que se necesitaba una fuente 26 http://www.amazon.com/C-GUI-Programming-Qt-4/dp/0131872494 27 http://www.amazon.com/Introduction-Design-Patterns-Perens-Source/dp/0131879057 73 8 8 Conclusiones Conclusiones El presente proyecto describe la especificación, diseño e implementación de una herramienta, denominada qtGprog, cuya función es visualizar representaciones gráficas de tipos de datos tales como: vectores, matrices y estructuras. qtGprog es una herramienta sencilla e interactiva diseñada usando la metodología Volere. El proyecto partió de un estudio previo tanto de herramientas similares como los usuarios finales del mismo, ésto permitió trabajar en las direcciones correctas durante el resto de tiempo. La realización de un proyecto en el ámbito de la docencia supone todo un reto, ya que hay actores implicados que son muy volátiles, el tiempo de uso de una aplicación por parte de un estudiante es muy corto, por lo que la aplicación ha de estar muy focalizada y que su uso no implique formación alguna. Por este motivo, el estudio a los alumnos y todo el análisis de requisitos ha sido una de las claves para llevar a buen puerto el proyecto. Por lo que respecta a la parte tecnológica, el hecho de utilizar la tecnología QT ha resultado ser beneficioso a nivel personal, como mínimo a priori, ya que durante la realización del proyecto, Nokia compró Trolltech32, la compañía creadora de QT, ese hecho junto con el mercado emergente de aplicaciones para dispositivos móviles, son un valor añadido a nivel personal. La parte más interesante del proyecto, ha sido sin duda la inicial, la dedicada íntegramente a la investigación. En esa etapa se buscó información de técnicas docentes relacionadas con la visualización de información, información acerca de iniciativas similares e incluso se preguntó a todos los agentes implicados en el proyecto. Gracias a esta etapa, se pudo iniciar la creación de la herramienta sabiendo exactamente a dónde ir y qué detalles debían ser prioritarios para poder aplicar todo lo obtenido en la etapa de investigación. 32 http://trolltech.com/28012008/28012008 80 8.1 8.1 Trabajo futuro Trabajo futuro El futuro de esta aplicación se debería orientar a abarcar otras áreas de la programación, como por ejemplo la recursividad, poder explicar de forma visual el concepto de llamadas recursivas tiene un gran potencial. Otra opción podría ser la de crear un “dibujador” de algoritmos, representar un código escrito en un lenguaje de programación mediante dibujos, parecido a SCRATCH del MIT pero partiendo de un trozo de código y no de gráficos directamente. A nivel más de funcionamiento de la aplicación, sería recomendable mejorar la internacionalización del software, ya que a día de hoy los acentos y demás caracteres especiales no acaban de funcionar correctamente. Por último, una tarea pendiente es la de implantar la herramienta en un curso de prueba, para dicha tarea se necesitaría que los alumnos aportaran sus opiniones, para poder acabar de realizar algunos ajustes. 81 9 9 Bibliografía Bibliografía Tecnología QT. [1] Blanchette, Jasmin y Summerfield, Mark . C++ GUI programming with Qt 4. Prentice Hall - Diciembre 2006. [2] Alan y Paul Ezust. An introduction to design patterns in C++ with Qt4. Prentice Hall – Agosto 2006. Diseño de interfícies gráficas. [3] Tidwell, Jenifer . Designing interfaces. O'Reilly – Noviembre 2005. [4] Spolsky, Joel . User interface design for programmers. Apress – 2001. [5] Gunderloy, Mike. Developer to designer [GUI design for the busy developer]. Sybex – 2005. Ingeniería de requisitos Plantilla de la metodología Volere. http://www.volere.co.uk/template.htm Fuentes de información varia. Blog de Trolltech inc. Novedades y consejos para la tecnología QT. http://labs.trolltech.com/blogs/ Comunidad de desarrolladores con tecnología QT. http://www.qtcentre.org/ Página web de introducción a los ordenadores. http://studies.ac.upc.edu/ETSETB/IO/ Lenguaje Ladder http://es.wikipedia.org/wiki/Diagrama_de_escalera 82 2008 83