• No se han encontrado resultados

UNIVERSIDAD AUTÓNOMA DE CIUDAD JUÁREZ

N/A
N/A
Protected

Academic year: 2021

Share "UNIVERSIDAD AUTÓNOMA DE CIUDAD JUÁREZ"

Copied!
81
0
0

Texto completo

(1)

UNIVERSIDAD AUTÓNOMA DE CIUDAD JUÁREZ

Instituto de Ingeniería y Tecnología

Departamento de Ingeniería Eléctrica y Computación

ESQUEMA DE DESARROLLO MULTIPLATAFORMA PARA

DISPOSITIVOS MÓVILES

Reporte Técnico de Investigación presentado por: Angélica Marín Sifuentes 105317

Berenice Aideé Gómez Tarelo 105863

Requisito para la obtención del título de

INGENIERO EN SISTEMAS COMPUTACIONALES

Profesor Responsable: M.C. Fernando Estrada Saldaña.

(2)
(3)

iii

Autorización de Impresión

Los abajo firmantes, miembros del comité evaluador autorizamos la impresión del proyecto de titulación:

ESQUEMA DE DESARROLLO MULTIPLATAFORMA PARA DISPOSITIVOS MÓVILES.

Elaborado por los alumnos: Angélica Marín Sifuentes 105317

Berenice Aideé Gómez Tarelo 105863

__________________________

Luis Felipe Fernández M.

Profesor de la Materia

__________________________

Fernando Estrada Saldaña

(4)

iv

Declaración de Originalidad

Nosotros, Angélica Marín Sifuentes y Berenice Aideé Gómez Tarelo declaramos que el material contenido en esta publicación fue generado con la revisión de los documentos que se mencionan en la sección de Referencias y que el Programa de Cómputo (Software) desarrollado es original y no ha sido copiado de ninguna otra fuente, ni ha sido usado para obtener otro título o reconocimiento en otra Institución de Educación Superior.

(5)

v

Dedicatoria

Esta tesis la dedicamos principalmente a Dios por guiarnos en el camino hacia nuestras metas, manteniéndonos perseverantes y dándonos la oportunidad de vivir este momento.

Con todo el amor y cariño a nuestros padres y hermanos que nos apoyaron en el transcurso de nuestra carrera y vida académica, brindándonos fortaleza, principios, moral y sustento.

Y, finalmente a esas personas que aunque ya no están físicamente con nosotros nos cuidaron y guiaron para que todo saliera bien.

(6)

vi

Agradecimientos

Primeramente agradecemos a Dios por llenarnos de bendiciones todo este tiempo y mostrarnos cada día que con paciencia, humildad y sabiduría todo se puede lograr. De igual forma, damos gracias a nuestros padres por apoyarnos siempre, inculcarnos valores, y por darnos la oportunidad de tener una educación excelente. Pero sobre todo por ser un ejemplo de vida a seguir y fomentar la unión en nuestras familias. Gracias a nuestros hermanos quienes han sido nuestros amigos incondicionales y sinceros, en los que hemos podido confiar y apoyarnos para seguir adelante.

A nuestros amigos por todos los momentos que pasamos juntos. Por las tareas que realizamos y por todas las veces que nos explicaron. Gracias por las sonrisas, por hacernos reír con sus tonterías, por su respaldo y sus ánimos.

Al Maestro Fernando Estrada por ser de gran ayuda y por su comprensión en el desarrollo de este proyecto.

Agradecemos a los miembros de la Jefatura de Desarrollo de Plataforma Educativas, por habernos dado la oportunidad de desarrollar nuestro proyecto, por el apoyo y las facilidades que nos brindaron.

(7)

vii

Índice de contenidos

Autorización de Impresión ... iii

Declaración de Originalidad ... iv

Dedicatoria ... v

Agradecimientos ... vi

Índice de contenidos ... vii

Índice de Figuras ... viii

Lista de Tablas ... ix

Introducción ... 1

Capítulo 1.Planteamiento del problema ... 3

1.1 Antecedentes ... 3

1.2 Definición del problema ... 9

1.3 Objetivos de la investigación ... 9

1.4 Preguntas de investigación ... 10

1.5 Justificación de la investigación ... 10

1.6 Limitaciones y delimitaciones de la investigación ... 11

Capítulo 2. Marco Teórico ... 12

2.1 Desarrollo de aplicaciones móviles ... 12

2.2 Desarrollo multiplataforma ... 21

2.3 Herramientas de desarrollo multiplataforma ... 27

Capítulo 3. Materiales y Métodos ... 31

3.1 Descripción del área de estudio ... 31

3.2 Materiales ... 31

3.3 Métodos ... 32

3.3.2.1 Investigación de metodologías para el desarrollo de aplicaciones móviles . 33 3.3.2.2 Elaboración de metodología a partir de la integración de metodologías existentes ... 33

3.3.2.3 Definición de los controles necesarios para realizar una aplicación general de acceso a información mediante web service ... 33

3.3.2.4 Definición de la estructura para cada plataforma con los atributos elegidos 37 3.3.2.5 Desarrollo de herramienta para generación de código de aplicaciones móviles de acceso a información ... 38

3.3.2.6 Elaboración de aplicación caso de uso (Información en línea UACJ) ... 40

Capítulo 4. Resultados de la investigación ... 41

4.1 Presentación de resultados ... 41

4.2 Análisis e interpretación de resultados ... 48

Capítulo 5. Discusiones, conclusiones y recomendaciones ... 49

5.1 Con respecto a las preguntas de investigación ... 49

5.2 Con respecto al objetivo de la investigación ... 50

5.3 Recomendaciones para futuras investigaciones ... 50

Bibliografía ... 52

Apéndices ... 53

Apéndice 1. Metodología ágil para el diseño de aplicaciones de acceso a información de dispositivos móviles. ... 53

Apéndice 2. Estructura XML. ... 62

Apéndice 3. Aplicación caso de uso basada en información en línea de la UACJ... 64

(8)

viii

Índice de Figuras

Figura 1. 1: Crecimiento de los teléfonos móviles inteligentes. ... 3

Figura 1.2: Tecnología web que utiliza Phonegap para desarrollar aplicaciones móviles. ... 5

Figura 1.3: Logotipo del sitio oficial de Appcelerator. ... 7

Figura 1.4: Icono de descarga del SDK de Apache Flex. ... 8

Figura 2.1: Ciclo de desarrollo Mobile-D ... 14

Figura 2.2: Caracteristicas agiles de la metodologia HMD ... 15

Figura 2.3: Ciclo de desarrollo Hybrid Methodology Design ... 15

Figura 2.4: Fases de metodología SCRUM ... 17

Figura 2.5: Ventajas de la metodología SCRUM ... 18

Figura 2.6: Fases de la metodología MADAMDM ... 18

Figura 2.8: Framework de Xcode ... 23

Figura 2.9: Arquitectura de Android ... 24

Figura 2.10: Arquitectura iOS... 26

Figura 2.11: Funciones nativas PhoneGap... 27

Figura 3.1: Pasos para desarrollar el proyecto. ... 32

Figura 3.2: Inicio de la herramienta prototipo. ... 39

Figura 3.3: Menú de la herramienta GenCode Mobile ... 39

Figura 3.4: Opciones que aparecen al presionar el botón Generar ... 40

Figura 4.1: Resultados pregunta 1. ... 42

Figura 4.2: Muestra de resultados obtenidos en pregunta 2... 43

Figura 4.3: Resultados pregunta 3. ... 43

Figura 4.4: Muestra de resultados obtenidos en pregunta 4... 44

Figura 4.5: Resultados obtenidos en pregunta 5. ... 44

Figura 4.6: Muestra resultados obtenidos en pregunta 5 ... 45

Figura 4.7: Resultados obtenidos en la pregunta 7, referente a la plataforma Android. ... 45

Figura 4.8: Resultados obtenidos en la pregunta 7, referente a la plataforma iOS. ... 46

Figura 4.9: Muestra de resultados obtenidos en pregunta 8... 46

Figura 4.10: Resultados pregunta 9. ... 47

(9)

ix

Lista de Tablas

