Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

61
Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE GRADO: Comercio de ganado e insumos ganaderos, a través de la comunicación de dispositivos móviles y servicios de la computación en la nube.

Transcript of Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Page 1: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Memoria MOLNET Diciembre 5 2011

MEMORIA DEL TRABAJO DE GRADO: Comercio de ganado e insumos ganaderos, a través de la comunicación de dispositivos móviles y servicios de la computación en la nube.

Page 2: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

1 | P a g e

CIS1130SD02

Aplicación para comercio de ganado en Colombia, Basado en tecnologías de dispositivos móviles y computación en la nube.

Autor: Santiago Vélez Saffón

Comercio de ganado e insumos ganaderos, a través de la comunicación de dispositivos móviles y servicios de la computación en la nube.

Director: Ingeniero Juan Pablo Garzón Ruiz.

Páginas Web Del trabajo: http://pegasus.javeriana.edu.co/~CIS1130SD02/index.html

www.Molnet.com.co

Pontificia Universidad Javeriana Facultad De Ingeniería

Carrera de Ingeniería De Sistemas.

Page 3: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

2 | P a g e

Bogotá D.C Diciembre 2011

Pontificia Universidad Javeriana Facultad De Ingeniería

Carrera de Ingeniería De Sistemas.

Rector Magnífico

Joaquín Emilio Sánchez García S.J.

Decano Académico Facultad de Ingeniería

Ingeniero Luis David Prieto Martínez

Decano del Medio Universitario Facultad de Ingeniería

Padre Sergio Bernal Restrepo S.J.

Director (E) de la Carrera de Ingeniería de Sistemas

IngenieroCésar Julio Bustacara Medina

Director Departamento de Ingeniería de Sistemas

Ingeniero César Julio Bustacara Medina

Page 4: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

3 | P a g e

Artículo 23 de la Resolución No. 1 de Junio de 1946 “La Universidad no se hace responsable de los conceptos emitidos por sus alumnos en sus proyectos de grado. Sólo velará porque no se publique nada contrario al dogma y la moral católica y porque no contengan ataques o polémicas puramente personales. Antes bien, que se vean en ellos el anhelo de buscar la verdad y la Justicia”

Page 5: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

4 | P a g e

ABSTRACT This paper shows an investigation of the services and technologies available on the Cloud Computing environment. The investigation was then extended for the development of an application of a real life business; the business was the cattle commerce in Colombia. The application enables many tools to help today’s needs. The tools enabled are based on some surveys made to Colombian Cattle sellers. RESUMEN El presente trabajo presenta una investigación de los servicios y tecnologías de la computación en la nube, la cual fue extendida para crear una aplicación que colabora a algunos procesos de negocio de la ganadería Colombiana mediante dispositivos móviles. Los procesos de negocio fueron escogidos basados en encuestas realizadas a un grupo ganaderos colombianos.

Page 6: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

5 | P a g e

RESUMEN EJECUTIVO Esta investigación buscó comprender la comunicación entre los dispositivos móviles y los servicios de computación en la nube, para después crear una aplicación que pueda dar soporte a algunos servicios de negocio de las PyMES Colombianas. El primer paso fue enfocar la investigación a un sector industrial, y así orientar el desarrollo de la aplicación a un caso de estudio específico. En esta información se indagó propiedades como:

Procesos de negocio. Entrevistas con empresarios.(solo Ganaderos) Distribución del sector en Colombia.

El sector que fue seleccionado, es el Ganadero. Ver detalles en: Ganadería Capitulo 1. Habilitar en la nube, todos los procesos de negocio que tiene la ganadería puede ser un trabajo muy largo. Por esto el segundo paso de esta investigación fue hacer un filtro y escoger algunos procesos que se beneficien de la movilidad que prestan los dispositivos móviles. Los procesos de negocio que se implementaron son los siguientes:

Administración básica del Ganado y/o animales. o Administración de lotes o Inventario de animales.

Creación de ofertas de compra o venta de Ganado Publicación de servicios o insumos ganaderos(Por parte de proveedores)

Al conocer las necesidades de los procesos que se habilitarían, se debía escoger el sistema de computación en la nube más apropiado. El sistema tenía que cumplir con prestar los servicios necesarios y además no podía tener ningún costo, pues el trabajo no cuenta con ningún apoyo financiero. El servicio seleccionado fue Google App Engine, ver detalles en Google App Engine. Al saber sobre la tecnología que utilizaba Google App Engine, se consideró que los dispositivos móviles que más podrían beneficiarse, son los Android 2.2.Aunque el proyecto no está limitado a otro tipo de dispositivo, el caso de estudio fue implementado para Android 2.2.

Page 7: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

6 | P a g e

Tabla de Contenido Objetivo General y objetivos específicos. ....................................................................................... 9

Ganadería, Android 2.2, Computación en la Nube, HTTP-HTTPS, C2DM y Molnet................ 10

Ganadería................................................................................................................................... 10

Distribución del ganado en Colombia ................................................................................... 10

Cobertura de la telefonía celular en Colombia, Red 3G ........................................................ 11

Proveedores ............................................................................................................................... 12

Android 2.2 ................................................................................................................................ 13

Computación en la nube ............................................................................................................ 13

La infraestructura como servicios (IaaS - Infrastructure as a Service): ................................. 13

Plataforma como servicios (PaaS – Plataform as a Service)............................................... 14

Software como un servicio (SaaS – Software as a Service)................................................... 14

HTTP-HTTPS ........................................................................................................................... 15

Molnet ....................................................................................................................................... 15

Situación Actual (Diciembre 5 del 2011) ...................................................................................... 15

Ganadería................................................................................................................................... 15

Situación actual del sector ganadero ..................................................................................... 15

Economía del sector ganadero. .............................................................................................. 16

Inversión en tecnología por parte del sector ganadero .......................................................... 16

Formas de Comercio del ganado. .............................................................................................. 17

Computación en la nube. ........................................................................................................... 17

Google App engine GAE (code.google.com/appengine) ...................................................... 17

Windows Azure ..................................................................................................................... 19

Sales Force ............................................................................................................................ 20

Propuesta ....................................................................................................................................... 21

Tipos de usuarios. ...................................................................................................................... 21

Propuesta a los Ganaderos. ........................................................................................................ 22

Propuesta a los Proveedores. ..................................................................................................... 22

Implementación del Modelo .......................................................................................................... 23

Tecnología existente. ............................................................................................................. 23

Diagrama Casos de Uso. ........................................................................................................ 24

Lista de casos de uso ............................................................................................................. 25

Page 8: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

7 | P a g e

Imágenes con los casos de uso: ................................................................................................. 26

Caso de uso login: ................................................................................................................. 26

Caso de uso añadir animal: .................................................................................................... 27

Caso de usos añadir lote: ....................................................................................................... 27

Caso de usa Crear Venta: ...................................................................................................... 28

Caso de uso ver ofertas: ......................................................................................................... 29

Caso de uso: Comentar Venta. .............................................................................................. 29

Caso de uso crear mensaje desde Android: ........................................................................... 30

Caso de uso: enviar mensaje desde página web: ................................................................... 31

Caso de uso: crear servicio. ................................................................................................... 32

Caso de uso: modificar características de un animal. ............................................................ 33

Caso de uso: ver servicios. ................................................................................................... 34

Abriendo el servicio desde una notificación Push: ................................................................ 34

Cumplimiento de los objetivos. ..................................................................................................... 35

Diseño ............................................................................................................................................ 36

Aplicación Android 2.2 o mayor ............................................................................................... 37

Descripción de las capas: ....................................................................................................... 37

Diagrama de clases. ............................................................................................................... 38

Aplicación en la nube. ............................................................................................................... 39

Descripción de las capas: ....................................................................................................... 39

Librerías utilizadas en la aplicación en la nube. .................................................................... 40

Diagrama de clases. ............................................................................................................... 41

Tecnologías complementarias: ...................................................................................................... 42

C2DM ........................................................................................................................................ 42

Configuraciones previas para utilizar C2DM: ....................................................................... 43

Procedimiento para habilitar el servicio de C2DM: .............................................................. 43

Procedimiento para enviar un mensaje: ............................................................................... 44

Java-Android Http Post &Get ................................................................................................... 45

Java-Google App engine HTTP-POST ..................................................................................... 51

Localización geográfica............................................................................................................. 55

Conclusión ..................................................................................................................................... 58

Referencias y Bibliografía. ............................................................................................................ 59

Page 9: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

8 | P a g e

Introducción El presente trabajo muestra una investigación de los servicios y las tecnologías de la computación en la nube. Luego esta investigación fue extendida para crear una aplicación que apoya algunos procesos de negocio de la ganadería Colombiana. Los procesos de negocio fueron escogidos, basados en encuestas realizadas a algunos ganaderos de Colombia.

Page 10: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

9 | P a g e

Objetivo General y objetivos específicos. El objetivo principal del proyecto es:

Proveer métodos de comunicación, mercadeo y negociación de ganado o productos ganaderos entre los usuarios inscritos al sistema.

El objetivo principal será cumplido con varios objetivos específicos que se obtuvieron con entrevistas realizadas a ganaderos Colombianos. Los objetivos específicos están clasificados en 3 secciones, Comunicación, Mercadeo-negociación y administración de ganado.

Comunicación. o Proveer comunicación entre ganaderos, mensajería de texto interna de la

aplicación. No utiliza el servicio de SMS. o Proveer comunicación entre ganaderos y proveedores de servicios.

Mercadeo y negociación. o Publicación de ofertas de compra o venta de ganado, por parte del usuario

ganadero. o Publicación de servicios o productos por parte del usuario proveedor.

Administración de ganado. o Creación de animal. o Creación de lotes o potreros.

EL cumplimiento de los objetivos específicos se explicara en la documentación de los casos de uso en la sección Cumplimiento de los objetivos.

Page 11: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

10 | P a g e

Ganadería, Android 2.2, Computación en la Nube, HTTP-HTTPS, C2DM y Molnet. En este capítulo se presenta el contexto en el cual se enmarca la investigación, con el fin de contextualizar al lector. Después se realizara realizará una descripción general de Molnet.

Ganadería El sector ganadero o ganadería es una actividad económica, basada en la crianza de animales, para la producción de carnes, leche y derivados. Esto utilizado principalmente para consumo, bien sea de humanos u otros animales. “Dentro de la ganadería existen diversos tipos de ganados, como: Ganado vacuno, vacas, toros y bueyes; Ganado ovino, ovejas; Ganado porcino, cerdos; Ganado caprino, cabras; Ganado equino, caballos;” (1). La ganadería está compuesta por varios procesos económicos, estos dependen del ganado que se trate, existen procesos como ―registro de población de animales, sanidad y alimentación, entre otros” (1) “La ganadería representa una de las actividades más importantes en Colombia, No solo por sus aportes directos en la alimentación. Sino además por todas aquellas actividades deriva-das a partir de la transformación de sus productos. Esto demuestra que la actividad ganadera no solo realiza aportes directos a la economía, a través de la generación de empleo y utilidades al sector rural, sino también aportes indirectos a través de la producción industrial” (2).

Distribución del ganado en Colombia El siguiente mapa muestra la distribución del ganado en Colombia.

Page 12: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

11 | P a g e

Cobertura de la telefonía celular en Colombia, Red 3G El siguiente mapa muestra la cobertura de la red 3G en Colombia.

Fecha: 28/05/2011

Autor: Vive Digita

Link http://www.mintic.gov.co/vivedigital/pdfs/03Internet_Movil.pdf

Los dos anteriores mapas muestran la ubicación del Ganado en Colombia contra la cobertura celular. Probando que los ganaderos podrán tener acceso a internet y por ende a todas las funcionalidades de la aplicación. Quizá la velocidad de conexión con el servidor sea más lenta en algunas regiones, eso por cuestiones de fuerza de la señal en el dispositivo móvil.

Page 13: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

12 | P a g e

Proveedores Un proveedor se entiendo por: “Persona o Empresa que provee o abastece de todo lo necesario para un fin a grandes grupos, asociaciones, Entidades, Etc.” (3) Molnet tiene como mercado principal a los proveedores de insumos/ Materia prima del sector ganadero. De esta forma ellos puede ofrecer sus productos y servicios a todos los usuarios registrados en la aplicación. La siguiente tabla muestra algunos de los principales proveedores de productos Ganaderos en Colombia.

SIGLA NOMBRE PÁGINA WEB O CORREO ELECTRÓNICO

ANALAC ASOCIACIÓN NACIONAL DE PRODUCTORES DE LECHE http://www.analac.org/modulos/index.php

ASIAC ASOCIACIÓN DE INGENIEROS AGRÍCOLAS DE COLOMBIA http://www.ingeniagro.org/asiac/

ASOPORCICULTORES

ASOCIACIÓN COLOMBIANA DE PORCICULTORES http://www.porcicol.org.co/

FEDEFONDOS FEDERACIÓN NACIONAL DE FONDOS GANADEROS [email protected]

FEDERACAFE

FEDERACIÓN NACIONAL DE CAFETEROS DE COLOMBIA http://www.cafedecolombia.com/

FENALCE

FEDERACIÓN NACIONAL DE CULTIVADORES DE CEREALES http://www.fenalce.org/

FUNDALLANURA FUNDACIÓN PARA EL DESARROLLO AGROINDUSTRIAL DE LA ALTILLANURA

http://fundallanura.org/

SADA SOCIEDAD ANTIOQUEÑA DE AGRICULTORES

SAGAN SOCIEDAD DE AGRICULTORES Y GANADEROS DE NARIÑO

SAG – VALLE SOCIEDAD DE AGRICULTORES Y GANADEROS DEL VALLE http://www.sagvalle.org/

SAG – CAUCA SOCIEDAD DE AGRICULTORES Y GANADEROS DEL CAUCA [email protected]

SAS SOCIEDAD DE AGRICULTORES Y GANADEROS DE SANTANDER [email protected]

UNAGA UNIÓN NACIONAL DE ASOCIACIONES GANADERAS COLOMBIANAS http://www.unaga.org.co/

Tabla tomada de: http://www.sac.org.co/Pages/SobreSAC/afiliados.html

Page 14: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

13 | P a g e

Android 2.2 Android es un sistema operativo diseñado especialmente para dispositivos móviles como Smartphones o tablets. Consiste de un kernel basado en Linux, con librerías desarrolladas en C. Las aplicaciones desarrolladas para Android deben ser realizadas en el lenguaje de programación JAVA, pues Android utiliza una máquina virtual llamada Dalvik virtual machine. (4) Se requiere el uso de Android en su versión 2.2 para el presente trabajo, esto se debe a los requerimientos impuestos por los protocolos de comunicación con el servicio de C2DM o notificaciones push, el cual es explicado en la sección C2DM “It requires devices running Android 2.2 or higher that also have the Market application installed. However, you are not limited to deploying your applications through Market.” (5)

Computación en la nube La computación en la nube básicamente es cuando una compañía presta servicios Web y Lo que pretende es aliviar al usuario de preocuparse por la administración de los equipos. Solo utiliza los servicios prestados y paga por lo utilizado. El siguiente análisis de la computación en la nube fue tomada de un trabajo de grado del MIT (Massachusetts Institute of Technology), (6) La computación en la nube depende de cómo sea usada y como la tecnología sea distribuida:

La infraestructura como servicios (IaaS - Infrastructure as a Service): Este modelo se basa en entregar poder de cómputo como un servicio: el servicio generalmente incluye: Infraestructura de cómputo, bases de datos, redes balanceadores de carga, etc... Esto para que el cliente en vez de comprar equipos de cómputo como redes o Bases de datos acceda a ellos mediante software basado en protocolos como RestFull o SOAP. Normalmente este producto es cobrado (dinero) con el modelo “Pay as you go”, donde el cliente es cargado por lo que utiliza. Lo que diferencia a este modelo de los otros, es su implementación, esta incluye redes donde se configuran firewalls y balanceadores de carga, esto para proveer seguridad, alto desempeño y confiabilidad en la aplicación y la información. Algunas compañías que prestan este servicio son Amazon (www.amazon.com) y RightScale (www.rightscale.com)

Page 15: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

14 | P a g e

La diferencia de los proveedores de estos servicios, radica en la cantidad de Sistemas operativos que soporte su sistema.

Plataforma como servicios (PaaS – Plataform as a Service) Es una plataforma que incluye todas las facilidades requeridas para completar el ciclo de vida de construcción, pruebas y entrega de aplicaciones y servicios a través del internet. En un servicio con este modelo, el desarrollador no tiene que escribir ningún código, si no la aplicación puede ser desarrollada por lógica y modificación visual que la plataforma proporciona. Algunas compañías que prestan este servicio son SalesForse (www.salesforce.com) Según DaveMitchell, Gerente y fundador de BungeeLabs (bungelabs), el modelo PaaS detendrá la práctica de “Desarrollo aquí y despliego allá”.

Software como un servicio (SaaS – Software as a Service) Este modelo es definido como: entregar una aplicación a través de internet. La aplicación es desplegada como una página o servicio web y puesta a disposición mediante un navegador o interfaces web.Normalmente estos servicios son gratis, el usuario deberá pagar demás si requiere características adicionales. Los tres tipos de computación en la nube anteriores comparten algunas características como:

1. Versionamiento: el cliente no tiene por qué estar enterado de actualizaciones del software que se ofrece en la computación en la nube.

2. Manejo: el cliente no tiene que administrar el servicio de cómputo.

3. Medible: todos los servicios puede ser medido su uso, de otra manera no existiría forma de pagar los servicios utilizados.

4. Auto reparación: en caso que la nube falle, siempre existirá una aplicación back-up que pueda atender mientras se repara la aplicación dañada.

