Rosalbino Santoro in Brasile. Un "pittore itinerante" a Rio de Janeiro, San Paolo e Taubaté
UNIVERSIDADE DE TAUBATÉ Proposta de aplicativo cardápio eletrônico para dispositivos móveis...
-
Upload
anhanguera -
Category
Documents
-
view
0 -
download
0
Transcript of UNIVERSIDADE DE TAUBATÉ Proposta de aplicativo cardápio eletrônico para dispositivos móveis...
0
UNIVERSIDADE DE TAUBATÉ
Fernando Jorge Hial Reis
Luiz Felipe Medeiros Jardim
Proposta de aplicativo cardápio
eletrônico para dispositivos
móveis Android
1
Taubaté
2013
Fernando Jorge Hial Reis
Luiz Felipe Medeiros Jardim
Proposta de aplicativo cardápio
eletrônico para dispositivos
móveis Android
Trabalho de Graduação
Interdisciplinar apresentado como
requisito parcial para a obtenção do
título de Engenheiro do curso de
Engenharia de Computação do
Departamento de Informática da
Universidade de Taubaté.
2
Orientador: Prof. Msc. Antonio Ésio
Marcondes Salgado
Taubaté
2013
Fernando Jorge Hial Reis
Luiz Felipe Medeiros Jardim
Trabalho de Graduação
Interdisciplinar apresentado como
requisito parcial para a obtenção do
título de Engenheiro do curso de
3
Engenharia de Computação do
Departamento de Informática da
Universidade de Taubaté.
Data:
Banca Examinadora
Prof. Msc. Antonio Ésio Marcondes SalgadoUniversidade de Taubaté
Assinatura: __________________________
Prof. Msc. Dawilmar Guimarães de AraújoUniversidade de Taubaté
Assinatura: __________________________
Prof. Dr. José Carlos Lombardi Universidade deTaubaté
Assinatura: __________________________
Dedico este trabalho primeiramente a minha família que
estão sempre do meu lado e me dão o suporte devido, aos meus
amigos da turma de engenharia da computação em especial
4
Fernando, Flávio e Gabriel e também a todos os professores e
mestres que fizeram minha vida acadêmica mais proveitosa em
especial ao professor Toné. Aos meus amigos de infância que
tenho muito apreço e considero-os como uma segunda família, e
a todos que de alguma forma passaram na minha vida e deixaram
um pouco do que sou hoje.
Luiz Felipe Medeiros Jardim
Gostaria de agradecer primeiramente ao meu pai, por
acreditar que seria possível e esta junto comigo em todos os
momentos, juntos nos conseguimos, ao meu filho por ser minha
inspiração para a vitória, a minha noiva que me ajudou nos
momentos que nem eu mesmo acreditava que daria certo, aos
amigos Luiz Felipe, Gabriel e Flavio, no fim formamos uma
verdadeira equipe. A vocês meu muito obrigado.
Fernando Jorge Hial Reis
6
“A mente que se abre a uma nova idéia jamais voltará ao seu tamanho
original.”
Albert Einstein
RESUMO
Devido ao crescimento significativo na compra de
smartphones em escalas locais e globais, outra área veio
com imensa força e pra fazer uma nova frente aos avanços
na tecnologia, o mercado de aplicações moveis. Com a
criação de sistemas operacionais que conquistaram os
usuários em sua grande maioria, caso do Android e do iOS
da Apple, os aplicativos têm sido uma extensão de
utilidades, diversão e um facilitador da comunicação e
compartilhamento de informações entre seus usuários.
Através de interesses diversos na criação e divulgação
das aplicações, muitos programadores e desenvolvedores de
grande renome e muitos iniciantes se aventuraram nesse
mercado que se mostrou muito rentável pelo sucesso
gerado. Com o avanço também das redes moveis é possível
hoje em dia ter acesso direto a utilitários como mapas,
internet e serviços de email. A procura por serviços e o
acesso fácil a recursos da rede, fez com que a demanda
7
por aplicações que atendiam a esse requisito fosse muito
maior do que a oferta no mercado. Pensando nisso esse
projeto utilizara as ferramentas necessárias, como o
Android, a computação em nuvem, web services e web site para a
implementação de um aplicativo que facilitará o pedido de
alimentos e a entrega do mesmo. Também propor uma técnica
para que outros trabalhos possam dar continuidade,
ampliando sua área de atuação e tornando o mercado
atingido mais promissor.
Palavras-chave: Android. Web service. Web site. Aplicativos.
ABSTRACT
In reason of increase in the smart phones shopping in local and global scales,
another area came with great strength in order to do a new view of advances
of technology, the market for mobile applications. The creation of operating
systems which dominate the users mostly, such as Android and Apple iOS, the
applications have been one extension of utilities, fun and easy communication
of sharing information between your users. Through the several interests of
8
the creations in show applications, plenty of programmers and developers of
great renown and plenty of beginners go to this Market adventure that
showed great income owing to the success. Nowadays the advancement of
mobile networks became possible to have a direct access to the settings such
as maps, internet and email services. The search for services and the easy
access of network resources made the demand of applications that attended
that requirement bigger than an offer in the Market. Mainly this project will
utilize the necessary tools, such as Android, the cloud computing, web services
and websites for implementation of one application which will make easy the
request of feeding and delivery. Also propose a technique to the others works
in order to continue, expanding your area of performance and becoming the
Market reached more promising.
Key words: Android. Web service. Web site. Applications
Lista de figuras
9
Figura 1 - HTC Dream........................................13
Figura 2 - Gráfico de Smartphones vendidos no mundo.........15
Figura 3 - Camada básica do Android OS......................16
Figura 4 - Arquitetura Android completa.....................17
Figura 5 - Exemplo tela home do Android.....................19
Figura 6 - Ciclo de vida de uma activity.......................20
Figura 7 - Android emulator.................................26
Figura 8 - DDMS em funcionamento............................28
Figura 9 - Janela do Eclipse em execução....................31
Figura 10 - Sala onde se abriga um Data Center.................32
Figura 11 - Esquema de funcionamento do cloud computing........34
Figura 12 - Funcionamento do Windows Azure..................39
Figura 13 - Ciclo de vida do ASP.NET........................41
Figura 14 - Gerenciamento Banco de Dados....................46
Figura 15 - Instalando SDK Android..........................47
Figura 16 - Tela mostra umas das activity sendo criada no
Eclipse.....................................................48
10
Figura 17 - Arquivo XML gerado que mostra as caracteríticas de
uma activity................................................48
Figura 18 - Funcionamento do Google cloud messaging.........50
Figura 19 - Instalação do SDK do Windows Azure..............52
Figura 20 - Criação das Roles dentro do Azure...............52
Figura 21 - Método start e stop.............................53
Figura 22 - Diagrama de funcionamento do protótipo..........54
Figura 23 - Telas da aplicação..............................55
11
Sumário
1 Introdução..............................................102 Conceitos envolvidos......................................122.1 Android.................................................122.1.2 Arquitetura...........................................162.1.3 Componentes e funcionamento de uma aplicação Android. .182.1.3.1 Activity...............................................192.1.3.2 Broadcast Receiver......................................222.1.3.3 Service...............................................222.1.3.4 Content Provider........................................222.1.3.5 Intent................................................232.1.4 Ambiente para desenvolvimento.........................232.1.4.1 Requisitos do Sistema...............................232.1.4.2 Ambientes de Desenvolvimento........................232.1.4.3 Requisitos de Hardware..............................242.1.5 SDK Android...........................................242.1.5.1 Ferramentas.........................................25
12
2.1.6 Eclipse...............................................302.2 Cloud computing...........................................312.2.1 Tipologia.............................................342.2.2 Modelos de implantação................................362.2.3 Windows Azure.........................................372.2.3.1 Modelo de Roles.......................................372.3 Website..................................................392.3.1 HTML..................................................392.3.2 ASP .Net..............................................402.4 Web Service...............................................413 Requisitos................................................424 Solução...................................................456 Conclusão.................................................56Referências.................................................57
1 Introdução
Ultimamente, o mercado no Brasil para desenvolvimento de
aplicações para dispositivos móveis cresceu
significativamente, por meio de diversos sistemas operacionais
disponíveis, como o Android, muitos dos desenvolvedores
encontraram uma boa oportunidade para ingressar de vez no
ramo.
A mobilidade é um quesito muito procurado em todos os
processos da vida moderna, assim a comodidade e também a
segurança que ela nos oferece pode ser um diferencial na
disputa incessante de novas propostas de desenvolvimento de
aplicações. Isso é um fator que as pesquisas apontam e basta
13
andar pouco tempo em qualquer lugar público para notar a
quantidade de pessoas que usam um smartphone.
Grandes empresas estão desenvolvendo celulares e
dispositivos móveis com grande quantidade de recursos e
vantagens para o seu usuário. Além também da tecnologia de
redes móveis que permitem a conectividade aonde quer que a
pessoa esteja. A tendência de compartilhar conhecimento,
fotos, lugares e outras coisas que julgue interessante ficaram
mais fortes com o avanço de redes sociais que acabam
facilitando o contato e a divulgação de tais informações.
Se tratando de sistemas operacionais para smartphones
existem dois grandes concorrentes que lideram o mercado,
Android do Google e o iOS da Apple, ambos detêm grande fatia
do mercado. Existem também outras empresas como a Blackberry e
a Microsoft que ainda caminham em passos curtos na conquista
de usuários. Quando se fala em sucesso financeiro e
repercussão na distribuição de aplicativos, tanto o Google
como a Apple as primeiras opções no início de qualquer
projeto.
Por serem os sistemas operacionais mais usados, qualquer
desenvolvedor que tem a idéia de lançar algum aplicativo,
tende a fazer a escolha de um dos dois. Essa escolha pode ser
influenciada por vantagens e desvantagens que cada um oferece.
O iOS pode ser considerado o primeiro sistema para
smartphone lançado em grande escala no mundo, isso por
diferença de meses, lançado em junho o primeiro iphone
revolucionou o mercado por apresentar um sistema sensível ao
toque e com várias tecnologias embarcadas que transformavam o
14
aparelho em uma espécie de computador pessoal. Todos os
produtos lançados pela marca alcançaram um grande status
comercial e o apelo de consumo imposto pela mídia fez com que
o aparelho se tornasse um sucesso, conquistando muitos
usuários ao redor do mundo.
Para o desenvolvimento de aplicações para IOS, ou para
qualquer coisa que leve a tecnologia da Apple, são necessários
hardwares e softwares que são impostos como padrão pela empresa.
Com muitos recursos e um visual deslumbrante para
desenvolvedores de primeira viagem, ficou muito simples a
criação de aplicativos, porém limitou muitos de adentrar ao
mercado pelo alto custo dos requisitos necessários.
Diferente da empresa de Steve Jobs, fundador da Apple, a
Google propôs uma plataforma de desenvolvimento inteiramente
gratuita e de fácil acesso para qualquer um que pretende se
aventurar no mercado de aplicativos. Através de qualquer PC e
sem a necessidade de pagamento de taxas para divulgação da
aplicação, o Android se tornou uma excelente escolha para
empresários iniciantes nesse ramo.
Por poder também trabalhar em uma linguagem de programação
muito difundida que é o JAVA, acabou sendo uma vantagem
imprescindível para o desenvolvimento do aplicativo proposto
neste trabalho.
Com a crescente procura por serviços na internet como
entrega de alimentos, pedido de táxi, procura de
estabelecimentos o smartphone acabou se tornando uma excelente
ferramenta para essas tarefas. A velha e antiga página amarela
está se tornando um artigo de museu, enquanto os dispositivos
15
conectados a rede conseguem localizar e efetuar as opções de
maneira muito simples e pratica.
A proposta desse trabalho é oferecer um aplicativo que
funcione como uma espécie de lista telefônica, da qual é
possível acessar e escolher estabelecimentos alimentícios e de
outros ramos como serviços de transporte. A intenção é de que
a resposta entre o serviço e o usuário seja quase instantânea
e de simples compreensão.
A crescente procura por comodidade faz com que essa idéia
seja muito bem avaliada entre usuários Android e de outros
sistemas. Alguns já se aventuraram no ramo e se consolidaram
no mercado conquistando clientes fieis que praticamente não
sabem o que fazer se não tiverem a mão o smartphone.
O trabalho foi dividido de uma forma compreensiva citando
e explicando cada passo que foi necessário para o seu
desenvolvimento. A principio as tecnologias abordadas serão o
foque para o bom entendimento dos conceitos utilizados no
projeto, em seguida os requisitos do aplicativo mostrará e
exemplificará como este empreendimento funcionará.
No capitulo solução, serão abordadas as tecnologias que
foram usadas e o porquê da escolha de tais. Finalmente na
conclusão, as observações e considerações que foram analisadas
durante todo este processo.
2 Conceitos envolvidos
Neste trabalho as seguintes ferramentas e conceitos foram
estudados para compor a solução proposta:
16
Sistema Operacional Android para dispositivos
móveis
Computação em nuvem
Web Services
Web Page
Os itens a seguir apresentam cada uma destas ferramentas e
conceitos em linhas gerais, com suas diversas características.
Importante observar que são abordadas tecnologias e conceitos
com especificidades para uso na proposta deste TGI.
2.1 Android
Essa tecnologia foi utilizada devido à sua facilidade de
acesso, suporte facilmente acessível e providenciado de graça.
Além de ter se mostrado em pesquisas o sistema operacional
mais utilizado no mercado e ter uma infinidade de dispositivos
a disposição.
Todos sabem a quantidade de aparelhos celulares que estão
sendo desenvolvidos anualmente. Com a crescente procura pela
modernidade, impulsionada muitas vezes pela mídia que nos
bombardeia com propaganda todos os dias, os aparelhos
celulares são, cada vez mais, a chave para se conectar ao
mundo.
A Tecnologia Android que se concretizou em diversas
grandes empresas do ramo de telefonia, foi desenvolvida a
partir de uma idéia que a Google teve de adentrar nesse
17
mercado, que na época, 2005, estava em evidência com o
lançamento mais recente da Apple. O iphone, como o chamavam,
reinventou o significado de um aparelho de telefonia móvel,
trazendo consigo várias tecnologias inovadoras quase
transformando o celular em uma espécie de computador pessoal.
O sistema iOS, era elegante, eficiente e assim conquistou todo
um mercado.
O Google observando sua rival se dando muito bem com a
venda de produtos, se interessou e buscou formas de criar o
seu próprio celular. Apesar de que já existiam rumores de que
a Google muito antes norteava a idéia de entrar nesse ramo bem
antes do lançamento do primeiro iphone. Então em 2005, muito
antes da tecnologia se concretizar, a Google comprou uma
pequena empresa de Palo Alto (Califórnia) chamada Android.inc,
onde se fazia um sistema que se baseava no núcleo do Linux e a
principio era desenvolvida para ser instalado em câmeras
fotográficas inteligentes. A mente por trás dessa tecnologia
era Andy Rubin, um jovem e promissor programador, que
trabalhava na época para a Carl Zeiss, famosa empresa de
lentes fotográficas.
Rubin aceitou o emprego de coordenador do projeto que a
Google acabara de criar depois de feita à compra de sua Start-
up. Trabalhando sobre o lema de que “A informação não é
somente pra quem paga por ela”, o sistema tinha uma grande
abertura no seu código que poderia fazer com que qualquer
usuário conseguisse modificar e deixar o aparelho de acordo
com suas preferências.
18
Diferente da Apple computers, a Google no final do ano de
2007, quando o aparelho da Apple já tinha sido lançado,
juntou-se a grandes nomes da indústria eletrônica e de
telefonia da época para formar uma aliança forte para oferecer
um Sistema operacional com padrões abertos e de fácil acesso.
Entre as empresas além da própria Google se destacam a HTC,
Samsung e Motorola. Essa união e parceria obteve um nome a OHA
(Open Handset Alliance). A partir disso no ano seguinte foi
revelado, após ser aprovado pela Comissão Federal de
Comunicações dos Estados Unidos, o primeiro aparelho que
rodava o sistema Android. O T-Mobile G1 (ou HTC Dream)
revolucionou o mercado, mostrado na figura 1.
19
Figura 1 - HTC DreamFonte: http://googlediscovery.com/2008/10/22/google-faz-
publicidade-do-t-mobile-g1-em-sua-pagina-inicial/
Apesar de algumas criticas sobre funcionalidade e outros
requisitos, o HTC Dream foi muito bem aceito pelos
consumidores e a população, devido a seu design robusto e
elegante. Porém os engenheiros e programadores já pensavam em
melhorias no sistema, que foi batizado em sua primeira versão
como Android 1.0, isso em 2008, no ano que lançaram a versão
1.1. A partir desta versão e as seguintes começou-se a adotar
o nome de sobremesas que acabou se tornando uma marca
registrada da marca, a versão 1.5 foi nomeada cupcake e as
20
seguintes também adotaram a moda. A mais recente versão a 4.3
se chama Jelly Beam e já confirmou o nome da próxima que será
chamada de Kit-Kat, alusão ao chocolate mundialmente conhecido
(figura 2).
Hoje em dia a Google é dono de grande fatia do mercado de
sistemas operacionais em smartphones. Segundo pesquisa publicada
no ano de 2013 e ilustrada na figura 3, analisando o segundo
trimestre de 2012 e o primeiro trimestre de 2013, 80% de
usuários usam o Android OS (GARTNER). Isso demonstra o grau de
importância do sistema em escala mundial, seus concorrentes
não demonstram qualquer sinal de reviravolta nesse estado.
Muito disso devido ao fato de que vários dispositivos
conseguem rodar seu sistema, possibilitando as empresas um
custo de produção mais barato dependendo da classe da qual
queiram atingir.
Além de todas as vantagens no que visa à questão econômica
do negócio, o Android se destaca pela sua grande quantidade de
apps gratuitos além de incentivar a novos usuários a programar
e inventar outros. Sua conectividade e facilidade de uso
também vêm sendo melhoradas gradativamente. Sua concorrente
mais firme, a Apple, ainda possui um sistema mais fácil e
prático, segundo alguns usuários e testadores, assim sua
grande possibilidade de customização e alterações o faz
superar qualquer design gráfico ou usabilidade de outros
sistemas ficarem bem abaixo das expectativas.
21
Figura 2 - Gráfico de Smartphones vendidos no mundoFonte : http://www.tech-thoughts.net/2013/08/smartphone-market-share-trends-by-country-q2-2013.html#.Ukx3MyRwrlk
2.1.2 Arquitetura
O Android como qualquer sistema operacional, é dividido e
interligado em três estados ou grupos, como pode ser
verificado na figura 4:
22
Figura 3 - Camada básica do Android OSFonte: http://criseoperacional.wordpress.com/tag/arquitetura-
de-um-sistema-operacional/
O Hardware é responsável por fazer o processamento e
análise de todas as tarefas proposta pelo usuário. A interface
seria o produto final do sistema operacional, que por sua vez
é ligado a um Kernel juntamente ao hardware do equipamento, esse
meio é a base onde esse software está sendo executado.
A figura 5 traduz de uma forma bem simplificada o que
seria o funcionamento de um SO Android.
23
Figura 4 - Arquitetura Android completaFonte: MEIER, Professional Android 4 Application Development,
2012
Kernel: O Kernel do Android OS é o Linux, todas as funções
que são exercidas, no que diz respeito a hardware, são
administradas através dele. Obviamente o Kernel foi aprimorado
para se adaptar melhor as condições e peculiaridades que um
aparelho móvel apresenta. Devido a essa melhoria, o desempenho
e consumo de energia para estes aparelhos ficam em um nível
considerado ideal para uso e distribuição do software no mercado
e nas empresas.
Libraries: A camada de bibliotecas possui todos os
requisitos mínimos para abrigar as linguagens de programação C
24
e C++, reprodutores de áudio, banco de dados SQLite, OpenGL
ES, gráficos 2D e 3D, além de possuir uma subcamada chamada de
RunTime.
Android Runtime: Nesta se encontra a máquina virtual Dalvik,
criada e gerada toda vez que uma aplicação é executada pelo o
usuário. Diferente das tradicionais “máquinas virtuais”, JVM,
esta foi criada por engenheiros da Google para aperfeiçoar e
garantir maior desempenho dos aplicativos, que estão sendo
usados. Abriga a Core Libraries, da qual disponibiliza uma API
Java utilizada para a programação de aplicativos, que pode ser
instalado na versão do sistema em que esteja sendo utilizado.
Application framework: A camada fornece aos desenvolvedores
as API’s para criação de aplicações autenticas do sistema.
Permite o acesso ao sistema pelo desenvolvedor, tirando
vantagem das capacidades de processamento do Android e que
suportem recursos quando estiver criando seus App’s. A camada
pode ser denominada como um conjunto de ferramentas
necessárias para o desenvolvimento de aplicativos.
Applications and Widgets: aqui se encontram todas as funções
consideradas básicas para o uso do sistema Android, como fazer
ligações, acesso ao browser ou a agenda de contatos. Roda em
cima da camada Runtime, utilizando todas as bibliotecas,
classes e componentes localizadas e disponibilizadas pelo
framework de aplicações.
25
2.1.3 Componentes e funcionamento de uma aplicação Android
O Android é um sistema operacional que gerencia seus
recursos, mas apenas parte do ciclo de duração de uma
aplicação está sendo controlada pelo próprio sistema. Todas as
rotinas como abertura, fechamento ou reações realizadas pelo
aplicativo, são necessariamente administradas pelo
desenvolvedor. A tela home é o primeiro aplicativo quando o
aparelho é ligado, nele se apresetam outras aplicações que
podem ser rodadas em segundo plano no sistema. Na figura 6
pode-se ver como se aparenta a tela home.
26
Figura 5 - Exemplo tela home do Android
Existem alguns componentes que são necessários para o
Android executar seus aplicativos, que nos sub-capítulos
seguintes serão abordados.
2.1.3.1 Activity
Uma atividade (Activity ) pode ser relacionada com a tarefa
que determinado aplicativo pode executar como uma lista de
nomes, uma tela de login e qualquer coisa que envolva o
27
funcionamento da aplicação. Para desenvolvedores de C# por
exemplo, a Activity, pode ser entendida como um Form.
É o componente mais ordinário de uma aplicação Android,
toda vez que é requisitada uma activity ela consegue retornar até
mesmo outra activity dependendo do que está sendo chamado, por
exemplo, uma foto. A interface gráfica pela qual usuário e o
sistema se comunicam é propriamente uma activity. A figura 7
ilustra um exemplo de uma figura que diagrama o ciclo de vida
de uma atividade.
28
Figura 6 - Ciclo de vida de uma activity
Cada fase possui um evento que será executado, e abaixo
será compreendido cada um desses eventos.
onCreate( ): Evento executado quando a activity é criada. Aqui
se inicializam os objetos e todas as variáveis que o
29
aplicativo necessita. Sempre vem acompanhada dos métodos
onStart().
onStart( ): Chamada quando a aplicação se torna visível para
o usuário. Acompanhada pelo método onResume() se a activity aparece
em primeiro plano ou pelo métodos onStop() se ela se torna
oculta.
onResume( ): Chamada quando começa a interação com o
usuário. Neste momento a activity está no topo da fila de
processos e o usuário estará manipulando o aplicativo. Sempre
vem seguida do método onPause().
onPause( ): Chamada quando é preciso retomar uma atividade
anterior. Muito usada para salvar dados, parar animações e
qualquer outra coisa que possa ocupar a CPU do aparelho
salvando e economizando bateria com isso. Sempre vem seguida
do método onResume() quando esta atividade vem em primeiro plano
e visível para o usuário, porém se ela continuar em estado
invisível o método onStop() é chamado.
onStop( ): Chamada quando a atividade já não é visível para
o usuário, porque outra atividade foi retomada e está
ocultando o mesmo. Isto pode acontecer ou porque uma nova
atividade está sendo iniciada, e uma nova atividade foi
sobreposta na pilha, ou a atividade está sendo destruída.
Normalmente vem acompanhada do método onRestart(), se esta
30
atividade voltará ao usuário ou o onDestroy() se ela for
descartada.
onRestart( ): Chamada depois que sua atividade foi
interrompida, antes de ser iniciada novamente. Sempre seguido
por onStart ().
onDestroy( ): Sempre chamada antes que a activity seja
destruída. Isso acontece se essa atividade está terminando ou
porque o sistema está destruindo essa instância para poder
economizar espaço na memória. Chamando o método isFinishing() o
desenvolvedor consegue distinguir por qual motivo essa
atividade foi destruída.
2.1.3.2 Broadcast Receiver
Broadcat Receiver (Recebedor de eventos), é um objeto que
responde a algum aviso enviado, que pode se originar do
próprio sistema. Alguns avisos podem se originar do próprio
sistema Android e outros de aplicativos que estão sendo
executados. A quantidade de Broadcast Receiver de uma aplicação
fica a critério do desenvolvedor.
As ações que este objeto utiliza para alertar o usuário
pode ser em forma sonora, vibrar, luz indicadora, push e até
mesmo chamar uma activity se o aplicativo concernir dessa forma
(Google, 2013).
31
2.1.3.3 Service
O serviço sempre roda em background por não possuir uma UI
(User Interface – Interface do usuário). Todos os processos que
precisam continuar ativos no sistema como downloads da rede,
escutar música, entrada e saída de arquivos e muitos outros.
Em segundo plano o sistema roda esses serviços enquanto o
usuário pode fazer uso de outro aplicativo.
2.1.3.4 Content Provider
Os provedores de conteúdo (Content Provider) gerenciam o
acesso a um conjunto estruturado de dados. Eles encapsulam os
dados e fornecem mecanismos para a definição e segurança dos
dados. Os provedores de conteúdo são a interface padrão que
conecta dados em um processo com o código em execução em outro
processo.
Componente muito necessário quando a aplicação deseja
compartilhar os dados com outras aplicações, sem programar sua
própria provider o aplicativo não realizará a transmissão de
dados que foi proposta. O Android já disponibiliza em sua
classe android.provider, diversos contentes providers para gerenciar
dados como áudio, vídeo e informações de contatos.
2.1.3.5 Intent
Consiste em uma ação, sendo ela um evento ou uma
requisição. A intenção de enviar um e-mail é um bom exemplo de
como a Intent é usada, sempre demonstrando a necessidade e o que
tal aplicação quer fazer. No sistema Android a grande maioria
32
de ações é feita por meio das Intents, sendo absolutamente comum
sua reutilização em várias fases do processo. A partir delas o
desenvolvedor consegue chamar outras aplicações através de
Actions, se comunicar com outras aplicações e enviar e receber
dados.
2.1.4 Ambiente para desenvolvimento
Com a arquitetura e todo o processo de entendimento do
sistema Android, agora será explanado todo o processo para que
o desenvolvedor consiga gerar suas próprias aplicações.
Abordando requisitos de hardware, ambiente de desenvolvimento,
SDK Android, Ferramentas do SDK e por final a IDE Eclipse.
2.1.4.1 Requisitos do Sistema
Os seguintes sistemas operacionais, citados abaixo,
suportam o desenvolvimento para Android segundo o Google:
Windows XP (32-bits) ou Vista (32 ou 64-bits);
Mac OS X 10.4.8 ou superior (somente arquitetura
x86);
Linux
2.1.4.2 Ambientes de Desenvolvimento
Segundo a documentação existente no Google e no kit
oferecido para download nele já é incluso e indicado o uso da
IDE Eclipse.
33
Abaixo segue os itens que acompanham a pasta do download:
Eclipse IDE5- Eclipse 3.4 (Ganymede) ou 3.5
(Galileo);
Eclipse JDT plugin;
JDK 5 ou JDK 6 - Java Development Kit;
Android Development Tools plugin (ADT).
Para outros ambientes de desenvolvimento:
JDK 5 ou JDK 6 - Java Development Kit;
Apache 1.6.5 ou superior para Linux e Mac, 1.7 ou
superior para Windows.
2.1.4.3 Requisitos de Hardware
De acordo com a Google, para o pacote básico do kit de
desenvolvimento, são necessários 600MB de espaço em disco. Com
cada versão anexada do Android será acrescentado mais 100MB.
2.1.5 SDK Android
O “software development kit” é distribuído pelas empresas para
que seus desenvolvedores se igualem na hora de criar suas
aplicações e programas a determinado sistema o qual estão se
ambientando. A Microsoft tem como exemplo de SDK, a Platform,
34
onde ela embutiu suas documentações, códigos e utilitários,
ajudando o desenvolvimento para o seu software.
A Google disponibiliza, assim como a Microsoft, o seu
próprio kit de desenvolvimento para os seus programadores e para
todos que queiram aprender a fazer seus aplicativos. O SDK
Android possui diversos componentes imprescindíveis e
importantes em todas as etapas na construção de aplicações,
nestas se incluem:
Bibliotecas necessárias;
Debugger;
Um emulador;
APIs;
Código fonte exemplo;
Tutoriais para Android OS.
Todas as vezes que a Google está prestes a lançar uma
versão nova de seu sistema operacional, juntamente é lançado o
SDK próprio para plataforma. Desenvolvedores podem optar e
programar seus aplicativos para todas as versões existentes do
Android. Após a versão 1.6, diversos tamanhos e densidades de
tela são facilmente manipulados, fazendo toda a diferença no
que diz respeito ao sucesso no mercado do App proposto.
O emulador é de grande valia para testes e adaptabilidade
a diferentes aparelhos. O SDK mais recente possui as
bibliotecas de todas as versões anteriores, além de conseguir
emular diversos aparelhos que possui no mercado.
35
2.1.5.1 Ferramentas
Dentro do kit de desenvolvimento da Google, o desenvolvedor
encontra todas as ferramentas necessárias para elaborar seu
aplicativo. A seguir são descritas todas as ferramentas que o
SDK possui:
Android Development Tools
Plugin necessário para a IDE do Eclipse reconhecer e se
adaptar ao ambiente de desenvolvimento Android.
Android Emulator
Emula um dispositivo Android dentro do ambiente de
programação. Muito útil aos desenvolvedores para testes e
adaptabilidade em diversas plataformas. Baseado em QEMU,
utilizado para emular máquinas virtuais Linux. A figura 8
mostra a aparência do Android Emulator.
36
Figura 7 - Android emulatorFonte: http://www.herongyang.com/Android/Android-SDK-17-
Android-Emulator-Built-in-Application.html
Android Virtual Devices
O AVD configura e gerencia os dispositivos virtuais. Aqui
o desenvolvedor consegue colocar padrões em seu protótipo,
como a capacidade de memória, o uso de cartão de memória, a
versão do Android entre outros.
Hierarchy View
37
Altamente útil quando o desenvolvedor necessita ampliar e
melhorar a interface com seu usuário. Através de grades
sobrepostas é possível fazer ajustes em determinados
componentes, para que se torne a disposição de fatores mais
fiel ao que o programador propõe.
Layoutopt
Funciona como um recurso automático quando se elabora
layouts, otimizando-os e tornando-os mais eficientes.
Draw 9-patch
Ajusta automaticamente uma imagem do tipo bitmap e acomoda
o conteúdo que o desenvolvedor colocou na tela. Um exemplo
seria um botão ou até mesmo um fundo de tela, lembrando sempre
que a extensão desse arquivo deverá ser “.PNG”.
Android Debug Bridge
Ferramenta utilizada para fazer a conexão entre o terminal
de desenvolvimento para o dispositivo ou simplesmente ao
emulador. Serve também como um instalador de aplicações com
extensão “.apk”.
Android Asset Packaging Tool
38
Gera os arquivos necessários para a instalação da
aplicação em qualquer dispositivo que rode o sistema
operacional Android.
Dalvik Debug Monitor Service
Ferramenta de depuração já inclusa no SDK que fornece
utilidades, tais como a captura da tela no emulador e a
transforma em arquivo de imagem, gerando spoofing de SMS,
ligações, informações do estado de rádio e muito mais. A
figura 9 mostra um DDMS em funcionamento:
Figura 8 - DDMS em funcionamentoFonte: http://www.devx.com/wireless/Article/39972/0/page/3
Android Interface Definiton Language
39
Responsável pela comunicação entre cliente e um service, No
Android não é possível ter acesso à memória de outro processo,
por isso é necessário criar um AIDL para que essa chamada seja
atendida. Isso é muito difícil de ser escrito, por tal motivo
o programador apenas cria uma interface AIDL com extensão “.aidl”
e também uma classe que implementa os métodos declarados na
interface.
SQLite3
Possibilita o acesso ao banco de dados da aplicação
criada, manipulando-o, criando tabelas ou removendo-as,
fazendo inserções e alterações entre outras modificações na
base de dados.
Traceview
Traceview é um visualizador gráfico para os logs de execução
salvos pela aplicação. Traceview pode ajudar a depurar o
aplicativo e o perfil de desempenho.
MkSdcard
40
A ferramenta mksdcard permite que rapidamente se crie uma
imagem de disco FAT32, que o desenvolvedor pode carregar no
emulador, para simular a presença de um cartão SD no
dispositivo. Esta ferramenta cria um cartão SD que não vem com
um AVD, assim torna-se útil por isso é útil para situações das
quais é preciso compartilhar um cartão SD virtual entre vários
emuladores.
DX
Responsável por transformar o bytecode Java em um bytecode
Android, sendo assim reconhecido pelo sistema.
UI/Application Exerciser Monkey
É um programa que é executado no emulador ou dispositivo e
gera fluxos de “pseudo-aleatórios” eventos do usuário, como
cliques, toques ou gestos, bem como uma série de eventos em
nível de sistema. Pode-se usar o Monkey para aplicações de
testes de esforço de forma aleatória, mas repetitiva.
Zipalign
Zipalign é uma ferramenta de alinhamento de arquivo, que
oferece uma otimização importante para a aplicação Android.
Especificamente, ele faz com que todos os dados não
comprimidos dentro do Apk, como imagens ou arquivos, sejam
alinhados em limites de quatro bytes. Isso permite que todas
41
as partes possam ser acessadas diretamente com mmap (), mesmo
que contenham dados binários com restrições de alinhamento. O
benefício é a redução na quantidade de RAM consumida durante a
execução do aplicativo.
2.1.6 Eclipse
Criado pela IBM e doado como software livre. A IDE mais
usada para desenvolvimento em linguagem Java hoje em todo
mundo, foi adotado pela Google, por dois motivos:
- Possui as melhores características para se desenvolver
aplicações Java, isto por ser aberto, respeitando a máxima
criada pela a aliança firmada entre os fabricantes e a própria
Google;
- O plugin já feito especialmente para se desenvolver
aplicações para Android na IDE do Eclipse, colaborou muito
para que o aprendizado de iniciantes fosse mais simples e que
cada vez mais programadores tivessem incentivos para investir
em tal mercado.
Além de ser multiplataforma possibilitando usuários de
Windows, Linux ou Mac terem as ferramentas com maior
disponibilidade e facilidade quando usada. Abaixo a figura 10
ilustra a janela da IDE do Eclipse.
42
Figura 9 - Janela do Eclipse em execuçãoFonte:
http://pt.wikipedia.org/wiki/Ficheiro:Eclipse33_Ubuntu.png
2.2 Cloud computing
Neste trabalho foi utilizada a tecnologia de cloud computing.
O conceito de cloud computing é relacionado ao conceito de grid
computing, que representa vários computadores ligados por
acoplamento. Neste conceito a recursão é escalonada dependendo
da necessidade do usuário, não necessitando a aquisição
antecipada de novos recursos e assim reduzindo custos
desnecessários.
43
Este ambiente é criado utilizando uma imensa rede de
computadores, tanto físicos quanto virtuais, isso seria igual
a ter recursos “infinitos” como capacidade de processamento,
memória, armazenamento, aplicações e serviços.
Esse conceito é a virtualização do data center, por isso
algumas empresas conseguem minimizar consideravelmente seus
investimentos em uma possível compra de um data center, a figura
11 abaixo mostra a complexidade de um data center.
Figura 10 - Sala onde se abriga um Data Center
Empresas como Microsoft, Google e Amazon criaram grandes
centros computacionais, entrando no ramo de venda de serviços
de computação em nuvem, como máquinas virtuais, base de dados,
44
servidores de websites, armazenamentos de arquivos entre outros
serviços.
A computação em nuvens deve crescer gradativamente nos
próximos anos. A necessidade de infraestruturas cada vez mais
poderosas faz com que esses serviços possam ser escalonados a
qualquer momento, tendo seu custo muito menor do que a
aquisição de novos hardwares, e até mesmo softwares.
Empresas podem reduzir sua demanda em infraestrutura, pois
podem obter uma elasticidade para aumentar ou diminuir seu
“poder computacional”, conforme as necessidades existentes no
momento. Em muitas destas empresas que fornecem esses
serviços, isso é feito em realtime, às vezes podendo ser
colocadas no próprio algoritmo da aplicação, para se expandir
caso seja necessário, isso representa ter a capacidade pelo
que é usado, desta forma pagando pelo que realmente é
necessário e assim diminuindo o espaço físico para data center e
o custo com energia elétrica e refrigeração, além da mão de
obra para manutenção, reduzindo assim significativamente o
custo com a operação de TI.
Essa mudança não vai ocorrer de maneira simples, ou seja,
do dia para noite, mas é possível ter a computação em nuvens
associada à infraestrutura que a empresa já possui. Grandes
empresas ainda têm receio de usar recursos fora do seu
ambiente, muitas vezes por medo do roubo de informações
confidenciais, por isso empresas do ramo da computação em
nuvens estão investindo em segurança da informação para
fornecer um ambiente seguro e garantir um serviço de qualidade
e confiabilidade que possa ser adotado por grandes empresas.
45
Com a evolução da tecnologia, precisa-se cada vez mais
aumentar a capacidade do Data Center, para que suporte aplicações
e serviços. Também com a globalização as empresas estão muitas
vezes em espaços físicos espalhados pelo mundo, necessitando
que a informação seja em realtime.
Assim um novo modelo de gerenciamento de informação
precisa ser implementado, é onde entra a computação em nuvens,
que pode facilitar a conexão entre essas informações, dados,
aplicações e serviços. Migrar totalmente para o ambiente em
nuvem ainda não é fácil, mesmo que a empresa tenha um processo
rodando em um ambiente físico, para migrar para o ambiente em
nuvem essas programações devem ser escritas de maneira
diferente, ou seja, pensando no ambiente em nuvem e não mais
feitos pensando no ambiente físico e estático.
A nuvem liga computadores diferentes, com sistemas
operacionais distintos, trabalhando em conjunto como se fossem
um único data center. Essa integração é algo difícil e complexo,
que com a ajuda de grandes empresas se torna possível e
acessível a qualquer usuário. Abaixo a figura 12 exemplifica o
conceito cloud computing.
46
Figura 11 - Esquema de funcionamento do cloud computing
2.2.1 Tipologia
A computação em nuvem pode ser dividida em sete tipos ou
grupos, que são:
IaaS
47
Infrastructure as a Service, utiliza uma pequena parte do total de
um servidor, geralmente se adequando às necessidades do
usuário.
PaaS
Plataform as a Service, utiliza apenas uma plataforma como banco
de dados ou web service, um exemplo o Windows Azure.
DevaaS
Development as a Service as ferramentas de desenvolvimento
aparecem no cloud computing como ferramentas compartilhadas,
ferramentas de desenvolvimento web-based e serviços baseados em
mashup.
SaaS
Software as a Service, usa um software em regime de utilização
web, exemplo Google Docs, Microsoft SharePoint Online.
CaaS
48
Communication as a Service é o uso de uma solução de
Comunicação Unificada hospedada em Data Center do provedor ou
fabricante um exemplo o Microsoft Lync.
EaaS
Everything as a Service se utiliza tudo, infraestrutura,
plataformas, software, suporte, enfim, o que envolve T.I.C.
(Tecnologia da Informação e Comunicação) como um Serviço.
DBaas
Data Base as a Service funciona utilizando a parte de servidores
de banco de dados como serviço.
2.2.2 Modelos de implantação
Os modelos de implantação de cloud computing são
determinados, a partir da necessidade de um usuário na sua
infraestrutura de TI. A limitação de usuários que conseguem
acessar certos dados pode ser um fator determinante na escolha
de um modelo.
Privado
Esse modelo é elaborado para atender apenas um usuário ou
empresa, assim se consegue ter controle total sobre o que está
sendo executado dentro da nuvem. Em geral o modelo privado
necessita de um data center privado também.
49
Público
A nuvem pública permite que qualquer usuário consiga
executar suas aplicações dentro dela. Se encontrando em um
espaço muito bem doutrinado em quesitos como segurança, este
tipo de modelo pode ser muito útil para empresas que
disponibilizam este tipo de serviço.
Comunidade
A infra-estrutura de nuvem é compartilhada por diversas
organizações e suporta uma comunidade específica, que partilha
as preocupações por exemplo, a missão, os requisitos de
segurança, política e considerações sobre o cumprimento. Pode
ser administrado por organizações ou por um terceiro e pode
existir localmente ou remotamente.
Híbrido
Nas nuvens híbridas tem-se uma combinação dos modelos de
nuvens públicas e privadas, permitindo que uma nuvem privada
possa ter seus recursos ampliados a partir de uma reserva de
recursos em uma nuvem pública. Essa característica possui a
vantagem de manter os níveis de serviço, mesmo que haja
flutuações rápidas na necessidade dos recursos. A conexão
entre as nuvens pública e privada pode ser usada até mesmo em
50
tarefas periódicas, que são mais facilmente implementadas nas
nuvens públicas, por exemplo.
2.2.3 Windows Azure
A Microsoft criou a plataforma Windows Azure, que possui
recurso para computação, hospedagem de aplicação,
gerenciamento e armazenamento de dados de alta escalabilidade.
Esses recursos podem ser utilizados por aplicações
hospedadas no próprio Windows Azure, que permite também acesso
a aplicações hospedadas em ambiente local, criando soluções
hibridas. O Windows Azure possui recursos para diferente
ambientes de desenvolvimento, como Visual Studio e .NET,
Eclipse, PHP, PYTHON e JAVA.
Para o desenvolvimento com Windows Azure a Microsoft
dispõe de um SDK (Software Development Kit) de ferramentas para o
desenvolvimento, será preciso baixar esse pacote de
ferramentas e instalá-lo antes de começar o desenvolvimento
das aplicações necessárias para a solução.
2.2.3.1 Modelo de Roles
O Windows Azure Service trabalha com isolamento entre
processos, usando componentes chamados de Roles. Uma solução
pode ser composta de diversas Roles e essas podem ter diversos
endpoints para comunicação interna ou externa, utilizando
protocolos de comunicação como HTTP, HTTPS. E cada Role pode
ter múltiplas instâncias, para que isso aconteça o projeto
deve ter configurações especificas que indicam a descrição do
51
serviço, tipo de roles e número de instâncias. Existem três
tipos de Role, as quais serão detalhadas a seguir:
Web Role
Web Role é responsável pela hospedagem da aplicação web e
de serviços como WebService que a Microsoft fornece como
WCF(Windows Communication Foundation).
Worker Role
Worker Role é executável e funciona como um serviço, que
consome mensagens de uma fila para executar um determinado
processo, com isso ganhando desempenho, pois os processos
rodam em paralelo que cada instância pode executar ao mesmo
tempo, tendo seu próprio recurso de programação e sua própria
memória para execução.
VM Role
VM Role cria uma máquina virtual customizada, contendo a
configuração necessária que o usuário precisa. A mesma é
responsável pela sua criação e configuração podendo escolher a
quantidade de core e memória necessários, além do próprio
sistema operacional e software que serão usados pagando somente
o que é usado.
52
Arquitetura de aplicação típica para o Windows Azure,
ilustrando a comunicação através de endpoints e tipos do Azure
Storage (blobs, tables, queues) é mostrada na figura 13.
Figura 12 - Funcionamento do Windows Azure
2.3 Website
O conceito de website ou site é um conjunto de várias
páginas web interligadas que são acessadas pelo protocolo HTTP
da internet. Existem diversos tipos de linguagens que são
usadas para criar um site, como o HTML, e no ramo do mercado
53
mobile cresce o número de aplicações que rodam no browser do
sistema operacional do aparelho.
Normalmente os sites são escritos ou apenas convertidos
para HTML, que depois um software chamado browser interpreta e
gera a visualização ao usuário. Além do HTML, linguagens como
o PHP, ASP, JSP também conseguem programar e criar um site. Além
da ferramenta de criação, existem os servidores e banco de
dados dependendo do objetivo do seu funcionamento.
2.3.1 HTML
Abreviação da expressão inglesa Hiper Text Markup Language, o
HTML foi criado por Tim Berners-Lee para que ele conseguisse
resolver um problema particular. Trabalhando ele percebeu que
precisava fazer a comunicação de suas pesquisas para seu grupo
de colaboradores.
Obtido a partir da fusão de duas tecnologias a HyTime e
SGML, o HTML é interpretado por um browser podendo ser escrito e
programado em um editor de texto comum, como o bloco de notas
da Microsoft e o TextEdit do Macintosh, porém no mercado
existem algumas opções próprias de IDE para desenvolvimento da
linguagem. Um desenvolvimento fundamental aconteceu em Julho
de 1992 com a liberação da biblioteca de desenvolvimento para
WWW (World Wide Web). Foi assim que deu origem à construção de
vários browsers e servidores que tornaram a WEB viável. Um
desses foi o Mosaic, o primeiro browser multiplataforma, que
explorava completamente a capacidade de hipermídia da WEB.
54
O HTML tem sido desenvolvido com a visão de que todos os
equipamentos fossem capazes de usar a informação da Web, para
que não aconteça nem uma incompatibilidade com monitor de
diferentes resoluções ou sistemas de áudio diferentes.
2.3.2 ASP .Net
ASP.NET é uma plataforma da Microsoft para o
desenvolvimento de aplicações Web e é o sucessor da tecnologia
ASP. Capaz de criar páginas dinâmicas baseando-se no
Framework .NET, por isso aplicações para essa plataforma podem
ser escritas em várias linguagens, como C# e Visual
Basic .NET.
Em todas as linguagens para Web o ASP.NET possui o
beneficio de ser seguro e ter um ótimo desempenho. Existem
três tipos de modelos de desenvolvimento, são eles:
Web Pages
MVC ( Model View Controller)
Web Forms
Abaixo a figura 15 exemplifica um ciclo de vida de uma
aplicação feita com o ASP .NET.
55
Figura 13 - Ciclo de vida do ASP.NETFonte: http://sourcecode-world.blogspot.com.br/2011/08/aspnet-
page-event-life-cycle.html
2.4 Web Service
Web service é utilizada na integração de sistemas e na
comunicação entre aplicações diferentes. Com isto é possível
que novas aplicações possam se comunicar com aquelas que já
existem e que sistemas desenvolvidos em plataformas diferentes
sejam compatíveis. Também permite às aplicações enviar e
receber dados em formato XML. Cada aplicação pode rodar com
sua própria linguagem de programação, que é traduzida para o
formato XML.
A Web service pode trazer agilidade para os processos e
eficiência na comunicação. Toda e qualquer comunicação entre
56
sistemas é dinâmica e segura. Essencialmente, a Web Service faz
com que os recursos da aplicação do software estejam disponíveis
sobre a rede de uma forma normalizada. Existe uma grande
motivação sobre a tecnologia Web Service, pois possibilita que
diferentes aplicações comuniquem entre si e utilizem recursos
diferentes.
Ao usar a Web Service, uma aplicação pode invocar outra para
efetuar tarefas simples ou complexas mesmo que as duas
aplicações estejam em diferentes sistemas e escritas em
linguagens diferentes. Assim os recursos estarão disponíveis
para qualquer aplicação cliente consiga operar e extrair os
recursos desse serviço.
3 Requisitos
Após todas as tecnologias terem sido abordadas, pode-se
então fazer uma analise sobre a proposta desse trabalho. O
trabalho pode ser dividido em vários tópicos que foi nomeado
como requisitos e cada um atenderá alguma função.
O aplicativo no começo do plano de ação foi pensado para
atender diversos tipos de pedidos de serviços. Entre eles
estão o serviço de entrega de comida, serviço de táxi e até
mesmo a simples procura por algum estabelecimento que poderia
fornecer algo o qual os usuários buscassem.
A partir de análise de aplicativos disponíveis no
mercado,como o Ifood, o projeto foi desenvolvido e pensado para
atender um mercado não tão abrangente, mas local. Ao observar
essas aplicações foi notável o atendimento mais veloz e
57
completo apenas em grandes capitais. A idéia de mobilizar
serviços dentro do seu próprio bairro seria uma idéia não só
boa na visão de usuário, mas também na visão do empreendedor
que poderia abranger amplamente seus negócios.
Nesse requisito proposto, a intenção é rodar essa
aplicação de forma simples e prática para que o serviço de
pedido consiga funcionar. A idéia é conseguir a interação do
usuário que baixou esse aplicativo com o fornecedor do
serviço.
Esse serviço primeiramente será pensado para atender
lanchonetes e pizzarias da região, mas pode se estender de
acordo com o que o mercado pedir. Dentro de cada
estabelecimento cadastrado será incluído o seu cardápio o qual
o cliente conseguirá acessá-lo com seu smartphone, abaixo será
exemplificada a funcionalidade de cada requisito.
Requisito 1
O requisito 1, o qual será apresentado como protótipo,
conterá:
Opções de lanches e pizzas
Cadastro de lanchonetes e pizzarias
Visualização do cardápio de cada estabelecimento
58
Efetuar o pedido
Interface web para o estabelecimento
Confirmação do pedido
Basicamente esse será o processo, o usuário conseguirá ter
acesso aos produtos do estabelecimento e fazer seu pedido,
informando endereço de entrega, troco e observações sobre
bebidas ou acréscimo e decréscimo de ingredientes.
Neste módulo não será efetuada a compra de forma online e
também a localização via GPS (Global Position System).
Requisito 2
Neste requisito podem ser acrescentadas várias tecnologias
que muitos smartphones já possuem no mercado, além de ser uma
idéia que no futuro possa se destacar como um projeto de
graduação ou até mesmo um negócio com grandes possibilidades
de sucesso. Abaixo serão destacados alguns aspectos que podem
ser melhorados a partir da base do módulo 1:
Localização via GPS
Compra online (Através de cartões de créditos,
descontos em conta e outros).
Opções de compartilhamento em redes sociais
Cardápio interativo
Ranking de acordo com opiniões de compradores
Avaliação do serviço de entrega
59
Contador de tempo de aceitação do pedido e entrega ao
cliente
Além dessas facilidades, a imaginação pode fluir para
atender ainda mais o usuário expandindo os horizontes com mais
tecnologias.
Requisito 3
No requisito 3 parte da expansão da área que esse
aplicativo poderá atuar, a principio atenderá serviço de
estabelecimentos alimentícios, mas poderá atender outras áreas
de negócio também. Abaixo algumas melhorias que podem ser
feitas neste módulo:
Serviço de táxi
Serviço de oficinas mecânicas
Bares e casas noturnas
Pontos turísticos
Compra de convites
Esses são alguns dos serviços que através do módulo 1
podem ser adicionados pois o principio de atendimento é o
mesmo. Tudo isso para trazer comodidade e acessibilidade ao
usuário do aplicativo,
Requisito 4
60
Aqui a aplicação já está funcionando com todas as
tecnologias que um aparelho que tenha Android possa oferecer.
Porém aqui se pode abrir um leque de opções para atender
outros sistemas operacionais, a oportunidade que o mercado
abre é imensa.
Expandir essa aplicação a dispositivos com iOS, Symbian,
Windows Phone, Blackberry e outros pode ser uma boa
oportunidade para ascensão no mercado de aplicações. Além de
sistemas operacionais de smartphones, essa idéia também pode ser
implementada em browser para acesso em casa em um PC. As
possibilidades tendem a aumentar com a infinidade de
benefícios que o aplicativo pode fornecer a população, podendo
lançar uma nova forma de relacionamento entre serviços e
cliente.
4 Solução
Neste capitulo será exemplificado como foi feito e quais
tecnologias foram utilizadas para o desenvolvimento do
aplicativo atendendo os requisitos 1. Para que sejam atendidas
as recomendações, serão criadas duas aplicações a mobile e a do
cliente ou estabelecimento.
O módulo do usuário mobile consiste em ele ter a opção de
escolher qual tipo de comércio deseja. Nessa versão somente
pizzarias e lanchonetes são atendidas, o usuário poderá
61
escolher qual o estabelecimento desejar e os produtos que são
fornecidos, informando seu endereço e tendo a confirmação do
pedido o produto será entregue. Na interface do local onde
será feito o lanche ou a pizza, o usuário tem a opção de
incluir pedidos, excluir pedidos e fazer cadastro de produtos.
Esta aplicação será feita com cloud computing, usando o
Windows Azure, por ter uma interface fácil de uso e todas as
funcionalidades necessárias na elaboração do projeto. A
interface do usuário será feita para sistema operacional
Android, mas existe a possibilidade de que seja desenvolvido
para iOS ou até mesmo Windows Phone, pois todo processamento
dos pedidos ou outras funcionalidades serão efetuadas dentro
da cloud.
A comunicação entre o cloud e o Android será feita através
de um web service. O modo cliente será desenvolvido em ASP.
NET, ou seja, uma aplicação web sem a necessidade de ter nada
instalado no computador do cliente. Foi usado a base de dados
da Microsoft, o SQLServer que permite ter uma base de dados
única para todos os clientes.
Este banco foi criado usando 3 tabelas, Empresas, Produtos
e Pedidos. Na tabela empresa esta todo o cadastro do cliente
estabelecimento, ao qual contem o id da empresa, o nome do
estabelecimento, endereço, telefone, login, senha, tipo de
estabelecimento (lanchonete ou pizzaria) e nome do responsável
pelo estabelecimento. Na tabela de produtos esta o id do
produto, o nome do produto, descrição do produto, preço e uma
coluna com a chave estrangeira do estabelecimento.
62
Na tabela pedidos tem o id do pedido, nome do cliente que
efetuou o pedido, o pedido feito, endereço de entrega, troco,
observações, identificação se o pedido foi aceito, uma coluna
com a chave estrangeira do estabelecimento e uma coluna onde
fica registrado o id para executar o push ou seja informações
para o cliente.
Figura 14 - Gerenciamento Banco de Dados
Para desenvolver o modo do usuário será desenvolvida uma
aplicação nativa para Android, essa aplicação será basicamente
só interface, pois como já mencionado todo o processamento
será feito no cloud. Abaixo a figura ilustra a instalação do
SDK para Android, utilizando o Eclipse:
63
Figura 15 - Instalando SDK Android
Foi criada uma aplicação onde rodará a interface da
aplicação, esta interface será divida em 5 activity. A primeira,
conterá somente a tela de inicialização da aplicação, a
segunda os botões para a escolha entre lanchonete e pizzaria,
a terceira para escolha dos estabelecimentos relacionado á
opção escolhida, a quarta para escolha dos produtos, e a
quinta para finalizar a venda onde será colocado o endereço. A
figura 17 mostra uma das activities criada no Eclipse.
64
Figura 16 - Tela mostra umas das activity sendo criada no Eclipse
O designer das activities é feito por um arquivo XML, uma
linguagem de marcação assim como o HTML. A figura 18 mostra um
exemplo desse arquivo XML.
65
Figura 17 - Arquivo XML gerado que mostra as caracteríticas de uma activityToda a conexão android com o cloud foi feito por webservice,
este usa o protocolo SOAP para comunicação, esse protocolo é na
verdade um XML e sua estrutura é dividida em duas parte o XML
de envio que contém uma tag inicial para identificar que é um
arquivo do mesmo formato, a tag soap que contem o nome do método
solicitado e dentro dessa existe outras para cada parâmetro
que contenha esse método.
O XML de resposta, a segunda parte, contem uma tag para
identificar que esse arquivo é do tipo XML também a tag soap
onde se encontra a resposta do webservice para o pedido
solicitado.
Podemos ver um exemplo deste XML na figura 18.
66
Figura 18 - Exemplo de arquivo SOAP
Os pedidos são enviados ao cloud por este WebService, foi
usado um WCF (Windows Communication Foundation) que registra uma
mensagem, em uma fila chamada queue, essa queue do Windows
Azure serve para armazenar um grande número de mensagens que
podem ser acessadas de qualquer lugar do mundo através de
chamadas autenticadas usando HTTP ou HTTPS. Essas mensagens
serão lidas através de Worker Role.
A mensagem de confirmação chegará ao Android via push, que
é aquela informação que o celular recebe mesmo quando a
aplicação não está sendo executada, com isso diminui o consumo
de bateria e não necessita que o usuário fique entrando no
aplicativo para saber o status do seu pedido.
67
A confirmação do pedido é importante, pois garante ao
usuário que seu pedido será entregue. Para implementar o push
será utilizado o Google cloud messaging ou GCM. Abaixo a figura
19 exemplifica o funcionamento dessa tecnologia.
Figura 18 - Funcionamento do Google cloud messagingFonte:http://www.mobiltec.com.br/blog/index.php/
notificacoes-push-em-android/
Funcionamento do GCM
68
A aplicação quando iniciada faz seu registro no GCM
para vincular o dispositivo para aquela aplicação;
O registro gera um ID que é enviado de volta ao
dispositivo;
O dispositivo registra o ID no servidor da aplicação.
Outra aplicação pode criar um evento para seu user
account vinculado a sua aplicação;
O servidor de aplicação então envia a mensagem ao GCM
para que ele o processe e envie ao seu destinatário;
Uma mensagem push é enviada ao dispositivo ao qual
pertence.
Para desenvolver o modo cliente será criada uma aplicação
web, que permitirá ao cliente administrar os pedidos feitos ao
seu estabelecimento, poderá também gerenciar seus produtos,
criando, editando ou excluindo.
Neste trabalho a IDE Visual Studio 2010 da Microsoft será
utilizada para desenvolver a aplicação em ASP.NET. Em um mesmo
projeto para o ambiente Windows Azure, estarão contidas as
três aplicações necessárias para o funcionamento do
aplicativo, um WCF, uma Web Role e um Worker Role. Para começar a
desenvolver o projeto é necessária a instalação do SDK do
Windows Azure. A figura 20 abaixo mostra a tela que se inicia
para a instalação do SDK no Visual Studio.
69
Figura 19 - Instalação do SDK do Windows Azure
Após instalação do SDK, será criado um novo projeto no
Visual Studio, este projeto deve incluir os WCFService, Web Role e
os Worker Role, conforme mostra a figura 21.
70
Figura 20 - Criação das Roles dentro do Azure
Para desenvolver a aplicação web foram criadas duas
paginas uma para o cliente fazer o login, com isso identificando
qual a empresa esta acessando a aplicação, e a segunda terá
uma área dividida por abas, uma onde existirá um grid onde são
exibidos os pedidos realizados para aquela empresa, e na outra
aba a área que o cliente cria, edita e exclui os produtos a
venda.
A worker role é iniciada e permanece ativa por todo o tempo,
portanto tão importante quanto lógica do processamento é a
lógica de espera quando não há o que processar para não
sobrecarregar o servidor e desperdiçar recursos. Esta worker role
será um processo assíncrono que irá processar as mensagens que
estiverem na queue, criando um pedido que o cliente visualizará
no front end na aplicação cliente.
71
O worker role tem dois métodos básicos, o start e o stop. O
método start será executado quando a instância for criada, ela
possui um loop infinito que ficará processando em background
onde o cliente não conseguirá visualizar, é dentro desse loop
que ficará o método de ler a queue e processar, este método é
obrigatório, o método stop não é obrigatório mas é usado para
quando for encerrada a instancia e pode conter qualquer ação
necessária para quando for finalizada. A figura 22 mostra o
código do método start/stop.
Figura 21 - Método start e stopPodem ser criadas mais instâncias do mesmo worker role
conforme necessidade, essa ação pode ser feita manual ou mesmo
dentro do código, fazendo isso caso o tamanho da fila de
espera atinja um tamanho predeterminado, neste worker role foi
usado o processo manual, pois como ele é pago por tempo de
processamento, aumentar automático pode causar um custo
desnecessário ao projeto.
72
Analisando todo o processo para o desenvolvimento do
protótipo o diagrama exemplifica como funciona o processo de
recebimento e envio dos pedidos, utilizando as tecnologias que
foram abordadas. A figura 22 deixa claro e visível a
arquitetura do aplicativo.
Figura 22 - Diagrama de funcionamento do protótipo
Na figura 23 as telas e sua sequência para a escolha do
lanche e o envio do pedido para o cliente.
74
6 Conclusão
Após o término deste trabalho, seu objetivo proposto foi
atingido, ou seja, a criação do módulo 1. O que foi
considerado um protótipo saiu como esperado e trouxe ao
projeto uma base sólida para intervenções futuras.
Através dos conhecimentos adquiridos durante todo o
processo, pode-se verificar que através de muito esforço ele
pode ser aprimorado e utilizado até mesmo para abertura de um
negócio.
As dificuldades existirão para que consigam atender todos
os aspectos propostos, diante dos módulos estipulados neste
texto. Informação para se incluir na área são abundantes,
porém alguns obstáculos podem aparecer diante de algum hardware
necessário ou técnicas a serem aplicadas.
A aplicação foi feita atendendo uma proposta do trabalho,
para possíveis melhorias em projetos futuros, a sequência e
ideias que estão contidas no capitulo três podem ser adaptadas
e garantir o sucesso em outras empreitadas.
75
Referências
AMARAL, Bruno do. Conheça os 6 principais sistemas
operacionais de smartphones. PC Magazine, 12 jan. 2009.
Disponível em: <http://pcmag.uol.com.br/conteudo.php?id=810>.
Acessado em 20 de setembro de 2013
Android Architecture. http://code.google.com/android/what-is-
android.html.
Acessado em 29 de setembro de 2007.
BARBIERI, A. (24 de outubro 2013). Construindo aplicações leves para
servidores na nuvem. Acesso em 26 de outubro de 2013, disponível
em http://imasters.com.br/linguagens/java/construindo-
aplicacoes-leves-para-servidores-na-nuvem/
76
Brooks, C. A (2002). An introduction to Web Services. 2002
Ed Burnette (2008). Hello, Android: Introducing Google’s Mobile Development
Plataform. Estados Unidos da América
GOOGLE. Google Developers Channel. Disponível em:
<http://www.youtube.com/user/GoogleDevelopers>. Acesso em: 6
agosto 2009.
Introduction to XML Schema. Disponível em: http://
www.w3schools.com/schema/schema_intro.asp. Acessado
em 02 de outubro de 2013.
MEDNIEKS, Z., DORNIN, L., MEIKE, G., & NAKAMURA, M (2012).
Programando o Android. São Paulo, Brasil: Novatec Editora
MEIER, R (2012). Professional Android 4 Application Development. USA:
Wrox.
Open Handset Alliance. http://www.openhandsetalliance.com/.
Acessado em 26 de setembro de 2013.
Vogels, W.(2003) Web Services Are Not Distributed Objetcts. In: Web Service Tra
ck of IEEE Internet Computing. 2003.
WSDL and UDDI. Disponível em: http://www.w3schools.com/wsdl/
wsdl_uddi.asp. Acessada em 02 de outubro de 2007.