Tabla 1.1: Limitaciones y delimitaciones del proyecto. ... 11 Tabla 2.1: Tabla comparativa herramientas de desarrollo multiplataforma. ... 30 Tabla 3.1: Controles de entrada seleccionados para desarrollar la herramienta

prototipo. ... 34 Tabla 3.2: Atributos de los controles de entrada seleccionados. ... 38 Tabla 4.1: Tabla de comentarios de los encuestados. ... 48

(10)

1

Introducción

Actualmente se presentan un mayor número de demanda de las aplicaciones móviles, debido a la gran cantidad de dispositivos móviles. Sin embargo cada dispositivo tiene su propio sistema operativo, lenguaje y trucos para crear aplicaciones, esto hace que el proceso de crear una aplicación sea complejo y difícil de adaptar a las necesidades de los usuarios. Además, hay una gran cantidad de plataformas y versiones de Android e iOS por lo que se necesita desarrollar aplicaciones comunes para todas ellas.

En el presente documento se explica el desarrollo de una herramienta prototipo para generar aplicaciones móviles en las plataformas de iOS y Android. La aplicación propuesta tratará de resolver la problemática de desarrollo de aplicaciones móviles para múltiples plataformas. Ésta será capaz de generar código para una aplicación nativa de acceso a información por medio de web service en las plataformas de iOS y Android. El capítulo uno de este documento describe el planteamiento del problema. En la primera sección de antecedentes, se inicia hablando de los puntos más importantes para el desarrollo de aplicaciones móviles, debido al gran auge que tiene el uso de teléfonos inteligentes, por otra parte se presentan los problemas de desarrollar para diferentes plataformas móviles actuales. A continuación se describe una opción para solucionar el problema presentado y las dudas que aparecen a lo largo del proceso para resolverlo. Por último se explican las ventajas que se tienen al implementar un esquema de desarrollo multiplataforma y las dificultades presentadas al abarcar por completo el alcance del proyecto.

En el segundo capítulo, se detallan los conceptos que rodean el proyecto. Como primer punto se exponen los contenidos con relación al desarrollo de aplicaciones móviles, incluyendo las metodologías que existen para el desarrollo de dichos dispositivos, considerando también el tema del diseño de la interfaz de usuarios y la comunicación de aplicaciones con servicios web. Posteriormente, se describen las propiedades, entornos de desarrollo y arquitectura de las plataformas de iOS y Android. Para finalizar, se explica de manera general cuatro herramientas para desarrollo multiplataforma y las ventajas y desventajas de éstas.

En el capítulo tres, se describe el área de estudio del proyecto. Además, se presenta la sección de materiales, en la cual se especifican las herramientas de software y hardware que se utilizaron en el desarrollo de la herramienta prototipo. En la sección de métodos, se explican los pasos y procedimientos que se siguieron para la elaboración de una

(11)

2 metodología ágil para desarrollar aplicaciones móviles de acceso a información y la creación de la herramienta GenCode Mobile.

El cuarto capítulo, tiene como propósito mostrar los resultados obtenidos con la implementación de GenCode Mobile, con la cual se creó la aplicación móvil para ver el contenido de un cárdex, así como también la aplicación de encuestas a cinco desarrolladores de aplicaciones móviles.

En el capítulo cinco, se muestran las conclusiones que se lograron con el desarrollo del proyecto, demostrando que se cumplió con el objetivo establecido.

Al final del documento, se muestra la bibliografía utilizada y los apéndices, los cuales presentan material que fue parte del desarrollo e investigación de este proyecto.

(12)

3

Capítulo 1.Planteamiento del problema

En este capítulo se hablará, en primer término, de aspectos que son importantes para el desarrollo de aplicaciones móviles, como el gran auge en el uso de los teléfonos inteligentes, así como los problemas que se presentan al intentar desarrollar para las diferentes plataformas móviles que se manejan en el mercado actualmente. Asimismo se presenta una alternativa para resolver el problema expuesto, mostrando además las interrogantes que se producen durante el proceso de resolución. Finalmente se muestran los beneficios que existen al implementar un esquema para el desarrollo de aplicaciones multiplataforma y los obstáculos que se presentan al tratar de cubrir el alcance de este proyecto.

1.1 Antecedentes

Actualmente la importancia de tener la información que necesitamos al alcance de nuestras manos es esencial en la vida de las personas, por tal motivo es necesario contar con dispositivos que nos permitan acceder a esta información en el tiempo y lugar deseado. Estas características describen en su totalidad a los teléfonos móviles, éstos han evolucionado de tal manera que hoy en día es indispensable contar con uno de éstos. Con este crecimiento exponencial en la adquisición de teléfonos móviles (Figura 1.1) y la gran demanda por parte de los usuarios comunes, después del lanzamiento del Iphone, el mercado de los smartphones ha logrado penetrar al 44% de la población. Según la empresa Ericsson [1] los teléfonos inteligentes representan entre el 25 y el 30% de los teléfonos móviles en uso en el mundo, pero cada vez se extenderán más.

Las empresas han tenido que evolucionar junto con la tecnología, para así interactuar con los nuevos consumidores y beneficiarse y beneficiar a éstos, por lo que han tenido que desarrollar aplicaciones móviles que les ayude en su estrategia de llegar

(13)

4 a los clientes actuales y darse a conocer de una manera más eficaz. Los desarrolladores de estas aplicaciones deben tomar en cuenta la gran competencia del sector, que obliga a una constante innovación, los cambios frecuentes en la plataforma de desarrollo y en el hardware o la simplicidad de algunas aplicaciones. Según la International Data Corporation (IDC) Worldwide Trimestral Mobile Phone Tracker, Android y iOS representaron el 95,7% de todas las ventas de teléfonos inteligentes en el cuarto trimestre de 2013 (4Q13), y el 93,8% de todas las ventas de teléfonos inteligentes en el año” [2].

Para desarrollar para Android se utiliza el lenguaje Java, y al desarrollar aplicaciones en este lenguaje se puede utilizar el Android SDK, aunque existe otra opción al utilizar C/C++ usando el Android NDK (Native Development Kit). Android presenta muchas cualidades, tales como la portabilidad asegurada, ya que en el lenguaje que están desarrolladas las aplicaciones, garantiza la operabilidad en una gran variedad de dispositivos, además es una plataforma realmente abierta ya que es de desarrollo libre. Otra de sus cualidades es que su arquitectura está basada en componentes utilizados normalmente en Internet, como archivos XML, que son usados para diseñar la interfaz del usuario, lo que permite que la misma aplicación que es ejecutada para móviles sea la misma para un netbook. También incorpora una gran variedad de servicios como redes, bases de datos en SQL, síntesis de voz, navegador, entre otros.

En cambio para desarrollar para Iphone, Ipad o Ipod Touch se utiliza Xcode como entorno de desarrollo, asimismo, es necesario el lenguaje de programación Objective C ya que es el más adecuado a la hora de desarrollar aplicaciones para estos dispositivos. La plataforma iOS se ejecuta con cuatro capas: Core OS/Kernel, Core Services, Media Support y Cocoa Touch Interface. La fortaleza de esta plataforma es que tiene una cantidad relativamente pequeña de versiones y de dispositivos, todos respaldados por Apple. Estos factores reducen la complejidad, lo que facilita el soporte. Por otra parte se encuentra Windows Phone, con esta plataforma, los desarrolladores pueden programar aplicaciones móviles utilizando las tecnologías .NET, en un entorno de desarrollo, con el que la mayoría ya está familiarizado, como Visual Studio. Aunque esta plataforma no está exenta de defectos, ya que en sus versiones anteriores el código utilizado para un dispositivo no podía ejecutarse en otro dispositivo, esto se debía, en la mayoría de los casos, a la falta de estandarización.

(14)

5 Actualmente Windows Phone 7 es la plataforma de desarrollo que resuelve los problemas de incompatibilidad entre dispositivos y existe suficiente información en la web, así como en libros actuales.

Existen algunas herramientas para crear aplicaciones multiplataforma como:

PhoneGap es un framework de desarrollo de aplicaciones móviles que se basa en web, basado en el proyecto de código libre Cordova. Phonegap utiliza tecnologías web como HTML5, CSS3 y Java Script (Figura 1.2) para desarrollar en múltiples plataformas móviles. Las aplicaciones se basan en los enlaces compatibles de cada API con los estándares para acceder a los sensores de los dispositivos, sus datos y el estado de la red.