Page 16: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

15 | P a g e

HTTP-HTTPS Hypertext Transfer Protocol también conocido como (HTTP) por sus sus siglas en inglés. Es un protocolo perteneciente a la capa de aplicación que normalmente es usado para sistemas distribuidos y colaborativos. Este protocolo es genérico y sin estado.(http://www.ietf.org/rfc/rfc2616.txt) La especificación del protocolo se puede encontrar en la IETF con el RFC-2616. (7)

Molnet Molnet es el nombre comercial que se le dio al actual proyecto de grado. Esta palabra proviene del idioma Sueco que significa nube.

Situación Actual (Diciembre 5 del 2011)

Ganadería

Situación actual del sector ganadero De acuerdo a la Encuesta Nacional Agropecuaria Del DANE, Colombia cuenta con más de 25.000.000 de cabezas de ganado bovino, de cual se destinan 3% a producción de leche, 52% a producción de carne y 39% a cabezas destinadas a producción de carne y leche.

Fecha: 28/05/2011 Autor: Fedegan Link http://portal.fedegan.org.co/pls/portal/url/ITEM/8203B978A52E246EE040A8C00A0B5C12

Page 17: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

16 | P a g e

Fecha: 28/05/2011 Autor: Fedegan Link http://portal.fedegan.org.co/pls/portal/url/ITEM/8203B978A52E246EE040A8C00A0B5C12

Economía del sector ganadero. En el sector ganadero existen créditos como el Crédito Fedegan. El fin de estos créditos, es financiar al sector agropecuario, y así invertir en Fincas, Mejoras de procesos y lo más importante para este caso de estudio, TECNOLOGIA.

Fecha: 28/05/2011 Autor: Fedegan Link http://portal.fedegan.org.co/pls/portal/url/ITEM/8203B978A52E246EE040A8C00A0B5C12

Inversión en tecnología por parte del sector ganadero Según un estudio realizado por la universidad de Antioquia, se reporta que Colombia, en el sector agropecuario, invierte en ciencia y tecnología alrededor de 0.2% a 0.5% del PIB nacional. $1, 295, 700,000.00

Page 18: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

17 | P a g e

Formas de Comercio del ganado. Las siguientes citas son palabras del Ganadero Martin Jaramillo, entrevista realizada 24 de junio del 2011.

1. “Los animales se identifican como cada ganadero desee, normalmente es por un numero o unas letras”.

2. “Los ganaderos hoy en día hacen subastas y/o remates”

3. “Cualquier ganadero comprara el ganado pero siempre querrá verlo”.

4. “Lo que está haciendo el comité ganadero es lo siguiente: cuando ocurre una subasta o remate de ganado, los ganaderos de otras ciudades pueden acceder atreves de internet, y allí puede subastar y/o comprar. Lo malo de esto es que tengo que esperar a que la subasta ocurra.”

Las encuestas mostraron lo rudimentario y “artesanal” que es aun el mercado del ganado en Colombia. Los ganaderos deben esperar mucho tiempo para vender su ganado y además recorrer muchos kilómetros en busca de clientes potenciales. Los problemas anteriormente nombrados crearon el objetivo principal del proyecto, “Proveer métodos de comunicación, mercadeo y negociación de ganado o productos ganaderos entre los usuarios inscritos al sistema”

Computación en la nube. Sección que muestra la investigación realizada para medir la nube más apropiada para el desarrollo del presente trabajo.

Google App engine GAE (code.google.com/appengine) Google App Engine o GAE por sus siglas en inglés, es el servicio de computación en la nube de Google Inc. GAE está basada en la arquitectura Software como un servicio (SaaS – Software as a Service), anteriormente descrita. Esta permite crear aplicaciones web en la infraestructura de Google, “Con Google App Engine no hay servidores que mantener, solo cargara la aplicación y queda lista para atender a sus clientes”. GAE permite desarrollar en lenguaje JAVA o cualquier lenguaje que utilice el intérprete de Java. En GAE el cliente solo paga por lo que utiliza, no existen pagos recurrentes. También permite un nivel de utilización gratuito, las características en la versión gratuita son: 1GB

Page 19: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

18 | P a g e

de almacenamiento y suficiente capacidad de cómputo para que pueda servir 5 millones de vistas al mes. (8) Esta nube fue seleccionada para realizar el presente trabajo de grado. Esta decisión fue tomada basada en la siguiente medición de características.

La anterior tabla fue utilizada para medir las propiedades de Google App Engine. (9)

Nombre:URL:

Costo $$ Importacia¿Caracteristica

permitida?Puntuacion

CaracteristicaImportancia

¿Caracteristica permitida?

Puntuacion Caracteristica

$0.00 5 Si 5 1 Si 1

$0.00 5 Si 5 5 Si 5

$0.00 5 Si 5 Si$0.00 5 Si 5 3 Si 3

$0.00 5 Si 5 3 Si 32 Si 25 Si 51 Si 15 Si 52 Si 2

2 Si 2

5 Si 5

4 Si 41 Si 15 Si 55 Si 53 Si 32 No -24 Si 45 Si 5

Cantidad Si: 19Cantidad No: 1

Suma de características84

Resultado de MedicionCaracteristicas Relacionadas con dinero

Permitidastotal Costo Caracteristicas Sin Relacion al dinero Permitidas

Cantidad Si: 5Costo: $0.00

Cantidad No: 0

Formas de PagoDocumentacion

Plugings-Para IDEGrupos de Discusión

Servicie Support

Interfaz de usuario-Para Administracion

RolesSDK

CorreoIntegracion Con otras

Tecnologias

Lenguaje de Programacion

Comunicación HttpJson

Dispositivos Moviles

# De Usuarios Creacion de Datos propiosActualizacion Por Parte de Google App Engine

Seguridad

Lenguaje de busquedas

Iniciar Cuenta Aplicaciones Permitidas

Renovacion de Servicios Almacenamiento

Costo Mensualidad

Google App Enginehttp://code.google.com

Medicion Caracteristicas relacionadas con dinero Medicion Caracteristicas sin relacion al dinero

Nombre Caracteristicas Nombre Propiedad

Page 20: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

19 | P a g e

Windows Azure Windows Azure es el servicio de computación en la nube de Microsoft. Azure cuenta con las siguientes características: (10)

Azure presta sus servicios basados en tecnologías de Microsoft, tecnologías como Microsoft SQL Server, Windows Server 2008.

Las aplicaciones deben ser desarrolladas en lenguaje de ASP.Net. Azure está basado en el modelo PaaS anteriormente descrito.

La nube de Microsoft no fue seleccionada para el presente trabaja de grado por sus altos costos. Los costos mostrados en al siguiente tabla son calculados para cumplir las necesidades mínimas del presenta trabajo. (10)

URL:

Costo $$ Importacia¿Caracteristica

permitida?Puntuacion

CaracteristicaImportancia

¿Caracteristica permitida?

Puntuacion Caracteristica

$99.00 5 Si 5 1 Si 1

$10.00 5Si

5 5Si

5

$0.00 5 Si 5 0$0.00 5 Si 5 3 Si 3

$0.00 5Si

5 3Si

3

2 Si 25 Si 51 Si 15 Si 52 Si 2

2Si

2

5Si

5

4 Si 41 Si 15 Si 55 Si 53 Si 32 Si 24 Si 45 Si 5

Cantidad Si: 19Cantidad No: 0

Suma de características88

Resultado de MedicionCaracteristicas Relacionadas con dinero

Permitidastotal Costo Caracteristicas Sin Relacion al dinero Permitidas

Cantidad Si: 5Costo: $109.00

Cantidad No: 0

Formas de PagoDocumentacion

Plugings-Para IDEGrupos de Discusión

Servicie Support

Interfaz de usuario-Para RolesSDK

CorreoIntegracion Con otras

TecnologiasLenguaje de

Programacion

Comunicación HttpJson

Dispositivos Moviles

# De Usuarios Creacion de Datos propiosActualizacion Por Parte

de Windows AzureSeguridad

Lenguaje de busquedas

Iniciar Cuenta Aplicaciones Permitidas

Renovacion de Servicios Almacenamiento

Costo Mensualidad

www.azure.comMedicion Caracteristicas relacionadas con dinero Medicion Caracteristicas sin relacion al dinero

Nombre Caracteristicas Nombre Propiedad

Page 21: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

20 | P a g e

La anterior tabla fue utilizada para medir las propiedades de Windos Azure (11)

Sales Force SalesForce es el servicio de computación en la nube del equipo forcé.com. SalesForce cuenta con las siguientes características:

Construcción de aplicaciones en Java y Ruby. Un muy buen servicio de atención al cliente. Presta la comodidad de tener algunas aplicaciones ya construidas. Las cuales se

pueden utilizar al poseer una cuenta. http://www.salesforce.com/

La anterior tabla fue utilizada para medir las propiedades de SalesForec. (12)

Nombre:URL:

Costo $$ Importacia¿Caracteristica

permitida?Puntuacion

CaracteristicaImportancia

¿Caracteristica permitida?

Puntuacion Caracteristica

$125.00 5 Si 5 1 Si 1$0.00 5 Si 5 5 Si 5

$10.00 5 Si 5 Si 05 Si 5 3 Si 3

$0.00 5 Si 5 3 Si 32 Si 25 Si 51 Si 15 Si 52 Si 22 Si 25 Si 54 Si 41 Si 15 Si 55 Si 53 Si 32 Si 24 Si 45 Si 5

Cantidad Si: 20Cantidad No: 0

Suma de características88

Resultado de MedicionCaracteristicas Relacionadas con dinero

Permitidastotal Costo Caracteristicas Sin Relacion al dinero Permitidas

Cantidad Si: 5Costo: $135.00

Cantidad No: 0

Formas de PagoDocumentacion

Plugings-Para IDEGrupos de Discusión

Servicie Support

Interfaz de usuario-Para RolesSDK

CorreoIntegracion Con otras

Lenguaje de Programacion

Comunicación HttpJson

Dispositivos Moviles

# De Usuarios Creacion de Datos propiosActualizacion Por Parte Seguridad

Lenguaje de busquedas

Iniciar Cuenta Aplicaciones PermitidasRenovacion de Servicios Almacenamiento

Costo Mensualidad

SalesForcehttp://www.salesforce.com

Medicion Caracteristicas relacionadas con dinero Medicion Caracteristicas sin relacion al dinero

Nombre Caracteristicas Nombre Propiedad

Page 22: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

21 | P a g e

Propuesta

Tipos de usuarios. En el proyecto existen 3 tipos de usuarios, que se describen en la siguiente tabla. Tipo de Usuario Descripción.

Ganadero

Administrador de fincas o empresas ganaderas que desea ofrecer su ganado atreves de dispositivos móviles. Las entrevistas realizadas fueron a este tipo de usuarios.

Proveedor.

Empresario que busca ofrecer servicios ganaderos o venta de productos agrícolas. Los servicios granaderos son aquellas actividades comerciales que involucran ganado, En ejemplo transporte y marcación de ganado.

Administrador del sistema.

Persona encargada de administrar la aplicación en la nube. La administración consta de:

Añadir usuarios al sistema. o Añadir Ganadero o Añadir Proveedor

Administración de base de datos. Administración de errores en el log.

La administración se debe realizar en la página web. http://appengine.google.com.

Page 23: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

22 | P a g e

Propuesta a los Ganaderos. El usuario ganadero tendrá las siguientes tres (3) funcionalidades

1. La aplicación proveerá una forma de comerciar ganado, esto se hace atreves de la

creación de ofertas, Donde se ofrece la compra o venta de ganado. Una vez realizada la oferta, todos los usuarios serán notificados. Los ganaderos podrán crear cuantas ofertas deseen.

a. Se podrá visitar ofertas creadas por otros usuarios.

2. El usuario podrá almacenar información de su ganadería, el dispositivo móvil portable de administrar el ganado.

3. El usuario tendrá una herramienta de mensajería con otros Ganaderos y Proveedores.

Propuesta a los Proveedores. El usuario proveedor tendrá las siguientes dos funcionalidades.

1. Publicación de servicios, en la cual el proveedor ofrece sus servicios a todos los ganaderos inscritos. En ejemplo transporte de ganado. Los proveedores podrán crear tantas publicaciones de servicios como deseen.

2. Comunicación mediante mensajería de texto con cualquier usuario suscrito a Molnet. Esto para facilitar la comunicación ganadero-proveedor .

3. Los proveedores harán sus acciones a través de la página web http://proveedoresMolnet.appspot.com. Esta página también puede ser accedida a través de otros dispositivos móviles.

Page 24: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

23 | P a g e

Implementación del Modelo Las siguientes secciones muestran el diseño e implementación de las aplicaciones para Android® y Google App Engine®.

Tecnología existente. Las tecnologías existentes durante el desarrollo de la aplicación son: Android en su versión 2.3 Gingerbread®: “La plataforma Android 2.3 presenta muchas características nuevas e interesantes para usuarios y desarrolladores. “Refinamientos de sencillez y rapidez IU La interfaz de usuario se refina en muchos aspectos, en todo el sistema, por lo que es más fácil de aprender, rápido de usar y más eficiente energéticamente. Un tema simplificado visual de colores sobre fondo negro aporta viveza y contraste con la barra de notificaciones, menús y otras partes de la interfaz de usuario. Cambios en los menús y ajustes que sea más fácil para el usuario de navegar y controlar las funciones del sistema y el dispositivo.” (13) Google App Engine® en versión 1.5.5 con versión Java 6, cuenta con las siguientes características. (8)

Duración de la solicitud: solicitud de interfaz 60 segundos de esta forma coincida con URL Fetch de 60 segundos.

Límites de archivo: número de archivos que pueden son10.000 archivos, y el límite de tamaño también es de 32 MB.

Un completo entorno de ejecución Java 6 en un entorno de recinto seguro Sobre la base de normas comunes de la tecnología Java Web, incluyendo servlets

y las WARS, JDO y JPA, java.net, JavaMail y JCache Un plugin para el IDE Eclipse facilita la creación de proyectos, pruebas y

despliegue. Compatible con otros idiomas que se compilan a la JVM o el uso JVM basada en

los intérpretes, como J Ruby, JavaScript (Rhino), y Scala

Page 25: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

24 | P a g e

Diagrama Casos de Uso.

Page 26: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

25 | P a g e

Lista de casos de uso Nombre Caso de uso Ir Añadir Animal Ver

Modificar Características de Animal Ver

Añadir Lote Ver

Administración Lote Crear oferta Ver

Ver otras ofertas Ver

Crear Ganadero Crear Proveedor Ver servicios. Ver

Crear servicio Ver

Login Ver

Comentar oferta Ver

Crear mensaje Android Ver Crear mensaje desde la web Ver

Page 27: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

26 | P a g e

Imágenes con los casos de uso: A continuación se muestran imágenes de la aplicación en cumplimiento de los casos de uso:

Caso de uso login: Función que verifica si el usuario es válido en la Nube de Molnet. Si el usuario es válido la nube le retorna una clave que deberá ser usada en cada petición a la nube, además debe pedir clave de autenticación (Registration ID) en los servidores de C2DM. El usuario debe ingresar Usuario y contraseña de Molnet.

La aplicación muestra una espera mientras recibe información de la nube

En caso que el usuario sea válido en la nube, la aplicación procede al

menú principal

recibe notificación del servicio de C2DM

Page 28: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

27 | P a g e

Caso de uso añadir animal: El usuario podrá añadir animales a su inventario. Para ingresar un animal debe tener un potrero o lote creado. Este caso de uso pertenece al objetivo administración de ganado Creación de animal.

Caso de usos añadir lote: Permite al usuario crear un nuevo lote. Estos lotes son usados para almacenar organizadamente a los animales. Este caso de uso hace parte del cumplimiento del objetivo específico administración de ganado Creación de lotes o potreros.

Menu principal de animales

Pantalla para ingresar caracteristicas del nuevo

animal

Panatallla con las caracteristicas del

animal a crear

Notificacion que el animal a sido creado en

la nube.

Menu principal de animales

Seleccionar el dispositivo para

obtener la posicion

Panatalla para ingresar

caracteristicas del nuevo lote.

La aplicacion soporta la

creacion de la ubicacion del lote atravez del GPS

Opcion para ver el mapa mas de cerca.

Notificacion que el lote fue creado

Page 29: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

28 | P a g e

Caso de usa Crear Venta: Permite al usuario crear y publicar una nueva venta. El usuario podrá seleccionar si la venta es publica o solo la podrán ver algunos usuarios. Llegará una notificación a los usuarios que fueron seleccionados como público de la venta. Este caso de uso hace parte del cumplimiento del objetivo Publicación de ofertas de compra o venta por parte del usuario ganadero.

Menu principal de comercio. Panatala para crear venta vacia Pantala con las caracteristicaz de la

nueva venta.

Notificacion al usuario que la venta a sido creada. Notificacion al usuario que fue

destinado como publico en la venta. Pantallla para ver nueva venta.

Page 30: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

29 | P a g e

Caso de uso ver ofertas: Permite al usuario buscar ventas publicadas por otros usuarios. Este caso de uso hace parte del objetivo específico Publicación de ofertas de compra o venta por parte del usuario ganadero, donde el usuario tiene la funcionalidad de buscar ofertas con algunos filtros como usuario que publico, precio(desde, hasta) y por palabras claves.

Caso de uso: Comentar Venta. Permite al usuario comentar una venta existente, este comentario será público a todos los usuarios que puedan ver la venta. Este caso de uso hace parte del objetivo Publicación de ofertas de compra o venta por parte del usuario ganadero, dándole al usuario la funcionalidad de comentar las ofertas.

Pantala principal de comercio. pantalla para buscar ventas Lista de ventas.

Page 31: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

30 | P a g e

Caso de uso crear mensaje desde Android: Permite al usuario enviar un mensaje a uno o varios usuarios este caso de uso hace parte del cumplimiento del objetivo Proveer comunicación entre ganaderos, mensajería de texto interna de la aplicación. Permitiéndole al usuario comunicarse con otro usuario del tema que el desee o añadiendo un venta en especial si el mensaje es sobre esta.

Menu mensajes Pantalla par ingresar informacion del mensaje

Pantalla para buscar contactos

pantalla que despliega los contactos buscados Notificacion de envio del emsnaje

Notificacion al usuario destinatario de que recibio un mensaje

Page 32: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

31 | P a g e

Caso de uso: enviar mensaje desde página web: El caso de uso se puede cumplir desde la aplicación en Android y desde la página web habilitada para los proveedores, caso de uso perteneciente al cumplimiento del objetivo Proveer comunicación entre ganaderos y proveedores de servicios.

ingresar a la pagina web http://proveedoresmolnet.appspot.com

click en Sign in para proceeder al login

Seleccionar el tab de crear mensaje

completar todos los campos y enviar

Page 33: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

32 | P a g e

Caso de uso: crear servicio. Permite al usuario proveedor crear un servicio, este deberá ser creado desde la página web http://proveedoresMolnet.appspot.com, caso de uso perteneciente al cumplimiento del objetivo Publicación de servicios o productos por parte del usuario proveedor.

ingresar a la pagina web http://proveedoresmolnet.appspot.co

m

click en Sign in para proceeder al login

Seleccionar el tab de crear servicio

completar todos los campos y enviar

Page 34: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

33 | P a g e

Caso de uso: modificar características de un animal. Permite al usuario modificar las características de una animal, El animal debe ser seleccionado de la lista de animales, casi de uso perteneciente al cumplimiento del objetivo Creación de animal, el cual le da la funcionalidad de modificar animales anteriormente creados.

Menu principal de animales

Notificacion que se estan descargando los animales

Lista de todos los animaloes pertenecientes

al usuario notificacion que se esta

descargando l animal

Informacion del animal El usuario modifica las

caraterixticas y selecciona guardar

Notificacion que se esta guardadno el animal.

Page 35: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

34 | P a g e

Caso de uso: ver servicios. Permite al usuario ver servicios ofrecidos por los proveedores. Estos servicios son publicados desde la página web http://www.Molnetproveedores.appspot.com. Caso de uso perteneciente al cumplimiento del objetivo Publicación de servicios o productos por parte del usuario proveedor, añadiendo la funcionalidad que el usuario pueda ver todos los servicios publicados. Para ver los servicios existen dos formas: Navegando hasta la bandeja de entrada de servicios en la aplicación Android:

Abriendo el servicio desde una notificación Push:

Menu principal de comercio menu de oferta de servicios Al usuario seleccionar refresacr se descargan todos los servicios que

el usario puede ver, Se despliegan todos lso servicios

que el usuario puede ver

Recibe notificacion push, sobre un nuevo servicio creado, Selecciona la notificacion Se descarga el nuevo servicios

4 | P a g eSe despliega el nuevo servicios.

Page 36: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

35 | P a g e

Cumplimiento de los objetivos. En la anterior sección se demostró el cumplimiento de los casos de uso, en la siguiente tabla se muestra una relación de los objetivos y los casos de uso. Por lo tanto se señala que la aplicación cumple con todos los objetivos específicos y el general..

Sección Objetivo Caso de uso asociado al cumplimiento.

Administración de ganado.

Creación de animal Añadir Animal

Modificar Características de Animal

Creación de lotes o potreros Añadir Lote

Mercadeo y negociación.

Publicación de ofertas de compra o venta por parte del usuario ganadero

Crear oferta

Comentar oferta

Ver otras ofertas

Publicación de servicios o productos por parte del usuario proveedor

Ver servicios.

Crear servicio

Comunicación Proveer comunicación entre ganaderos,

mensajería de texto interna de la aplicación

Crear mensaje Android

Proveer comunicación entre ganaderos y proveedores de servicios

Crear mensaje desde la web

Page 37: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

36 | P a g e

Diseño En la aplicación se involucran cuatro grandes partes o dispositivos.

1. Dispositivo Móvil o cliente Android. a. Aplicación para Android

2. Página Web donde los proveedores pueden publicar los servicios y enviar mensajes.

3. Google App Engine aplicación en la nube. 4. Servidores C2DM utilizados para enviar notificaciones a los dispositivos desde la

nube. El diagrama de despliegue es el siguiente.

Page 38: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

37 | P a g e

Aplicación Android 2.2 o mayor La plataforma de Android no provee secciones del proyectos desarrolladas, solo presta librerías básicas construidas, en ejemplo la librería org.apache.http.client.HttpClient utilizada para transferencia de datos a través del protocolo http. Por esto el proyecto fue desarrollado 100% por el estudiante utilizando librerías existentes. Teniendo en cuenta lo anterior, la aplicación en los dispositivos Android fue diseñada en 5 capas, que son las siguientes:

Capa de Presentación

BandejaDeEntrada BuscarContactos BuscarLotes Menuanimales MenuComercio MenuMensajes MenuMolnet MenuVerVentas NuevaVenta NuevoAnimal

NuevoLote NuevoMensaje Principal VerMensaje VerVenta

MolnetLogic VerifyConfigurations

HttpMessaging CD2MManager C2DMReceiver Notifications

SharedPrefsManager Setup

Descripción de las capas: La siguiente tabla describe cada una de las capas diseñadas y utilizadas en la aplicación de Android.

Capa de Presentacion •Capa encargada de presentacion de datos a el usuario. •En esta capa se encuentran todas las clases java que extienden de Activity. p j q y

capa de logica •Capa encragada de la logica de la aplicacion. •Su funcion principal es aislar la interfaz grafica de logica del negocio. •Encragada de verificar la configuracion de cuentas del usuario.

Capa de Servicios •Capa encragada de recibir informacion de los servidores C2DM y crear notificaciones •En esta capa se encuentran todas las clases que extendien de Service. p q

Capa de datos •Capa encargada de almacenar datos locales. •Estos datos son guardados en un archivo de configuraciones llamado MOLNET_PRES_FILE.xml •Tambien posee una clase para configuracion. Donde se almacena valores estaticos como: la direccion url

de la nube (https://molnetcloudopen.appspot.com/molnetcloud).

Capa de Redes •Capa encargada crear conexion de comunicacion con la nube y los servidores de C2DM.

Page 39: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

38 | P a g e

Diagrama de clases.

Page 40: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

39 | P a g e

Aplicación en la nube. La plataforma que se utilizó para el proyecto es Google App Engine, el escenario de desarrollo GAE no provee ningún servicio creado para el proyecto, por lo tanto el desarrollo del código de la aplicación debe ser 100% creada, se debe utilizar librerías que estén permitidas. Las librerías que son permitidas en Google App Engine, se pueden encontrar en la pagina web http://code.google.com/intl/es-419/appengine/docs/java/overview.html. Por lo anterior, la aplicación en la nube fue diseñada en arquitectura de 5 capas.

Descripción de las capas: La siguiente tabla muestra una descripción de cada una de las capas diseñadas y utilizadas en el proyecto.

Capa de presentacion •Capa encargada de prestar interfaz grafica web a los servicos web prestados en la capa de servicios. •Pagina web Donde los proveedores púeden crear servicios y mensajes.

Capa de Servicios •Capa encargada de prestar servicio web. Puerta de entrada a todas las solicitudes realizdas a la nube. •Se utilizan dos servlets para esta funcion:

•CD2MServlet: encrgado de recibir mensjaes para ser enviados a C2DM. •MolnetCloudServlet: Encargado de recibir peticiones de los dispositivos moviles.

Capa Logica •Capa encargada de la logica de las peticiones. tomar decisicones frente a que se debe hacer con cada tipo de

peticiones.

Capa de Redes •Capa encargada de enviar mensajes a los servidores de Google-Login y de C2DM.

Capa de datos •Capa encragarda de el manejo de la base de datos. Lectura y escritura.

http://proveedoresMolnet.appspot.com

C2DMServlet MolnetCloudServlet

GoogleAndC2DMLogic LogicMensajes LogicVentas LogicUsers LogicAnimales

HttpMessaging PersistanceManagerMolnet

Mensaje ComentarioVentas User Venta Lote Animal

Page 41: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

40 | P a g e

Librerías utilizadas en la aplicación en la nube.

La siguiente tabla muestra una descripción de las librerías utilizadas en cada una de las capas. Las librerías listadas son aquellas que realizan la función principal de cada una de las capas.

Capa Función principal Librería Descripción

Capa de presentaci

ón

Capa encargada de prestar interfaz gráfica web a los servicios web

prestados en la capa de servicios.

com.google.gwt.core.client.GWT;

Soporta la funcionalidad básica que en algunos casos requiere el apoyo directo del compilador y los sistemas de tiempo de

ejecución.

com.google.gwt.core.client.EntryPoint;

Implementar esta interfaz permite que una clase actué como un punto de entrada del módulo.

Capa de Servicios

Capa encargada de prestar servicios web. Puerta de entrada a todas las

solicitudes realizadas a la nube. javax.servlet.http

El paquete javax.servlet.http contiene una serie de clases e interfaces que describen y definen los contratos entre una

clase servlet que se ejecuta bajo el protocolo HTTP y el entorno de ejecución.

Capa Lógica

Capa encargada de la lógica de las peticiones. Tomar decisiones frente a qué se debe hacer con cada tipo de

peticiones.

com.google.appengine.api.taskqueue.Qu

eue;

las aplicaciones pueden realizar fuera de solicitudes de usuario trabajos que se han iniciado dentro de ellas. Si una aplicación

necesita ejecutar algún trabajo en segundo plano, puede utilizar el API de la cola de tareas para organizarlo en pequeñas

unidades discretas llamadas tareas

Capa de redes

Capa encargada de enviar mensajes a los servidores de Google-Login y de

C2DM.

java.net.HttpURLConnection;

La clase abstracta URLConnection es la superclase de todas las clases que representan un enlace de comunicaciones entre la

aplicación y una dirección URL

java.net.MalformedURLException;

Lanzado para indicar que una dirección URL incorrecta se ha producido. O bien no existe un protocolo legal se puede

encontrar en una serie de especificaciones o la cadena no podía ser analizado.

java.net.URL; La clase URL representa un Localizador Uniforme de Recursos, un puntero a un "recurso" en la World Wide Web.

java.net.URLEncoder;

Clase de utilidad para la codificación de formularios HTML. Esta clase contiene métodos estáticos para convertir una cadena de textos al formato MIME application / x-www-form-urlencoded

Capa de datos.

Capa encargada del manejo de la base de datos. Lectura y escritura.

com.google.appengine.api.datastore.Dat

astoreService;

El servicio DatastoreService otorga acceso síncrono a un sistema de almacenamiento de datos sin esquema

com.google.appengine.api.datastore.DatastoreServiceFactory

;

Crea implementaciones del servicio DatastoreService.

Page 42: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

41 | P a g e

Diagrama de clases.

Page 43: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

42 | P a g e

Tecnologías complementarias:

C2DM El nombre C2DM viene de sus siglas en ingles “Cloud todeviceMessaging”. La infraestructura C2DM es un servicio que permite enviar mensajes de servidores (Nubes) a dispositivos móviles Android. En este servicio se involucran tres partes. (5)

1. El dispositivo móvil debe ser Android en su versión 2.2 o mayor, debe tener el AndroidMarket instalado y por lo menos una cuenta Google activa.

2. El Servidor de aplicaciones o nube que se utiliza para enviar mensajes a los dispositivos a través de los servidores C2DM.

3. Los servidores C2DM de Google que se encargan de recibir los mensajes y reenviarlos a los dispositivos.

Para habilitar el servicio de cd2m se necesitan varias credenciales, las cuales se describen a continuación: (5)

Nombre Descripción Sender ID Una cuenta de correo electrónico asociada con el desarrollador de la

aplicación. El ID del remitente se utiliza en el proceso de registro para identificar a una aplicación de Android que permite enviar mensajes al dispositivo. Este ID es típicamente basada en roles en lugar de ser una cuenta personal - por ejemplo, [email protected].

Application ID La aplicación que se está registrando para recibir mensajes. La aplicación se identifica por el nombre del paquete del AndroidManifest.xml. Esto asegura que los mensajes están dirigidos a la correcta aplicación.

Google UserAccount Dispositivo móvil debe incluir al menos una sesión en la cuenta de Google SenderAuthToken Un símbolo de ClientLogin que se guarda en el servidor de aplicaciones,

ofrece acceso a los servicios de Google. El token se debe incluir en la cabecera de las peticiones POST.

Registration ID Una identificación emitida por los servidores c2dm a la aplicación para Android que permite recibir mensajes. Una vez que la aplicación cuenta con la identificación de registro, se lo envía al servidor de aplicaciones, que se utiliza para identificar a cada dispositivo que se ha registrado para recibir los mensajes para una aplicación dada. En otras palabras, un ID de registro está vinculado a una determinada aplicación se ejecuta en un dispositivo en particular

Page 44: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

43 | P a g e

Configuraciones previas para utilizar C2DM: Por parte de la aplicación en el dispositivo Android debe tener lo siguiente: (5)

1. Permisos adecuado en el androidManifest.xml a. <permissionandroid:name="com.example.myapp.permission.C2D_MES

SAGE"android:protectionLevel="signature"/> <uses-permissionandroid:name="com.example.myapp.permission.C2D_MESSAGE"/>

b. Este permiso debe estar en el nivel de Signature, de esta forma el mensaje llega directamente a la aplicación deseada.

Procedimiento para habilitar el servicio de C2DM:

Registro de aplicacion C2DM M

• Se de be registrar la aplicacion en http://code.google.com/intl/es-ES/android/c2dm/signup.html

Dispositivo Movil ill

• El dispositivo activa in Intent de registro a los servidores C2DM, incluyendo el Sender ID, y la application ID. El Intent de registro debe ser dirigido a com.google.android.c2dm.intent.REGISTER

Servidor C2DM

• Si el registro es exitoso, el servidor C2DM hace un broadcats en el cual envía el registration ID al dispositivo móvil.

Nube

• Para finalizar el registro el dispositivo envía el registration ID a el servidor de aplicaciones. Done es almacenado para ser utilizado cuando se envien notificaciones.

Page 45: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

44 | P a g e

Procedimiento para enviar un mensaje:

Google Auth token

h

• El token Clientlogin autoriza el servidor de aplicaciones para usar los servicios de C2DM-google. Este token debe encontrase configurado antes de enviar un mensaje.

Nube

• El servidor de aplicaciones crea una petición POST a https://android.apis.google.com/c2dm/send.

Servidor C2DM

• El servidor encola el mensaje en casoq ue el dispositivo este inactivo. • Cuando el dispositivo se encuentre activo, el servidor envia el mensaje.

Dispositivo

• El sistema crea un mensaje broadcast con los permisos y filtros especiales , de esta forma la aplicacion apropiada recibe el mensaje.

Page 46: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

45 | P a g e

Java-Android Http Post &Get El protocolo de comunicación utilizado en esta aplicación es HTTP, con sus respectivas solicitudes POST y GET. La aplicación de Android crea las peticiones POST y GET utilizando la siguiente clase de Java.

Para que el dispositivo pueda utilizar esta clase, se debe registrar los permisos necesarios en el androidManifest.xml: Permiso para tener accesoa internet: <uses-permissionandroid:name="android.permission.INTERNET"/> El código Java utilizado en Android para crear las peticiones web, es el Siguiente. packageMolnet.android; importjava.io.BufferedReader; importjava.io.IOException; importjava.io.InputStream; importjava.io.InputStreamReader; importjava.net.URLEncoder; importjava.util.ArrayList; importorg.apache.http.HttpEntity; importorg.apache.http.HttpResponse; importorg.apache.http.NameValuePair; importorg.apache.http.client.ClientProtocolException; importorg.apache.http.client.HttpClient; importorg.apache.http.client.entity.UrlEncodedFormEntity;

Page 47: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

46 | P a g e

importorg.apache.http.client.methods.HttpGet; importorg.apache.http.client.methods.HttpPost; importorg.apache.http.client.methods.HttpUriRequest; importorg.apache.http.impl.client.DefaultHttpClient; importorg.apache.http.message.BasicNameValuePair; importorg.apache.http.protocol.HTTP; /** * *@authorSantiago * Claseencargadademanejarlaspeticiones HTPP-POST-GET */ publicclassHttpMessaging { /** * Listadondesealmacenanlosparametros a serenviadospor el dispositivomovil * ArrayList<Nombre,Valor> */ privateArrayList<NameValuePair>params; /** * Listadondesealmacenanlascabecerasdelaspeticiones HTTP */ privateArrayList<NameValuePair>headers; /** * Direccion web dondeseradirigidalapeticion Web */ privateStringurl; /** * Cadenadetextododnesealmacenalarespuestadelservidor */ privateStringresponse; /** * Numeroquealmacena el codigoderespuestadelservicor */ privateintrespondCode; /** * Cadenadetextododnesealmacena el mensajedelservidor */ private String message;

Page 48: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

47 | P a g e

public String getResponse(){ returnthis.response; } public String getUrl() { returnurl; } publicvoidsetUrl(String url) { this.url = url; } publicintgetRespondCode() { returnrespondCode; } publicvoidsetRespondCode(intrespondCode) { this.respondCode = respondCode; } public String getMessage() { returnmessage; } publicvoidsetMessage(String message) { this.message = message; } /** * Contructordelaclase * @paramurldireccion Web. */ publicHttpMessaging(String url){ this.url=url; this.params=newArrayList<NameValuePair>(); this.headers=newArrayList<NameValuePair>(); } /** * Funcionquepermiteanadirunparametro a lapeticion web * @paramnamenombredelparametro * @paramvalue valor delparamtero */ publicvoidaddParam(String name,String value){ this.params.add(newBasicNameValuePair(name,value)); } /** * Funcionquepermiteanadirunacabecera a lapeticion web * @paramnamenombredelacabezera * @paramvalue valor delacabecera

Page 49: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

48 | P a g e

*/ publicvoidAddHeader(String name,String value){ this.headers.add(newBasicNameValuePair(name,value)); } /** * Funcionquecrealapeticion y luegola ejecuta. Es utilizada por fuera d la clase. * @param method pamateroque define metodo a utilizarRequestMethod.POST | RequestMethod.GET * @throws Exception */ publicvoid Execute(RequestMethod method) throws Exception { switch(method){ caseGET: { //anadirparametros String combinedParameters=""; if(!params.isEmpty()){ combinedParameters+="?"; for (NameValuePair p : params) { String paramString = p.getName() + "=" + URLEncoder.encode(p.getValue(),"UTF-8"); if (combinedParameters.length() > 1) { combinedParameters += "&" + paramString; } else { combinedParameters += paramString; } } } HttpGet request = newHttpGet(url+combinedParameters); for(NameValuePair h: headers){ request.addHeader(h.getName(),h.getValue()); } executeRequest(request,url); break; } casePOST: { HttpPost request =newHttpPost(url);

Page 50: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

49 | P a g e

for(NameValuePair h: headers){ request.addHeader(h.getName(),h.getValue()); } if(!this.params.isEmpty()){ request.setEntity(newUrlEncodedFormEntity(params, HTTP.UTF_8)); } /** *@linkMolnet.android#executeRequest(request, url) funcion que ejecuta la peticion WEB */ executeRequest(request, url); break; } } } /** * Funcion que ejecuta la peticion web * @paramrequestpeticion web creada con parametros y cabeceras * @param url2 direccionurl a la cual va dirigida la peticion web */ privatevoidexecuteRequest(HttpUriRequest request, String url2) { HttpClient client = newDefaultHttpClient(); HttpResponsehttpResponse; try { httpResponse=client.execute(request); this.respondCode=httpResponse.getStatusLine().getStatusCode(); this.message=httpResponse.getStatusLine().getReasonPhrase(); HttpEntity entity=httpResponse.getEntity(); if(entity!=null){ InputStreaminstream=entity.getContent(); this.response=convertStreamToString(instream); instream.close(); } } catch (ClientProtocolException e) { // TODO Auto-generated catch block

Page 51: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

50 | P a g e

e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * Funcion que convierte la respuesta HTML de la peticion a cadena de texto. * @paraminstream * @return c adena de texto con la respuesta. */ private String convertStreamToString(InputStreaminstream) { // TODO Auto-generated method stub BufferedReader reader = newBufferedReader(newInputStreamReader(instream)); StringBuildersb = newStringBuilder(); String line =null; try { while((line=reader.readLine())!=null){ sb.append(line+"\n"); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { instream.close(); } catch (IOException e2) { // TODO: handle exception } } returnsb.toString(); } }

Page 52: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

51 | P a g e

Java-Google App engine HTTP-POST Por el lado de la nube (Google App Engine) también se utiliza el protocolo HTTP con Post. El protocolo HTTP es utilizado en la nube para registrarse en Google y luego enviar ese ID cada vez que se enviara un mensaje atreves de C2DM. La clase utilizada para el registro en Google y el envío de mensajes C2DM es la siguiente: package C2DM.logic; importjava.net.HttpURLConnection; importjava.net.MalformedURLException; import java.net.URL; importjava.net.URLEncoder; importjava.util.HashMap; importjava.util.Map; importjava.io.BufferedReader; importjava.io.InputStream; importjava.io.InputStreamReader; importjava.io.IOException; importjava.io.OutputStream; publicclassHttpMessaging { private String url; private String response; privateintresponsecode; private Map<String,String>parameters; publicHttpMessaging(String urlr){ this.url=urlr; this.parameters=newHashMap<String, String>(); } publicvoidaddParameter(String key,String value){ this.parameters.put(key, value); } /**

Page 53: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

52 | P a g e

* Funcionqueregistra a lanubefrente a losserviciosdeGoogleLogin * @return */ public String executeGoogleLogin(){ try { HttpURLConnectionurlConnection; URL url = newURL(this.url); urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("POST"); urlConnection.setDoInput(true); urlConnection.setDoOutput(true); urlConnection.setUseCaches(false); urlConnection.setRequestProperty("Content-Type","application/x-www-form-urlencoded"); StringBuilder content = newStringBuilder(); content.append("Email=").append(C2DMAndGoogleSetup.GOOGLE_USER); content.append("&Passwd=").append(C2DMAndGoogleSetup.GOOGLE_PASW); content.append("&service=").append("ac2dm"); content.append("&source=").append( "MolnetCloud.push.1.1"); content.append("&accountType").append("GOOGLE"); OutputStreamoutputStream = urlConnection.getOutputStream(); outputStream.write(content.toString().getBytes("UTF-8")); outputStream.close(); intresponseCode = urlConnection.getResponseCode(); StringBufferresp = newStringBuffer(); if (responseCode == HttpURLConnection.HTTP_OK) { InputStreaminputStream = urlConnection.getInputStream(); BufferedReaderrd = newBufferedReader(newInputStreamReader(inputStream)); String line; while ((line = rd.readLine()) != null) { if(line.startsWith("Auth=")) { resp.append(line.substring(5)); } } rd.close(); } String authToken=resp.toString();

Page 54: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

53 | P a g e

this.setResponse(authToken); this.setResponsecode(responseCode); } catch (MalformedURLException e) { } catch (IOException e) { } returnthis.getResponse(); } /** * Funcionqueenviamensaje a losservidores C2DM * @parammsg * @paramauth_token * @paramdesti * @return */ publicint excecuteC2DMMessageServer(String msg,Stringauth_token ,String desti){ intresp=0; try { StringBuilder content = newStringBuilder(); content.append("registration_id=").append(desti); content.append("&collapse_key=").append("0"); content.append("&data.payload=").append(URLEncoder.encode(msg, "UTF-8")); content.append("&accountType").append("GOOGLE"); byte[] postData = content.toString().getBytes("UTF-8"); HttpURLConnectionurlConnection; URL url = newURL(this.url); urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("POST"); urlConnection.setDoInput(true); urlConnection.setDoOutput(true); urlConnection.setUseCaches(false); urlConnection.setRequestProperty("Content-Type","application/x-www-form-urlencoded;charset=UTF-8"); urlConnection.setRequestProperty("Content-Length",Integer.toString(postData.length));

Page 55: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

54 | P a g e

urlConnection.setRequestProperty("Authorization", "GoogleLoginauth="+ auth_token); OutputStream out = urlConnection.getOutputStream(); out.write(postData); out.close(); resp = urlConnection.getResponseCode(); this.response=urlConnection.getResponseMessage(); } catch (MalformedURLException e) { } catch (IOException e) { } returnresp; } public String getResponse() { returnresponse; } publicvoidsetResponse(String response) { this.response = response; } publicintgetResponsecode() { returnresponsecode; } publicvoidsetResponsecode(intresponsecode) { this.responsecode = responsecode; } }

Page 56: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

55 | P a g e

Localización geográfica. Esta herramienta es utilizada para facilitar la creación de un nuevo lote. Así el usuario puede ver donde fue creado e incluirle una imagen descargada de Google Maps. Proveyéndole información más exacta. Para obtener la ubicación de un dispositivo Android se debe llamar varias veces al administrar de localización hasta que este encuentre una posición adecuada y confiable. El administrador de localización se debe crear asignándole un proveedor. Los proveedores son el GPS interno del dispositivo y Red de localización Android-internet (RLA-I). (14) La siguiente tabla muestra las ventajas y desventajas de los diefrenets proveedores de ubicación en un dispositivo Android. (14)

Características GPS Interno RLA-I Consumo de batería

Velocidad para obtener la posición

Confiabilidad

Funciona en exteriores

La anterior tabla muestra una comparación de características entre los proveedores de localización para los dispositivos móviles Android. Molnet utiliza la localización geográfica de la siguiente forma. Se crea una clase que implemente LocationListener, así poder almacenar latitud y longitud recibidas por el administrador de localización. packageMolnet.android; importandroid.location.Location; importandroid.location.LocationListener; importandroid.os.Bundle; importandroid.util.Log; publicclassLocationListenerMolnetimplementsLocationListener { double longitude; double latitude;

Page 57: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

56 | P a g e

privatestaticLocationListenerMolnet instance=null; privateLocationListenerMolnet(){ } publicstaticLocationListenerMolnetgetInstance(){ if(instance==null){ instance=newLocationListenerMolnet(); } return instance; } @Override public void onLocationChanged(Location arg0) { this.longitude=arg0.getLongitude(); this.latitude=arg0.getLatitude(); Log.d("MolLat", this.latitude+""); Log.d("Mol Lon", this.longitude+""); } @Override public void onProviderDisabled(String provider) { } @Override publicvoidonProviderEnabled(String provider) { } @Override publicvoidonStatusChanged(String provider, int status, Bundle extras) { } publicdoublegetLongitude() { return longitude; } publicvoidsetLongitude(double longitude) { this.longitude = longitude; } public double getLatitude() { return latitude; } public void setLatitude(double latitude) { this.latitude = latitude; }

Page 58: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

57 | P a g e

} Se crea el listener y el administrador de localización: locationListener =LocationListenerMolnet.getInstance(); LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); El usuario selecciona que proveedor utilizara. AlertDialog.Builderalertbox = new AlertDialog.Builder(this); alertbox.setMessage("Como Desea obtener su posicion?"); alertbox.setPositiveButton("GPS", new DialogInterface.OnClickListener() { public void onClick(DialogInterface arg0, int arg1) { lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener); provider=LocationManager.GPS_PROVIDER; } }); alertbox.setNegativeButton("Internet", new DialogInterface.OnClickListener() { public void onClick(DialogInterface arg0, int arg1) { lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener); provider=LocationManager.NETWORK_PROVIDER; } }); alertbox.show(); Obtener ultima Latitud Longitud Obtenida. Cuando el usuario decide obtener la localización atreves del dispositivo, se solicita la última localización obtenida. Location location = lm.getLastKnownLocation(provider); En caso de location sea una objeto nulo fue porque el dispositivo no tiene una última posición y se debe reintentar.

Page 59: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

58 | P a g e

Conclusión En un mercado que crece tan rápido como el de los dispositivos móviles, se debe aprovechar al máximo todas las tecnologías que ofrecen servicios a estos aparatos y así enriquecer la experiencia del usuario. En el mundo de los dispositivos móviles Android es el sistema operativo más vendido del mundo, llegando a los 200 millones de activaciones. Esto se debe a su gran acogida entre los usuarios y desarrolladores, gracias a su forma de distribución y creación de aplicaciones basadas en código abierto. Algunas de las ventajas de Android son:

1. Código Abierto 2. Gran población con conocimientos en la plataforma. 3. Respaldo de Google y de Open Handset Allicance. 4. Kit De desarrollo de aplicaciones 5. Documentación de la plataforma por parte de los desarrolladores 6. Un gran número de librerías para construcción de herramientas.

a. Acceso a internet b. Interfaz graficas. c. Almacenamiento de datos.

Android puede beneficiarse de otras aplicaciones como la computación en la nube, en especial Google App Engine, la plataforma Google Inc. En Google App engine el desarrollador crea la aplicación/servicios que desee en el lenguaje de Java, luego carga el código y la aplicación estará lista para atender a los usuarios, que muchos pueden ser en dispositivos móviles como Android. Algunas de las ventajas de Google App engine son:

1. Gran población con fuertes conocimientos en la plataforma. 2. Documentación de la plataforma por parte de los desarrolladores 3. Versión gratuita con características restringidas. 4. Librerías libres para facilitar la comunicación con dispositivos móviles Android.

Google al ver que la unión de Android y Google App Engine tuvo gran aceptación por parte de los desarrolladores, creo el servicio C2DM que sirve para notificar a los dispositivos mediante mensajes y no hacer el que el dispositivo este continuamente comunicándose con la nube, haciendo peticiones innecesarias. Algunas de las características de C2DM son:

1. El servicio es completamente gratis. 2. Soporte por parte de Google. 3. Documentación de la plataforma por parte de los desarrolladores

El presenta trabajo utiliza muchos de los servicios que prestan las tecnologías anteriormente nombradas. Esto para afrontar algunos problemas que se presentaron en el desarrollo y brindarles un buen servicio a los ganaderos de Colombia.

Page 60: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

59 | P a g e

Referencias y Bibliografía.

1. Fedegan. Manual Prectico del Ganadero. [En línea] http://portal.fedegan.org.co/pls/portal/docs/PAGE/FNG_PORTLETS/PUBLICACIONES/MANUALGANADERO/CAP%CDTULO%203.PDF. 2. Banco de la Republica de Colombia. [En línea] http://www.banrep.gov.co/documentos/publicaciones/pdf/DTSER-40.pdf. 3. Real Academia Española. Diccionario de la lengua española. [En línea] www.rae.es. 4. Dalvikvm. Dalvikvm Virtual Machine. [En línea] http://www.dalvikvm.com/. 5. Google. Google Code-C2DM. [En línea] http://code.google.com/android/c2dm/. 6. MIT. An analysis of the cloud computing platform. [En línea] http://dspace.mit.edu/handle/1721.1/47864. 7. IETF. Network Working Group . Hypertext Transfer Protocol -- HTTP/1.1. [En línea] http://www.ietf.org/rfc/rfc2616.txt. 8. Google. Google Code-App Engine. [En línea] http://code.google.com/appengine/. 9. Sanderson, Dan. Programming Google App Enige. Sebastopol California : O' Reilly, 2009. 9780596522728. 10. Windows Azure. Windows Azure Calculator. [En línea] http://www.microsoft.com/windowsazure/pricing-calculator/?campaign=vw-calc. 11. Krishnan, Sriram. Rpogramming Windows Azure. sebastopol : O'Reilly, 2010. 12. Ouellette, Jason. Development with the Force.com plataform. Boston : Pearson Education, 2010. 13. Google-Android Developers. Android 2.3 Highlights. [En línea] (http://developer.android.com/sdk/android-2.3-highlights.html#communication). 14. —. Android Developers-Location and Maps. [En línea] http://developer.android.com/guide/topics/location/index.html. 15. IronWorks. Materiales Ingenieria de software. Materiales Ingenieria de software. [En línea] [Citado el: 2011 de Abril de 2011.] http://sophia.javeriana.edu.co/~cbustaca/Arquitectura%20Software/ArquitecturaSoftware.html. 16. Google-Android Developers. Shared Preferences. [En línea] http://developer.android.com/guide/topics/data/data-storage.html#pref. 17. Google. Google Maps. Static Maps. [En línea] http://code.google.com/apis/maps/documentation/staticmaps/. 18. —. Youtube. Google I/O 2011: Android + App Engine: A Developer's Dream Combination . [En línea] http://www.youtube.com/watch?v=M7SxNNC429U. 19. Sociedad de agricultores de colombia. Sociedad de agricultores de colombia. Distribuidores. [En línea] http://www.sac.org.co/Pages/SobreSAC/afiliados.html. 20. Google-Android Developers. Android Developers-UI. [En línea] http://developer.android.com/guide/topics/ui/index.html.

Page 61: Memoria MOLNET Diciembre 5 2011 MEMORIA DEL TRABAJO DE ...

Documento: Memoria Molnet

60 | P a g e

21. —. Android Developers-Toast Notifications. [En línea] http://developer.android.com/guide/topics/ui/notifiers/toasts.html. 22. —. Android Developers-UI Themes. [En línea] http://developer.android.com/guide/topics/ui/themes.html. 23. —. Android Developers-Data Storage. [En línea] http://developer.android.com/guide/topics/data/data-storage.html. 24. —. Android Developers-androidManifest.xml. [En línea] http://developer.android.com/guide/topics/manifest/manifest-intro.html. 25. —. Android Developers-Media Index. [En línea] http://developer.android.com/guide/topics/media/index.html. 26. —. Android Developers-Dialogs. [En línea] http://developer.android.com/guide/topics/ui/dialogs.html. 27. —. Android Developers-Status Bar Notifications. [En línea] http://developer.android.com/guide/topics/ui/notifiers/notifications.html. 28. —. Android Developers-Android Services. [En línea] http://developer.android.com/guide/topics/fundamentals/services.html. 29. —. Android Developers-Camera. [En línea] http://developer.android.com/guide/topics/media/camera.html. 30. Google. Code-App Engine Docs. [En línea] http://code.google.com/appengine/docs/. 31. —. Google Code-C2DM Sign Up. [En línea] http://code.google.com/android/c2dm/signup.html. 32. —. Google Code-C2DM Quotas. [En línea] http://code.google.com/android/c2dm/quotas.html. 33. —. Google Code-C2DM Terms. [En línea] http://code.google.com/android/c2dm/terms.html. 34. —. Google Code-App Engien Java Overview. [En línea] http://code.google.com/appengine/docs/java/overview.html. 35. —. Google Code-App Engine Datastore Overview. [En línea] http://code.google.com/appengine/docs/java/datastore/. 36. Sanderson, Dan. Google App Engine. Sebastopol : O'Reilly Media - Google Press, 2009. 37. Ciurana, Eugene. Developing with Google App engine. s.l. : firstPress, 2008.