java Desarrollo de aplicaciones para dispostivos móviles.
Versión: 2.0, Septiembre, 2006

Juan Manuel Fernández Luna
Web: http://decsai.ugr.es/~jmfluna, Mail: jmfluna@decsai.ugr.es
IndiceInicioPerl

(C) Decsai
Web: http://decsai.ugr.es


El desarrollo de aplicaciones destinadas a dispositivos móviles, desde el punto de vista de la Ingeniería del Software, no debe diferir sustancialmente de los pasos a dar cuando se construyen aplicaciones para ordenadores de sobremesa o estaciones de trabajo.  Así, podríamos establecer los siguientes pasos previos:

Análisis de requerimientos.

El analista de turno deberá determinar, normalmente con varias entrevistas con los usuarios, las necesidades que estos tienen y los requerimientos que se les pedirán a la aplicación. Por ejemplo, en el caso de un análisis para una aplicación que se ejecutará en un dispositivo móvil, algunos de estos requerimientos generales pueden ser la facilidad de uso, que se pueda ejecutar en teléfonos móviles, PDAs y paginadores, que permita una conexión a una entidad mayor para obtener datos actualizados o devolver otros, o también, que sea capaz de almacenar cierta información de manera persistente.

Diseño de la aplicación. 

Es muy importante en este tipo de aplicaciones el crear programas separados por cada uno de los posibles usos que se le dé a la aplicación. De esta manera cada programa será más pequeño y se adaptará mucho mejor a las características de los dispositivos móviles.  Por tanto, a la hora del diseño nos plantearemos esta tarea seriamente, pues finalmente serán varias las ventajas de hacerlo así. Ya en la fase de implementación se tendrá que establecer un mecanismo que controle las diferentes aplicaciones.

 En cuanto al diseño del interfaz de usuario, debemos decidir  la correspondencia entre la aplicación y la pantalla. Los diseñadores en esta fase no deben considerar cómo los usuarios operarán con el dispositivo para llevar a cabo una tarea, o cómo se notificará a la aplicación las acciones del usuario. Se deben concentrar sólo en el objetivo de la pantalla y en la tarea que permitirá llevar a cabo.  Sun recomienda en esta etapa que se haga un "story board" conteniendo en cada viñeta los requerimientos para la pantalla correspondiente. En otra fase se decidirá qué tipo de controles vamos a utilizar para realizar entradas de datos y cómo vamos a presentar la información. En este punto, las características generales en cuanto a pantalla del dispositivo pueden marcar claramente el tipo de diseño de interfaz: lo que en uno se puede disponer en una única pantalla, en otro podremos necesitar varias.

El almacenamiento persistente es un aspecto a tener en cuenta en nuestro diseño. La pregunta a responder es: ¿qué datos deben sobrevivir a la finalización de la aplicación y estar disponibles para la siguiente vez que se vaya a ejecutar? Otra cuestión, que no se debe plantear en esta fase sino en la de implementación es qué utilizar para realizar ese almacenamiento. Una primera respuesta es aquel formato que se emplee para enviar y recibir datos entre el dispositivo J2ME y el sistema externo. Con esto evitamos una fase de conversión de formatos. Si el dispositivo posee sistemas de ficheros, entonces podemos optar por la creación de un fichero con una estructura más o menos compleja y usar las bibliotecas de Java para acceder a ellos. Otra alternativa también puede ser emplear sistemas de gestión de bases de datos relacionales, aunque en el caso de tener que tener que almacenar un gran volumen de datos y realizar gran cantidad de accesos.

Finalmente, debemos tener en cuenta dentro del diseño aspectos relacionados con la conectividad y con la entrada / salida, ya que son puntos muy importantes que van a determinar la portabilidad de la aplicación.  Por tanto, en este momento deberemos tomar decisiones en un nivel de abstracción alto, que luego se concretarán cuando determinemos claramente el tipo de dispositivo y sus prestaciones.

Implementación de la aplicación.

Esta etapa vendrá marcada por la elección del lenguaje, plataforma y herramientas de desarrollo (depuradores, entornos integrados,...). Con J2ME, teniendo en cuenta tipo de dispositivo con el que vamos a trabajar, decidiremos la configuración y perfil más adecuados.

Los pasos a seguir en esta fase hasta instalar el programa en el dispositivo serían los siguientes:

  1. Escritura del código.
  2. Compilación de la aplicación.
  3. Eliminación de información de clases innecesaria (obfuscate). Esta etapa es opcional y en ella se renombran clases, métodos, interfaces, con objeto de hacerlo ambiguo. Un paquete obtenido de esta fase lo protege de la descompilación y de la ingeniería inversa. Además, reduce el tamaño de los ficheros de clase, dando lugar a ficheros JAR más pequeños.
  4. Ejecución del preverificador para añadir la información de "clase verificada" a los ficheros de clase.
  5. Empaquetamiento de la aplicación: creación del fichero JAR y JAD.
  6. Ejecución en un emulador apropiado.
  7. Instalación en el dispositivo y ejecución. En este caso existen dos modos de hacerlo: en el primero, se descargará la aplicación a través de una conexión de red, se cargará en memoria, se ejecutará la aplicación, y finalmente se eliminará cualquier traza de ésta en el dispositivo; en la segunda, y siempre que el dispositivo lo permita, se instalará físicamente. En el entorno J2ME, Java Application Manager (JAM) es un gestor que controla la descargar, instalación, lanzamiento y desinstalación de aplicaciones en el dispositivo.