Las aplicaciones de Phonegap se basan en un archivo config.xml que proporciona información sobre la aplicación y especifica los parámetros que afectan al funcionamiento. Este archivo se adhiere a Packaged Web App del WC3, o un widget especifico. La aplicación en si se implementa como una página web, que lleva como título index.html por default, que tiene como referencia el CSS, JavaScript, imágenes, archivos multimedia u otros recursos necesarios para que se ejecute.

La aplicación se ejecuta como un WebView dentro de una encapsulación nativa, la cual se distribuye en las tiendas de aplicaciones. Para que la aplicación web interactúe con diferentes dispositivos de forma “nativa” se debe hacer referencia a un archivo phonegap.js, que proporciona enlaces al API. Phonegap proporciona una interfaz de complementos para que los componentes de aplicaciones nativas se comuniquen entre sí.

Figura 1.2: Tecnología web que utiliza Phonegap para desarrollar aplicaciones móviles.

(15)

6 La forma más sencilla de configurar una aplicación, es ejecutar la línea de comandos Phonegap, también conocida como Interfaz de Líneas de Comandos (CLI). En el escenario más básico, se puede utilizar la línea de comandos, simplemente para crear un nuevo proyecto que se rellena con la configuración predeterminada para que el usuario lo modifique. Una vez instalado el SDK de la plataforma móvil, puede compilar aplicaciones localmente. En otro escenario, puede enviar el código a un servidor de Build PhoneGap para ser compilado de forma remota para varias plataformas.

En cualquier punto del ciclo de desarrollo, se puede recurrir a herramientas del SDK de una plataforma específica, que puede proporcionar un conjunto más rico de opciones. Un entorno SDK es más adecuado si desea implementar una aplicación híbrida que mezcla componentes de la aplicación y nativas basadas en la Web. Con Phonegap, se puede utilizar la línea de comandos para generar inicialmente la aplicación, o de forma iterativa a partir de entonces para alimentar código actualizado a las herramientas del SDK. También puede crear el archivo de configuración de la aplicación.

Adobe PhoneGap Build es un servicio web que compila aplicaciones PhoneGap de forma remota, por lo que los paquetes descargables se encuentran disponibles en una sencilla interfaz web, build.phonegap.com. Si utiliza PhoneGap Build, no es necesario instalar y mantener herramientas de SDK locales para varias plataformas móviles, y puede esperar para actualizar proyectos sin problemas.

PhoneGap Build ofrece tres opciones básicas de desarrollo:

 Se puede subir los archivos del proyecto directamente al sitio web de Phonegap Build.

 El usuario puede vincular su cuenta Phonegap Build a GitHub , ya sea pública o privada.

 Puede enlazar la línea de comandos Phonegap a la cuenta de Phonegap Build. De esta manera puede compilar de manera remota sus proyectos con un solo comando [3].

(16)

7 Por otro lado con Titanium Appcelerator, que se identifica por medio de su logotipo (Figura 1.3), ayuda a desarrollar aplicaciones móviles multi-plataforma con el Titanium SDK y Appcelerator Studio, además permite gestionar todo el ciclo de vida de la aplicación con la depuración, pruebas, implementación, monitoreo y recolección analítica de datos. La plataforma de Appcelerator consta de varios componentes:

Appcelerator Studio: Es un entorno de desarrollo integrado que se utiliza para crear y desarrollar aplicaciones móviles, manejado en el entorno de Titanium SDK.

Appcelerator Dashboard: Portal web que se utiliza para controlar el uso de la aplicación. Este panel está dirigido a usuarios técnicos.

Appcelerator Services: Conjunto de operaciones empresariales, como la administración del rendimiento, pruebas automatizadas y análisis, que se activa a través de Appcelerator Studio y monitoreados en el Appcelerator Dashboard o el Appcelerator Insights.

Appcelerator Insights: Es una aplicación que se utiliza para controlar las estadísticas de la aplicación. Esta aplicación es objetivo para los usuarios empresariales.

Para empezar a utilizar la Plataforma de Appcelerator, necesita una cuenta para iniciar sesión en el Appcelerator Dashboard y Appcelerator Studio o Appcelerator Insights.

Appcelerator Studio es un entorno de desarrollo integrado basado en Eclipse (IDE) que se utiliza para desarrollar sus proyectos móviles y activar los servicios de Appcelerator, que son monitoreados a través del Appcelerator Dashboard. Studio requiere el SDK de Titanium y SDKs adicionales de terceros para desarrollar aplicaciones móviles.

(17)

8 Requisitos del sistema

 Con el fin de ejecutar Appcelerator Studio y el SDK de Titanum, el entorno del sistema debe cumplir los siguientes requisitos:

 Sistema Operativo: una version reciente de Windows, Mac OS X o Ubuntu.

 Memoria: 2 GB de RAM (memoria disponible, no total).  Java Runtime: Oracle JDK [4].

Flex es un potente framework de aplicaciones, es de código abierto y permite crear fácilmente aplicaciones móviles para iOS, Android y los dispositivos BlackBerry Tablet OS, así como las aplicaciones tradicionales de navegador y escritorio, utilizando el mismo modelo de programación, herramientas y código base. Se puede utilizar el SDK de Flex (Figura 1.4) para crear una amplia gama de aplicaciones expresivas y altamente interactivas.

Apache Flex está compuesto de diferentes componentes. Uno de ellos es el compilador que combina documentos MXML (layout) con archivos de ActionScript teniendo como salida una aplicación SWF.

A continuación, puede publicar el archivo SWF como una aplicación independiente que se presentará por el Adobe Flash Player en el navegador, o puede ser compilado con Adobe AIR para las aplicaciones nativas en Windows, MacOSX, Android, iOS, BlackBerry o diferentes plataformas.

(18)

9 Flex incluye:

 Una gran cantidad de componentes de interfaz de usuario personalizables que siguen un ciclo de vida.

 Un conjunto de servicios (HTTPService, WebService, RemoteObject).  Apoyo en la accesibilidad.

 Marco de automatización de pruebas.  SDK con un compilador [5].

Tiene manejadores de:

 Estilo  Personalización  Disposición  Localización  Animación  Module-loading

 Gestión de la interacción del usuario

1.2 Definición del problema

A la hora de desarrollar aplicaciones móviles de acceso a información por medio de servidores, las empresas están teniendo que enfrentarse a los problemas de la variedad de dispositivos y les está obligando a desarrollar la misma aplicación varias veces en diferentes plataformas para cubrir una amplia cuota de mercado.

1.3 Objetivos de la investigación

Desarrollar un prototipo de software mediante la integración de una metodología y herramientas existentes, para la generación eficiente de aplicaciones móviles en diversas plataformas.

(19)

10

Objetivos específicos

 Desarrollar una metodología que permita generar aplicaciones en múltiples plataformas para dispositivos móviles, utilizando como caso de uso la aplicación móvil que visualice el contenido de la página de Información en línea de la Universidad Autónoma de Ciudad Juárez.

 Implementar una herramienta prototipo que permita la generación de código para aplicaciones móviles multiplataforma, basada en la metodología mencionada anteriormente.

1.4 Preguntas de investigación

¿Cuáles son las estrategias/metodologías actuales para la codificación de aplicaciones móviles?

¿Cuál es la mejor estrategia para adaptar las diferentes características de las múltiples plataformas que permita definir una metodología?

¿Qué obstáculos se pueden presentar al tratar de integrar una aplicación nativa a los diferentes sistemas operativos móviles?

¿Qué dificultad existe al implementar una herramienta de desarrollo multiplataforma? ¿Cuál es la herramienta existente que ofrece mayores ventajas a la hora de desarrollar aplicaciones en múltiples plataformas móviles?

¿Qué beneficios se obtienen con la implementación de la metodología propuesta?

1.5 Justificación de la investigación

Con la implementación de una herramienta basada en una metodología para el desarrollo de aplicaciones móviles multiplataforma se generarían los beneficios siguientes:

 Con este tipo de aplicaciones se puede desarrollar de manera más rápida para varias plataformas, reduciendo costos.

 Reutilización de código, ya que se utilizaría una misma lógica para desplegar en las diferentes plataformas móviles.

