Full text
TRABAJO DE FIN DE GRADO Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 Tutora: Dra. Beatriz Correas Suárez Profesora Titular de Universidad Departamento de Informática y Sistemas Autor: Moisés Hernández Falcón Las Palmas de Gran Canaria – Julio 2014
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 2 Dedicatoria Este Trabajo Fin de Titulo se lo dedico a toda mi familia por haber estado apoyándome durante toda este proceso formativo en la Universidad de Las Palmas de Gran Canaria, ya que sin ellos y su apoyo; tanto económico como emocional; nada de esto hubiese sido posible. No quisiera dejar de recordar y hacer mención a todas aquellas personas (tanto a las que han llegado al final del camino conmigo, como a aquellas que no lo han conseguido) que han estado a mi lado en mi día a día en la Facultad, con quienes comencé mi camino en el ámbito universitario y sin los cuales hubiese sido más difícil mi andadura universitaria.
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 3 Índice Introducción Páginas 4 - 5 Estado Actual y Objetivos Páginas 6 - 7 Justificación de las competencias Páginas 8 - 9 Normativa y Legislación Europea Páginas 10 - 11 Normativa y Legislación Nacional Páginas 12 - 16 Menores y Protección de Datos Páginas 17 - 20 Aportaciones Página 21 Análisis Páginas 22 - 43 Requisitos Software y Hardware Páginas 44 - 45 Desarrollo Páginas 46 - 50 Diseño Páginas 51 - 60 Conclusiones Página 61 Bibliografía Página 62
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 4 Introducción La Tecnología Social es un movimiento social espontáneo que responde a una nueva línea de pensamiento popular, que une a todas las razas y culturas del mundo tras ideales y proyectos sociales, que van más allá de las fronteras políticas o religiosas. El principal eje es la comunicación, que surge por la necesidad vital de crear una situación, o un estado de las cosas, distinto del que se vive en la actualidad. Como fin, pretende fomentar el desarrollo de hacer algo importante de la tecnología de sus bienes y aplicación de conocimientos y tecnologías con fines netamente sociales, absolutamente pacíficos y opuestos a los objetivos comerciales o militares que determinan el actual avance y desarrollo tecnológico de la humanidad. Este movimiento busca establecer una nueva escala de valores éticos y sociales, apuntando al estado de bienestar universal, administrado por instituciones populares apolíticas denominadas foros, donde todos los miembros de la sociedad, son administradores directos del patrimonio social, sin intermediarios ni representaciones políticas de ninguna índole. A fines del siglo XX, con el auge de las comunicaciones y la aparición de Internet como medio de expresión realmente libre, por primera vez en la historia de la humanidad, la gente común pudo acceder por completo al conocimiento, a las ciencias y a las técnicas que pueden generar un estado de bienestar universal. Este libre acceso al conocimiento, actualmente está generando una nueva línea de razonamiento popular, que el actual uso comercial indiscriminado, y las aplicaciones bélicas de las complejas tecnologías disponibles, pueden y están generando daños irreparables a la humanidad. La tecnología social podría interpretarse así: “Conjunto de teorías y de técnicas que permiten el aprovechamiento práctico del conocimiento científico con lenguaje propio de una ciencia o arte perteneciente o relativa a la sociedad.”
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 5 Como podemos apreciar, el sentido literal de la frase resultante es un tanto abstracto, no obstante, en la expresión “tecnología social” encontramos varios puntos muy claros para todos los que la interpretamos… • En todos los casos se trata de “poner a disposición de la sociedad”, los conocimientos y avances científicos. • Todos asumimos que la ciencia y el conocimiento, pueden facilitar el acceso al bienestar social. • Por último, todos coincidimos en que la expresión “Tecnología Social” tiende a fomentar el desarrollo tecnológico con fines netamente sociales.
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 6 Estado Actual y Objetivos Las tecnologías aplicadas a la educación suponen un beneficio en el proceso de enseñanza y aprendizaje, sobre todo cuando está orientado a edades tempranas y se combina el aspecto lúdico con el académico. Esto sucede con las aplicaciones desarrolladas para tabletas, en donde los niños se encuentran cómodos, por su similitud con los juegos electrónicos a los que están acostumbrados, gracias a que las nuevas tecnologías móviles están cada vez más integradas en nuestra sociedad. Pero no todas las aplicaciones desarrolladas se adaptan a las competencias que un estudiante debe adquirir en su educación primaria. En nuestro caso, gracias a la Tecnología Social, se está elaborando en colaboración con la Consejería de Educación, un estudio de dichas tecnologías y analizando las necesidades tecnológicas que van apareciendo. Concretamente, para el caso de las Matemáticas, encontramos numerosas aplicaciones orientadas al aprendizaje de operaciones básicas: suma, resta, multiplicación, división, … pero ninguna que enseñe a los niños a aplicar dichas operaciones para la resolución de problemas. Y este es el fin de este Trabajo Fin de Grado; diseñar un prototipo de aplicación orientada a Tabletas, con tecnología Android, para la resolución de problemas matemáticos para alumnos de niños de 5º de primaria, con tres características fundamentales: 1. La posibilidad de disponer de un espacio, en el cual los alumnos puedan realizar los cálculos necesarios para solucionar los problemas. 2. La posibilidad de incorporar un mecanismo, gracias al cual los usuarios puedan aportar nuevos problemas matemáticos, a modo de feedback con el usuario. 3. La combinación del aspecto lúdico con el académico
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 7 El principal objetivo de este Trabajo Fin de Grado es el de : desarrollar un prototipo orientado hacia dispositivos Tablet basados en Android, que permitan el aprendizaje sobre la materia de Matemáticas para un nivel de alumnos de 5º de primaria; y que cumpla con las características fundamentales anteriormente descritas.
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 8 Justificación de las competencias específicas cubiertas CII01 La capacidad para diseñar, desarrollar, seleccionar y evaluar aplicaciones y sistemas informáticos, asegurando su fiabilidad, seguridad y calidad, conforme a principios éticos y a la legislación vigente. Esta competencia queda cubierta en los apartados estado actual y objetivos del Trabajo de Fin de Grado, y en los requisitos hardware y software. En ellos se especifican, por un lado, la metodología de diseño empleada, los motivos de diseño, desarrollo, etc, ... explicando exhaustivamente las fases de análisis y diseño de los casos de uso necesarios para satisfacer las necesidades de la aplicación, y por otro lado se justifica la utilización del hardware más adecuado para la implementación de la misma, teniendo en cuenta parámetros de fiabilidad, calidad y seguridad. En resumen, con esta elección de hardware y software, la implementación de este trabajo de fin de grado da como resultado una aplicación robusta y conforme a los principios éticos y a la legislación vigente. CII02 Cubrir la capacidad para planificar, concebir, desplegar y dirigir proyectos, servicios y sistemas informáticos en todos los ámbitos, liderando su puesta en marcha y su mejora continua y valorando su impacto económico y social. De todos los elementos de un sistema de gestión de proyectos, la planificación es posiblemente la más importante, puesto que una mala o inexistente planificación conducirá a una mala realización en el proyecto, lo cual repercutirá enormemente tanto en la calidad como en el plazo de terminación del proyecto, ocasionando grandes perjuicios. Esta es la razón por la que esta competencia queda cubierta, puesto que la buena planificación de este trabajo de fin de grado ha dado lugar al propósito fundamental del mismo, que no es más que la finalización en los plazos establecidos así como conseguir de manera adecuada los objetivos propuestos inicialmente.
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 9 CII18 Conocimiento de la normativa y la regulación de la informática en los ámbitos nacional, europeo e internacional. Un análisis de las legislaciones que se han promulgado en diversos países arroja que las normas jurídicas que se han puesto en vigor están dirigidas a proteger la utilización abusiva de la información reunida y procesada mediante el uso de computadoras, e incluso en algunas de ellas se ha previsto formar órganos especializados que protejan los derechos de los ciudadanos amenazados por los ordenadores. Desde hace aproximadamente diez años la mayoría de los países europeos han hecho todo lo posible para incluir dentro de la ley, la conducta punible penalmente, como el acceso ilegal a sistemas de computo o el mantenimiento ilegal de tales accesos, la difusión de virus o la interceptación de mensajes informáticos. En la mayoría de las naciones occidentales existen normas similares a los países europeos. Todos estos enfoques están inspirados por la misma de preocupación de contar con comunicaciones electrónicas, transacciones e intercambios tan confiables y seguros como sea posible. Dar un concepto sobre delitos informáticos no una labor fácil y esto en razón de que su misma denominación alude a una situación muy especial, ya que para hablar de "delitos" en el sentido de acciones tipificadas o contempladas en textos jurídico-penales, se requiere que la expresión "delitos informáticos" este consignada en los códigos penales, lo cual en nuestro país, al igual que en muchos otros, no ha sido objeto de tipificación aún; sin embargo, muchos especialistas en derecho informático emplean esta alusión a los efectos de una mejor conceptualización.
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 16 En empresas y demás organizaciones, al fomentar, consciente o inconscientemente, permitir, obligar o presionar a los empleados a realizar o distribuir copias no autorizadas del programa. Al efectuar copias no autorizadas porque alguien lo requiere u obliga a ello. Al ceder o prestar el programa de forma que pueda ser copiado o al copiarlo mientras está en su posesión en calidad de cedido o prestado. Al crear, importar, poseer o negociar con artículos destinados a burlar o neutralizar cualquier medio técnico aplicado para proteger el programa de ordenador. Medidas Judiciales Si finalmente existe evidencia de delito, las medidas judiciales que pueden adoptarse son: • Solicitar al Juez un registro sorpresa de las instalaciones del presunto infractor, tanto por la vía civil, como por la penal. • Solicitar al Juez la adopción urgente de medidas cautelares de protección.! • Exigir indemnizaciones acordes con los daños materiales y morales causados. • El cierre del centro de actividad del infractor. • El secuestro de todos aquellos medios destinados a suprimir los dispositivos técnicos que protegen un programa desarrollado y comercializado por un fabricante de programas.
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 17 Menores y tratamientos de datos personales La protección de los datos personales de los menores adquiere una especial relevancia por la confluencia de distintos factores: – Las condiciones subjetivas del titular de los datos en cuanto a su capacidad de entender y discernir sobre su derecho fundamental. – El alto valor económico de su información personal para determinados sectores del mercado. – La conciliación de los deberes parentales de control con los derechos del menor: vigilancia escolar, ocio y relaciones .... – El uso instrumental del menor como fuente de información sobre su entorno. Perfiles y usos • Tratamiento de datos personales de menores: – El menor estudiante. • Gestión de expedientes. • Controles de asistencia. • Responsabilidades paternas y maternas. – El menor consumidor. • Objeto de productos específicos: SMS • Perfiles y publicidad. – El menor y el ocio. • Videojuegos. – El menor internauta. • Chat (foros) • IRC (messenger, yahoo, google...) • Juegos online – El menor en el mercado de trabajo: autorizaciones para la contratación. – El menor controlado. • Filtros de Internet. • Geolocalización
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 18 – El menor y la familia: fuente de información sobre el grupo familiar. Problemas • La identificación del menor: – ¿Es quien dice ser? – ¿Tiene esa edad?... • Capacidad legal para consentir: prueba de la edad y madurez. • La inteligibilidad de la información en la recogida de datos. • Proporcionalidad en el tratamiento: el menor como instrumento. – ¿En qué trabaja tu padre? – ¿Qué marca de coche tenéis...? ¿Cultura de protección de datos? • ¿Conocen los menores el derecho fundamental a la protección de datos? – No existe razón alguna para que tengan mayor conocimiento que el resto de la población. • ¿Reciben algún tipo de formación escolar? – Ausencia de acciones específicas: el ejemplo de la educación para la salud o la nutrición no siempre se traslada al mundo internet. – El potencial de las asignaturas ordinarias: ética, ciencias sociales, educación para la ciudadanía. • ¿Son capaces de discernir conceptos como “tratamiento” a “consentimiento”? Aportaciones de la Agencia Española de Protección de Datos • Informes jurídicos. Consentimientos : En consecuencia, a tenor de las normas referidas, cabe considerar que los mayores de catorce años disponen de las condiciones de madurez precisas para consentir, por sí mismo, el tratamiento automatizado de sus datos de carácter personal. Respecto de los restantes menores de edad, no puede ofrecerse una solución claramente favorable a la posibilidad de que por los mismos pueda prestarse el consentimiento al tratamiento, por lo que la referencia deberá buscarse en el artículo 162 1o del Código Civil, tomando en cuenta, fundamentalmente, sus condiciones de madurez.
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 19 En consecuencia, a la vista de lo anteriormente señalado, será necesario recabar el consentimiento de los menores para la recogida de sus datos, con expresa información de la totalidad de los extremos contenidos en el artículo 5.1 de la Ley, recabándose, en caso de menores de catorce años cuyas condiciones de madurez no garanticen la plena comprensión por los mismos del consentimiento prestado, el consentimiento de sus representantes legales. PROYECTO DE REAL DECRETO POR EL QUE SE APRUEBA EL REGLAMENTO DE DESARROLLO DE LA LEY ORGÁNICA 15/1999, DE 13 DE DICIEMBRE DE PROTECCIÓN DE DATOS DE CARÁCTER PERSONAL. Artículo 13. Consentimiento para el tratamiento de datos de menores de edad. •Acciones promocionales: derechos de los menores en Internet. • Plan sectorial Capacidad • Pueden consentir los mayores de catorce años. • Necesitan la asistencia de los titulares de la patria potestad o tutela: – Los mayores de catorce años cuando la Ley la exija. – En el caso de los menores de catorce años se requerirá el consentimiento de los padres o tutores. Limitaciones: la información del grupo familiar • Prohibición de utilizar al menor para recabar datos que permitan obtener información sobre los demás miembros del grupo familiar, o sobre las características del mismo sin el consentimiento de los titulares de tales datos : – actividad profesional de los progenitores, – información económica, – datos sociológicos – cualesquiera otros • Podrán recabarse los datos de identidad y dirección del padre, madre o tutor con la única finalidad de recabar la autorización para el tratamiento de los datos de los menores.
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 20 Información en la recogida • Cuando el tratamiento se refiera a datos de menores de edad, la información dirigida a los mismos deberá expresarse en un lenguaje que sea fácilmente comprensible por aquéllos, con expresa indicación de lo dispuesto en este artículo. Comprobación de la edad • Corresponderá al responsable del fichero o tratamiento articular los procedimientos que garanticen que se ha comprobado de modo efectivo la edad del menor y la autenticidad del consentimiento prestado en su caso, por los padres, tutores o representantes legales. Conclusiones • Apuesta clara por la tutela de los menores. • Protección del “grupo familiar”. • Regulación basada en la fijación de procedimientos: – Consentimiento – Información – Verificación de la edad.
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 21 Aportaciones El presente Trabajo de Fin de Título trata de dar respuesta mediante el uso de las nuevas tecnologías móviles y sus aplicaciones en nuestra sociedad, a la enseñanza de las matemáticas. Esta enseñanza de las matemáticas está orientada para alumnos de 5º de primaria, de forma que tengan un aprendizaje sobre la materia de manera autónoma y lúdica tratando de sacarle provecho a las tecnologías móviles; en nuestro caso dispositivos Tablet basados en Android.
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 22 Análisis El análisis de sistemas es la ciencia encargada del análisis de sistemas grandes y complejos, junto a la interacción entre esos sistemas. Ello engloba una de las etapas del ciclo de vida de un sistema informático, estando muy relacionado con la investigación de operaciones. En esta etapa los analistas se encargan de analizar los requisitos del sistema, a veces se incluye en esta etapa le recolección de los requisitos del sistema. A raíz de esta etapa, se centra la atención sobre la interacción de los usuarios con el sistema. A continuación veremos en detalle, el desarrollo de la interfaz de la aplicación y su flujo de interacción: 1-. Actividad Inicial Esta interfaz presenta al alumno el personaje del juego, y pidiendo su nombre se crea el primer usuario activo de la aplicación. Al hacer click en el botón Siguiente se generan en la Base de Datos “ProMat5” los datos y tablas necesarias para poder hacer un uso completo y correcto de la aplicación.
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 23 2-. Menú Principal Aquí nos encontramos ante el menú principal. En la parte superior de la pantalla como cabecera podemos ver el nombre del usuario y su puntuación total durante el juego. Esta cabecera aparecerá en diversas interfaces de la aplicación, permitiendo conocer el usuario actual activo y su puntuación. A continuación podemos observar en la parte izquierda de la pantalla al personaje de la aplicación. Éste nos indicará un mensaje sobre él, incitando al usuario a realizar la búsqueda de sus cacahuetes perdidos. Bajo el mismo, se sitúan tres cruces que representan los tres cacahuetes que a perdido el personaje. A medida que vaya avanzando el usuario y vaya superando los tres niveles se irán desbloqueando (encontrando) los cacahuetes de nuestro personaje. Superado el nivel 1, aparecerá bajo el personaje un cacahuete y dos cruces (Ver Figura 1). Superado el nivel 2, aparecerán bajo el personaje dos cacahuete y una cruz (Ver Figura 2). Y superado el nivel 3, aparecerán bajo el personaje los tres cacahuetes perdidos (Ver Figura 3), dando por finalizada la búsqueda de los cacahuetes.
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 24 Fuera de la figuración del personaje y la búsqueda de los cacahuetes se oculta la verdadera razón de la aplicación. Al ir avanzando por los niveles, el usuario habrá ido resolviendo problemas matemáticos con orden de dificultad creciente. La inclusión del personaje y la búsqueda de los cacahuetes, entra dentro de la adaptación didáctica y lúdica de la aplicación para sus futuros usuarios; alumnos de 5º primaria. -. Figura 1 -. Figura 2
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 25 -. Figura 3 2.1 -. Menú Principal – Salir Al pulsar este botón conseguimos que se cierre la aplicación. Aunque todavía estará disponible en memoria, puesto que, sólo el sistema operativo tiene la potestad para gestionar la memoria del dispositivo. Para cerrar la aplicación completamente, es decir, evitar que siga ocupando memoria principal, es necesario realizarlo mediante los mecanismos que ofrece el sistema operativo Android; específicos para ese propósito. 2.2 Menú Principal – Email Pulsando este botón, tendremos acceso a una vista en la que se puede rellanar un formulario con el fin de añadir un problema, a modo de feedback entre la aplicación y el usuario. Este feedback se realizará a través del envío del formulario a través de email. De tal forma, que tras rellenar el formulario (Ver figura 4) al darle a enviar, podamos enviar a través del sistema de correo electrónico Gmail dicha información. (Ver figura 5).
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 32 Al crear un nuevo usuario, se insertará su nombre a través de la siguiente interfaz: 2.4.2 Menú Principal – Usuarios – Editar Usuario Esta acción nos permite modificar el nombre de un usuario existente en la aplicación a través de la siguiente interfaz:
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 33 2.4.3 Menú Principal – Usuarios – Cambiar Usuario Esta acción nos permite cambiar el usuario activo actual. Seleccionando en la parte izquierda de la pantalla un usuario diferente de Nouser (Usuarios Inactivos) y posteriormente pulsando el botón “Cambiar Usuario”, cambiamos el estado del usuario seleccionado a ser el nuevo usuario activo actual de nuestra aplicación. 2.4.4 Menú Principal – Usuarios – Eliminar Usuario Esta acción nos permite eliminar un usuario y todo su contenido de nuestra aplicación. La única excepción de esta acción es que no puede ser eliminado el usuario activo actual. 2.5 -. Menú Principal – Jugar A partir de este botón es donde comienza el peso de la aplicación. Trataré de explicar de la forma más idónea el flujo de la aplicación. Nada más accionar el botón de “Jugar” nos encontramos ante la vista de la selección de niveles.
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 34 Esta vista tiene en la parte superior de la pantalla la cabecera con los datos (nombre y puntuación) del usuario actual activo. Luego, en la parte central de la pantalla, encontramos los botones de acceso a los niveles junto a una imagen indicativa al estado actual del nivel para el usuario actual activo. Los niveles tienes 3 tipos de estado: Estado Imagen Representativa Desbloqueado Bloqueado Finalizado
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 35 -. Ejemplo Nivel 1 Finalizado -. Ejemplo Nivel 2 Finalizado
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 36 Solamente se tendrá acceso a un nivel cuando el estado del mismo sea desbloqueado, y a partir de ella se irá a la vista que contiene los problemas que se pueden realizar. En caso contrario, no permitirá el acceso al nivel y mostrará un mensaje mediante un diálogo tipo Toast. En la parte inferior de esta vista, encontraremos un botón de retorno al menú principal. 2.5.1 -. Menú Principal –Jugar - Listado Problemas Tras acceder a un nivel cuyo estado es desbloqueado, accedemos a esta vista con el listado de problemas de dicho nivel junto a una imagen representativa del estado del problema. Dichas imágenes representativas de los estados de los problemas serán las mismas y con el mismo significado que para los niveles anteriormente vistos y explicados.
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 37 -. Ejemplo vista problemas Esta vista tiene en la parte superior de la pantalla la cabecera con los datos (nombre y puntuación) del usuario actual activo. Luego, en la parte central de la pantalla, encontramos los botones de acceso a los problemas junto a una imagen indicativa al estado actual del problema para el usuario actual activo. Solamente se tendrá acceso a un problema cuando el estado del mismo sea desbloqueado, y a partir de ella se irá a la vista que contiene la estructura de realización del problema que se puede realizar (Será visto en el siguiente punto). En caso contrario, no se permitirá el acceso al problema y mostrará un mensaje mediante un diálogo tipo Toast. En la parte inferior de esta vista, encontraremos un botón de retorno al menú principal. 2.5.2 -. Menú Principal –Jugar – Realización de Problemas Al llegar a esta vista nos encontramos con la parte donde el usuario de la aplicación va a obtener contacto para adquirir el conocimiento en la materia de las matemáticas. Aquí se realizarán los problemas matemáticos y esta es su vista:
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 38 Como se puede apreciar en la imagen superior, se sigue teniendo en la parte superior de la pantalla la cabecera de datos del usuario (nombre y puntuación). A continuación podemos apreciar una zona donde se situarán los diferentes enunciados de los problemas que irá realizando el usuario. Por otro lado, en la parte central de la pantalla observamos un rectángulo verde. Este rectángulo, es un área destinada para la resolución de los problemas planteados en la aplicación, y tendrá un uso de pizarra. En la parte derecha de nuestra “pizarra” tenemos 3 botones: El primer botón (botón con una imagen de goma) permite el borrado de la pizarra al deslizar el dedo sobre la misma. El siguiente botón (botón con una imagen de lápiz) permite la escritura en la pizarra al deslizar el dedo sobre la misma, el color de escritura seleccionado es el blanco, tratando de imitar una pizarra escolar. Y por último, tenemos el botón “Menú”, el cual nos permite volver al menú principal.
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 39 En la parte inferior de la vista tenemos un grupo de botones con las 3 posibles soluciones a los problemas. Estas soluciones son colocadas de forma aleatoria, de modo que el alumno no caiga en la resolución repetitiva de los problemas (“Y no haga trampas”). La lógica para la realización de los problemas es la siguiente: El usuario dispone de dos intentos para solucionar de forma correcta cada problema planteado. Su puntuación y procedimiento de actuación, se irán conociendo más adelante. El botón más situado a la derecha, es el botón “Comprobar”. Al seleccionar este botón se procederá a comprobar si la respuesta seleccionada es la correcta. El proceso para comprobar una respuesta es el siguiente: 1. Seleccionar una respuesta 2. Pulsar el botón “Comprobar” Si la respuesta es incorrecta (es el primer fallo), aparecerá un mensaje de diálogo Toast indicándolo. Y se permite realizar otra selección de respuesta. Si tras volver a seleccionar una respuesta, esta resulta incorrecta de nuevo, aparecerá un mensaje de diálogo de tipo Toast indicándolo, y pasará a la siguiente interfaz donde se representa la puntuación asignada al usuario por resolver el problema según el intento en el que se resolvió el problema actual. Puntuaciones según el intento en el que se resolvió el problema: • Intento 1 = Se le asignan al usuario 10 puntos. (Ver Figura 6) • Intento 2 = Se le asignan al usuario 5 puntos. (Ver Figura 7) • Intento 3 = Se le asigna al usuario 1 punto. (Ver figura 8)
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 40 -. Ejemplo de uso de esta interfaz -. Figura 6
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 41 -.Figura 7 -.Figura 8
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 48 Carpeta /src/: Contiene todo el código fuente de la aplicación, código de la interfaz gráfica, clases auxiliares, etc. Inicialmente, Eclipse creará por nosotros el código básico de la pantalla (Activity) principal de la aplicación, siempre bajo la estructura del paquete java definido. Carpeta /gen/: Contiene una serie de elementos de código generados automáticamente al compilar el proyecto ya que nosotros no podemos modificarla manualmente. Cada vez que generamos nuestro proyecto, la maquinaria de compilación de Android genera por nosotros una serie de ficheros fuente en java dirigido al control de los recursos de la aplicación. El más importante es el que se puede observar en la imagen, el fichero R.java, y la clase R.
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 49 Esta clase R contendrá en todo momento una serie de constantes con los ID de todos los recursos de la aplicación incluidos en la carpeta /res/, de forma que podamos acceder fácilmente a estos recursos desde nuestro código a través de este dato. Así, por ejemplo, la constante R.drawable.icon contendrá el ID de la imagen “icon.png” contenida en la carpeta /res/drawable/. Veamos como ejemplo la clase R creada por defecto para un proyecto nuevo: Carpeta/Android 1.6 : Cuando al principio seleccionamos una versión de Android para nuestra aplicación, se incluye la librería correspondiente (android.jar) y nuestro proyecto hace referencia desde esta carpeta. Estas librerías dependen del SDK con el que estemos trabajando. Carpeta /assets/: Contiene todos los demás ficheros auxiliares necesarios para la aplicación (y que se incluirán en su propio paquete), como por ejemplo ficheros de configuración, de datos, etc. Carpeta /res/: Nos encontramos ahora con la carpeta/res/, esta carpeta almacena, mediante un
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 50 sistema de subcarpetas, los recursos de la aplicación, desde imágenes hasta los elementos .xml que compondrán el interfaz de usuario y la funcionalidad del mismo. Contiene todos los ficheros de recursos necesarios para el proyecto: imágenes, vídeos, cadenas de texto, etc. Los diferentes tipos de recursos de deberán distribuir entre las siguientes carpetas: • /res/drawable/. Contienen las imágenes de la aplicación. Se puede dividir en /drawable-ldpi, /drawable-mdpi y /drawable-hdpi para utilizar diferentes recursos dependiendo de la resolución del dispositivo. • /res/layout/. Contienen los ficheros de definición de las diferentes pantallas de la interfaz gráfica. • /res/values/. Contiene otros recursos de la aplicación como por ejemplo cadenas de texto (strings.xml), estilos (styles.xml), colores (colors.xml), etc. Como ejemplo, para un proyecto nuevo Android, se crean los siguientes recursos para la aplicación: Fichero AndroidManifest.xml: Contiene la definición en XML de los aspectos principales de la aplicación, como por ejemplo su identificación (nombre, versión, icono,...), sus componentes (pantallas, mensajes,...), o los permisos necesarios para su ejecución. Diseño
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 51 En Android utilizamos el patrón de arquitectura llamado Modelo Vista Controlador (MVC) cuya principal bondad consiste en separar los datos de una aplicación, la interfaz de usuario y la lógica de negocios en tres componentes distintos que se relacionarán para al final tener como resultado nuestra aplicación. De esta forma podemos seccionar de forma más fácil nuestro equipo de trabajo y dedicarnos a desarrollar nuestros componentes de tal forma que construyamos módulos o librerías con funcionalidades específicas que incluso podríamos reutilizar en proyectos posteriores y no simplemente en el proyecto actual. Para lograr esto, el diseño de la arquitectura de nuestra aplicación juega un papel importante y la capacidad de abstracción que tengamos desarrollada. Ejemplo visual de los componentes de este modelo: • Modelo. Nos referimos con modelo a las representaciones que construiremos basadas en la información con la que operará nuestra aplicación. En Java, el modelo viene siendo análogo a los beans que tienen la particularidad de ser reutilizables y nos ayudan a cumplir con el proverbio de oro “Don´t Repeat Yourself” (DRY) haciendo a nuestras aplicaciones escalables. En esta parte del modelo también juega la decisión de qué modelo para almacenar información utilizaré. ¿Base de datos? ¿Web Services? El modelo que elijas depende obviamente de las necesidades de información de tu aplicación. • Vista. La vista no es más que la interfaz con la que va a interactuar el usuario. En Android, las interfaces las construimos en XML. Se suele utilizar mucho la analogía de que esta parte es realmente parecida a lo que hacemos en el desarrollo web con los CSS. Construimos nuestro esqueleto en XML que
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 52 equivale al HTML de un sitio. Posteriormente, con ayuda de estilos, que también los escribimos en XML, podemos empezar a darle formato de colores, posiciones, formato, etc. a nuestro esqueleto. Esto equivale a los CSS. Si se tiene un conocimiento previo sobre el estilo de desarrollo web, se puede aprovechar ese conocimiento para aplicarlo en crear aplicaciones Android. • Controlador. Finalmente nos topamos con el controlador que son todas esas clases que nos ayudarán a darle vida a esas interfaces bonitas que ya construimos y nos permitirán desplegar y consumir información para el usuario. Estos controladores se programan en lenguaje Java y son el código central de la aplicación. En el MVC podemos tener perfiles especializados en construir cada uno de estos componentes y tener un resultado de calidad en cada uno y al final obtener una buena aplicación. El truco para que todo salga bien es ser disciplinados para poder ser programadores ordenados, eso es vital en la aplicación de esta arquitectura. Por experiencia, te puedo decir que si te esfuerzas en construir una buena arquitectura de aplicación te ahorrarás muchos dolores de cabeza después y te evitarás tener que duplicar líneas de código que hacen lo mismo, podrás escalar fácilmente tu aplicación, agregar funcionalidades nuevas sin tanto embrollo y ¿por qué no?, facilitar el comienzo de nuevos proyectos. Otra de las cosas que nos ayudan a seguir este modelo es tener ordenado nuestro proyecto. Utilizar las convenciones de los lenguajes que utilicemos y las buenas prácticas para que sea más fácil acoplar a tus compañeros de equipo (no siempre uno solo se echa el paquete de hacer una aplicación y menos aún si es una compleja). Es aconsejable empezar con cosas tan sencillas como el nombramiento de paquetes, clases y variables, y después organizar los recursos que vayamos a utilizar delegando siempre a cada componente lo que le corresponde. En la web podemos encontrar muchos recursos que podemos leer para ver ejemplos de la aplicación de esta arquitectura. No es algo nuevo pero algunos no la conocen. Sin importar que encontremos un ejemplo para web, recuerda que en la programación únicamente cambia el lenguaje, la lógica y la metodología es la que se preserva. Las bases de datos son una herramienta de gran potencia en la creación de aplicaciones informáticas. Hasta hace muy poco resultaba muy costoso y complejo incorporar bases de datos a nuestras aplicaciones. No obstante, Android incorpora la librería SQLite que nos permitirá utilizar bases de datos mediante el lenguaje SQL, de una forma sencilla y utilizando muy pocos recursos del sistema. Como veremos, almacenar nuestra información en una base de datos no es mucho más complejo que almacenarlos en un fichero, y además resulta mucho más potente. SQL es el lenguaje de programación más utilizado para bases de datos. No resulta complejo entender los ejemplos sencillos que podemos observar en la web. No obstante, si deseas hacer cosas más complicadas es recomendable que consultemos
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 53 alguno de los muchos manuales que se han escrito sobre el tema, permitiendo evolucionar mucho más el desarrollo de nuestra base de datos de nuestra aplicación. Para manipular una base de datos en Android usaremos la clase SQLiteOpenHelper que nos facilita tanto la creación de la base de datos, como el trabajar con futuras versiones de esta base de datos. Para crear un descendiente de esta clase hay que implementar los métodos onCreate(), y onUpgrade() y opcionalmente onOpen(). La gran ventaja de utilizar esta clase es que ella se preocupará de abrir la base de datos si existe o de crearla si no existe. Incluso de actualizar la versión si decidimos crear una nueva estructura de la base de datos. Además, esta clase tiene dos métodos getReadableDatabase() y getWritableDatabase() que abren la base de datos en modo solo lectura o lectura y escritura. En caso de todavía no existir la base de datos, estos métodos se encargarán de crearla. Diseño de Base de Datos SQLite es un manejador open source de bases de datos que combina una interfaz muy limpia de SQL y que nos permite trabajar con poca memoria y con una velocidad bastante decente, características que son necesarias cuando hablamos de entornos móviles. SQLite soporta las características estándar de las bases de datos relacionales como la sintaxis que se basa en SQL, transacciones y la elaboración de consultas. Debido a esto, cualquier desarrollador que haya trabajado con bases de datos sin importar el entorno, no encontrará una dificultad especial en trabajar con bases de datos locales en Android. Por otro lado, hay que dejar en claro que la API nativa de SQLite no es compatible con JDBC contrario a lo que podría pensarse tomando en cuenta el uso de Java como lenguaje nativo en aplicaciones Android. Un acercamiento a SQLite SQLite, como su nombre indica, utiliza el lenguaje SQL para las consultas (SELECT), manipulación de datos (INSERT, DELETE, etc.), y de definición de datos (CREATE TABLE, etc). SQLite presenta unas pequeñas variaciones donde se desvía del estándar SQL-92, que aplica para la mayoría de bases de datos SQL. Entre ellas, el uso de FOREIGN KEY, transacciones anidadas, RIGHT OTHER JOIN, FULL OTHER JOIN y algunos usos de ALTER TABLE no son válidas en SQLite. Para utilizar SQLite no se requiere de ninguna configuración o administrador de base de datos, por lo que únicamente deberemos preocuparnos por el manejo de SQL y todo lo demás se gestionará a través del entorno de desarrollo Android. Debemos tomar en cuenta desde el principio que el uso de bases de datos implica tareas de I/O, que siempre tienen un impacto en el rendimiento de las aplicaciones, por lo que en ocasiones todo esto puede tornarse lento.
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 54 SQLite soporta los tipos de datos TEXT (similar a los String en Java), INTEGER (similar a Integer en Java) y REAL (similar a Double en Java). Si hacemos uso de cualquier otro tipo de dato, de manera automática serán convertidos para que sean compatibles con estos tres tipos de datos. Si nuestra aplicación crea una base de datos, esta se guarda en el directorio DATA/data/APP_NAME/databases/FILENAME. En nuestro caso: “data/data/ProMatTFG/databases/ProMat5” “DATA” es la ruta que retorna el método Environment.getDataDirectory(), “APP_NAME” es el nombre de nuestra aplicación, y “FILENAME” es el nombre que le damos a la base de datos al crearla. Las bases de datos en SQLite tienen un nivel de acceso privado que abarca únicamente la aplicación en la que fueron creadas. Desglose de las Tablas de nuestra base de datos
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 55 Nombre Base de Datos : ProMat5 1-. Tabla Usuarios: En esta tabla guardaremos los siguientes datos: • Idusuario (Integer) : Código del usuario. • Nombre (String) : Nombre del usuario. • Juega (Integer) : Estado del usuario. -. Juega = 1 : Usuario Actual Activo -. Juega = 2 : Usuario No Activo • Nivel (Integer) : Nivel del problema por donde va el usuario • Idproblema (Integer) : Problema del nivel por donde va el usuario. Esta tabla se rellena al comenzar la aplicación la primera vez. Si no es la primera vez, sólo se accede a su información de la manera oportuna. Estado de la tabla tras ser creada la primera vez que se accede a nuestra aplicación. Suponiendo que el nombre insertado a sido “Usuario1”. El nombre “Nouser” indica que no hay usuario, y la aplicación lo detecta. Usuarios Idusuario Nombre Juega Nivel Idproblema 1 Usuario1 1 1 1 2 Nouser 2 1 1 3 Nouser 2 1 1 4 Nouser 2 1 1 2-. Tabla ProblemasNivel[1|2|3]: En esta tabla guardaremos los siguientes datos:
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 56 • Idproblema (Integer) : Código del problema del nivel citado. • Enunciado (String) : Enunciado del problema. • Solucionbuena (String) : Solución numérica del problema. • Solucionmala1 (String) : Solución errónea 1 numérica del problema. • Solucionmala2 (String) : Solución errónea 2 numérica del problema. • Operación (String) : Operación numérica que resuelve el problema. En esta tabla se guarda la información necesaria de los diferentes problemas. Habrá tres tablas para guardar dicha información dependiendo del nivel de los problemas. Para los problemas del nivel 1 el nombre de la tabla será ProblemasNivel1; Para los problemas del nivel 2 el nombre de la tabla será ProblemasNivel2; y para los problemas del nivel 3 el nombre de la tabla será ProblemasNivel3. Al no variar el contenido de estas tablas durante el uso de la aplicación estas tablas son creadas en el momento de abrir la aplicación por primera vez. Continuando inalteradas durante el tiempo que nuestra aplicación permanezca en nuestro dispositivo. Cada una de las tablas contendrá 10 filas, representando 10 problemas por nivel. A continuación, un ejemplo de una de las filas de las tablas: ProblemasNivel1 Idproblema 1 Enunciado “Cuando Carlos cumplió nueve años su abuelo le dio 47€ y su abuela 35€. El tenia ahorrado 58€. ¿Cuánto dinero tiene ahora?” Solucionbuena “140” Solucionmala1 “139” Solucionmala2 “120” Operacion “47+35+59=140” 3-. Tabla PuntuacionesProblemasNivel[1|2|3]Usuario[1|2|3|4]: En esta tabla guardaremos los siguientes datos:
Elaboración de prototipos para el desarrollo de productos de tecnología social: ProMat5 57 • Idproblema (Integer) : Código del problema del nivel citado. • Puntuación (Integer) : Puntuación del problema del nivel citado. • Estado (Integer) : Estado del problema para el usuario. -. Estado = 1. (Problema actual accesible). -. Estado = 2. (Problema realizado no accesible). -. Estado = 0. (Problema no realizado no accesible). En esta tabla se guarda la información necesaria; en este caso las puntuaciones obtenidas en los problemas de los diferentes niveles y para cada usuario disponible o no. Habrá tres tablas por cada usuario para guardar dicha información dependiendo del nivel de los problemas. Para los problemas del nivel 1 y el usuario 1 el nombre de la tabla será PuntuacionesProblemasNivel1Usuario1; Para los problemas del nivel 2 y el usuario 1 el nombre de la tabla será PuntuacionesProblemasNivel2Usuario1; Para los problemas del nivel 3 y el usuario 1 el nombre de la tabla será PuntuacionesProblemasNivel3Usuario1. Para los problemas del nivel 1 y el usuario 2 el nombre de la tabla será PuntuacionesProblemasNivel1Usuario2; Para los problemas del nivel 2 y el usuario 2 el nombre de la tabla será PuntuacionesProblemasNivel2Usuario2; Para los problemas del nivel 3 y el usuario 2 el nombre de la tabla será PuntuacionesProblemasNivel3Usuario2. Para los problemas del nivel 1 y el usuario 3 el nombre de la tabla será PuntuacionesProblemasNivel1Usuario3; Para los problemas del nivel 2 y el usuario 3 el nombre de la tabla será PuntuacionesProblemasNivel2Usuario3; Para los problemas del nivel 3 y el usuario 3 el nombre de la tabla será PuntuacionesProblemasNivel3Usuario3. Para los problemas del nivel 1 y el usuario 4 el nombre de la tabla será PuntuacionesProblemasNivel1Usuario4; Para los problemas del nivel 2 y el usuario 4 el nombre de la tabla será PuntuacionesProblemasNivel2Usuario4; Para los