Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
DESARROLLO DE SOFTWARE SOBRE DISPOSITIVOS MÓVILES FELIPE GRAJALES FONNEGRA UNIVERS FACULT DEPARTA IDAD DE LOS ANDES AD DE INGENIERIA MENTO DE SISTEMAS PREGRADO BOGOTA, 2002 ISCISCISCISC----2002200220022002----2222----20202020 DESARROLLO DE SOFTWARE SOBRE DISPOSITIVOS MÓVILES FELIPE GRAJALES FONNEGRA Tesis de grado María del Pilar Villamil UNIVERSIDAD DE LOS ANDES FACULTAD DE INGENIERIA, DEPARTAMENTO DE SISTEMAS PREGRADO BOGOTA 2002 ISCISCISCISC----2002200220022002----2222----20202020 Dedico este proyecto a: Mi mamá por su constante preocupación Richard Deeb por creer en mi ISCISCISCISC----2002200220022002----2222----20202020 I CONTENIDO Capítulo 1 PROBLEMÁTICA .............................................................. 1 Capítulo 2 OBJETIVOS ...................................................................... 3 2.1 Generales ...................................................................... 3 2.2 Específicos ...................................................................... 4 Capítulo 3 EVOLUCIÓN DE LOS DISPOSITIVOS MÓVILES (HANDHELDS) ........................... 5 3.1 Relato breve de la aparición de los dispositivos móviles más utilizados actualmente ................... 5 3.2 Ejemplos de la actualidad que revelen el potencial de los dispositivos móviles ............................... 7 3.3 Comparación de la visión antigua con la reciente. Una mirada al futuro de los dispositivos móviles ................... 8 Capítulo 4 PLANTEAR UN PROBLEMA QUE REQUIERA TECNOLOGÍA MÓVIL PARA SU SOLUCIÓN ....................... 10 4.1 Enunciado del problema que se quiere resolver ................... 10 4.2 Elegir un dispositivo móvil Específico y describir sus características ............................... 11 Capítulo 5 PRIMER ENFOQUE DE DESARROLLO DE SOFTWARE ....... 13 5.1 Identificar requerimientos funcionales de la aplicación ........... 13 5.2 Desarrollo #1 .................................................................. 14 5.3 Llevar un registro de problemas presentados durante el desarrollo #1 ................................... 17 Capítulo 6 ANÁLISIS DE PROBLEMAS PRESENTADOS DURANTE EL DESARROLLO #1 ........................................... 18 6.1 Escoger un conjunto concreto de problemas ....................... 18 6.2 Profundizar en los problemas escogidos ............................... 18 Capítulo 7 MODELAR EL PROBLEMA ................................................... 21 7.1 Aplicar alguna herramienta de modelaje. Plantear los pasos a seguir en el modelaje y realizarlos ........ 21 Capítulo 8 MODELAR POR CAPAS ....................................................... 25 8.1 Separar la aplicación en capas bien definidas ....................... 25 8.2 Especificar la responsabilidad de cada capa y las relaciones entre capas ............................... 38 ISCISCISCISC----2002200220022002----2222----20202020 II Capítulo 9 SOPORTE A LA PERSISTENCIA DE LA APLICACIÓN ........... 50 9.1 Describir dos manejadores de bases de datos para dispositivos móviles ........................... 50 9.2 Escoger uno de los manejadores descritos con base en criterios específicos ........................... 53 9.3 Aprender a utilizarlo e identificar las facilidades que ofrece para el problema que se está solucionando ........................... 54 Capítulo 10 SEGUNDO ENFOQUE DE DESARROLLO DE SOFTWARE ....................................... 57 10.1 Realizar diseño de la persistencia: Modelo entidad-relación. Elegir las estructuras de datos que almacenan la información más relevante ........... 57 10.2 Desarrollo #2 .................................................................. 58 Capítulo 11 APOYO EN EL DESARROLLO DE SW MÓVIL .................. 69 11.1 Ventajas y desventajas de dos formas de desarrollar SW ...................................... 69 11.2 Recomendaciones en el desarrollo de aplicaciones sobre dispositivos móviles ........................... 70 Capítulo 12 CONCLUSIONES Y TRABAJO FUTURO .......................... 74 Capítulo 13 GLOSARIO .................................................................. 76 Capítulo 14 BIBLIOGRAFÍA .......................................................... 78 ISCISCISCISC----2002200220022002----2222----20202020 III INDICE DE TABLAS Y FIFURAS FIGURA 3.1 – PSION 1 ORGANIZER .................................................................................................................... 5 FIGURA 3.2 – EVOLUCIÓN DE LOS DISPOSITIVOS PALM......................................................................................7 FIGURA 4.1 – EJEMPLO ESTRUCTURA MAPA .......................................................................................................10 FIGURA 4.2 – CONEXIÓN PALM / PC ..................................................................................................................12 FIGURA 5.1 – ESQUEMA MENTAL DEL DESARROLLADOR ....................................................................................15 FIGURA 5.2 – SECUENCIA DE PLANTILLAS PARA CREAR UN NUEVO CLIENTE ....................................................15 TABLA 5.1 – DESCRIPCIÓN DE ARCHIVOS DEL DESARROLLO #1........................................................................16 FIGURA 7.1 – CASOS DE USO USUARIO ADMINISTRADOR .................................................................................21 FIGURA 7.2 – CASOS DE USO USUARIO VENDEDOR ...........................................................................................22 FIGURA 7.3 – MÓDULOS DE LA APLICACIÓN ......................................................................................................23 FIGURA 7.4 – DETALLE MÓDULO CLIENTES ........................................................................................................24 FIGURA 7.5 – DETALLE MÓDULO USUARIOS.......................................................................................................24 FIGURA 7.6 – DETALLE MÓDULO MAPAS ............................................................................................................24 FIGURA 8.1 – ARQUITECTURA DE LA APLICACIÓN .............................................................................................25 FIGURA 8.2 - INTERACCIÓN REQUERIMIENTO R1.1 ...........................................................................................26 FIGURA 8.3 - INTERACCIÓN REQUERIMIENTO R1.2 ...........................................................................................27 FIGURA 8.4 - INTERACCIÓN REQUERIMIENTO R1.3 ...........................................................................................28 FIGURA 8.5 - INTERACCIÓN REQUERIMIENTO R2.1 ...........................................................................................29 FIGURA 8.6 - INTERACCIÓN REQUERIMIENTO R2.2 ...........................................................................................30 FIGURA 8.7 - INTERACCIÓN REQUERIMIENTO R3.1, R3.2 ..................................................................................31 FIGURA 8.8 - INTERACCIÓN REQUERIMIENTO R4 ..............................................................................................32 FIGURA 8.9 - INTERACCIÓN REQUERIMIENTO R5 ..............................................................................................33 FIGURA 8.10 - INTERACCIÓN REQUERIMIENTO R6.1 .........................................................................................34FIGURA 8.11 - INTERACCIÓN REQUERIMIENTO R6.2 .........................................................................................35 FIGURA 8.12 - INTERACCIÓN REQUERIMIENTO R7.1 .........................................................................................36 FIGURA 8.13 - INTERACCIÓN REQUERIMIENTO R7.2 .........................................................................................37 FIGURA 8.14 – GENERAR ARCHIVOS DE MAPAS .................................................................................................38 FIGURA 8.15 – DISEÑO POR CAPAS ...................................................................................................................39 FIGURA 8.16 – CONTROL CAPA DE FUNCIONALIDAD AL INICIAR ......................................................................40 FIGURA 8.17 – DIAGRAMA DE SECUENCIA R1.2 .................................................................................................43 FIGURA 8.18 – DIAGRAMA DE SECUENCIA R1.3 .................................................................................................44 FIGURA 8.19 – DIAGRAMA DE SECUENCIA R2.1 .................................................................................................44 FIGURA 8.20 – DIAGRAMA DE SECUENCIA R2.2 .................................................................................................45 FIGURA 8.21 – DIAGRAMA DE SECUENCIA R3.1/R3.2 ........................................................................................45 FIGURA 8.22 – DIAGRAMA DE SECUENCIA R4 ....................................................................................................45 FIGURA 8.23 – DIAGRAMA DE SECUENCIA R5 ....................................................................................................46 FIGURA 8.24 – DIAGRAMA DE SECUENCIA R6.1 .................................................................................................46 FIGURA 8.25 – DIAGRAMA DE SECUENCIA R6.2 .................................................................................................47 FIGURA 8.26 – DIAGRAMA DE SECUENCIA R7.1 .................................................................................................47 FIGURA 8.27 – DIAGRAMA DE SECUENCIA R7.2 .................................................................................................48 TABLA 8.1 – SOLUCIÓN DE LOS PROBLEMAS DEL CAPÍTULO 6 ...........................................................................49 FIGURA 9.1 – ARQUITECTURA ORACLE9I LITE ...................................................................................................51 ISCISCISCISC----2002200220022002----2222----20202020 IV FIGURA 9.2 – ESQUEMA CLIENTE / SERVIDOR SYBASE......................................................................................52 TABLA 9.1 - ORACLE9I LITE VS. SQL ANYWHERE 8 ............................................................................................54 FIGURA 10.1 – MODELO ENTIDAD-RELACIÓN ....................................................................................................57 FIGURA 10.2 – PROYECTO EJEMPLO DE CODEWARRIOR ....................................................................................63 TABLA 11.1 – VENTAJAS Y DESVENTAJAS DE LA PRIMERA IMPLEMENTACIÓN ...................................................69 TABLA 11.2 – VENTAJAS Y DESVENTAJAS DE LA SEGUNDA IMPLEMENTACIÓN ..................................................70 FIGURA 11.1 – RESTRICCIONES DE HW Y SO EN LAS CAPAS DE ARQUITECTURA (DISP. PALM) ........................71 CAPÍTULO 1 PROBLEMÁTICA Desde hace varios años las empresas colombianas se han familiarizado con el uso de dispositivos electrónicos portátiles (DEPs). Estos dispositivos han sido útiles para optimizar el desarrollo de una amplia gama de tareas, entre las que podemos mencionar: ubicación de empleados, control de ventas, rastreo de vehículos, recolección de información, etc. Según la demanda del mercado, los DEPs han ido incrementando la complejidad de los servicios que ofrecen. Al principio se presentaban servicios muy genéricos que buscaban cubrir necesidades básicas de cualquier empresa, tal es el caso de las agendas o los directorios electrónicos. Concretamente los dispositivos conocidos como handhelds o PDAs (Personal Digital Assistants) han tenido una gran acogida entre las empresas, debido a que han reducido el tiempo y aumentado la precisión en el transporte y recolección de información. Actualmente, los más conocidos dentro de este grupo de dispositivos son posiblemente Palm y Pocket Pc. Estos dispositivos prestan servicios genéricos como agendas, memos o directorios, y además permiten la construcción de aplicaciones hechas a la medida y la interacción de estas aplicaciones con dispositivos externos como localizadores geográficos, impresoras portátiles o lectores de códigos de barras. Lo que se busca es convertir dichos dispositivos en puntos de acceso a información remota ubicada en bases de datos centralizadas, lo anterior es el esquema básico cliente-servidor pero sumándole las ventajas de la comunicación inalámbrica y la facilidad de uso de los dispositivos móviles. Para lograr este objetivo es necesario aumentar recursos de hardware (HW) y software (SW), que soporten los nuevos requerimientos de este tipo de tecnología. Respecto al HW, ya existen aparatos inalámbricos que ofrecen comunicación vía microondas o por CDPD (Cellular Digital Packet Data), entre otros. Sin embargo, en Colombia los costos de este tipo de comunicación son muy elevados, ya que las empresas que están en capacidad de prestar el servicio son las mismas que comunican los teléfonos celulares y por tanto las tarifas ofrecidas son semejantes. En cuanto al SW, encontramos tres dificultades en la etapa de desarrollo: ! La complejidad en la representación de la información, en términos de las estructuras de datos. ! La necesidad de manipular grandes cantidades de información de manera sencilla y eficiente. ! La mezcla de tres niveles de desarrollo en un mismo sitio: i. Persistencia. ii. Funcionalidad. iii. Interfaz Gráfica. Estos problemas son los primeros que se deberían atacar antes de realizar SW a gran escala. Por ejemplo, solucionando el tercer problema, es posible diseñar una arquitectura que comunique los tres niveles mencionados, y luego realizar un análisis por separado de cada nivel. Así se logra un proceso de SW más claro y posiblemente mayor grado de mantenibilidad. ISCISCISCISC----2002200220022002----2222----20202020 2 Los otros dos problemas también llevan a un mejoramiento en la calidad del SW que se quiere producir. Por ejemplo, en el segundo de los problemas, diseñando un mecanismo para manipular grandes cantidades de información, que optimice la utilización del espacio, sé está combatiendo una de las limitaciones más delicadas de los dispositivos portátiles: La capacidad de almacenamiento. ISCISCISCISC----2002200220022002----2222----20202020 3 CAPÍTULO 2 OBJETIVOS Sección 1 – GENERALES " Conocer a grandes rasgos la evolución de los handhelds con la intención de entender cuales son sus características: ventajas y desventajas. Así mismo proyectar el futuro de este tipo de tecnología, e identificar las empresas más importantes involucradas en el desarrollo de estos dispositivos. " Comparar dos enfoques al desarrollar un SW específico para un dispositivo portátil. El primero de los enfoques busca terminar el producto en el menor tiempo posible, obteniendo resultados parciales rápidamente y sin tener en cuenta errores minúsculos. El segundo de los enfoques está dirigido a desarrollar un SW flexible, mantenible, libre de errores y que posea unsoporte teórico de las principales decisiones de implementación. Luego se quiere resumir ventajas y desventajas de cada uno de los enfoques, para argumentar bajo condiciones empresariales (definidas por características específicas) y que relacionan la aplicación con las restricciones de un dispositivo móvil cual de los dos es mejor. " Generar un proceso organizado y un conjunto de recomendaciones de desarrollo de SW para cualquier tipo de aplicación, un dispositivo portátil predefinido y un paquete de desarrollo específico. ISCISCISCISC----2002200220022002----2222----20202020 4 Sección 2 – ESPECÍFICOS 1. Recolectar información acerca de cuando y porque aparecieron los dispositivos móviles (handhelds), con el fin de entender que problema se buscaba solucionar y contrastar este supuesto con la utilidad de dichos dispositivos en la actualidad. 2. Formular un problema específico que requiera el uso de dispositivos móviles (palm, pocket pc, hewlett-packard, etc.). 3. Solucionar el problema directamente sobre algún paquete de desarrollo (SDK) sin realizar modelaje ni seguir ningún proceso formal de desarrollo (implementación #1). 4. Utilizar el SW desarrollado (#1) para concretar problemas tanto en el proceso de SW como en la implementación, y relacionarlos con las restricciones presentes en los dispositivos móviles. 5. Volver a empezar el desarrollo del SW desde un modelaje riguroso que contemple todos los requerimientos de la aplicación. 6. Diseñar algún tipo de arquitectura para separar el problema que se quiere solucionar en varios niveles. 7. Buscar algún manejador de BD (disponible en el mercado) especial para dispositivos móviles. 8. Implementar de nuevo el SW siguiendo paso a paso la arquitectura y el modelaje (implementación #2). 9. Una vez las implementaciones #1 y #2 estén listas recopilar ventajas y desventajas de cada solución. 10. Utilizar criterios de evaluación para comparar las dos soluciones. 11. Ofrecer un conjunto de recomendaciones generales para desarrollar software en dispositivos móviles. ISCISCISCISC----2002200220022002----2222----20202020 CAPÍTULO 3 EVOLUCIÓN DE LOS DISPOSITIVOS MÓVILES (HANDHELDS) Previo al inicio de un análisis acerca de dos enfoques distintos para desarrollar SW sobre dispositivos móviles, se debe conocer un poco de historia sobre la tecnología móvil. Datos acerca de las industrias que han hecho posible la aparición y evolución de los dispositivos móviles, así como los usos que se les ha dado desde sus orígenes, resultan fundamentales para visualizar hacia donde se dirige la tecnología móvil, y de ahí entender la importancia de crear un proceso organizado de desarrollo de SW sobre algún dispositivo que tenga gran acogida en el mercado móvil. El principal objetivo cuando se creo el primer dispositivo móvil, era materializar un aparato electrónico que realizara las mismas funciones de aparatos con conexión eléctrica fija, pero que pudiera ser transportado con facilidad y usara una fuente de energía propia independiente del tendido eléctrico, apelando al uso de pilas desechables, baterías recargables o incluso celdas solares. Sección 1 – RELATO BREVE DE LA APARICIÓN DE LOS DISPOSITIVOS MÓVILES MÁS UTILIZADOS ACTUALMENTE. [1] Un gran número de dispositivos podrían encajar en la categoría de dispositivo móvil. Portátiles, celulares, reproductores de MP3 y minidiscs son algunos ejemplos del amplio espectro que comprende la palabra dispositivo móvil. En el contexto de este proyecto con dispositivo móvil se hace referencia a un grupo más pequeño llamado handhelds, más específicamente las PDAs. Un handheld se define como: Todo aparato electrónico que permite acceder información visual por medio de almacenamiento o comunicación, y que además es suficientemente pequeño y liviano para que una sola persona pueda transportarlo en un bolsillo (de suficiente tamaño) y usarlo mientras lo sostiene en la mano. [2] El género PDA fue establecido por una compañía del Reino Unido de nombre Psion después de lanzar al mercado su primer organizador digital llamado Psion Organizer, en 1984. Entre las características más destacadas de Psion Organizer estaban: # D # P # M # B b # B # P # R # P imensiones: 142mm x 78mm x 29.3mm eso: 225 gr. emoria no volátil: 10K ase de datos con función de úsqueda. asado en tecnología de 8 bits. aquete de funciones matemáticas. eloj / Calendario. antalla LCD de 16 caracteres. 5 Figura 3.1 – Psion 1 Organizer Sin embargo, Psion 1 no se convirtió en un computador genuino hasta la aparición del paquete Science Pack, el cual permitió la creación de programas más versátiles bajo un lenguaje de programación muy similar al BASIC del momento. Este paquete de programación junto con nuevas bondades en el HW incrementó notablemente la comercialización de la Psion II, el cual alcanzó 500,000 unidades producidas entre mediados de los 80’s y principios de los 90’s. Hacia 1993 la compañía Psion saca al mercado su serie 3a de PDAs con microprocesador de 16 bits, una pantalla mono LCD de 40 caracteres por 8 líneas y la característica que revolucionó el mercado de las PDAs: la capacidad de compartir archivos con computadores de escritorio mediante un proceso de sincronización. Por unos cuantos años Psion dominó el mercado de las PDAs, solo hasta 1997 el éxito de su serie 5 de PDAs (que contaba con una pantalla de 640x240 píxeles y 16 colores en escala de grises) motivó el surgimiento del competidor 3COM que con su gama de dispositivos PalmPilot ganó el liderazgo del mercado. El éxito de las PDAs impuesto por Psion impulsó a muchas otras compañías a principios de los 90’s a sacar al mercado sus propios handhelds. Apple Computer, Hewlett-Packard Co., Motorola Inc., Sharp Electronics Corp. y Sony Electronics Inc. fueron algunas de las empresas que por esta época invirtieron en diseño y producción de dispositivos portátiles. Especial reconocimiento tuvo la compañía Apple Computer quien con su tecnología Newton introdujo el uso de pantallas sensibles al tacto y software de reconocimiento de escritura a mano. A pesar de los esfuerzos de Apple y de sus novedosas ideas, nunca lograron un sistema aceptablemente rápido ni autosuficiente. Fue entonces hacia 1998 cuando Apple anunció el fin del proyecto Newton. Palm Computing ha sido la compañía que ha logrado un éxito rotundo desde la caída de Psion, primero al ser adquirida por US Robotics (1995) desarrolló el concepto de touchscreen con un lápiz como herramienta de interacción, además produjo su famoso sistema de reconocimiento de escritura a mano Graffiti, el cual demostró ser una herramienta eficiente para trabajar con PDAs. Dos años más tarde en 1997, 3COM adquiere US Robotics y junto con esta Palm Computing. Es por esta época cuando la compañía se posiciona en el mercado con sus PDAs, y logra reconocer distintos tipos de necesidades y segmentos en el mercado de los handhelds. Los dispositivos Pilot 1000 y Pilot 5000 fueron unos de los primeros desarrollados por Palm Computing. Estas PDAs estaban orientadas a mejorar la realización de las tareas de ejecutivos y empresarios, ofrecían de manera móvil servicios de agenda, lista de contactos e información financiera, entre otros. Durante los últimos años la compañía ha buscado desarrollar una gama de dispositivos de distintos presupuestos y necesidades, pero sobre todo ha tratado de incentivar el desarrollo de nuevas aplicaciones en todo el mundo, que le den un valor agregado a sus dispositivos, como herramientas de soluciones genéricas y a la medida. La siguiente figura ilustra la evolución de los dispositivos desarrollados por Palm Computing. ISCISCISCISC----2002200220022002----2222----20202020 7 Pilot 1000M100 Palm VIIx M515 Figura 3.2 – Evolución de los dispositivos Palm Sección 2 - EJEMPLOS DE LA ACTUALIDAD QUE REVELEN EL POTENCIAL DE LOS DISPOSITIVOS MÓVILES. Un handheld además de prestar servicios de uso generalizado como agendas, hojas de cálculo, calculadoras científicas, etc., ofrece la posibilidad de crear SW a la medida acorde con las necesidades de un negocio particular. Muchas son las empresas que hoy en día hacen uso eficiente de la tecnología móvil, los siguientes son algunos ejemplos de tipos de aplicaciones que funcionan con esta tecnología. Entrega y Recibo de Artículos Varias empresas dedicadas a entregar y recoger artículos, necesitan de un método eficiente y seguro que les permita registrar su trabajo diario. Estas empresas pueden ahora recurrir a los dispositivos móviles para mejorar el rendimiento y precisión de su trabajo. Gracias a la tecnología móvil es posible contar con una aplicación instalada en un handheld que contiene todas las entregas y recibos que un empleado debe realizar durante un día. Al iniciar el día los empleados conectan su PDA a un computador que contiene todas las entregas y recibos a realizar, y al finalizar el día se sincroniza de nuevo el dispositivo para registrar cuales de las tareas asignadas fueron realizadas. Cada artículo que se entrega está etiquetado con un código de barras que lo identifica de manera única dentro de un lapso de tiempo determinado. El handheld cuenta con un lector de código de barras que sirve para aumentar la precisión en la entrega de la mercancía. Cuando el empleado lee el código de barras de un articulo, el dispositivo le informa el nombre y dirección de la persona a la que se le debe entregar el artículo. En el momento de entregar o recoger un artículo el cliente debe escribir su firma sobre la pantalla touchscreen de la PDA, esto como una forma de comprobar que la mercancía fue entregada o recibida dependiendo del caso. Aplicaciones de este estilo son utilizadas por empresas que trabajan entregando paquetes. Canada Post Corporation o Purolator Courier Ltd. son algunas de las empresas que han incrementado la velocidad y control de su trabajo mediante el uso de aplicaciones móviles sobre dispositivos Symbol (palms con lector de código de barras). [3] Sistema de Encuestas Las empresas frecuentemente realizan encuestas para obtener información acerca del mercado al que se enfrentan, estimar la acogida que tendrá el lanzamiento de un nuevo producto o darse una idea del posicionamiento frente a la competencia. ISCISCISCISC----2002200220022002----2222----20202020 8 Como reemplazo al papel y lápiz con que hasta hace unos años se realizaban las encuestas, aparece un sistema de creación y realización de encuestas que funciona mediante la interacción de un PC (Personal Computer) con un dispositivo handheld. Las encuestas se crean en el PC con el número y tipo de preguntas que se prefiera, luego son transferidas a los dispositivos móviles donde se encuentra otro programa que es capaz de recibirlas y mostrarlas. La persona que realiza la encuesta puede con rapidez y precisión almacenar las respuestas de los encuestados. Al final del proceso se transfieren las respuestas de los encuestados de nuevo a la aplicación del PC, allí se consolida la información con agilidad y precisión. Mientras muchas empresas utilizan aplicaciones de este tipo para obtener información del mercado, algunas organizaciones humanitarias las utilizan para recolectar información acerca de la salud de personas necesitadas en países pobres. Por ejemplo, la organización Center of Excellence in Disaster Management and Humanitarian Assistance luego de implantar un sistema de encuestas soportado por handhelds, redujo considerablemente los tiempos de suministro de medicinas a personas enfermas de bajos recursos en países pobres. [4] Geo-Referenciación de Postes de Luz Una de las principales ventajas con que cuentan las PDAs es el acceso a cualquier tipo de información de manera móvil. Últimamente ciertas aplicaciones para dispositivos móviles ofrecen al usuario la posibilidad de navegar por un mapa de una ciudad. Es posible integrar estas aplicaciones con un dispositivo GPS (Global Positioning System) que transfiera a la PDA información geográfica de latitud y longitud. Con esta información la aplicación muestra en el mapa un punto que indica la posición del dispositivo [5]. Esta aplicación puede ser utilizada para recolectar información sobre el estado de los postes de luz en una ciudad; se captura la posición del poste y a esta se le asocia algún tipo de información relevante para realizar mantenimiento. A medida que se van registrando postes en la base de datos (BD) del dispositivo móvil, esta información puede ser transferida a una aplicación de PC que permita tomar decisiones de mantenimiento y mejoramiento de la red eléctrica. Sección 3 - COMPARACIÓN DE LA VISIÓN ANTIGUA CON LA RECIENTE. UNA MIRADA AL FUTURO DE LOS DISPOSITIVOS MÓVILES. Las primeras PDAs que aparecieron en el mercado de la tecnología móvil (1980s), contaban con utilidades que almacenaban información indispensable de cualquier ejecutivo u hombre de negocios. Utilidades que semejaban un libro de direcciones, una lista de teléfonos, una agenda de citas, entre otras, hicieron que las PDAs en sus orígenes estuvieran enfocadas primordialmente a solucionar la vida del individuo. Una de las características que más influyo en el progreso del mercado de dispositivos móviles fue la posibilidad de compartir archivos con el PC. Esta característica hizo que muchos empresarios y ejecutivos, motivados por incrementar su productividad en el trabajo, decidieran adquirir una PDA. Hasta hace unos cuantos años fue que los dispositivos móviles empezaron a funcionar no solo en pro del individuo, sino también como una opción para las empresas en la sistematización de su trabajo. La producción de dispositivos móviles con procesadores más poderosos y con posibilidades de comunicarse de manera inalámbrica, fomentó la creación de aplicaciones diseñadas para recolectar o ISCISCISCISC----2002200220022002----2222----20202020 9 transportar información de manera masiva, eficiente y precisa. En la actualidad estas aplicaciones ubicadas en las PDAs, funcionan con otra aplicación central localizada en un PC que se encarga de suministrar y recibir toda la información hacia y desde los dispositivos. Ejemplos de este tipo de aplicación se encuentran descritos en la sección anterior. El futuro de los dispositivos móviles parece ser mucho más amplio del propuesto por aplicaciones que sistematizan procesos en las empresas. Con las PDAs se pretende integrar varios dispositivos en uno solo, de tal forma que se ofrezca a las personas un dispositivo más versátil capaz de atender varias necesidades. Según Jeff Hawkins CPO (Chief Product Officer) de Handspring (una compañía que produce handhelds), en el futuro próximo habrá de diseñarse un dispositivo que sirva para conectarse a Internet, como teléfono celular y que cuente con la funcionalidad de una PDA. Un dispositivo con estas características, si bien puede suplir muchas de las necesidades de cierto segmento del mercado de la tecnología móvil, necesita encontrar un equilibrio entre la funcionalidad que ofrece y el precio al que puede ser vendido para que no genere pérdidas. Las empresas que producen dispositivos móviles ven el avance en el desarrollo de los handhelds como uno de los principales factores que determinará el rumbo de esta tecnología. No obstante, para indagar acerca del comportamiento del mercado móvil durante los próximos años, se deben considerar factores que van desde los costos en los servicios de Internet móvil, hasta el grado de familiaridad que las personas pueden alcanzar con los handhelds. ISCISCISCISC----2002200220022002----2222----2020202010 CAPÍTULO 4 PLANTEAR UN PROBLEMA QUE REQUIERA TECNOLOGÍA MÓVIL PARA SU SOLUCIÓN La creación de un proceso organizado de desarrollo de software sobre un dispositivo móvil específico, sugiere conocer las características del dispositivo en cuestión y la manera en que se desarrollan aplicaciones para ese dispositivo en un paquete SDK determinado. En el presente capítulo se propone un problema de desarrollo de software que requiere el uso de dispositivos móviles. Este problema se soluciona en un primer desarrollo realizado sin utilizar ninguna arquitectura ni técnica de programación, simplemente se busca terminar un producto en el menor tiempo posible. Esta manera particular de desarrollar, va a permitir no solo detectar ventajas y desventajas en el proceso, si no también entender con mayor profundidad el problema que se quiere solucionar. Así, será posible aplicar en capítulos posteriores un método inductivo que permita concretar, para cualquier aplicación, una serie de pasos esenciales y una arquitectura favorable para el desarrollo de software mantenible, flexible y con una base teórica de las principales decisiones de implementación. Sección 1 - ENUNCIADO DEL PROBLEMA QUE SE QUIERE RESOLVER. Una empresa dedicada a crear mapas en formato digital de municipios y ciudades de su país, desea aprovechar el producto de su trabajo creando una aplicación móvil capaz de cargar sus mapas y que cuente con un sistema de navegación. Cada mapa tiene tres niveles de acercamiento, cada nivel de acercamiento se compone de un conjunto de imágenes (que parten una vista general del mapa formando una cuadricula) y cada imagen (tipo bitmap) tiene asociados sus cuatro extremos con coordenadas de latitud y longitud en un archivo de formato CSV (Valores Separados por Comas). El primer nivel es la vista más alejada del mapa, que se representa con una sola imagen. El nivel dos está representado por un conjunto de imágenes que parten el primer nivel en pedazos rectangulares. A su vez en el tercer nivel se tienen imágenes que parten cada imagen del segundo nivel de nuevo en pedazos rectangulares (ver figura 4.1). La navegación debe realizarse relacionado las coordenadas de longitud y latitud de un nivel con las de los demás niveles y mediante movimientos verticales u horizontales dentro de un mismo nivel. Cliente Nivel 1 Nivel 2 Nivel 3 Figura 4.1 – Ejemplo estructura mapa La aplicación debe manejar dos tipos de usuario: Un usuario administrador y un usuario vendedor. Ambos tipos de usuario deben acceder de manera segura a la ISCISCISCISC----2002200220022002----2222----20202020 11 aplicación; el usuario administrador con una contraseña, y cada usuario vendedor con login y password. El usuario administrador debe contar con una opción para cambiar su contraseña y otra opción para crear, eliminar y consultar los usuarios vendedores, los cuales se componen de la siguiente información: Nombre, Login, Password y Teléfono. Adicionalmente el administrador debe poder elegir de una lista de mapas cual desea cargar. La aplicación debe cargar el mapa que el administrador eligió en alguna estructura de almacenamiento que ofrezca acceso rápido para facilitar el proceso de navegación dentro del mapa. En el nivel 3 del mapa el usuario vendedor debe poder crear, eliminar y ver información asociada de clientes. En los tres niveles de acercamiento el vendedor podrá ver la posición de los clientes representada por puntos. Los datos de cada cliente son: Identificación (NIT o Cédula), Código (Id único), Nombre, Dirección, Contacto (Nombre de una persona), Email y Teléfono. Sección 2 - ELEGIR UN DISPOSITIVO MÓVIL ESPECÍFICO Y DESCRIBIR SUS CARACTERÍSTICAS. Antes de tomar una decisión acerca del dispositivo que será utilizado para implementar una solución al problema, se debe hacer un análisis de acuerdo a los siguientes criterios importantes para la empresa que solicita la aplicación: # Costos. # Número de usuarios en el mercado. # Experiencia de la empresa. # Soporte en el desarrollo de aplicaciones. Los anteriores criterios se evaluaron para varios handhelds producidos por distintas compañías, a continuación se justifica el haber escogido los dispositivos Palm como la mejor opción: # En cuanto a los costos, Palm Computing cuenta con una variedad de modelos que comparten el mismo sistema operativo, pero varían de acuerdo a presupuesto y necesidades de distintos segmentos del mercado. # Palm actualmente es la compañía líder en el mercado de los handhelds, con aproximadamente un 32.4% de participación en ventas a nivel mundial. [6] # La empresa que solicita la aplicación afirmó haber tenido buena experiencia con aplicaciones desarrolladas para dispositivos Palm. # Al comprar una palm no se adquiere únicamente la funcionalidad básica de cualquier PDA, también se tiene acceso a más de 13.000 aplicaciones de distinta funcionalidad que se encuentran disponibles en Internet. [7] Las anteriores eran algunas características positivas del entorno en donde se encuentran los dispositivos Palm, las siguientes son características fundamentales de hardware con que cuenta una palm: # Sistema operativo Palm OS con una interfaz gráfica soportada por íconos, mediante la cual es posible acceder aplicaciones, configurar el dispositivo y administrar las bases de datos que las aplicaciones utilizan. # Dos puertos de comunicaciones, uno infrarrojo y otro serial, diseñados para compartir información con PCs y con otros dispositivos Palm. El puerto serial es utilizado primordialmente para realizar sincronización de archivos con el PC ISCISCISCISC----2002200220022002----2222----20202020 12 mediante el uso de la aplicación HotSync. El infrarrojo en cambio se puede usar para transferir bases de datos y software de una palm a otra. # Pantalla sensible al tacto para interactuar directamente con la visualización y sistema de reconocimiento de escritura a mano que evita el uso de un teclado. Es posible iluminar esta pantalla en la oscuridad con una luz de fondo o cambiar el contraste de definición. # Unidad de memoria donde las aplicaciones almacenan las bases de datos que necesitan para funcionar. La capacidad de esta memoria varía entre 2MB y 16MB dependiendo del modelo. # La mayoría de dispositivos utilizan pilas desechables como fuentes de energía. Otros más sofisticados usan baterías recargables. Figura 4.2 – Conexión palm / pc ISCISCISCISC----2002200220022002----2222----20202020 13 CAPÍTULO 5 PRIMER ENFOQUE DE DESARROLLO DE SOFTWARE El capítulo anterior formula un problema de tecnología móvil y propone un dispositivo para solucionarlo. En este capítulo se identifican los requerimientos de la aplicación y con base en estos se realiza un primer desarrollo que tiene como objetivos primordiales terminar un producto en el menor tiempo posible sin seguir ningún método organizado de desarrollo y extraer un conjunto de problemas producto de esta forma particular de desarrollar. La herramienta de desarrollo bajo la cual se va a trabajar tanto en el desarrollo #1 como en el #2 se llama CodeWarrior. Este es un paquete de desarrollo de la compañía Metrowerks especial para programar dispositivos Palm. Sección 1 - IDENTIFICAR REQUERIMIENTOS FUNCIONALES DE LA APLICACIÓN. El documento de requerimientos es una herramienta fundamental para cualquier desarrollador, como se ilustra en la siguiente sección de una buena definición de requerimientos se desprende un mejor proceso de desarrollo. Con base en el enunciado propuesto en la sección 1 del capítulo 4 se presentan a continuación en dos pasos los requerimientos funcionales que la aplicación debe cumplir. El primer paso expresa la idea general de cada requerimiento, elsegundo paso de manera más específica detalla cada requerimiento dividiéndolo posiblemente en sub-requeremientos. Paso 1 : Requerimientos de manera general R1: Cargar mapas en un dispositivo móvil y ofrecer navegación por dichos mapas garantizando latencia baja en el proceso de consulta. R2: Autenticar dos tipos de usuario: Administrador y Vendedor. R3: Crear y eliminar usuarios vendedores. R4: Consultar información básica de todos los usuarios vendedores. R5: Cambiar contraseña por parte del usuario administrador. R6: Cada usuario vendedor puede consultar la información de los clientes que le pertenecen. R7: Crear y eliminar clientes por parte del usuario vendedor con interacción directa en el nivel 3 del mapa. Paso 2 : Requerimientos detallados R1.1: Almacenar, en un dispositivo móvil, cualquier mapa con sus tres niveles de acercamiento y las coordenadas de longitud y latitud asociadas a cada imagen. Cada imagen es un archivo tipo BMP que tiene asociadas sus coordenadas en un archivo tipo CSV. R1.2: Mostrar al usuario administrador una lista de los mapas que se encuentran almacenados en el dispositivo móvil. El usuario administrador podrá elegir el mapa que la aplicación debe cargar. R1.3: Según el mapa que el administrador halla decidido cargar, permitir a cada usuario vendedor navegar entre los tres niveles de acercamiento y dentro de cada nivel con movimientos horizontales y verticales. R2.1: Para realizar funciones de administración de la aplicación, el usuario administrador debe autenticarse con una contraseña. ISCISCISCISC----2002200220022002----2222----20202020 14 R2.2: Cada usuario vendedor se autentica en la aplicación mediante login y password asignados por el usuario administrador. R3.1: El usuario administrador puede crear y eliminar usuarios vendedores. R3.2: En el momento de crear un usuario vendedor la información que se debe tener en cuenta es: Nombre, Login, Password y Teléfono. R4: El usuario administrador puede consultar la información (R3.2) de cualquier usuario vendedor creado previamente. R5: El usuario administrador puede cambiar su contraseña. R6.1: El usuario vendedor puede elegir visualizar, en cualquier nivel de acercamiento, la posición de los clientes que le pertenecen (representada por puntos). R6.2: En el nivel 3 del mapa el usuario vendedor puede consultar la información de sus clientes (usa R6.1). R7.1: En el nivel 3 del mapa el usuario vendedor puede crear clientes indicando una posición específica. La información de un cliente es: Identificación (NIT o Cédula), Código (Id único), Nombre, Dirección, Contacto (Nombre de una persona), Email y Teléfono. R7.2: En el nivel 3 del mapa el usuario vendedor puede eliminar cualquiera de sus clientes (usa R6.1). Sección 2 – DESARROLLO #1. Todo desarrollador de SW ha tenido que enfrentar los problemas que trae una mala definición de requerimientos. Para evitar esto, antes de iniciar el desarrollo de una aplicación, por pequeña que sea, se recomienda realizar un proceso de definición de requerimientos que involucre a cliente y desarrollador. Este proceso debe iniciar con una reunión en donde el cliente exprese en términos generales la funcionalidad que debe tener la aplicación, y debe finalizar con un documento redactado por el desarrollador, en donde se exprese detalladamente mediante numerales conocidos como requerimientos la funcionalidad que va a tener la aplicación. Cuando cliente y desarrollador estén de acuerdo en lo que expresa este documento de requerimientos, se deben realizar los tramites respectivos que le dan legitimidad al documento. En el caso particular de la aplicación que nos ocupa, nunca se llego a un documento detallado de requerimientos, solo se hizo una reunión en donde el cliente expreso sus necesidades y de ahí en adelante el desarrollador interpretó las cosas a su modo. Los requerimientos que se presentan al final de la sección anterior fueron redactados al terminar el desarrollo. Los problemas vinieron en el momento de las entregas cuando el cliente comunicó al desarrollador funciones adicionales que la aplicación debía realizar, y como es bien sabido por los desarrolladores modificar un software puede ser mucho más costoso que crear uno nuevo. Por esto el proceso de definición de requerimientos es tan importante. En este proceso es donde el cliente debe tratar de expresar de la mejor manera las características de la aplicación, y el desarrollador debe tratar de entender como es el medio en donde se mueve el cliente, a fin de crear un SW coherente con las necesidades del cliente. Al iniciar este primer desarrollo se tenían unos requerimientos vagamente definidos, consignados esencialmente en la mente del desarrollador, por lo que era posible proyectar un proceso de desarrollo ineficiente y con discrepancias respecto al esquema de aplicación que el cliente tenía pensado. Bajo estas condiciones se implementó el software a partir de tres partes en las que el desarrollador logro dividir la aplicación: control de acceso a los usuarios, opciones del ISCISCISCISC----2002200220022002----2222----20202020 15 En caso de que la funcionalidad del objeto involucre persistencia en una base de datos. Objeto Gráfico Inicio: Creación de objetos gráficos Funcionalidad ante un evento sobre el objeto grafico (si es que se necesita manejar). usuario administrador y opciones del usuario vendedor. Para implementar estas tres partes en las que fue dividida la aplicación, se inicio por la creación de los objetos gráficos que iban a permitir la interacción con los usuarios, luego por cada objeto gráfico, siguiendo el paradigma de programación por eventos bajo el cual funciona el SO de la palm, se programó la funcionalidad de la aplicación y a medida que se iba necesitando se fueron definiendo bases de datos1 que almacenaran los items (v.gr. usuarios, clientes, coordenadas) importantes que la aplicación debía manejar. Esta forma de desarrollar mezclaba tres niveles de desarrollo en un mismo sitio (gráfico, funcional y persistente), sin embargo para el desarrollador fue útil tener un esquema mental que separaba estos tres niveles (ver figura 5.1). Con base en este esquema mental, en el capítulo 8 se intenta separar la aplicación en capas, como parte del modelaje de un segundo desarrollo. Figura 5.1 – Esquema mental del desarrollador Cuando se programa en palm, para poder mostrar un objeto o conjunto de objetos gráficos es necesario definir una plantilla (form) sobre la cual se puedan pintar los objetos. Debido al poco espacio con que cuenta la pantalla de una palm (160x160 píxeles), durante el desarrollo muchas veces fue necesario definir una secuencia de plantillas para que los usuarios pudieran realizar una operación, por ejemplo crear un nuevo cliente involucra tres plantillas (figura 5.2), la primera contiene un botón para ingresar al mapa, en la segunda se dibuja el mapa y el usuario indica la posición en donde desea crear el cliente, y la tercera se utiliza para llenar la información asociada al cliente. Figura 5.2 – Secuencia de plantillas para crear un nuevo cliente 1 Estas bases de datos corresponden a las ofrecidas por el API de la palm; archivos con extensión PDB o PRC en los que es posible almacenar o consultar registros. En el capítulo 9 se presentan otras alternativas para manejar la persistencia de una aplicación palm. F(t1 a, t2 b) ISCISCISCISC----2002200220022002----2222----20202020 16 Un dispositivo palm a diferencia de un PC no puede leer archivos de diversos formatos. Por ejemplo archivos tipo BMP o CSV contienen una estructura que no puede ser reconocida por el sistema operativo de la palm, ni por ninguna aplicacióndiseñada para palm. Una palm trabaja con un conjunto muy limitado de tipos de archivo. Los archivos palm más utilizados son probablemente PRC (Palm Resource), PDB (Palm Database) y PQA (Palm Query Application). Cada archivo palm se compone de un conjunto ordenado de registros y de un encabezado que contiene datos importantes del archivo, como por ejemplo nombre, identificador, tamaño, número de registros, etc. Esta limitación en los tipos de archivo palm obligó a crear, durante el proceso de desarrollo, otra aplicación que almacena en un archivo de recursos (PRC) las imágenes BMP de los mapas y los registros que a cada BMP le hacen corresponder coordenadas de longitud y latitud. Este generador de bases de datos palm, que contienen mapas, hizo posible que cada mapa se presentara como un archivo independiente que la aplicación era capaz de leer. El proceso de interacción con el cliente consistía de reuniones quincenales en donde se mostraba el estado en que se encontraba la aplicación, allí el cliente indicaba que cambios necesitaba la aplicación y se negociaba un plazo para entregar dichas modificaciones. Para comprobar que la aplicación no tuviera errores, después de realizar los cambios que el cliente solicitaba, el desarrollador (siempre que hubiera tiempo) ideaba una lista de puntos críticos en donde podría fallar la aplicación e iba probando uno a uno. Una vez el desarrollo contempló todos los aspectos funcionales que el desarrollador creía necesarios, la aplicación se fue modificando según el cliente iba indicando que cosas nuevas debían ser agregadas. Solo hasta que el cliente estuvo satisfecho se hizo una entrega oficial de la aplicación con un manual en donde se explica con detalle como interactuar con la aplicación [8]. El siguiente es un inventario de resultados del desarrollo #1: # # Desarrolladores: 1 # Horas de trabajo aprox.: 150 # Lenguaje: Metrowerks Standard Libraries (MSL) para C y C++, Librerías de recursos para la plataforma PALM OS. # SDK: CodeWarrior # Tamaño aplicación: 64.1 KB # Archivos fuente: Nombre Líneas Tamaño Starter.c 5510 170 KB FuncionesGlobales.c 811 22.2 KB Clientes.c 160 4.5 KB Usuarios.c 164 4.92 KB OpcionesAdmin.c 78 2.59 KB TOTAL 6723 204.21 KB Tabla 5.1 – Descripción de archivos del desarrollo #1 ISCISCISCISC----2002200220022002----2222----20202020 17 Sección 3 – LLEVAR UN REGISTRO DE PROBLEMAS PRESENTADOS DURANTE EL DESARROLLO #1. El proceso de desarrollo que se relata en la sección anterior sirve para detectar problemas que no solo se pueden eliminar o disminuir en la segunda implementación, también es posible encontrar las implicaciones que estos tienen sobre las restricciones propias de los dispositivos móviles. Algunos de los siguientes problemas se utilizan como guía para el desarrollo #2. 3.1 Empezar a desarrollar desde la interfaz es ineficiente porque el desarrollador consume mucho tiempo en los detalles gráficos y pierde la idea de la funcionalidad que en un principio quería implementar. 3.2 Cuando se utiliza un esquema de desarrollo que inicia en la interfaz, la funcionalidad y la persistencia quedan ligadas a los componentes. Esto por lo general produce código ineficiente, por ejemplo se desaprovecha la reutilización de funciones. 3.3 La mala definición de requerimientos resulta en interpretaciones equivocadas acerca de la funcionalidad que debe tener la aplicación. Lo anterior tiene como consecuencia insatisfacción del cliente, que por lo general resulta en pérdidas de tiempo y dinero. 3.4 La mezcla de interfaz, funcionalidad y persistencia tiene como resultado SW poco flexible y difícil de mantener. 3.5 En aplicaciones donde se requiere de un proceso extenso de interacción entre cliente y desarrollador, es recomendable definir un modelaje que permita identificar claramente la funcionalidad de la aplicación antes de empezar a implementar. 3.6 Un desarrollo de SW sin un modelo conceptual, difícilmente puede tener una implementación modular, ni una documentación clara. Cuando se desarrolla SW en equipo, existe mayor posibilidad de éxito cuando la aplicación tiene una división modular y los participantes son organizados para documentar su trabajo. 3.7 Un proceso de SW que no posee una etapa de modelaje, generalmente no permite detenerse a idear maneras sencillas y amigables para la interacción con los usuarios. 3.8 Desarrollar sujeto a un cronograma muy apretado, muchas veces resulta en implementaciones con código ineficiente y documentación pobre. 3.9 Cada vez que se realiza un cambio o una adición de funcionalidad a una aplicación, se afecta su entropía. La entropía determina el nivel de desorden al interior de un programa, cuando una aplicación alcanza su nivel de entropía crítico es preferible comenzar un nuevo desarrollo. 3.10 Cuando los servicios de persistencia con que cuenta una aplicación son limitados, la funcionalidad se ve recargada con algoritmos complejos y se utiliza más memoria temporal en ejecución. ISCISCISCISC----2002200220022002----2222----20202020 18 CAPÍTULO 6 ANÁLISIS DE PROBLEMAS PRESENTADOS DURANTE EL DESARROLLO #1 El capítulo anterior finalizo con problemas encontrados en el primer desarrollo. En este capítulo se eligen cinco de estos problemas, se explican de manera detallada y se muestra su impacto sobre algunas de las restricciones de los dispositivos móviles. Sección 1 - ESCOGER UN CONJUNTO CONCRETO DE PROBLEMAS. De los diez problemas presentados en el capítulo anterior, los siguientes se escogieron, porque se relacionan con restricciones presentes en los dispositivos móviles, o porque es posible restringirlos mediante un proceso de modelaje: 1. Cuando se utiliza un esquema de desarrollo que inicia en la interfaz, la funcionalidad y la persistencia quedan ligadas a los componentes gráficos. Esto por lo general produce código ineficiente, por ejemplo se desaprovecha la reutilización de funciones. (3.2) 2. La mezcla de interfaz, funcionalidad y persistencia tiene como resultado SW poco flexible y difícil de mantener. (3.4) 3. Un desarrollo de SW sin un modelo conceptual, difícilmente puede tener una implementación modular, ni una documentación clara. Cuando se desarrolla SW en equipo, existe mayor posibilidad de éxito cuando la aplicación tiene una división modular y los participantes son organizados para documentar su trabajo. (3.6) 4. Un proceso de SW que no posee una etapa de modelaje, generalmente no permite detenerse a idear maneras sencillas y amigables para la interacción con los usuarios. (3.7) 5. Cuando los servicios de persistencia con que cuenta una aplicación son limitados, la funcionalidad se ve recargada con algoritmos complejos y se utiliza más memoria temporal en ejecución. (3.10) Sección 2 – PROFUNDIZAR EN LOS PROBLEMAS ESCOGIDOS. Las limitaciones que tienen los dispositivos móviles, obligan al desarrollador de SW a tener en cuenta dentro de la lógica de sus programas, nuevos requerimientos no funcionales como la cantidad de memoria disponible o el tamaño de la pantalla. Con los problemas de la sección anterior es posible visualizar de que manera enfoques de desarrollo similares al presentado en el capítulo 5, resultan en procesos de desarrollo ineficientes y aplicaciones que van en contra de las limitaciones presentes en los dispositivos móviles. Problema #1: Algunos programadores tienen la costumbre de separar las aplicaciones que se disponen a crear en dos componentes llamados: núcleo e interfaz gráfica. El núcleo es la parte funcional o lógica del programa que cumple con todos los requerimientos propuestos, pero que carece o utiliza una forma muy pobre para comunicarse con los usuarios. La interfaz gráfica es un componente intermediario entre los usuarios y el núcleo, que debe ofrecer manipulación sencilla y amable. En el proceso de desarrollode la aplicación, comenzar por el núcleo y terminar por la interfaz parece ser una buena practica de programación. Esto se debe a que el ISCISCISCISC----2002200220022002----2222----20202020 19 programador puede concentrase primero en que la aplicación ‘funcione’, y no desperdiciar tiempo en una visualización que probablemente más tarde cambie por sugerencia misma de los usuarios. Adicionalmente esta manera de proceder en el desarrollo permite independizar el núcleo de la interfaz gráfica, garantizando que cambios futuros en un componente no afecten al otro. En un dispositivo móvil una restricción importante es el tamaño de la pantalla. El programador debe trabajar con este tamaño para ofrecer una aplicación balanceada que no inunde la pantalla con información y opciones, pero que contenga información suficiente para una interacción sencilla. Si el desarrollador inicia el proceso por la interfaz está sujeto a dos problemas fundamentales: # En su afán por hacer uso eficiente del tiempo y pasar a la parte funcional no es cuidadoso en el diseño de la interfaz. # Al inicio del desarrollo no se tiene un entendimiento profundo del problema que se va a solucionar (incluso si se realizan exhaustivos procesos de modelaje), de esta forma el programador desperdicia tiempo pensando en como va ser el funcionamiento interno del programa con respecto a la interfaz que está diseñando. Estas dos dificultades pueden producir una interfaz inconsistente, redundante, incompleta, poco amigable con el usuario, etc. Si primero se implementa la parte funcional, se asegura que el programa funcione de manera correcta internamente. Luego para crear una buena interfaz, se puede acudir a un diseñador gráfico o consultar las técnicas que proponen los expertos en el manejo del dispositivo. Por ejemplo, la compañía Palm ofrece en un documento llamado Palm OS Companion una guía para crear interfaces acordes con los dispositivos Palm y con lo que los usuarios esperan [9]. Aunque este documento parece estar limitado a los productos Palm, las similitudes entre los dispositivos móviles y las expectativas que los usuarios tienen de ellos, lo convierten en una excelente guía para el desarrollo de aplicaciones móviles. Problema #2: Un patrón común en implementaciones que no cuentan con un modelaje previo, como la relatada en el capítulo anterior, es la mezcla de persistencia (P), funcionalidad (F) e interfaz gráfica (IG). Esto se da porque el desarrollador, con la intención de cumplir con los requerimientos del cliente, realiza lo que podría llamarse programación vertical. Con programación vertical se hace referencia a tomar un requerimiento y asegurarse que funcione completamente pasando por los estratos P, F e IG. Bajo este concepto se tiene código ineficiente porque se diseñan rutinas en los tres estratos, específicas para cada requerimiento. Si en cambio se hubiera hecho un modelaje sería posible capturar los servicios de P, F e IG por separado para realizar programación horizontal, y posiblemente encontrar que para distintos requerimientos se puede compartir código. Al compartir código se reduce considerablemente el tamaño de la aplicación, evitando la sobrecarga sobre recursos limitados de los dispositivos móviles como el procesador o el tamaño de la memoria. Además se prevén complicaciones futuras respecto a mantenimiento o extensión de la funcionalidad, ya que es en este punto donde un programa poco flexible requiere de medidas extremas como volver a empezar el desarrollo o agregar ‘parches’ de código por cada cambio. Estos ‘parches’, como se les conoce, aumentan el tamaño del código hasta tal ISCISCISCISC----2002200220022002----2222----20202020 20 punto que el compilador no es capaz de direccionarlo, como ocurre en algunos paquetes de desarrollo para dispositivos Palm (máximo 64K). Problema #3: En el problema anterior se hablaba de los estratos P, F e IG, que semejan la estructura vertical de la aplicación. Sin embargo, cuando se realiza modelaje, es posible partir dichos estratos en módulos que conforman la estructura horizontal de la aplicación. Esto es particularmente útil cuando se realiza software en equipo, porque ayuda a definir las responsabilidades de cada módulo y la interacción entre distintos módulos, así es posible dividir el trabajo y que los participantes entiendan el funcionamiento global de la aplicación. La falta de un esquema modular en desarrollo de grupo, recae en trabajo redundante y conflictos en la definición de responsabilidades. Si bien, los módulos son útiles para dividir la aplicación y construirla por partes, muchas veces pueden incrementar el número de líneas de código. Problema #4: Las técnicas de modelaje no solo son útiles para diseñar la lógica de la aplicación, también pueden ser utilizadas para crear la visualización de la misma. En los dispositivos móviles la interfaz gráfica es un elemento crítico para el resultado final de la aplicación. Debido a que los usuarios de handhelds, PDAs, Celulares, etc., cuando entran en contacto con el dispositivo móvil muchas veces se encuentran en movimiento, o en busca de una solución rápida, no tienen la paciencia de un usuario de PC. Por este motivo los desarrolladores de aplicaciones móviles deben pensar en interfaces prácticas y que continúen con ciertos patrones presentes en aplicaciones móviles conocidas, como las que vienen por defecto con el dispositivo móvil. Problema #5: En los dispositivos móviles no se cuenta con el mismo poder de almacenamiento y manipulación de datos de un PC. Por ejemplo, el sistema operativo Palm OS cuenta con un mecanismo de almacenamiento muy limitado para manipular y correlacionar la información. Estas limitaciones sobre la persistencia de un dispositivo móvil, obligan a cargar la información en estructuras dinámicas que facilitan las búsquedas, pero consumen memoria temporal extra y alargan el tiempo de ejecución del programa. Un sistema de persistencia de más alto nivel, semejante al de un SMBD, tendría ventajas como: # El almacenamiento podría realizarse en archivos con formato compatible con bases de datos usadas en un PC. De tal forma que en el momento de sincronizar la información entre el handheld y el PC no se requiera de ninguna interpretación. # Mayor poder en el nivel de persistencia sugiere que en el modelaje el estrato P pueda prestar servicios que facilitan las operaciones que debe realizar el estrato F. Por ejemplo, si la persistencia cuenta con lenguaje SQL se simplifican las búsquedas en F. Como comentario importante, no en todas las aplicaciones móviles es bueno contar con un sistema de persistencia poderoso. En algunas aplicaciones sencillas, puede ser más eficiente y económico utilizar el sistema de persistencia por defecto del dispositivo móvil. ISCISCISCISC----2002200220022002----2222----20202020 21 CAPÍTULO 7 MODELAR EL PROBLEMA A lo largo de este estudio de desarrollo de SW sobre dispositivos móviles, se ha presentado un problema específico de tecnología móvil junto con una solución ausente de modelaje que busca obtener resultados parciales con agilidad. Esta primera solución, fue útil para encontrar varios problemas presentes en una forma particular de desarrollar. En este y el siguiente capítulo se intenta realizar un modelaje riguroso del problema planteado en el capítulo 4, que tenga en cuenta los problemas ya identificados y las restricciones de los dispositivos móviles. Sección 1 - APLICAR ALGUNA HERRAMIENTA DE MODELAJE. PLANTEAR LOS PASOS A SEGUIR EN EL MODELAJE Y REALIZARLOS. El modelaje del segundo desarrollo será realizado con base en ciertos conceptos propios de la metodología UML (Unified Modeling Language). Aunque UML fue diseñado para lenguajes orientados a objetos, existen diagramas que pueden ser útiles para crear un diseño modular en una aplicación quese realiza sobre lenguaje C. El siguiente modelaje es un pequeño análisis del problema planteado, que utiliza diagramas de casos de uso y diseño de módulos para producir, junto con el modelo de arquitectura del siguiente capítulo una guía de implementación. 1. Diagramas de casos de uso: Estos diagramas ayudan a identificar los roles de usuario y las acciones asociadas a cada rol. Son útiles para verificar que la implementación ofrezca un conjunto específico de servicios a cada tipo de usuario. Figura 7.1 – Casos de uso usuario administrador ISCISCISCISC----2002200220022002----2222----20202020 22 Figura 7.2 – Casos de uso usuario vendedor ISCISCISCISC----2002200220022002----2222----20202020 2. Diagrama de módulos: Permite dividir la aplicación en módulos que encierran funcionalidad asociada a objetos fundamentales detectados en el problema que se está solucionando. En el siguiente diagrama se presentan cuatro módulos, los tres primeros contienen funcionalidad de clientes, usuarios y mapas, y el cuarto utiliza los demás módulos para ofrecer todos los servicios que debe prestar la aplicación. Los parámetros de las funciones de cada módulo se especifican en el siguiente capítulo. Al lado de cada módulo se explican únicamente las funciones para las que el nombre no expresa un significado claro. Figura 7.3 – Módulos de la aplicació - - - -Po Posicion Este se las pos que se imagen -ZoomIn( ) -ZoomOut( ) -MovimientosHorVer( ) -ObtenerMapas( ) sicionesClientesActuales( ) -EliminarUsuario( ) -NuevoUsuario( ) -CambiarContrasenaAdmin( ) -ConsultarInfoUsuario( ) -AutenticarUsuario( ) NuevoCliente( ) ConsultarInformacionCliente( ) EliminarCliente( ) n e r ici d ObtenerMapas: Devuelve la información de todos los mapas que se encuentran disponibles en el sistema. 23 sClientesActuales: vicio debe retornar ones de los clientes encuentran en la e mapa actual. ISCISCISCISC----2002200220022002----2222----20202020 24 3. Detallar los campos básicos de la estructura de datos asociada a cada módulo. Figura 7.4 – Detalle módulo clientes Figura 7.5 – Detalle módulo usuarios Figura 7.6 – Detalle módulo mapas ISCISCISCISC----2002200220022002----2222----20202020 25 CAPÍTULO 8 MODELAR POR CAPAS El diseño modular del capítulo pasado es importante porque resuelve algunos de los problemas expuestos en el capítulo 6, sin embargo no es suficiente para contrarrestar la mezcla de los niveles gráfico, funcional y persistente, detectada en el primer desarrollo. Aunque la primera implementación no separa en el código los tres niveles mencionados, en la ejecución del programa si se logra apreciar la interacción entre estas capas. Observar esta interacción es útil para generar desde el modelaje del segundo desarrollo una separación en capas y una asignación de responsabilidades para cada capa. En este capítulo concluimos el modelaje separando la aplicación en capas. Luego se verifica que se cumple con los requerimientos planteados y que se solucionan los problemas del capítulo 6. Sección 1 - SEPARAR LA APLICACIÓN EN CAPAS BIEN DEFINIDAS. El siguiente es el diagrama de arquitectura de la aplicación, que separa funcionalidad, persistencia e interfaz gráfica. Al interior de cada nivel se asume la división modular de la figura 7.3. Figura 8.1 – Arquitectura de la aplicación Los siguientes diagramas ilustran para cada requerimiento la interacción derivada del desarrollo #1 entre los niveles IG, F y P. ISCISCISCISC----2002200220022002----2222----20202020 26 R1.1: Almacenar, en un dispositivo móvil, cualquier mapa con sus tres niveles de acercamiento y las coordenadas de longitud y latitud asociadas a cada imagen. Cada imagen es un archivo tipo BMP que tiene asociadas sus coordenadas en un archivo tipo CSV. Figura 8.2 - Interacción requerimiento R1.1 No existe representación en este nivel. No existe representación en este nivel. Mapas almacenados en la memoria persistente de la palm. Mapa_1.prc . . . Mapa_i.prc . . . salida GRAFICO FUNCIONAL PERSISTENTE Generador de archivos PRC que contienen información suficiente ARCHIVO CSV BMPs Zoom 1 BMPs Zoom 2 BMPs Zoom 3 entrada 1 entrada 2 R1.2: Mostrar al usuario administrador una lista de los podrá elegir el mapa que la aplicación debe carga F GRAFICO click ISCISCISCISC----2002200220022002----2222----20202020 27 mapas que se encuentran almacenados en el dispositivo móvil. El usuario administrador r. igura 8.3 - Interacción requerimiento R1.2 BASE DE DATOS DEL MAPA FUNCIONAL PERSISTENTE Recibe: posNomMapa (La posición del nombre de mapa seleccionado). Acción: Abrir la base de datos que contiene el mapa que corresponde a posNomMapa. Recibe: Petición de abrir una base de datos que contiene un mapa ( archivo PRC). Acción: Devolver una referencia a la base de datos. Recibe: Referencia a la BD del mapa. Acción: Cargar el mapa que se encuentra en la base de datos en memoria principal para tener acceso rápido: 1. Cargar las dimensiones de los tres niveles de zoom. 2. Cargar cada imagen de cada nivel de zoom con sus coordenadas de latitud y longitud asociadas Estructura de almacenamiento de cada imagen del mapa: Acceso a imagen Img Longitud Izquierda LonIzq Latitud Izquierda LatIzq Longitud Derecha LonDer Latitud Derecha LatDer Fila en la matriz Fila Columna en la matriz Columna Dimensiones Niveles de Zoom . . . Imagen; Longitudes; Latitudes . . . ISCISCISCISC----20202020 R1.3: Según el mapa que el administrador haya decidido cargar, permitir a cada u y dentro de cada nivel con movimientos horizontales y verticales. Figura 8.4 - Interacción requerim GRAFICO FUNCIONAL click Recibe: Longitud y Latitud del clic Acción: Buscar en el siguiente niv zoom la imagen que contiene las coordenadas y establecerla como imagen actual, luego indicarle a la que la muestre. click Recibe: Longitud y Latitud del clic Acción: Buscar en el anterior nive la imagen que contiene las coorde establecerla como la nueva image luego indicarle a la interfaz que la click Recibe: Comando de movimiento abajo, izquierda o derecha). Acción: Buscar en el mismo nivel en la dirección del comando de mo la imagen adyacente y cargarla co nueva imagen actual, luego indica interfaz que la muestre. 02020202----2222----20202020 28 suario vendedor navegar entre los tres niveles de acercamiento iento R1.3 No existe representación en este nivel. PERSISTENTE k. el de la nueva interfaz k. l de zoom nadas y n actual, muestre. (arriba, de zoom, vimiento, mo la rle a la ISCISCISCISC----2002200220022002 R2.1: Para poder realizar funciones de administración de la aplicación, el usuario admini Figura 8.5 - Interacción requerimie GRAFICO FUNCIONAL Recibe: Contraseña digitada. Acción: Obtener de la base de datos la contraseña real del usuario administrad Recibe: Contraseña del usuario administrador. Acción: Comparar la contraseña obten de la base de datos con la digitada, si s iguales solicitar a la interfaz mostrar las opciones del usuario administrador. ----2222----20202020 29 strador debe autenticarse con una contraseña. nto R2.1 PERSISTENTE or. Recibe:Petición de la contraseña del usuario administrador. Acción: Retornar una cadena con la contraseña del usuario administrador. ida on ISCISCISCISC----200200200200 R2.2: Cada usuario vendedor se autentica en la aplicación mediante login y password a Figura 8.6 - Interacción requerimi GRAFICO FUNCIONAL Recibe: Login y password digitados. Acción: Buscar en la base de datos password que corresponde al login re de la interfaz: i = 0 mientras(hayMasUsrs) { ! Obtener login y passwo usuario i " Comparar los de la bas datos con los digitados. Si son iguales in interfaz que muestre las opcio usuario vendedor # i = i+1; 2222----2222----20202020 30 signados por el usuario administrador. ento R2.2 PERSISTENTE el cibido rd del e de dicar a la nes del Recibe: Login y password digitados. Acción: Buscar en la base de datos el password que corresponde al login recibido de la interfaz. Recibe: Un numero entero mayor o igual a cero. Acción: Retorna los campos login y password del record i de la base de datos de usuarios vendedores. ISCISCISCISC----20202020 R3.1: El usuario administrador puede crear y eliminar usuarios vendedores. R3.2: En el momento de crear un usuario vendedor la información que se debe tener Figura 8.7 - Interacción requerimie GRAFICO FUNCIONAL Recibe: Datos de un nuevo usuario vendedor. Acción: Almacenar los datos del n usuario vendedor en la base de da asegurándose que el campo login s identificador único de cada vended Recibe: La posición ( posElimVend un vendedor en la base de datos d vendedores. Acción: Solicitar a la base de dato vendedores que elimine el registro encuentra en la posición posElimV 02020202----2222----20202020 31 en cuenta es: Nombre, Login, Password y Teléfono. nto R3.1, R3.2 BASE DE DATOS DE USUARIOS VENDEDORES Usuario_1 ... Usuario_posElimVendedor ... PERSISTENTE uevo tos, ea un or. . . . Nombre; Telefono; Login; Password . . . edor ) de e s de que se endedor. ELIM ISCISCISCISC----2002200220022002 R4: El usuario administrador puede consultar la información (R3.2) de cualquier usuar Figura 8.8 - Interacción requerimie GRAFICO FUNCIONAL Recibe: La posición ( posVerVended un vendedor en la base de datos de vendedores. Acción: Solicitar a la base de datos vendedores la información del vende la posición posVerVendedor. Recibe: Datos de un vendedor. Acción: Enviar a la interfaz los dato vendedor y le indica que los muestre ----2222----20202020 32 io vendedor creado previamente. nto R4 PERSISTENTE or ) de de dor en Recibe: posVerVendedor. Acción: Retorna los datos del vendedor en la posición posVerVendedor. s del . ISCISCISCISC----2002200220022002 R5: El usuario administrador puede cambiar su contraseña. Figura 8.9 - Interacción requerimie GRAFICO FUNCIONAL Recibe: Tres cadenas ( s1, s2, s3 ). Acción: Comparar s2 con s3, si son ig consultar a la base de datos la contras del usuario administrador. Recibe: Una cadena ( pwdAdmin ). Acción: Comparar s1 con pwdAdmin, iguales solicitar a la base de datos que cambie la contraseña del usuario administrador por s1. ----2222----20202020 33 nto R5 PERSISTENTE uales eña Recibe: Petición de la contraseña del usuario administrador. Acción: Retornar una cadena con la contraseña del usuario administrador. si son Recibe: s1. Acción: Reemplazar la contraseña del usuario administrador por s1. R6.1: El usuario vendedor puede elegir visualizar, en cualqu puntos). Figura 8 GRAFICO Rec clie enc ( lo Acc coo de log Rec bas Acc lista den visu dich la in ISCISCISCISC----20202020 ier nivel de acercamiento .10 - Interacción requeri FUNCIONAL ibe: Petición de mostrar en el m ntes del usuario vendedor que s uentra autenticado en la aplicac gin_usr ). ión: Generar una lista (listaCoo rdenadas, a partir de peticiones datos, de los clientes asociados in_usr. ibe: Indicación de fin del recorr e de datos de clientes. ión: Tomar cada elemento de l Coord y revisar si las coordena tro de la imagen del mapa que alizando, en caso de ser así co as coordenadas a píxeles y en terfaz para que pinte un punto. 02020202----2222----20202020 34 , la posición de los clientes que le pertenecen (representada por miento R6.1 PERSISTENTE apa los e ión rd) de a la base a Recibe: login_usr, un entero i que indica una posición en la base de datos de clientes . Acción: Si el cliente en la posición i de la base de datos de clientes esta asociado con login_usr entonces retorna las coordenadas del cliente en la posición i. ido de la a lista das están se esta nvertir viarlos a ISCISCISCISC----20202020 R6.2: En el nivel 3 del mapa el usuario vendedor puede consultar la información de s Figura 8.11 - Interacción requeri GRAFICO FUNCIONAL Recibe: La posición de un client pixelY ) y el login de un usuario v ( login_usr ). Acción: Convertir la posición da pixelX, pixelY a coordenadas de latitud ( lon, lat ). Buscar en la ba de clientes el cliente que le perte login_usr y que se encuentra ma <lon, lat>: i = 0 mientras(hayMasClientes) { ! Consultar a la base de da clientes si el registro en l corresponde a lon, lat y lo tal caso pedir la informac al cliente. " i = i+1; } Recibe: Información de un client Acción: Enviar la información de interfaz para que la muestre. 02020202----2222----20202020 35 us clientes (Usa R6.1). miento R6.2 PERSISTENTE e ( pixelX, endedor da por longitud y se de datos nece a s cerca de tos de a posición i gin_usr, en ión asociada Recibe: lon, lat, i, login_usr. Acción: Verificar si los datos del cliente en la posición i corresponden a lon, lat y login_usr. Si corresponden retornar la información asociada al cliente. e cli. cli a la ISCISCISCISC----2002200220022002----2222----20202020 36 R7.1: En el nivel 3 del mapa el usuario vendedor puede crear clientes indicando una posición específica. La información de un cliente es: Identificación (NIT o Cédula), Código (Id único), Nombre, Dirección, Contacto (Nombre de una persona), Email y Teléfono. Figura 8.12 - Interacción requerimiento R7.1 Cliente_1 ... Cliente_i ... Cliente_Nuevo GRAFICO FUNCIONAL PERSISTENTE Recibe: Requerimiento de crear nuevo cliente. Acción: Indicar a la interfaz que muestre el formulario de datos del clientes. Recibe: El login de un usuario. La posición, la cédula, el código, el nombre, el contacto, la dirección, el teléfono y el email de un cliente. Acción: Con la información recibida dirigirse a la base de datos a crear un nuevo cliente. CREAR ISCISCISCISC----200200200200 R7.2: En el nivel 3 del mapa el usuario vendedor puede eliminar cualquiera de sus clie Figura 8.13 - Interacción requerim GRAFICO FUNCIONAL Recibe: La posición de un cliente ( pix pixelY ) y el login de un usuario vende ( login_usr ). Acción: Convertir la posición dada po pixelX, pixelY a coordenadas de longi latitud ( lon, lat ). Buscar en la base de de clientes el cliente que le pertenece login_usr y que se encuentra mas cer <lon, lat>: i = 0 mientras(hayMasClientes) { ! Consultar
Compartir