(20)

11

1.6 Limitaciones y delimitaciones de la investigación

Tabla 1.1: Limitaciones y delimitaciones del proyecto.

Limitaciones

Delimitaciones

• No se cuenta con una computadora MAC para desarrollar en iOS.

• No se cuenta con un dispositivo móvil con sistema operativo iOS para probar aplicaciones.

• La bibliografía no es muy accesible o no está muy actualizada sobre las 2 plataformas móviles (Android e iOS).

• Las aplicaciones desarrolladas serán basadas en acceso a información localizada en servidores.

• Las plataformas móviles en las cuales se enfocará esta investigación serán: Android e iOS.

(21)

12

Capítulo 2. Marco Teórico

En este capítulo se describirán los conceptos que envuelven todo el proyecto. En primer lugar se explican los temas relacionados al desarrollo de aplicaciones móviles, en los que se incluye las metodologías existentes para el desarrollo en estos dispositivos, también se toca el tema del diseño de interfaz de usuario y la comunicación mediante servicios web. A continuación se explican las características, entornos de desarrollo y arquitectura de los sistemas operativos Android e iOS. Por último, se presentan de manera general cuatro herramientas de desarrollo multiplataforma y la comparación entre éstas.

2.1 Desarrollo de aplicaciones móviles

2.1.1 Metodologías de desarrollo

“Una metodología es una colección de procedimientos, técnicas, herramientas y documentos auxiliares que ayudan a los desarrolladores de software en sus esfuerzos por implementar nuevos sistemas de información. Una metodología está formada por fases, que guiarán a los desarrolladores de sistemas a elegir las técnicas más apropiadas en cada momento del proyecto, además de planificarlo, gestionarlo, controlarlo y evaluarlo” [6].

Cuando se quiere desarrollar aplicaciones para dispositivos móviles se difiere del desarrollo de software tradicional en varios puntos, por lo que no es lo mismo utilizar una metodología de software clásico a una enfocada a móviles. Actualmente, se utilizan las metodologías ágiles ya que se consideran más aptas para desarrollar tecnología móvil, aunque se requieren ajustes debido a que existe una gran variedad de dispositivos y de redes de telefonía móvil. Para desarrollar en software móvil se deben considerar las siguientes características básicas [6]:

Agilidad. Las metodologías que se basan en el “Manifiesto Ágil” se enfocan en ofrecer

una mejor flexibilidad y productividad en el desarrollo, dando así, métodos para adaptar cambios en el software.

Conciencia en el mercado. El desarrollo móvil se enfoca en el producto, no en un

proyecto, por lo que se utilizan las prácticas del NPD (New Product Development) [7] para analizar el mercado.

(22)

13

Soporte a toda la línea de producción software. Se considera para que el ciclo de vida

sea más corto, desarrollando así software para móviles en un solo intento, reduciendo costos y mejorando la calidad.

Desarrollo basado en arquitectura. Es muy importante contar con una arquitectura

genérica para una clase de productos, ya que puede reconfigurarse para cada componente en específico o a un producto determinado.

Soporte para reusabilidad. El desarrollo basado en proyectos anteriores, agiliza la

entrega del producto y reduce los errores en el software, ya que se cuenta con antecedentes de éste.

Inclusión de sesiones de revisión y de aprendizaje. Este aspecto es de suma

importancia para asegurar el análisis del producto y sesiones de aprendizaje después de la entrega para generar una documentación, y así, se obtenga una retroalimentación del equipo de trabajo.

Especificación temprana de la arquitectura física. Se considera para mitigar riesgos

técnicos que se presenten debido a las limitaciones de los dispositivos móviles, por lo que se utiliza un prototipo que mitiga dichos riesgos.

En esta investigación se describirán tres metodologías ágiles que actualmente se utilizan para el desarrollo de software móvil, la primera recibe el nombre de Mobile-D y fue propuesta por Peekka Abrahamsson y su equipo de Technical Research Centre of Finland. En segundo lugar, está el HDM (Hybrid Methodology Design), el cual combina el desarrollo adaptativo de software con el diseño de nuevos productos, partiendo de un ciclo de vida tradicional, incluyendo una fase de comercialización. Por último, se describe la metodología Mobile Development Process Spiral, la cual toma como base el modelo espiral y aún se encuentra en etapa experimental.

Mobile-D. Se divide principalmente en cinco etapas: exploración, iniciación,

producción, estabilización y prueba del sistema. Éstas a su vez se dividen en tareas o prácticas asociadas. En la primera fase, exploración, se encuentran las etapas de: establecimiento de actores, definición del alcance y el establecimiento de los proyectos. En el transcurso de esta etapa se asignan las tareas relacionadas con el establecimiento del cliente, planificación inicial del todo el proyecto y los requerimientos, y cómo se van a establecer los procesos.

(23)

14 En la segunda fase, iniciación, se reconocen los recursos necesarios, se preparan los procesos de la siguiente etapa y se determinan los recursos físicos, tecnológicos y de comunicaciones. Esta etapa se divide a su vez en cuatro fases: puesta en marcha del proyecto, planificación inicial, día de prueba y día de salida. En la fase de producción se vuelven a programar los días de planificación, trabajo y liberación y se repiten hasta que se implementan todas las funcionalidades.

Durante la fase de estabilización, se integran todos los elementos para cerciorarse que el sistema funciona de manera correcta. Esta es la etapa más importante de todo el ciclo, ya que el esfuerzo de todas las tareas se centra en la integración del sistema, generando así la documentación. En la última fase, se prueba el producto terminado con los requerimientos del cliente y se eliminan los defectos encontrados. Se puede visualizar el ciclo de desarrollo en la figura 2.1.

Hybrid Methodology Design. En esta metodología se utiliza como base el modelo

iterativo incremental, esto genera una entrega rápida del software y una mejoría en la gestión de riegos. Las características de las metodologías ágiles que destacan en esta metodología se muestran en la figura 2.2.

(24)

15 Se parte de un ciclo de vida tradicional, esta metodología se divide en cuatro iteraciones. En la primera, se divide la etapa de análisis para mitigar los riegos, de la misma manera la etapa de diseño se divide para abarcar el diseño basado en arquitectura. Las etapas de implementación y pruebas se agrupan para introducir los conceptos del desarrollo orientado a pruebas (Test Driven Development). Además, se considera una fase de comercialización, para visualizar cómo se impone el producto en el entorno del desarrollo de aplicaciones para plataformas móviles.

En la segunda iteración, se integran parte del modelo NPD (New Product Development) para añadir ideas al inicio del ciclo y realizar pruebas antes de introducirse a la etapa de comercialización. En la siguiente iteración, la número tres, se integran los métodos del desarrollo adaptativo (ASD) para asegurar la calidad y la disposición de la arquitectura física en una fase temprana del proceso. Por último, en la cuarta iteración se agregan elementos de prototipo y se refina la fase de iniciación del proyecto. Sus especificaciones se pueden observar en la figura 2.3.

Figura 2.2: Características agiles de la metodología HMD

(25)

16

Mobile Development Process Spiral. Toma como base el modelo de desarrollo en

espiral, tomando como prioridad al usuario en la etapa de diseño para garantizar su satisfacción, este modelo está orientado a proyectos grandes y costosos, ya que busca una reducción de riesgos. El primer paso de este proceso es identificar a los usuarios y para qué se utilizará la aplicación, después priorizar los atributos más importantes para la aplicación para verificar en qué grado la aplicación cumple con lo establecido.

El proceso de desarrollo de aplicación en espiral para móviles se divide en cinco iteraciones, las cuales a su vez, se dividen en tres tareas: determinación de requisitos, diseño y pruebas. Al terminar cada iteración se planea la siguiente; en la primera iteración se establecen los requerimientos del sistema y se identifica a los interesados, tareas y el contexto en que se va a usar la aplicación. Después, se identifican los atributos de la aplicación y se definen métricas para evaluar cada atributo, además de que se dibuja un prototipo de la interfaz de dicha aplicación.

