Descripción del proyecto En nuestro proyecto se pretende implementar un sistema de consulta flexible en un entorno de computación móvil en el que el usuario, a través de un dispositivo móvil (tal como un PDA, o incluso un teléfono móvil) equipado con un GPS, obtenga una lista de los restaurantes más próximos, según las preferencias del usuario (consulta flexible). Arquitectura Utilizada Para el desarrollo del proyecto, necesitamos los siguientes elementos: Un sistema de gestión de bases de datos. En dicho sistema se encontrará la base de datos difusa sobre la que realizaremos las consultas. Un dispositivo móvil, en el que se encontrará instalado el sistema que vamos a desarrollar. El dispositivo debe contar con un sistema GPS para obtener la posición de usuario en cada momento. Un entorno de desarrollo que nos permita trabajar con dispositivos móviles y con sistemas de bases de datos. Además, dada la gran variedad y diversidad en cuanto a sistemas operativos (Windows CE,Symbian ,Palm Os…etc) y lenguajes de programación, tratamos de buscar aquel entorno que nos permita abarcar la mayor cantidad de dispositivos móviles. Entornos de Desarrollo estudiados Nuestro objetivo es, como hemos comentado antes, el lograr un producto que pueda utilizarse en la mayoría de los dispositivos móviles. Por ello, lo que buscamos, es una arquitectura lo más parecida a la de Java; es decir, disponer de una máquina virtual, de modo que el sistema finalmente implementado sea multiplataforma. De todos los lenguajes y entornos de programación existentes, nos limitamos a estudiar los siguientes: Java Micro Edition La versión de Java para dispositivos móviles. Se trata de una versión de Java reducida para poder ser ejecutada en entornos de computación embebidos. Esta pensado para dispositivos embebidos como PDA’s , teléfonos móviles, dispositivos embebidos de TV y una gran cantidad de dispositivos. Una de sus principales virtudes es su generalidad, en cuanto a que se trata de un entorno de desarrollo genérico y multiplataforma. Hemos de tener en cuenta que se trata de una herramienta de desarrollo libre, y por lo tanto, el software que se genere con ella es también libre. Sin embargo, esta generalidad del entorno de desarrollo hace que no dispongamos de una serie de librerías específicas para, por ejemplo leer los datos del GPS. SuperWaba Un entorno de programación pensado exclusivamente para dispositivos móviles. Basado en Java (utiliza una máquina virtual) y adaptable a prácticamente cualquier tipo de dispositivo y plataforma (combinación de sistema operativo y procesador). Además, las librerías de desarrollo, cuentan con funciones específicas de estos dispositivos móviles. De este modo, la labor de desarrollo se facilita enormemente. Consultado la API que posee, encontramos funciones que actúan como interfaz de conexión con el GPS, funciones que permiten realizar consultas SQL sobre un tipo especial de archivos denominados catálogos, y una gran cantidad de utilidades específicas para los dispositivos móviles. Hemos de destacar la existencia de dos versiones de este producto: una versión denominada “para la comunidad” de carácter gratuito, en la que encontramos una librería de desarrollo “incompleta” y una documentación acorde a la librería de desarrollo que se proporciona. Asimismo, existe una versión de pago, en la que el desarrollador paga una licencia para poder utilizar la librería de desarrollo completa. En el caso de la versión para la comunidad, el software que se desarrolla es también libre. C# .NET La versión de la plataforma de desarrollo de Microsoft para dispositivos móviles. La elección de esta plataforma presenta dos inconvenientes: El primero es debido a que se trata de una plataforma de desarrollo propietaria, y por lo tanto, no libre, de modo que, en el caso de que nos decantáramos por ésta, tendríamos que pagar la licencia a Microsoft. Este problema, podría subsanarse, debido a la existencia de una plataforma de desarrollo libre en lenguaje C# para Linux, Windows y otros sistemas operativos, con la que podríamos realizar el proceso de desarrollo. El segundo y quizás el más importante, desde nuestro punto de vista es la dificultad de exportar el software que creemos a otras plataformas que no utilicen los sistemas operativos Windows. Hemos centrado nuestra elección en los siguientes valores: Producción de un producto multiplataforma. Producción de un código libre. Coste de implementación no excesivamente alto. Por ello, elegimos la plataforma de desarrollo SuperWaba, (en concreto la versión de desarrollo denominada “para la comunidad”) en la que todas estas características se verifican. Pasamos a explicar detalladamente las características del entorno elegido. SuperWaba es un lenguaje de programación que utiliza la sintaxis y la semántica de Java, de hecho el código fuente que se programa para la máquina virtual de SuperWaba, ha de compilarse primeramente con el compilador de Java. Aunque, SuperWaba no es 100% Java, ya que hemos de utilizar las restricciones que nos impone la máquina virtual que utiliza. El proceso de desarrollo de una aplicación SuperWaba sigue los siguientes pasos: Primeramente, escribimos el código fuente, adaptado a las bibliotecas (API) de SuperWaba. Este código, se compila con un compilador de Java, teniendo en cuenta que el código objeto que nos genere el compilador ha de ser el correspondiente a la versión 1.2 de la máquina virtual de Java (que es la versión de la SDK de Java con la que se implementó SuperWaba). Seguidamente, utilizamos un programa llamado Warp (superWaba Aplication Resource Packager) , que toma todos los archivos de código objeto (.class) obtenidos en el proceso de compilación anterior, así como todos los archivos necesarios para la aplicación y los transforma en un único archivo de tipo pdb. Este archivo es el que utiliza la máquina virtual para poder ejecutar el programa. En el caso que vayamos a ejecutar nuestro programa en el emulador para PC, el proceso de compilación habrá terminado aquí. En el caso que queramos construir nuestra aplicación para su uso en un dispositivo móvil, hemos de realizar un paso adicional en el proceso de compilación, en este caso se trata de ejecutar un programa denominado Exegen (launch executable generator). A este programa, le pasamos el archivo pdb creado en el proceso anterior y la arquitectura objetivo (sistema operativo y procesador) para la que queremos crear el lanzador. Hemos de decir también, que para poder ejecutar las aplicaciones que desarrollemos en el dispositivo móvil, hemos de instalar en éste, la máquina virtual de SuperWaba. Una vez que tenemos la máquina virtual instalada, basta con pasarle el ejecutable que se genera en el último proceso de compilación. Gráficamente, podemos ver el proceso de desarrollo de una aplicación en SuperWaba de la siguiente manera: Desarrollamos el programa en Java con la Api de SuperWaba, lo compilamos con el compilador de Java, obtenemos los diferentes archivos .class que componen nuestra aplicación, y finalmente lo empaquetamos todo en un archivo pdb. Esto es todo lo necesario para tener una aplicación lista para ejecutar en la máquina virtual de SuperWaba. En el caso que queramos llevar nuestra aplicación a nuestro dispositivo móvil, necesitamos dar un paso adicional, crear el lanzador de nuestra aplicación que lo instala en nuestro dispositivo móvil: SISTEMA DE GESTION DE BASE DE DATOS Se ha de escoger un Sistema de Gestion de Base de Datos con objeto de que sirva de interfaz entre la base de datos creada, el usuario y las aplicaciones que la utilizan, con el proposito de que maneje de manera clara, sencilla y ordenada el conjunto de información contenida en la base de datos, y que se componga de un lenguaje de definición de datos, de un lenguaje de manipulación de datos y de un lenguaje de consulta. Las principales funciones que debe cumplir un SGBD se relacionan con la creación y mantenimiento de la base de datos, el control de accesos, la manipulación de datos de acuerdo con las necesidades del usuario, el cumplimiento de las normas de tratamiento de datos, evitar redundancias e inconsistencias y mantener la integridad. Además de un Sistema de Gestión de Base de Datos, necesitamos un sistema que nos permita manipular los datos en el dispositivo móvil que vayamos a utilizar. Por ello estudiamos, además de los posibles sistemas de gestión de bases de datos, los distintos formatos y opciones para exportar los datos a un dispositivo móvil. Entre los diferentes Sistemas de Gestion de Base de Datos disponibles, se ha realizado un estudio para evaluar cual de ellos es el que mas se adecua a las necesidades del proyecto a realizar: Oracle Oracle es uno de los SGBD comerciales mas completos, destacando su soporte de transaciones, estabilidad (bajo nivel de fallos), escalabilidad (preparado para afrontar crecimientos sin perder calidad) y por ser multiplataforma, teniendo asi la capacidad o característica de poder funcionar o mantener una interoperabilidad de forma similar en diferentes sistemas operativos o plataformas, entre ellas dispositivos moviles, que es el caso del proyecto que se desarrolla y para el cual se emplearia como SGBD Oracle Lite. Aunque su dominio en el mercado de servidores empresariales es muy elevado, su mayor defecto es su carencia de licencia libre y su elevado precio, lo cual es un aspecto a tener en cuenta a la hora de pensar en establecerlo como SGBD para el proyecto en desarrollo ya que puede ser un inconveniente con vistas a futuros usuarios del proyecto. Otro aspecto negativo es la seguridad de la plataforma, y las políticas de suministro de parches de seguridad, modificadas a comienzos de 2005 y que incrementan el nivel de exposición de los usuarios. Microsoft SQL Server Compact Edition Es un SGBD basado en el lenguaje SQL, capaz de poner a disposición de muchos usuarios grandes cantidades de datos de manera simultánea. Así tiene unas ventajas que aportan sus caracteristicas, entre las que se pueden detacar: Soporte de transacciones Gran estabilidad Gran seguridad Escalabilidad Soporta procedimientos almacenados Incluye también un potente entorno gráfico de administración, que permite el uso de comandos DDL y DML gráficamente. Permite trabajar en modo cliente-servidor donde la información y datos se alojan en el servidor y las terminales o clientes de la red sólo acceden a la información. Además permite administrar información de otros servidores de datos Este sistema incluye una versión reducida, llamada MSDE con el mismo motor de base de datos pero orientado a proyectos mas pequeños. Constituye la alternativa de Microsoft a otros potentes sistemas gestores de bases de datos como son Oracle. Pero al contrario de su más cercana competencia, no es multiplataforma, ya que sólo está disponible en Sistemas Operativos de Microsoft. MySQL MySQL es un sistema de gestión de base de datos, multihebra y multiusuario. Existen varias APIs que permiten, a aplicaciones escritas en diversos lenguajes de programación, acceder a las bases de datos MySQL. MySQL AB desarrolla MySQL como software libre en un esquema de licenciamiento dual. Por un lado lo ofrece bajo la GNU GPL, pero, empresas que quieran incorporarlo en productos privativos pueden comprar a la empresa una licencia que les permita ese uso. Al contrario de proyectos como el Apache, donde el software es desarrollado por una comunidad pública, y el copyright del código está en poder del autor individual, MySQL está poseído y patrocinado por una empresa privada, que posee el copyright de la mayor parte del código. Esto es lo que posibilita el esquema de licenciamiento anteriormente mencionado. Además de la venta de licencias privativas, la compañía ofrece soporte y servicios. La licencia GNU GPL de MySQL obliga a distribuir cualquier producto derivado (aplicación) bajo esa misma licencia. Si un desarrollador desea incorporar MySQL en su producto pero no desea distribuirlo bajo licencia GNU GPL, puede adquirir la licencia comercial de MySQL que le permite hacer justamente eso. Finalmente, nos decantamos por MySql, en base a su tipo de licencia, y dado que se trata de un producto multiplataforma que no nos limita en este sentido,como en el caso de los productos de Microsoft. En cuanto a los formatos de exportación de la base de datos al dispositivo móvil, hemos considerado las siguientes opciones: SuperWaba.pdb En un primer momento y ya decido que SuperWaba es el lenguaje empleado, se considero la posibilidad de emplear el lenguaje de consulta SQL sobre ficheros *.pdb donde se encontraria almacenada la informacion de la base de datos. Ante esta posibilidad surge el inconveniente de que los paquetes de SuperWaba incluidos en SuperWaba.pdb y necesarios para llevar a cabo esto no estan disponibles en la versión gratuita de SuperWaba a la que podemos tener acceso, encontrandose en la versión extendida de pago, lo cual supone un inconveniente y por tanto da lugar al descarte de esta posibilidad. Class Catalog de SuperWaba Ante el inconveniente encontrado en almacenar los datos en ficheros *.pdb sobre los que hacer las consultas, otra opción que aporta SuperWaba es la clase Catalog, una clase de almacenamiento de datos que permite el uso de catalogos, que son conjuntos de registros a los que se referencia como si se tratase de una base de datos almacenada en un dispositivo pequeño como puede ser un PDA, pudiendo leer desde dichos registros que componen un catalogo los datos almacenados en ellos. El principal inconveniente de esta opción es la dificultad para extraer la base de datos del sistema gestor de bases de datos al formato de un catálogo. Microsoft SQL Lite Entre otras ventajas, se caracteriza por ser de dominio publico, no presentando asi los inconvenientes especificados a ese respecto en las opciones plateadas anteriormente , ser muy rápido y fundamentalmente porque permite utilizar un amplio subconjunto del lenguaje de consulta estándar SQL. Su potencia se basa fundamentalmente en la simplicidad, pero es una solucion a descartar en entornos de trafico muy elevado o alto acceso concurrente a datos. El principal inconveniente de este producto es que sólo se puede utilizar en dispositivos que utilicen el sistema operativo de Microsoft, y por tanto limita nuestra intención de desarrollar un producto multiplataforma. XML Ante los inconvenientes encontrados en las anteriores propuestas, buscamos una opción que nos solventase los problemas encontrados. Por ello pensamos en XML, dada su gran difusión en la actualidad y su facilidad para exportarlo a cualquier sistema. Arquitectura Utilizada En esta primera versión de la aplicación, la interacción con el usuario es la siguiente: El sistema gestor de bases de datos se encuentra en un PC de sobremesa utilizando el sistema Mysql. En dicho sistema se encuentra la base de datos con el restaurante y las preferencias del usuario. El usuario selecciona qué perfil de la base de datos desea cargar en su dispositivo pda, exportando la base de datos resultante en xml. Una vez que tenemos la base de datos en xml en el PDA, podemos ejecutar el programa en el que introducimos las coordenadas en las que nos encontramos así como un radio de búsqueda. Finalmente, el programa nos muestra como resultado un listado de los restaurantes que se encuentran próximos. En una primera versión de la aplicación, nuestra aplicación contiene los siguientes elementos: Un sistema de base de datos en el que almacenar los datos relativos a los restaurantes y las preferencias del usuario. La base de datos difusa se encontrará en este sistema. Un mecanismo de exportación de la base de datos del sistema gestor de la base de datos hacia el PDA en formato xml. Un programa desarrollado en SuperWaba que se ejecutará en el PDA y que, a partir de la base de datos en xml, sea capaz de encontrar los restaurantes que se encuentren más cercanos dada una posición Procesamiento BD difusa con preferencias del usuario Servidor con sistema gestor de base de datos MySql Exporta BD a XML Dispositivo PDA con programa en SuperWaba