Por otra parte, en la segunda iteración, se obtienen más datos y requisitos, se investiga si más usuarios pueden utilizar la aplicación. Los atributos de usabilidad se redefinen, por lo cual las métricas se deben adaptar a los requisitos añadidos; en la parte del diseño se realiza ya, un prototipo más fiel a la interfaz y se realizan pruebas. En la tercera iteración, se identifican de manera más clara los atributos de usabilidad y se priorizan utilizando los resultados de la iteración anterior; se desarrolla de manera completa todo el sistema y se realizan pruebas, sus resultados se comparan con los de la iteración número dos.

En la penúltima iteración, nuevamente se identifican y priorizan los atributos de facilidad de uso y de desarrolla una segunda versión para que el cliente la evalué. Para finalizar, en la quinta iteración, se desarrolla el producto final, se comparan los resultados de la fase anterior, se realizan los cambios necesarios, si es que los hay, y se libera la aplicación para todos los usuarios.

SCRUM: Su propuesta Agile-SCRUM, cumple con las características necesarias para el

tipo de soluciones móviles. Consiste de diferentes fases que se visualizan en la figura 2.4.

(26)

17

Figura 2.4: Fases de metodología SCRUM

Cuando un cliente requiere de una solución móvil, el concepto de aplicación es fijado en la primera fase. Dentro de esta fase se integra el análisis de mercado y análisis de restricciones físicas (arquitectura e ingeniería) de los dispositivos móviles. Estas fases son indispensables para disminuir la inseguridad y riesgos a nivel técnico (prometer algo que no se puede cumplir en cuestiones tecnológicas). La fase 2 y 3 que corresponden al diseño, desarrollo y pruebas de calidad son aplicadas dentro del marco de la metodología SCRUM a través de los Sprints y sus elementos principales (taskboard, Scrum diario, planificación de release, entre otros). En la fase 4 se finalizan cada uno de los Sprints y se hace una retroalimentación. La fase 5 es sustancial, ya que en ésta se valida y confirma la aceptación del producto. Si los requerimientos del cliente se cumplen satisfactoriamente se publica la versión funcional en las tiendas oficiales o internas. Si el producto no es aceptado se realiza una nueva iteración, comenzando en la fase 1 pasando por otro ciclo sprint.

Usar la metodología de desarrollo Agile-SCRUM no sólo brinda adaptabilidad y flexibilidad al cambio continuo de requerimientos, si no también ofrece un modelo de programación para los equipos. Entre otras ventajas se tienen las siguientes acciones mostradas en la figura 2.5.

(27)

18

Figura 2.5: Ventajas de la metodología SCRUM

MADAMDM: La Metodología Ágil para el Diseño de Aplicaciones Multimedia de

Dispositivos Móviles (MADAMDM), se divide en cincos fases las cuales se muestran en la figura 2.6.

(28)

19 Para realizar MADAMDM se tomaron como base la metodologías de XP (Programación Extrema), MOOMH (Metodologías Orientada a Objetos para la producción de software Multimedia e Hipermedia), UWE (Based Web Engineering) y OOHDM (Método de Diseño Hipermedia Objeto Orientado), tomando las características más relevantes de cada una para poder cumplir los objetivos establecidos y hacer más fácil el desarrollo y diseño de aplicación en dispositivos móviles en múltiples plataformas.

MASAM (Mobile Application Software development based on Agile Methodology)

Propone un ciclo de vida simple formado por cuatro fases:

Preparación: Resumen del producto, se asignan roles y responsabilidades.

Realización: Se enfoca en entender las necesidades de los usuarios y definir la arquitectura de software del producto.

Desarrollo del producto: Sigue los principios de las metodologías ágiles que pasan por un proceso iterativo acompañados por Test-Driven Development.

Comercialización: Se concentra en lanzamientos de productos y actividades de venta.

2.1.2 Diseño de interfaz de usuario

Interfaz de usuario se refiere a la representación de los distintos elementos de una interfaz gráfica, tanto en iOS como en Android. En la plataforma de Android se puede definir una interfaz gráfica de tres maneras: por medio de la interfaz gráfica del IDE, definiendo el código XML y por medio de código Java; en iOS solo existen dos formas, mediante la herramienta de diseño de interfaz de usuario Interface Buider y por código Objetive-C.

Para unificar el código con el diseño, en Android, se puede declarar los eventos en el XML de la interfaz gráfica y también implementar los eventos por medio del código Java; de igual manera existen dos alternativas en iOS, la primera es vinculando de manera visual entre los métodos que se definen en la clase controlador y la otra es por medio del código en Objetive-C. El Diseñador de interfaces de Eclipse, provee herramientas básicas para diseñar interfaces de usuario pero no de una manera controlada, en cambio las herramientas de Interface Buider de Xcode, son muy completas y ofrecen un acabado estable y estático.

Con relación a la interfaz gráfica de los usuarios, las dos plataformas de

desarrollo de aplicaciones presentan elementos para visualizar de manera estática el uso de interfaces táctiles. Esto es de suma importancia ya que actualmente todos los

(29)

20 teléfonos y dispositivos móviles inteligentes cuentan con una pantalla táctil, y es a donde va enfocado el desarrollo de aplicaciones para estos dispositivos.

Ya que este proyecto tiene como caso de uso el visualizar el contenido de la página de información en línea de la Universidad Autónoma de Ciudad Juárez, se debe de profundizar en la etapa de diseño de la interfaz móvil. Primero se debe de considerar las características generales del sitio, el análisis sobre las cuestiones del uso del portal, cuáles son los perfiles de los usuarios que utilizan la página, comparativa con otras aplicaciones educativas móviles y algunas cuestiones técnicas que puedan presentarse. A la hora de diseñar se debe tener en cuenta el contenido, la estructura del sitio, la navegación, una ágil interacción con el usuario y algunas otras consideraciones que puedan presentarse. [8]

2.1.3 Comunicación mediante servicios web

En la Web se puede tener acceso a contenidos y además ofrecer una serie de servicios conocidos como web services (ws), los cuales son funciones o procedimientos a los cuales se pueden tener acceso vía web por medio de un programa o aplicación, sin tomar en cuanta en cuál plataforma esté el servicio, o en que leguaje fue desarrollado. De esta manera, diferentes aplicaciones desarrolladas en múltiples lenguajes de programación, utilizan los web services para intercambiar información.

La mayor ventaja de utilizar los ws radica en que proporcionan interoperabilidad entre aplicaciones de forma independiente a sus propiedades o de las plataformas en las que se instalen. Los web services promueven estándares y protocolos de texto, que facilitan el acceso a su contenido y el entendimiento de su funcionamiento. Es por eso que servicios y softwares de diferentes compañías que se localizan en diferentes partes del mundo se pueden integrar fácilmente para proveer sus servicios.

Para conseguir mayor interoperabilidad, se necesita implementar una serie de protocolos en los cuales se invoque el servicio, se pasen los parámetros y se reciba un resultado, además de manejar los errores. Los protocolos que se utilizan mayormente para estas operaciones son el SOAP (Simple Object Acess Protocol) y XML Remote Producer Call (XML-RPC), con los cuales se realiza el intercambio de datos. [9]

(30)

21

2.2 Desarrollo multiplataforma

2.2.1 Descripción general de iOS

El sistema operativo iOS es una plataforma de desarrollo popular entre desarrolladores creada por Apple Inc. conocido por sus características innovadoras. Éste es utilizado para dispositivos de esta compañía como iPhone, IPad e iPod Touch. Su código fuente no está disponible para los desarrolladores y está bajo la licencia de EULA (End User License Agreement). Está escrito en C, C++ y Objective-C, la interfaz de usuario contiene un teclado virtual, la tecnología que éste utiliza permite el reconocimiento de gestos multi-touch, y cuenta con acelerómetros internos que son utilizados por algunas aplicaciones. Incluye el componente de software “Core Animation”, que conjuntamente con el hardware de 3D, se usan para la interfaz con el usuario, lo que lo hace atractivo para éstos. [10]

2.2.2 Descripción general de Android

Android es el primer proyecto de la compañía Google dentro del ámbito móvil, el cual consiste en un sistema operativo basado en Linux, su licencia de distribución ha sido Apache 2.0, lo que significa que es un software de libre distribución. Las aplicaciones para Android son programas en Java ejecutados en una máquina virtual llamada Dalvik. Gracias al concepto de máquina virtual, se garantiza que estas aplicaciones pueden ser utilizadas en los diferentes dispositivos existentes y/o futuros.

Los gráficos utilizados dentro de este sistema operativo son de alta calidad, ya que son inspirados en Flash, de tres dimensiones, basados en OpenGL e incorpora los codecs de audio y video más comunes.

Con Android se busca incorporar una gran cantidad de servicios como la localización basada en GPS, bases de datos con SQL, reconocimiento de voz, navegador, además de las funcionalidades propias de cualquier dispositivo móvil, como las llamadas, mensajes de texto, cámara, agenda, Wi.Fi, Bluetooth, entre otras. En resumen, busca optimizar el desarrollo de aplicaciones móviles, logrando estandarizarlo. [11] [12]

2.2.3 Características Android

Su principal objetivo es el desarrollo rápido de aplicaciones que sean realmente portables para la gran variedad de dispositivos que existen actualmente.

(31)

22  Los componentes básicos de las aplicaciones se pueden sustituir fácilmente por

otros.

 Cuenta con una máquina virtual, llamada Dalvik, que está diseñada especialmente para dispositivos móviles, ésta compila y ejecuta código escrito en Java.

 Contiene librerías de gráficos 2D y 3D.

 Permite uso de bases de datos mediante SQLite  Soporta diferentes formatos multimedia.  Servicio de localización GSM.

 Controla hardware como: Bluetooth, Wi-Fi, cámara fotográfica/vídeo, GPS, acelerómetro, infrarrojos, pantallas táctiles.

 Cuenta con un entorno de desarrollo disponible de forma gratuita.

 Ofrece un plug-in para Eclipse, a su vez proporciona un emulador y herramientas para depurar el programa.

 El SDK (Kit de Desarrollo de Software) de Android está soportado en sistemas operativos Windows, Linux y Mac. Algunas de las herramientas que proporciona es:

 Android Debug Bridge (ADB): Se puede tener acceso a funciones del emulador

 Dalvik Debug Monitor Service (ddms): Se administran los procesos que están siendo ejecutados durante la emulación y permita la depuración de éstos.

 sqlite3: Permite acceso a archivos SQLite creados por las aplicaciones. [11] [12] [13] [14]

2.2.4 Características iOS

 Provee una interfaz fluida gracias a sus gráficos.

 Cuenta con acelerómetros y giroscopios que permiten la interacción con el sistema operativo.

 No permite Adobe Flash ni Java.

 Utiliza HTML5 como alternativa a Flash.  Cuenta con 4 capas de abstracción.

(32)

23  Capa del núcleo del SO

 Capa de servicios principales  Capa de medios

 Capa Cocoa Touch

 El sistema operativo ocupa menos de medio GB del total con el que cuenta el dispositivo de 8 o 16 GB.

 El SDK se puede descargar de manera gratuita. [10]

2.2.5 Entornos de desarrollo

Como se mencionó anteriormente, iPhone es uno de los smartphones más populares en todo el mundo actualmente y sus aplicaciones deben ser desarrolladas en Xcode (Figura 2.8), ya que es el entorno de desarrollo de Apple. Con esta herramienta se puede crear software para iOS y Mas OS X, y se compone básicamente de la documentación del desarrollador, constructor de interfaz y la interfaz gráfica de usuario. Incluye compiladores del proyecto GNU (GCC), y puede compilar C, C++, Objective-C, Objective-C++, Java, Apple script, Python, Ruby, Cocoa, entre otras. [14]

A diferencia del entorno de desarrollo de aplicaciones para dispositivos de la compañía Apple, para Android existen más alternativas, que al igual que éste, son gratuitas. Normalmente las aplicaciones para esta plataforma están escritas en el lenguaje Java, y se puede utilizar el Android SDK. Otra opción que existe es desarrollar las aplicaciones en lenguaje C/C++ utilizando el Android NDK (Native Development Kit).[15][11]

(33)

24 Eclipse es el entorno de desarrollo más recomendable para Android, ya que ha sido utilizado por los desarrolladores de Google para crear el propio Android, la versión mínima es la 3.3.1. Aunado a este entorno se debe de instalar la máquina virtual Java, también conocida como Java Runtime Environment (JRE) o Java Virtual Machine (JVM), este entorno de ejecución Java permite que se ejecute el código en el equipo.[11]

2.2.6 Arquitectura de Android

A continuación en la figura 2.9 se muestran las capas en las que es dividido Android, así como sus componentes principales dentro de éstas.

La primera capa de esta plataforma es el núcleo, el cual está formado por Linux 2.6 y contiene los drivers para dispositivos, así como los servicios que tienen que ver con la seguridad, manejo de memoria, multiprocesos y la pila de protocolos. Se eligió Linux 2.6 porque se buscaba que todo componente fuera libre y abierto, y de no haber elegido este sistema operativo se comprometería la licencia de Apache, además éste contiene múltiples controladores. Esta capa es dependiente del hardware del dispositivo móvil, ya que sirve de abstracción entre el hardware y las otras capas que conforman a Android.

La siguiente capa se conforma por las librerías y el entorno de ejecución. Las librerías están escritas en C/C++ y están compiladas en el lenguaje nativo. Algunas de las librerías más importantes son:

(34)

25  Surface Manager: Compone los elementos de navegación de pantalla manejando

el acceso al subsistema de representación 2D y 3D.

 libc: Incluye las cabeceras y funciones utilizando el estándar de c.

 WebKit: Proporciona un navegador web, además es la misma librería que utiliza Google Chrome y Safari de Apple.

 SSL: Brinda servicios de seguridad.

 FreeType: Renderiza de manera vertical y proporciona fuentes en bitmap.

 SQLite: Es un motor de bases de datos relacionales usada en todas las aplicaciones.

El runtime de Android está formado por el core libraries que contienen la mayoría de las librerías en el lenguaje Java, y la máquina virtual Dalvik que se encarga de optimizar los recursos, ya que los dispositivos donde se ejecuta Android no cuentan con suficiente memoria y tienen un procesador limitado.

El framework de aplicaciones proporciona las herramientas necesarias para desarrollar cualquier aplicación, presentando como su mayor ventaja la simplificación de reutilización de componentes. Los servicios más importantes que están dentro de esta capa son:

 Activity Manager: Maneja el ciclo de vida de la aplicación y brinda una noción de cómo de navegará entre ellas.

 View System: Con éste se construyen interfaces de usuario como listas, botones, control de éstas por teclado o tacto.

 Content Providers: Se utiliza para acceder a datos de otras aplicaciones.

 Resource Manager: Gracias a este servicio se puede acceder a recursos que no son del código.

 XMPP Service: Se utiliza para intercambiar mensajes, es un protocolo basado en XML.

Por último, las aplicaciones son todas las que están incluidas en Android, así como las que el usuario vaya añadiendo, normalmente están escritas en Java pero existen otras alternativas para los desarrolladores como se mencionó en el apartado 2.2.5.[15][11]

(35)

26

2.2.7 Arquitectura de iOS

En la figura 2.10 se presenta la arquitectura de iOS, la cual cuenta con cuatro capas de abstracción.

La arquitectura de este sistema operativo brinda tal nivel de abstracción entre el hardware y las aplicaciones que se visualizan en el dispositivo, que no importan los cambios en el hardware, éste seguirá funcionando de igual manera.

La capa que se considera como la base del sistema operativo es Core OS, en ésta se maneja la memoria, se gestiona el sistema de ficheros, conexión a la red y los procesos que van de la mano con el hardware. Sus interfaces están escritas en lenguaje C.

La siguiente capa es la de Core Services, en ésta se encuentran aplicaciones como agenda acceso a bases de datos, conexión a servidores, redes, acceso a los archivos, SQLite. Igual que en la capa de núcleo, mencionada anteriormente, sus interfaces están escritas en el lenguaje C.

La capa de medios está compuesta por Core audio, OpenGL, Quartz, animaciones básicas, OpenGL ES, grabación de audio, reproducción de video, entre otras. Su función principal es la de ejecutar tareas multimedia.

Por último, la capa Cocoa Touch es en la que se encuentran las plantillas para la creación de aplicaciones iOS gestionando la interacción usuario-dispositivo. [15][9]

(36)

27

2.3 Herramientas de desarrollo multiplataforma

2.3.1 Descripción general de herramientas de desarrollo multiplataforma

Con Phonegap se pueden crear aplicaciones utilizando HTML5, CSS3 y Javascript, las cuales son ejecutadas en un componente WebKit. Proporciona una serie de librerías Javascript desarrolladas en un leguaje para cada plataforma, de esta manera se puede tener acceso a las características del dispositivo tales como GPS, acelerómetro, contactos, cámara, etc. Debido a que es una página web se pueden utilizar frameworks como jQuery.

Se utilizan componentes visuales típicos de HTML para dar una apariencia nativa, un ejemplo de estos componentes es jQuery o Sencha Touch. Una ventaja es que se puede definir Chrome o Firefox para la navegación inicial, sin tener que utilizar un simulador para ejecutarla. La visualización de una aplicación en Phonegap es como una serie de páginas web que se guardan y empaquetan en una aplicación móvil por medio de un navegador web, pero que nos permite tener acceso a una gran variedad de APIs del dispositivo (Figura 2.11).

En cada plataforma se utiliza un sistema diferente: en iOS se necesita utilizar Xcode y una plantilla de proyecto de PhoneGap. En cambio para Android, se debe utiliza Eclipse con su respectiva plantilla del proyecto.

Por otra parte, Appcelerator genera aplicaciones para Android e iOs utilizando solo Javascript. Para codificar proporciona Titanuim Studio, en entorno de desarrollo basado en Eclipse con el que se crean y manejan los proyectos. Permite utilizar PHP,

(37)

28 Rubyy Python, pero siempre lo transforma a código Javascript con los frameworks Phpjs, Skulpt o Ruby.js.

Las ventanas y controles visuales son nativos, cuando se agrega un botón una librería interna de Titanium, que realiza un envoltorio de la aplicación Javascript y el control, crea un botón del sistema y lo agrega a la vista, por lo que su respuesta es más rápida que la de una webApp.

La principal característica de Appcelerator es que empaqueta la aplicación, tranforma y compila el código Javascript, pero no a un lenguaje como Objetive-C sino a un lenguaje intermedio que después, cuando se inicia la aplicación, se ejecuta dentro de un engine Javascript. Esto crea algo de confusión ya que Appcelerator se vende como un generador de aplicaciones nativas.

Otra herramienta es Flex, la cual funciona con Adobe Air y soporta las plataformas de Android, iOS y BlackBerry. Flex4 usa como lenguaje de programacacion ActionScript, que es como un Javascript compilado, orientado objetos el cual puede realizar complejos desarrollos. Su entorno de desarrollo oficial es Flash Builder 4.5, un IDE muy potente, pero no es libre. Se puede compilar y empaquetar con el SDK de Flex que es gratuito, pero es mucha más fácil con el Flash Builder, ya que provee una gran cantidad de asistentes y editores.

Los controles visuales que se utilizan para desarrollar y ejecutar la aplicación no son los originales de cada una de las plataformas, sino que son específicamente de Flex4. Esto tiene sus ventajas y desventajas, ya que no se visualizan como los nativos, pero garantiza que todas las aplicaciones tendrán el mismo aspecto. La descripción de estas herramientas fue tomada del artículo [15].

Por último, la herramienta Parse es una plataforma en la nube para crear un respaldo de datos de aplicaciones móviles, ofrece un SDK para utilizar el servicio en diferentes plataformas como iOs, Andoid, Windows Phone, etc. Ofrece tres tipos de servicio, en cual se encuentra el básico que es gratis, le sigue el profesional el cual tiene un costo de alrededor de 200 dólares mensuales y el servicio de Empresa, su pago depende del nivel de servicio que se requiera.

La principal ventaja de esta herramienta es que al desarrollar para Android o iOS no hay que mantener un servidor propio, sino que se crea la aplicación y se integra al SDK de Parse, después se inicia fácilmente el envío y recepción de datos de los servidores. Aun se planea liberar más características como la sincronización push, en tiempo real y análisis pronto, es decir, se podría desarrollar, mantener y desplegar el

(38)

29 código de manera más fácil. Esta información se localiza en la documentación del sitio [16]

2.3.2 Comparativa entre herramientas entre para desarrollar en múltiples plataformas

A continuación se muestra en la tabla 2.1 las ventajas y desventajas de las herramientas de desarrollo multiplataforma PhoneGap, Appcelerator y Adobe Flex. Basado en las características del documento. [15]

Herramienta Ventajas Desventajas

Phonegap  Soporta más plataformas móviles, pues utiliza un navegador web.

 Funciona también para Symbian, WebOS, Palm, Blackberry y W7.

 Es de fácil desarrollo y da libertad a los usuarios con conocimientos en HTML y Javascript.

 Se cuenta con amplia

documentación y variedad de ejemplos.

 Es gratis, soporte de pago. Licencia BSD.

 Su aspecto depende del framework web que se utilice.

 Se requiere el uso de frameworks HTML como Sencha Touch o jQuery para visualizar la aplicación en una forma nativa.

 El rendimiento no se compara con el de una aplicación nativa.

Appcelerator  Soporta múltiples

plataformas móviles y de escritorio.

 Mejor rendimiento, ya que tiene aspecto y controles nativos.

 Es gratis, soporte de pago. Licencia Apache

 Se necesita Mac y Xcode para la aplicación iOS.  Mayor trabajo para

colocar componentes visuales y controles.  Aunque se cuenta con

bastante

documentación, se encuentra

(39)

30 desorden.

Adobe  Desarrollo multiplataforma móvil y de escritorio.  Utiliza un leguaje potente

que permite utilizar patrones y estructuras complejas de desarrollo, JavaScript.  Desarrollo y definición rápidas, su entorno de desarrollo es muy avanzado y potente.

 Documentación completa y fácil de entender.

 No se requiere utilizar Xcode ni Mac para el Flash Builder 4.5

 Aunque el SDK es gratuito, se debe pagar un precio por el Flash Builder.  Solo funciona en Android en los dispositivos de gama alta, mayor a la arquitectura Arm7.  En iOS su rendimiento es regular y renderizacion de los controles no es suave.  Su aspecto no es nativo, pero si homogéneo en todas las plataformas.

Tabla 2.1: Tabla comparativa herramientas de desarrollo multiplataforma.

En este capítulo se habló de los conceptos principales del desarrollo de

aplicaciones móviles, además se explica de forma general las metodologías ágiles para desarrollar en estos dispositivos. Se explica también lo relacionado con el diseño de la interfaz de usuario y la comunicación mediante servicios web. Por otra parte, se explicó de forma general las características, entornos de desarrollo y arquitectura de Android e iOS. Se concluye con la descripción de cuatro herramientas de desarrollo y un cuadro que compara Phonegap, Appcelerator y Adobe Flex. En el siguiente capítulo se hablará de los materiales y métodos utilizados para este proyecto.

(40)

31

Capítulo 3. Materiales y Métodos

En este capítulo se mostrarán las herramientas de software y hardware utilizadas para llevar acabo el desarrollo del proyecto, así mismo se explicarán los métodos aplicados para la resolución del problema expuesto.

3.1 Descripción del área de estudio

Las áreas de estudio del proyecto son: Ingeniería de Software mediante la integración de metodologías, desarrollo de aplicaciones móviles para las plataformas Android e iOS, así como portabilidad de código.

3.2 Materiales

En esta sección se describirán las herramientas de software y hardware para la elaboración de la herramienta, así como para las pruebas de los códigos generados por ésta.

3.2.1 Software

 Xcode: Es el entorno de desarrollo integrado (IDE) de la empresa Apple en el cual se puede compilar código C, C++, Objective-C, Objective-C++, Java y AppleScript. La versión utilizada para probar el código generado por la herramienta fue la 5.

 Microsoft Visual Studio 2012: Al igual que Xcode, éste es un IDE que soporta lenguajes de programación como C++, C#, Visual Basic .NET, F#, Java, Python, Ruby, PHP. Para la creación de la herramienta se utilizó C#.

 Eclipse ADT: Incluye los componentes de Android SDK necesarios, así como una versión del entorno de desarrollo integrado Eclipse con funciones de ADT (Android Developer Tools), los cuales en conjunto agilizar el desarrollo de aplicaciones Android.

3.2.2 Hardware

 Laptop Sony VAIO PCG-61A11U, Intel Core i3-2310m, 4GB RAM, 500 GB HDD. Utilizada para el desarrollo de la herramienta, así como pruebas del código generado por ésta para dispositivos Android.

(41)

32  Laptop ASUS, Intel Core i3-2350m, 4GB RAM, 500 GB HDD. Utilizada para el desarrollo de la herramienta, así como pruebas del código generado por ésta para dispositivos Android.

 MAC Versión 10.9.5, Intel Core i5, 8GB RAM, 1TB HDD. Equipo prestado por el Centro de Cómputo del IADA, utilizada para pruebas de código generado por la herramienta para plataforma iOS.

3.3 Métodos

En este apartado se explicarán los procedimientos utilizados para el desarrollo del proyecto, incluyendo las investigaciones necesarias para la elaboración de la metodología así como el periodo y lugar donde se realizó la investigación.

3.3.1 Periodo y lugar

El proyecto se realizó en Ciudad Juárez, Chihuahua desde el mes de julio del año 2014, concluyendo en el mes de noviembre del mismo año.

3.3.2 Metodología

A continuación, como se muestra en la figura 3.1, se describirán los pasos que se siguieron para desarrollar la metodología de desarrollo multiplataforma móvil, el diseño de la herramienta prototipo y las aplicaciones generadas.

(42)

33

3.3.2.1 Investigación de metodologías para el desarrollo de aplicaciones móviles

Para elaborar la metodología se realizó una investigación de las metodologías existentes enfocadas al ámbito de desarrollo móvil, las cuales se encuentran dentro de la sección 2.1.1 Metodologías de desarrollo, en este documento. Se consideraron las características relevantes que ayudan a completar los objetivos y a facilitar el trabajo de desarrollo y diseño de la aplicación en dispositivos móviles, en ambos sistemas operativos. Al finalizar esta investigación, se eligieron tres metodologías:

 MADAMDM (Metodología Ágil para el Diseño de Aplicaciones Multimedia de Dispositivos Móviles)

 Mobile-D  SCRUM

De la MADAMDM se eligieron las fases de Diseño y Pruebas, ya que el usuario debe tener una noción de la aplicación que desea generar para poder completar la información requerida por la herramienta, además que desde cualquier fase se puede pasar a la fase de pruebas. De la Mobile-D se consideró la fase de Iniciación, dado que incluye la definición del problema y las posibles acciones para resolverlo además de la etapa de Estabilización, ésta fue adaptada de la metodología SCRUM, y fue elegida porque era necesaria para ajustar las características específicas de cada una de las plataformas. Respecto a la metodología de diseño híbrido, fue descartada porque no se cuenta con el tiempo para realizar varias iteraciones. En el caso de la Espiral, se considera sólo para proyectos grandes y costosos, por último, de la MASAM no se encontró suficiente información.

3.3.2.2 Elaboración de metodología a partir de la integración de metodologías existentes

El objetivo del desarrollo de esta metodología es el proporcionar un apoyo a los desarrolladores de aplicaciones para dispositivos móviles enfocados al acceso a información por medio de servicios web. La metodología completa se puede localizar en el Anexo 1. Metodología ágil para el diseño de aplicaciones de acceso a información de dispositivos móviles.

3.3.2.3 Definición de los controles necesarios para realizar una aplicación general de acceso a información mediante web service

A continuación se describen los controles seleccionados para desarrollar aplicaciones en dispositivos móviles de acceso a información. Esta selección se hizo debido a que en las

(43)

34 diferentes plataformas se cuenta con una gran variedad de elementos disponibles para mostrar en las aplicaciones móviles.

La tabla 3.1 se muestra los elementos elegidos y su clasificación:

Tipo Android iOS

Escritura  EditText  TextField

Vista  RelativeLayout  TableLayout  Buton  ImageView  UIView  UITableView  UIButton  UIImage

Texto  TextView  UILabel

Tabla 3.1: Controles de entrada seleccionados para desarrollar la herramienta prototipo.

Controles de entrada

La manera de declarar los controles de entrada seleccionados mediante programación es la siguiente:

Pantalla

-Una vista representa un área rectangular. -Define un espacio de coordenadas.

-Su responsabilidad es dibujar y gestionar eventos en ese rectángulo. -Son jerárquicas.

Android:

LinearLayout nombrepantalla =new LinearLayout(this);

nombrepantalla.setOrientation(LinearLayout.VERTICAL); nombrepantalla.setBackgroundColor(Color.parseColor("colorpantalla")); LayoutParams nombrepantallaParam=new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT); setContentView(nombrepantalla,nombrepantallaParam); iOS:

UIView *nombrepantalla = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds];

nombrepantalla.view.BackgroundColor = [UIColor colorpantalla]; self.view = nombrepantalla;

Tabla

La vista de tabla es el componente central en muchas aplicaciones. Es un elemento con filas y columnas. Posiciona sus hijos en filas y columnas, no muestran las líneas de borde de sus filas, columnas o celdas. La tabla tendrá tantas columnas como filas con el mayor número de celdas.

(44)

35

public class TableLayoutExample extends Activity { @Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

TableLayout MainLayout = new TableLayout(this); MainLayout.setLayoutParams(new

TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.FILL_PARENT));

MainLayout.setStretchAllColumns(true);

TableRow row1 = new TableRow(this); TextView text1 = new TextView(this); text1.setText("Test1");

TextView text2 = new TextView(this); text2.setText("Test2"); text2.setGravity(android.view.Gravity.RIGHT); row1.addView(text1); row1.addView(text2); MainLayout.addView(row1);

TableRow row2 = new TableRow(this); TextView text3 = new TextView(this); text3.setText("Test3");

TextView text4 = new TextView(this); text4.setText("Test4"); text4.setGravity(android.view.Gravity.RIGHT); row2.addView(text3); row2.addView(text4); MainLayout.addView(row2); setContentView(MainLayout); } } iOS: Archivo.m @interface ViewController : UIViewController<UITableViewDelegate,UITableViewDataSource> Archivo.h

UITableView *tablaCardex = [[UITableView alloc] initWithFrame:CGRectMake(10, 140, 300, 300) style:UITableViewStylePlain];

tablaCardex.delegate = self; tablaCardex.dataSource = self; [self.view addSubview:tablaCardex];

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

NSString *cellIdent = @"cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdent];

if(cell == nil) {

cell = [[UITableViewCell alloc]

initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdent]; }

cell.textLabel.text = [arOptions objectAtIndex:indexPath.row]; if([arSelectedRows containsObject:indexPath]) {

cell.accessoryType = UITableViewCellAccessoryCheckmark; }

Referencias

Documento similar

&#34;No porque las dos, que vinieron de Valencia, no merecieran ese favor, pues eran entrambas de tan grande espíritu […] La razón porque no vió Coronas para ellas, sería

que hasta que llegue el tiempo en que su regia planta ; | pise el hispano suelo... que hasta que el

Para ello, trabajaremos con una colección de cartas redactadas desde allí, impresa en Évora en 1598 y otros documentos jesuitas: el Sumario de las cosas de Japón (1583),

El cuerpo en movimiento: experiencias desde un programa sociocultural en niños y adolescentes de ciudad Juárez, México. Ricardo Juárez Lozano Universidad Autónoma de Ciudad Juárez

Universidad Católica de Temuco, Chile Universidad de Atacama, Chile Universidad de Atacama, Chile Universidad Autónoma de Ciudad Juárez, México Universidad de La Frontera, Chile MESA

elibros.uacj.mx El trabajo comunitario: Experiencias y retos desde las fronteras del saber / Coordinadores Luis Ma- nuel Lara Rodríguez, Geidy Díaz Crespo, José Manuel Pérez

Las manifestaciones musicales y su organización institucional a lo largo de los siglos XVI al XVIII son aspectos poco conocidos de la cultura alicantina. Analizar el alcance y

En la parte central de la línea, entre los planes de gobierno o dirección política, en el extremo izquierdo, y los planes reguladores del uso del suelo (urbanísticos y