UNIVERSIDADE DO SUL DE SANTA CATARINA JONATHAN HENRIQUE DE SOUZA LEONARDO AMORIM RAMOS SOLUÇÃO PARA BUSCA E CHAMADAS DE TÁXIS UTILIZANDO A PLATAFORMA ANDROID Palhoça 2011 JONATHAN HENRIQUE DE SOUZA LEONARDO AMORIM RAMOS SOLUÇÃO PARA BUSCA E CHAMADAS DE TÁXIS UTILIZANDO A PLATAFORMA ANDROID Trabalho de Conclusão de Curso apresentado ao Curso de Graduação em Sistemas de Informação da Universidade do Sul de Santa Catarina, como requisito parcial à obtenção do título de Bacharel em Sistemas de Informação. Orientador: Prof. Saulo Popov Zambiasi, Msc. Palhoça 2011 JONATHAN HENRIQUE DE SOUZA LEONARDO AMORIM RAMOS SOLUÇÃO PARA BUSCA E CHAMADAS DE TÁXIS UTILIZANDO A PLATAFORMA ANDROID Este Trabalho de Conclusão de Curso foi julgado adequado à obtenção do título de Bacharel em Sistemas de Informação e aprovado em sua forma final pelo Curso de Graduação em Sistemas de Informação da Universidade do Sul de Santa Catarina. Palhoça, 23 de novembro de 2011. ______________________________________________________ Professor e orientador Saulo Popov Zambiasi, Msc. Universidade do Sul de Santa Catarina ______________________________________________________ Profa. Vera Rejane Niedersberg Schuhmacher, MEng. Universidade do Sul de Santa Catarina ______________________________________________________ Profa. Maria Inés Castiñeira, Dra. Universidade do Sul de Santa Catarina Dedicamos este trabalho a nossos pais que sempre estiveram ao nosso lado, deram-nos amor e compreensão em todos os momentos e ajudaram a construir este projeto que muda nossas vidas. Ao professor Saulo Popov Zambiasi pela ajuda e atenção ao orientar nosso trabalho. AGRADECIMENTOS Às nossas famílias, fonte inspiradora, na qual nos espelhamos e tomamos como exemplo. Ao professor Saulo Popov Zambiasi, nosso orientador, pelas contribuições, estímulo, atenção e orientação essenciais para o sucesso deste trabalho. A todos os professores que passaram ao longo da nossa caminhada acadêmica. Aos amigos, pelos momentos de distração, alegria e ajuda. Vocês foram essenciais! “O sucesso nasce do querer, da determinação e persistência em se chegar a um objetivo. Mesmo não atingindo o alvo, quem busca e vence obstáculos, no mínimo, fará coisas admiráveis.” (José de Alencar). RESUMO Requisitar um serviço de táxi pode ser uma tarefa trabalhosa se não houver informação disponível no momento certo. Para turistas ou pessoas que viajam com regularidade, esta atividade passou a ser mais difícil. A crescente evolução dos celulares nos últimos anos possibilitou o surgimento de um novo mercado de aplicativos para dispositivos móveis, no qual os próprios dispositivos passaram a auxiliar as atividades diárias de seu usuário, em qualquer lugar. Neste contexto, este trabalho propõe um protótipo de sistema de informação para dispositivos móveis, que utilizam a plataforma Android, capaz de tornar o processo de requisição de serviço de táxi mais fácil e ágil. Por meio de um receptor de sinais GPS instalado no celular, o usuário pode visualizar a sua localização em um mapa provido pelo serviço de mapas da Google, o Google Maps. A localização dos pontos de táxis mais próximos do usuário são plotados no mapa. Com poucos toques na tela, o usuário pode ter acesso a diversas informações de um determinado ponto de táxi, podendo, também, realizar chamadas telefônicas, para um ponto de táxi de seu interesse, ou requisitá-lo através de mensagens de texto. Com o objetivo de provar a eficiência do sistema desenvolvido, realizaram-se avaliações juntamente com usuários finais utilizando questionários. Os resultados mostraram que o protótipo desenvolvido atingiu o seu objetivo de criar um serviço via dispositivos móveis que forneça mais facilidades para os usuários de táxis. Palavras-chave: Android. GPS. Google Maps. Sistema de Informação Geográfico. ABSTRACT Ordering a taxi service can be a laborious task if there is no information available at the right time. For tourists or people who travel regularly, this activity has become more difficult. The growing trend of mobile phones in recent years has enabled the emergence of a new market for mobile applications, where devices have their own daily activities to assist its user, anywhere. In this context, this paper aims to propose a prototype information system for mobile devices that use the platform Android able to make the process of requesting taxi service easier and faster. Through a GPS signal receiver installed on the phone, the user can view your location on a map provided by Google Maps service, Google Maps. The locations of taxi stands closer to the user are plotted on the map. With a few taps on the screen, the user can access various information for a particular taxi stand, and can also make phone calls, or through text messages to a taxi stand in your best interest. In order to prove the efficiency of the system developed, evaluations were carried out with end users through questionnaires. The results showed that the prototype achieved its goal of creating a service via mobile devices to provide better facilities for users of taxis. Keywords: Android. GPS. Google Maps. Geographic Information System. LISTA DE ILUSTRAÇÕES Figura 1 – Telas do sistema cab4me.........................................................................................22 Figura 2 – Tela do sistema Tarifa de Táxi................................................................................23 Figura 3 – Tela do sistema myTaxi. .........................................................................................24 Figura 4 – Tela do sistema Taxi Magic. ...................................................................................25 Figura 5 – Logotipo do Android...............................................................................................26 Figura 6 – T-Mobile G1. ..........................................................................................................27 Figura 7 – Arquitetura da plataforma Android.........................................................................28 Figura 8 – Exemplo de activity.................................................................................................32 Figura 9 – Ciclo de vida de uma Activity.................................................................................32 Figura 10 – Distribuição de satélites GPS. ...............................................................................36 Figura 11 – Segmento de controle do GPS...............................................................................37 Figura 12 – Exemplos de receptores GPS ................................................................................38 Figura 13 – Processo de trilateração entre satélites..................................................................40 Figura 14 – Tipos de projeções quando à sua superfície..........................................................45 Figura 15 – Latitude. ................................................................................................................46 Figura 16 – Longitude. .............................................................................................................47 Figura 17 – Fórmula matemática da escala. .............................................................................48 Figura 18 – Exemplos de escalas..............................................................................................48 Figura 19 – Interface do serviço Google Maps. .......................................................................50 Figura 20 – Funcionalidade vista da rua do Google Maps. ......................................................50 Figura 21 – Arquitetura da Solução..........................................................................................55 Figura 22 – Atores do sistema. .................................................................................................58 Figura 23 – Protótipo da tela principal. ....................................................................................68 Figura 24 – Protótipo da tela de listagem de pontos de táxis. ..................................................69 Figura 25 – Protótipo da tela de informações de um ponto de táxi..........................................70 Figura 26 – Protótipo da camada de administração..................................................................71 Figura 27 – Diagrama de caso de uso – Ator Usuário..............................................................72 Figura 28 – Diagrama de caso de uso - Ator Administrador....................................................73 Figura 29 – Diagrama de sequência para o CSU11..................................................................75 Figura 30 – Diagrama de classe – Classes de modelo..............................................................76 Figura 31 – Diagrama de classe – Controladores. ....................................................................76 Figura 32 – Diagrama de utilização..........................................................................................78 Figura 33 – Tecnologias e ferramentas utilizadas no sistema. .................................................80 Figura 34 – Módulo administrador – tela principal..................................................................87 Figura 35 – Módulo administrador – formulário de cadastro de ponto de táxi........................88 Figura 36 – Módulo cliente – tela principal. ............................................................................89 Figura 37 – Módulo cliente – tela de informações de um ponto de táxi. .................................90 Figura 38 – Módulo cliente – menu da tela de informações de um ponto de táxi....................91 Figura 39 – Módulo cliente – seleção de chamadas. ................................................................92 Figura 40 – Módulo cliente – chamada telefônica. ..................................................................93 Figura 41 - Módulo cliente – tela para enviar mensagem de texto...........................................94 Figura 42 – Módulo cliente – menu da tela principal...............................................................95 Figura 43 – Módulo cliente – tela de lista de favoritos. ...........................................................96 Figura 44 – Módulo cliente – tela de histórico de chamadas. ..................................................97 Figura 45 – Módulo cliente – cálculo de rota...........................................................................98 Figura 46 – Módulo cliente – tela de custos de uma corrida....................................................99 Figura 47 – Módulo cliente – tela de listagem de pontos de táxis mais próximos.................100 Figura 48 – Questionário – Resultados da pergunta 1............................................................102 Figura 49 – Questionário – Resultados da pergunta 2............................................................103 Figura 50 – Questionário – Resultados da pergunta 4............................................................103 Figura 51 – Questionário – Resultados da pergunta 5............................................................104 Figura 52 – Questionário – Resultados da pergunta 6............................................................105 Figura 53 – Questionário – Resultados da pergunta 7............................................................105 Figura 54 – Questionário – Resultados da pergunta 8............................................................106 Figura 55 – Questionário – Resultados da pergunta 9............................................................107 LISTA DE QUADROS Quadro 1 - Definições do ator Usuário.....................................................................................58 Quadro 2 - Definições do ator Administrador. .........................................................................59 Quadro 3 - Requisitos funcionais. ............................................................................................61 Quadro 4 - Requisitos não-funcionais – Usabilidade. ..............................................................62 Quadro 5 - Requisitos não-funcionais – Desempenho. ............................................................63 Quadro 6 - Requisitos não-funcionais – Operacionais. ............................................................63 Quadro 7 - Requisitos não-funcionais – Implementação..........................................................63 Quadro 8 - Requisitos não-funcionais – Arquitetura................................................................64 Quadro 9 - Regras de negócio. .................................................................................................66 Quadro 10 - Caso de uso CSU01 – Abrir mapa. ......................................................................74 Quadro 11 - Perguntas do questionário. .................................................................................101 Quadro 12 - Caso de uso CSU02 - Visualizar posição atual no mapa. ..................................122 Quadro 13 - Caso de uso CSU03 - Visualizar pontos de táxis através do mapa....................123 Quadro 14 - Caso de uso CSU04 - Visualizar lista de pontos de táxis próximos. .................124 Quadro 15 - Caso de uso CSU05 - Visualizar informações de pontos de táxis. ....................124 Quadro 17 - Caso de uso CSU06 - Visualizar histórico de chamadas. ..................................125 Quadro 18 - Caso de uso CSU07 - Gerenciar favoritos. ........................................................125 Quadro 19 - Caso de uso CSU08 - Calcular estimativa de preço de corrida..........................126 Quadro 20 - Caso de uso CSU09 - Realizar chamada............................................................127 Quadro 21 - Caso de uso CSU10 - Realizar chamada por telefone........................................127 Quadro 22 - Caso de uso CSU11 - Realizar chamada por SMS. ...........................................128 Quadro 23 - Caso de uso CSU12 - Cadastrar ponto de táxi. ..................................................128 Quadro 24 - Caso de uso CSU13 - Cadastrar ponto de táxi. ..................................................129 Quadro 25 - Caso de uso CSU14 - Remover ponto de táxi....................................................130 SUMÁRIO 1 INTRODUÇÃO ............................................................................................................................. 15 1.1 PROBLEMÁTICA .......................................................................................................................16 1.2 OBJETIVOS .................................................................................................................................17 1.2.1 Objetivo geral...........................................................................................................................18 1.2.2 Objetivos Específicos ...............................................................................................................18 1.3 JUSTIFICATIVA .........................................................................................................................18 1.4 ESTRUTURA DA MONOGRAFIA ............................................................................................19 2 REVISÃO BIBLIOGRÁFICA..................................................................................................... 21 2.1 ESTADO DA ARTE ....................................................................................................................21 2.1.1 cab4me ......................................................................................................................................21 2.1.2 Tarifa de Táxi...........................................................................................................................22 2.1.3 myTaxi ......................................................................................................................................23 2.1.4 Taxi Magic ................................................................................................................................24 2.2 2.2.1 ANDROID ....................................................................................................................................25 Arquitetura...............................................................................................................................28 2.2.1.1 Kernel..................................................................................................................................... 29 2.2.1.2 Bibliotecas.............................................................................................................................. 30 2.2.1.3 Runtime .................................................................................................................................. 30 2.2.1.4 Framework de aplicativos ...................................................................................................... 31 2.3 2.3.1 GPS ...............................................................................................................................................34 Segmentos .................................................................................................................................35 2.3.1.1 Segmento Espacial ................................................................................................................. 35 2.3.1.2 Segmento de Controle ............................................................................................................ 36 2.3.1.3 Segmento de Usuário ............................................................................................................. 37 2.3.2 Funcionamento.........................................................................................................................38 2.3.2.1 Modos de Operação................................................................................................................ 40 2.4 SISTEMAS DE INFORMAÇÕES GEOGRÁFICOS ..................................................................41 2.4.1 Definição ...................................................................................................................................41 2.4.2 Funções .....................................................................................................................................42 2.4.3 Cartografia ...............................................................................................................................42 2.4.3.1 Mapas ..................................................................................................................................... 43 2.4.3.2 Projeções ................................................................................................................................ 43 2.4.3.3 Sistemas de Coordenadas ....................................................................................................... 45 2.4.3.3.1 Latitude ................................................................................................................................46 2.4.3.3.2 Longitude .............................................................................................................................47 2.4.3.4 Escalas.................................................................................................................................... 47 2.5 2.5.1 GOOGLE MAPS ..........................................................................................................................49 Google Maps API .....................................................................................................................51 2.5.1.1 Google Geocoding API .......................................................................................................... 52 2.5.1.2 Google Direction API............................................................................................................. 52 3 MÉTODO....................................................................................................................................... 53 3.1 CARACTERIZAÇÃO DO TIPO DE PESQUISA .......................................................................53 3.2 ETAPAS .......................................................................................................................................54 3.3 ARQUITETURA DA SOLUÇÃO PROPOSTA ..........................................................................55 3.4 DELIMITAÇÕES.........................................................................................................................56 4 MODELAGEM DO SISTEMA ................................................................................................... 57 4.1 LINGUAGEM DE MODELAGEM UNIFICADA (UML)..........................................................57 4.2 IDENTIFICAÇÃO DOS ATORES ..............................................................................................57 4.3 REQUISITOS ...............................................................................................................................59 4.3.1 Requisitos funcionais ...............................................................................................................60 4.3.2 Requisitos não-funcionais........................................................................................................62 4.4 REGRAS DE NEGÓCIO .............................................................................................................65 4.5 PROTOTIPAÇÃO DAS TELAS..................................................................................................67 4.6 CASOS DE USO ..........................................................................................................................71 4.6.1 Diagrama de caso de uso .........................................................................................................72 4.6.2 Descrição dos casos de uso ......................................................................................................73 4.6.3 Diagrama de Sequência ...........................................................................................................74 4.6.4 Diagrama de Classe..................................................................................................................75 4.6.5 Diagrama de Utilização ...........................................................................................................77 5 DESENVOLVIMENTO ............................................................................................................... 79 5.1 TECNOLOGIAS E FERRAMENTAS.........................................................................................79 5.2 HISTÓRICO DO DESENVOLVIMENTO..................................................................................85 5.3 APRESENTAÇÃO DO SISTEMA ..............................................................................................86 5.3.1 Módulo administrador.............................................................................................................86 5.3.1.1 Tela principal ......................................................................................................................... 86 5.3.1.2 Cadastro de ponto de táxi ....................................................................................................... 87 5.3.2 Módulo cliente ..........................................................................................................................88 5.3.2.1 Tela principal ......................................................................................................................... 89 5.3.2.2 Informações de um ponto de táxi ........................................................................................... 90 5.3.2.3 Chamada telefônica ................................................................................................................ 91 5.3.2.4 Enviar mensagem de texto ..................................................................................................... 93 5.3.2.5 Lista de favoritos.................................................................................................................... 94 5.3.2.6 Histórico de chamadas ........................................................................................................... 96 5.3.2.7 Cálculo de rota ....................................................................................................................... 97 5.3.2.8 Listagem de pontos de táxis próximos ................................................................................... 99 5.4 5.4.1 5.5 AVALIAÇÃO.............................................................................................................................100 Interpretação dos resultados.................................................................................................102 CONSIDERAÇÕES ...................................................................................................................107 6 CONCLUSÕES E TRABALHOS FUTUROS.......................................................................... 109 6.1 CONCLUSÕES ..........................................................................................................................109 6.2 TRABALHOS FUTUROS .........................................................................................................110 REFERÊNCIAS ................................................................................................................................ 112 APÊNDICES...................................................................................................................................... 120 APÊNDICE A – CRONOGRAMA.................................................................................................. 121 APÊNDICE B – DESCRIÇÃO DOS CASOS DE USO ................................................................. 122 APÊNDICE C – RESULTADOS DOS QUESTIONÁRIOS ......................................................... 132 15 1 INTRODUÇÃO A mobilidade, em relação aos dispositivos eletrônicos, tornou-se fundamental na sociedade contemporânea. É notável a crescente utilização dos telefones celulares e as mudanças de como a sociedade se relaciona e compartilha dados entre si. De acordo com Taurion (2002), esta transformação deve-se, principalmente, à constante busca de informação, ocasionando a criação de novas tecnologias que visam estar disponíveis em locais fora dos nossos lares ou salas de trabalho. Portanto, é possível reconhecer que a necessidade do acesso à informação aumentou consideravelmente ao longo dos anos, e os celulares foram uns dos primeiros dispositivos eletrônicos a agregarem novas tecnologias devido a sua popularidade, e de, também, novas oportunidades. As facilidades, vantagens e preços acessíveis resultaram em um grande crescimento da procura por esta tecnologia. A Teleco (2011) divulgou que, em fevereiro de 2011, já haviam mais de 200 milhões de celulares no Brasil, ultrapassando a sua população absoluta, 185.712.713 habitantes, segundo o IBGE (2010a). Este cenário favorável impulsionou o mercado de aplicativos voltados para dispositivos móveis no país. Diversas operações feitas nestes aparelhos atualmente, como consultar o saldo do banco ou organizar uma agenda pessoal, já são realizadas facilmente por meio de celular. Uma grande quantidade de aplicativos é criada todos os dias para atender às mais diversas necessidades. A crescente evolução dos celulares nos últimos anos mudou drasticamente o modo de como os usuários interagem com o aparelho. Hanson (2007) relata que a comunicação sem-fio entre dispositivos eletrônicos permite que seus usuários trabalhem, socializem-se e interajam com outros em qualquer lugar que estejam. Grandes investimentos para aumentar o poder de processamento e a capacidade de armazenamento em memória dos celulares tornaram possível agregar novas funcionalidades para atrair os desejos dos consumidores. É perceptível esta evolução ser vista nos telefones celulares, já que, há alguns anos, os mesmos estavam restritos a somente realizar ligações telefônicas, hoje já é possível escutar músicas, assistir canais de televisão, ler livros, navegar pela Internet, visualizar emails, entre outras funcionalidades, tudo em um mesmo aparelho. Os celulares acabaram, também, agregando a função de fornecer a localização geográfica de seu usuário. A introdução desta tecnologia nos dispositivos móveis abriu portas para a vinda de serviços baseados na localização para os dispositivos móveis, mais 16 conhecidos como LBS1. Os sistemas LBS, de acordo a GSMA2 (2011, p. 12, tradução nossa), "são serviços [...] que fornecem aos seus usuários um conjunto de serviços ligados à localização do cliente". Exemplos de sistemas LBS são: busca de restaurantes ou hospitais mais próximos, rastreamento de veículos em tempo real, obter informações metrológicas do local, entre outros. Este novo tipo de interação com o seu usuário final tornou mais prático e simples a execução de tarefas rotineiras e custosas. O exemplo mais famoso de aplicação LBS é o Foursquare3, uma rede social em que seus usuários compartilham os locais que visitaram, podendo receber uma pontuação de acordo com a frequência em que utilizam o sistema. Em decorrência do alto crescimento das aplicações LBS, surgem novas soluções para problemas já existentes, como é o caso do transporte urbano. Silva e Mateus (2003) afirmam que o transporte é um recurso indispensável para que qualquer país possa se desenvolver. Porém, como comentam os autores, o crescimento desenfreado da frota de carros nos grandes centros urbanos limita este recurso, tornando relevante a busca e a inovação de novos meios de maximizar a facilidade de uso desta demanda que cresce cada dia mais. Entre as soluções possíveis está o uso do serviço de táxi. Como contribuição no sentido de fornecer informações às pessoas via seus dispositivos móveis, e em concordância com o contexto apresentado no texto acima, este trabalho busca modelar e desenvolver uma aplicação LBS para smartphones4 focada no subsídio e na facilidade às buscas e ao uso dos serviços de táxis como estratégia para melhorar a mobilidade urbana dos centros urbanos, utilizando tecnologias móveis como ferramenta para auxiliar o uso deste tipo de serviço. A premissa específica desse trabalho está baseada na sua facilidade de uso do sistema e no valor agregado oferecido aos seus usuários. 1.1 PROBLEMÁTICA Muitas pessoas executam suas atividades diárias, seja para lazer ou trabalho, em constante movimento. Seja para ir até ao local de trabalho ou para conhecer uma cidade, 1 Location Based Services – Serviços Baseados na Localização. 2 GSM Association – Associação de Operadoras de Comunicação móvel. 3 http://www.foursquare.com/ 4 Celulares com funcionalidades avançadas (e-mail, chat, acesso à Internet, etc.). 17 quando o deslocamento dessas pessoas se torna logo o suficiente para que ela não possa chegar a tempo no seu destino caminhando, surge a necessidade da utilização de algum meio de transporte motorizado. Para as pessoas que desejam conforto, segurança e flexibilidade, o uso do táxi, como meio de transporte, é uma boa opção. Contudo, apesar das facilidades oferecidas por este tipo de serviço, há de se notar, também, alguns problemas comuns por quem escolhe o táxi como opção de meio de transporte. Em geral, nota-se que, dependendo muito da cidade, dos serviços de táxis oferecidos e do horário da utilização, os seus usuários podem acabar tendo que esperar muito tempo até a chegada do motorista. Quando o serviço é requisitado em horário de pico, dias chuvosos, frios, o problema torna-se ainda maior. No ponto de vista dos motoristas, é difícil encontrar os seus clientes em locais desconhecidos pelos mesmos, o que pode forçá-los a conduzir os seus veículos sem passageiros (JIANXIN et al, 2009). A dificuldade ainda é maior quando o usuário está em viagem e não consegue dar referências suficientes para um taxista encontrá-lo. Em tempo, para realizar uma chamada a um táxi, é necessário, obrigatoriamente, conhecer o número do telefone de um ponto de táxi, uma informação quase sempre indisponível para quem realmente deseja. Há também a necessidade de chamar aquele taxista que se encontra mais próximo do cliente, a fim de realizar o embarque com maior rapidez. Pode, também, haver a preferência do usuário por táxis com determinadas características, como, por exemplo, ar-condicionado, televisão, adaptação para deficientes físicos, entre outros. O valor aproximado da corrida é outra informação importante para o cliente poder conhecer as melhores alternativas de serviços de táxis presentes no local. 1.2 OBJETIVOS Os objetivos deste trabalho estão divididos em: objetivo geral e objetivos específicos. 18 1.2.1 Objetivo geral O objetivo deste trabalho é modelar e desenvolver um protótipo de um aplicativo para smartphones com sistema operacional Android que permita ao usuário realizar buscas e chamadas de táxis, baseando-se na sua localidade, com o objetivo de tornar a requisição deste tipo de serviço mais rápido e eficiente. 1.2.2 Objetivos Específicos São objetivos específicos do projeto: obter conhecimentos sobre o estado da arte atual sobre sistemas de localização e buscas de serviços de transportes via Internet e smartphones; apresentar a modelagem do sistema utilizando a linguagem UML5; desenvolver um protótipo baseado na modelagem proposta; efetuar testes para avaliação do protótipo; apresentar os resultados alcançados. 1.3 JUSTIFICATIVA É notável a participação dos celulares e de outros dispositivos móveis nas atividades cotidianas da sociedade. De acordo com pesquisas da Gartner (2011), a venda de smartphones pelo mundo cresceu 96% no terceiro semestre de 2009. Uma enorme quantidade de aplicativos voltados a esta tecnologia são desenvolvidos para atender os mais variados perfis e necessidades. A PR Newswire (2011) relatou que o mercado de aplicativos móveis é estimado em 6,8 bilhões de dólares, no ano de 2010, com a previsão de crescer para 25 5 Unified Modeling Language – Linguagem de Modelagem Unificada 19 bilhões de dólares no ano de 2015. Este novo cenário possibilitou o surgimento de novas maneiras de acesso à informação e de iteração com outras pessoas. Todos os recursos oferecidos pelos celulares, aliados à sua popularidade e à facilidade, possibilitam a oportunidade para a criação de novas tecnologias para solucionar problemas comuns da sociedade. O sistema proposto por este trabalho visa a, principalmente, contribuir na agilidade ao acesso às informações sobre a localização de táxis mais próximos geograficamente de tal forma que possa ajudar na sua busca e solicitação deste serviço. Construir um aplicativo para busca e chamadas de táxis que possa ser utilizado em qualquer lugar é de grande utilidade para pessoas que utilizam os táxis para se locomover. Para os próprios taxistas, também há grandes vantagens em divulgar suas informações no sistema, estimulando, desta forma, os seus serviços para os usuários do software. Espera-se que o resultado final desta pesquisa consiga trazer valor real para os usuários dos sistemas de táxis, dando-lhes mais rapidez e facilidade no processo de busca e chamada deste tipo de serviço, de modo que estimule o uso de táxis e diminua o número de veículos nos grandes centros urbanos. 1.4 ESTRUTURA DA MONOGRAFIA Este trabalho está dividido em seis capítulos que são descritos a seguir: Os objetivos, as problemáticas e as justificativas são apresentados no Capítulo 1. No Capítulo 2, tem-se a revisão bibliográfica. Nela, são abordados temas a respeito do estado da arte da problemática apresentada nesta pesquisa, da plataforma Android, sua arquitetura e vantagens de sua utilização, uma introdução à tecnologia GPS, noções básicas de Sistemas de Informações Geográficos, assim como cartografia e, também, é abordada a forma com que o Google Maps API facilita a localização de endereços. Logo após, no Capítulo 3, são descritos o método de desenvolvimento do trabalho e a arquitetura do sistema proposto. Em seguida, no Capítulo 4, é apresentada a etapa de modelagem do sistema proposto. Toda a arquitetura é apresentada neste capítulo utilizando a notação UML. Em seguida, no Capítulo 5, é descrita a etapa de desenvolvimento e validação do software, assim com a apresentação do resultado final do trabalho. 20 Por fim, no Capítulo 6, é apresentada a conclusão e possíveis melhorias futuras. 21 2 REVISÃO BIBLIOGRÁFICA Este capítulo apresenta os assuntos teóricos utilizados pelo presente trabalho, abordando o estado da arte sobre o serviço de busca e chamadas de táxis, os conceitos básicos da plataforma Android, a tecnologia de rastreamento geográfico (GPS), os fundamentos de um Sistema de Informação Geográfico (SIG) e, por fim, um estudo geral sobre o serviço de mapas oferecido pela Google, o Google Maps. 2.1 ESTADO DA ARTE Esta seção tem como objetivo apresentar as principais e mais importantes soluções tecnológicas presentes no mercado (na data em que esta pesquisa foi elaborada) que visam facilitar o uso de serviço de táxis, realizando comparações de funcionalidades entre elas e indicar pontos que possam ser melhorados. 2.1.1 cab4me Desenvolvido pela empresa alemã Skycoders, o aplicativo cab4me é o mais conhecido software deste ramo. Possui versões tanto para Android quanto para iPhone. Este aplicativo fornece informações completas de pontos de táxis, como: número de contato, site, formas de pagamentos aceitos, serviços, número de táxis disponíveis, entre outros. Há, também, uma lista de pontos de táxis favoritos criado pelo usuário e uma lista de histórico, com as últimas chamadas realizadas pelo aplicativo. Sua área de cobertura é bastante ampla, podendo, até, os próprios usuários indicarem pontos de táxis que não estão cadastrados (SKYCODERS, 2011). A Figura 1 apresenta algumas telas deste aplicativo. 22 Figura 1 – Telas do sistema cab4me. Fonte: SKYCODERS, 2011. Sua interface é simples e intuitiva, porém, às vezes, a mesma pode confundir o usuário por apresentar muitas informações na tela. Já o processo para chamar um táxi é um pouco demorado: para chamar um táxi, é necessário, primeiramente, selecionar no mapa o local de onde o usuário deseja realizar o embarque. Após isso, é plotado no mapa ícones indicando locais que podem conter pontos de táxis. Clicando em um desses ícones, uma tela é aberta listando todas as companhias de táxis do local escolhido. Selecionando um item desta lista, é aberta uma segunda tela contendo as informações do ponto de táxi, onde o usuário pode iniciar uma chamada. De maneira geral, o aplicativo cab4me possui várias funcionalidades interessantes para requisitar um ponto de táxi próximo ao seu usuário. O seu ponto forte é a riqueza de informações fornecidas pelo aplicativo, o que ajuda muito uma pessoa que necessita de um serviço de táxi para se locomover. 2.1.2 Tarifa de Táxi Trata-se de um sistema simples, porém funcional. O Tarifa de Táxi é um sistema disponível pela web que fornece informações sobre previsões de custo de rotas pelas principais cidades do Brasil. Há versões tanto para dispositivos móveis quanto para desktop. 23 Com ele, é possível calcular o valor (aproximado) de uma corrida de táxi, baseando-se na distância da rota e nos valores das bandeiras estipulados por cada cidade (TARIFA DE TÁXI, 2011). Segue a Figura 2 que demonstra tal funcionalidade. Figura 2 – Tela do sistema Tarifa de Táxi. Fonte: TARIFA DE TÁXI, 2011. Apesar de fornecer custos de uma rota, o sistema não fornece número para contato de pontos de táxis existentes na cidade, como ocorre no aplicativo cab4me. 2.1.3 myTaxi Disponível apenas para a Alemanha, o aplicativo myTaxi permite o seu usuário tenha acesso às informações de pontos de táxis espalhados em algumas cidades do país alemão. Há versões somente para iPhone e Android. O sistema automaticamente fornece acesso aos pontos de táxis mais próximos à localização do usuário, possibilitando que o mesmo faça chamadas para pontos de táxis com muita facilidade (MYTAXI, 2011). Sua interface é o seu maior ponto forte: simples e limpa. A Figura 3 mostra uma tela deste aplicativo. 24 Figura 3 – Tela do sistema myTaxi. Fonte: http://www.mytaxi.net/, 2011. Para chamar um táxi é fácil e simples: basta clicar sobre um ícone de táxi no mapa para aparecer uma janela no topo da tela. Selecionando a opção “Call”, será feita uma ligação telefônica para o destino escolhido. 2.1.4 Taxi Magic Mais um aplicativo para dispositivos móveis para busca de pontos de táxis. O Taxi Magic é um sistema disponível para iPhone, Android, Blackberry e Palm que ajuda o seu usuário a encontrar e requisitar um serviço táxi em algumas cidades dos Estados Unidos. Na Figura 4, há uma tela deste sistema. 25 Figura 4 – Tela do sistema Taxi Magic. Fonte: http://taximagic.com/, 2011. Com ele, é possível chamar um táxi, rastrear a sua chegada, efetuar o pagamento e receber um recibo eletrônico, tudo diretamente pelo celular. (TAXI MAGIC, 2011). 2.2 ANDROID Com o objetivo de desenvolver o sistema proposto, é importante conhecer em detalhes a tecnologia que é utilizada. É apresentado, a seguir, a plataforma Android, sua composição, bibliotecas, componentes e os motivos da escolha desta tecnologia. O Android é uma plataforma de código fonte aberto voltada para dispositivos móveis (como smartphones e tablets). Nesta plataforma, é possível encontrar um sistema operacional baseado em Linux6, diversos aplicativos, e um middleware7 que realiza a 6 Um sistema operacional “de código aberto, desenvolvido por programadores voluntários espalhados por toda internet” (VIVA O LINUX, 2011). 26 comunicação entre o sistema operacional e os seus aplicativos (GOOGLE, 2011e). Seu futuro e organização é de responsabilidade da Open Handset Alliance (OHA), um grupo de 80 empresas de comunicação, hardware8 e software9, que em conjunto definem rumo da tecnologia (OHA, 2011). “Android foi construído com a intenção de permitir aos desenvolvedores criar aplicações móveis que possam tirar total proveito do que um aparelho portátil possa oferecer. Foi feito para ser verdadeiramente aberto.” (PEREIRA, SILVA, 2009, p. 3). O logotipo da plataforma pode ser visto na Figura 5. Figura 5 – Logotipo do Android. Fonte: Google, 2011k. Em 2007, foi lançado oficialmente o T-Mobile G1, o primeiro smartphone com a tecnologia Android (Figura 6). O seu lançamento causou uma grande surpresa no mercado. Em poucos meses, mais de um milhão de pessoas realizaram o download do kit de desenvolvimento da plataforma. (ROGERS et al, 2009, p. 3). 7 “Camadas de software que não constituem diretamente aplicações, mas que facilitam o uso de ambientes ricos em tecnologia da informação. A camada de middleware concentra serviços como identificação, autenticação, autorização, diretórios, certificados digitais e outras ferramentas para segurança.” (NRP, 2011). 8 Parte física de um dispositivo eletrônico. 9 Conjunto de comandos que permitem executar uma determinada tarefa. 27 Figura 6 – T-Mobile G1. Fonte: Google, 2011g. O seu lançamento foi amplamente aceito no mercado, e até hoje é possível perceber o grande crescimento da utilização desta tecnologia. No ano de 2010, o Android tornou-se a plataforma mais popular entre os consumidores, atingindo 32% entre as vendas de smartphones nos Estados Unidos, de acordo com uma pesquisa da Nielsen (2011). No segundo trimestre de 2011, 46.775.9 de smartphones utilizando o sistema operacional Android foram vendidos em todo o mundo, o que representa 43,4% de todos os smartphones vendidos no mundo, um crescimento de 29,2% em relação ao ano passado. (GARTNER, 2011). Estes números demonstram o crescimento desta plataforma em âmbito mundial e a possibilidade de abrir novos mercados com esta tecnologia. O código fonte do Android é licenciado utilizando da Apache Software License 2.0 (GOOGLE, 2011), o que garante que o software possa ser modificado e redistribuído sem restrições e em qualquer outro tipo de licença, porém exige a inclusão de aviso de direitos autorais. (APACHE, 2011a). Portanto, qualquer desenvolvedor pode contribuir ao projeto, seja implementando novas funcionalidades, traduzindo textos ou encontrando e corrigindo falhas, contribuindo, assim, com o crescimento da plataforma. Os aplicativos Android são desenvolvidos utilizando a linguagem Java, uma linguagem de programação de alto nível, orientada a objetos, robusta e portável. (ORACLE, 2011). 28 A sua arquitetura foi desenvolvida de modo a ser compatível independente do hardware fabricado por diversas empresas. Isto permite que não seja necessário desenvolver diversos aplicativos diferentes para atender às exigências de dispositivos específicos. (FELKER, DOBBS, 2011). 2.2.1 Arquitetura A sua arquitetura é dividida em: kernel, bibliotecas, runtime e framework de aplicativos, como representada na Figura 7. Figura 7 – Arquitetura da plataforma Android. Fonte: Google, 2011e. No nível mais baixo da arquitetura, encontram-se o kernel e drivers para os diversos dispositivos presentes no smartphone. Logo a acima, há as bibliotecas nativas e o runtime utilizados pela camada de framework de aplicativos. Esta camada fornece instruções de alto nível para a criação de aplicativos customizados para o usuário, encontrados na última camada do arquitetura. 29 Cada camada é brevemente apresentada nas seções a seguir. 2.2.1.1 Kernel Com o objetivo de utilizar a plataforma Android em diversos tipos de hardwares diferentes, é necessário o uso de um sistema operacional para o gerenciamento de recursos computacionais. De acordo com Tanenbaum (2000, p. 17), um sistema operacional “controla todos os recursos do computador e fornece a base sobre a qual os programas aplicativos podem ser escritos”. O sistema operacional desenvolvido para gerenciar os processos dos aplicativos, memória e outros recursos de hardware é baseado no sistema operacional Linux versão 2.6, servindo como uma camada de abstração entre os processos dos aplicativos e o hardware do dispositivo móvel. (GOOGLE, 2011e). No interior de cada sistema operacional, há um componente chamado de kernel. Um kernel, segundo Alecrim (2011): pode ser entendido com uma série de arquivos escritos em linguagem C e em linguagem Assembly que constituem o núcleo do sistema operacional. É o kernel que controla todo o hardware do computador. Ele pode ser visto como uma interface entre os programas e todo o hardware. Cabe ao kernel as tarefas de permitir que todos os processos sejam executados pela CPU e permitir que estes consigam compartilhar a memória do computador. Além disso, ele inclui os programas de gerenciamento de memória, as configurações de segurança, o software de gerenciamento de energia e vários drivers de hardware. (STRICKLAND, 2011). Ele também é responsável pelo driver da câmera digital, enviando comandos para o hardware da câmera. 30 2.2.1.2 Bibliotecas O Android fornece diversas bibliotecas nativas para os seus aplicativos. Algumas dessas principais bibliotecas são, de acordo com Google (2011e): Surface Manager: Gerencia a visualização de imagens e o acesso aos dispositivos de saída visuais. SQLite: Trata-se de um Sistema Gerenciador de Banco de Dados (SGBD)10 leve e rápido. FreeType: Responsável por renderizar fontes. OpenGL ES: Uma API11 para desenvolvimento de formas em 3D. Midia Libraries: Possibilita a reprodução de áudios e vídeos de diversos formatos. WebKit: Rendizador de páginas web. Para Strickland (2011), bibliotecas podem ser definidas como “um conjunto de instruções que dizem ao dispositivo como lidar com diferentes tipos de dados”. As bibliotecas mais comuns são as que dão suporte aos reprodutores de mídia. Outra biblioteca comum na atualidade é a de aceleração tridimensional, responsável pelo “acelerômetro”, equipamento responsável pela captação dos movimentos feitos no celular. 2.2.1.3 Runtime No mesmo nível da camada de bibliotecas, é possível encontrar a camada de runtime (ou camada de execução). De acordo com Pereira e Silva (2009, p. 8), “a pequena camada de execução [...] é uma instância da máquina virtual Dalvik, criada para cada aplicação executada no Android”. O Dalvik é uma máquina virtual criada por Dan Bornstein e projetada especialmente para ser embarcada em dispositivos com recursos limitados. 10 Conjunto de softwares capazes de armazenar, modificar e extrair dados de um banco de dados. (PC MAGAZINE, 2011b). 31 (BORNSTEIN, 2011). É nesta camada que os aplicativos do dispositivo são executados e gerenciados pelo sistema operacional. 2.2.1.4 Framework de aplicativos Segundo a DocForge (2011, tradução nossa), um framework pode ser definido como “um conjunto de códigos ou bibliotecas que proveem uma funcionalidade comum para toda uma classe de aplicações”. Sua finalidade é dar suporte ao desenvolvimento de aplicações, de modo a torná-lo mais produtivo para a resolução de problemas já solucionados. Para o suporte ao desenvolvimento de novos aplicativos, a plataforma Android oferece um conjunto de componentes reutilizáveis na sua camada de frameworks. Para cada componente, há uma responsabilidade única em um aplicativo. De acordo com Google (2011h), os componentes são Activities, Services, Content Providers, Broadcast Receivers, Intents e Intents Fitler. Uma Activity (Atividade), de acordo com Pereira e Silva (2009), representam uma única janela independente para o usuário. Elas são capazes de agrupar diversos tipos de componentes que irão responder às ações para quem for utilizá-las. Uma aplicação deve conter uma ou mais Activities, sendo que uma deve ser declarada a principal da aplicação, que será executada quando o usuário iniciar o aplicativo pela primeira vez. Um exemplo de activity pode ser visto na Figura 8. 11 Application Programming Interface – Interface de Programação de Aplicações. 32 Figura 8 – Exemplo de activity. Fonte: http://developer.android.com/guide/topics/ui/layout-objects.html (2011). Cada Activity possui o seu ciclo de vida, que é gerenciado pelo sistema operacional. Na Figura 9, é representado graficamente esse ciclo, assim como as respectivas funções que são executadas quando um estado é iniciado. Figura 9 – Ciclo de vida de uma Activity Fonte: Pereira e Silva (2009, p. 12) 33 Um Activity é capaz de iniciar outra Activity (por meio de Intents, que são apresentados mais à frente), parando a Activity anterior (sem antes salvar os seus dados) e colocando-a em uma pilha de Activities (chamada de “Back Stack”). Quando o usuário pressionar a tecla de voltar ou finalizar o trabalho em uma Activity, a Activity no topo da pilha retorna as suas atividades. (GOOGLE, 2011i). As Services (Serviços) são “trechos de código que normalmente são executadas em segundo plano pelo tempo de sua criação até o desligamento do dispositivo. Elas geralmente não expõem uma interface ao usuário”. (ROGERS, 2009, p. 7, tradução nossa). Um exemplo possível para uma Service é um aplicativo que reproduz músicas. Enquanto o usuário interage com a interface, haverá uma Service responsável pela leitura e reprodução da música sem que a mesma interrompa ou bloqueie as ações do usuário. Content Providers (Provedores de Conteúdo) é “a forma de compartilhas dados entre os aplicativos. Este permite que outras aplicações possam armazenar e recuperar dados no mesmo repositório utilizado por aquela aplicação”. (PEREIRA, SILVA, 2009, p. 15). Os Content Providers são ativados por meio de Content Resolvers (Resolvedores de Conteúdo). De acordo com Google (2011h), um Broadcast Receiver (Receptor de Transmissões) são componentes capazes de responder a estímulos do sistema operacional ou de outros aplicativos. Por exemplo, um Broadcast Receiver é capaz de anunciar a um aplicativo que a bateria está fraca. Os Broadcast Receivers não possuem interfaces de usuário. Para que seja possível ativar os componentes anteriormente listados (com exceção dos Content Providers), é necessário o uso de uma Intent (Intenção). Intents são “estrutura de dados que contém uma descrição abstrata de uma operação para ser executada”. (GOOGLE, 2011j, tradução nossa). É possível determinar quais Intents um determinado componente pode receber. Para isso, é necessário o uso de Intent Filters (Filtros de Intenções). Estes filtros são registrados no arquivo AndroidManifest.xml de cada aplicativo. (PEREIRA, SILVA, 2009). Cada aplicativo deve manter um arquivo contendo as configurações de funcionamento do mesmo. Este arquivo é chamado de AndroidManifest.xml e está localizado no diretório raiz do aplicativo. Nele, é registrada a descrição de todos os componentes, suas classes envolvidas, dados que podem tratar e também permissões de acesso às funcionalidades específicas (como câmera, GPS, telefone, etc.). (PEREIRA, SILVA, 2009). O seu conteúdo é lido pelo sistema operacional no momento em que aplicação é iniciada. 34 2.3 GPS Com o avanço tecnológico dos sistemas de navegação por satélites, o GPS (Global Positioning System) deixou de ser exclusiva para militares, navegadores ou agricultores para a obtenção do posicionamento global. De acordo com Sousa e Lima (1997, p. 120), “o surgimento do GPS provocou grandes mudanças nos sistemas convencionais de posicionamento e navegação”. A vinda dessa tecnologia para os dispositivos móveis popularizou o seu uso, possibilitando que aplicativos se comportem de acordo com a posição atual do seu usuário, trazendo uma nova maneira de interatividade para os seus usuários. Segundo Koolhaas (2011, p. 1, tradução nossa), “o GPS é um sistema de satélite usado na navegação que permite determinar a posição durante 24 horas por dia, em qualquer lugar do planeta e em qualquer condição climática”. Para Monico (2000, p. 2): [...] o GPS, ou NAVSTAR-GPS (NAVigation Satellite with Time And Ranging), é um sistema de radionavegação desenvolvido pelo Departamento de Defesa dos Estados Unidos da América - DoD (Department of Defense), com o intuito de ser o principal sistema de navegação das forças armadas americanas. De acordo com Lammertsma (2005), a história da navegação por satélite teve início na Guerra Fria, durante a corrida espacial entre os Estados Unidos e a União Soviética. Em 1974, é dado início ao projeto NAVSTAR12 pelas forças armadas americanas, como uma ferramenta para auxiliar na criação de estratégias militares. No início do ano de 1995 e com um orçamento de 10 bilhões de dólares, o sistema GPS, como é conhecido hoje, foi oficialmente posto em operação. (KOOLHASS, 2003). O GPS é amplamente utilizado para diversas finalidades. Além de servir como uma ferramenta para navegação aérea, marítima e terrestre, é possível encontrar o uso deste sistema na cartografia, topografia, georreferenciamento, agricultura, segurança, rastreamento de cargas, entre outras funções. (MONICO, 2000). Para Koolhass (2003), esse sistema possui várias vantagens em relação a outras formas de navegação, como bússolas, mapas, altímetros, etc. Sua velocidade, precisão e disponibilidade em condições climáticas adversas (chuva, céu nublado, etc.) são as suas maiores características que o torna um sistema altamente confiável. Porém, em locais estreitos 12 Navigation Satellite with Time and Ranging – Navegação por Satélite com Tempo e Alcançe 35 ou fechados, os receptores GPS podem não conseguir realizar a comunicação entre os satélites. 2.3.1 Segmentos El-Rabbany (2002) define que o GPS é separado em três segmentos: o segmento espacial, o segmento de controle e o segmento de usuário. 2.3.1.1 Segmento Espacial O segmento espacial, segundo Monico (2000), consiste de 24 satélites distribuídos em seis planos orbitais igualmente espaçados, com quatro satélites em cada plano, numa altitude aproximada de 20.200 km. Essa configuração garante que, no mínimo, quatro satélites GPS sejam visíveis em qualquer local da superfície terrestre, a qualquer hora. Na Figura 10, é possível visualizar graficamente esta distribuição de satélites na órbita terrestre. 36 Figura 10 – Distribuição de satélites GPS. Fonte: Monico, 2000. Cada satélite é equipado com quatro relógios atômicos, sendo que dois destes utilizam o elemento césio e os outros dois utilizam o elemento rubídio. Esta configuração permite que os satélites tenham o horário exato para transmitir aos receptores, não podendo atrasar mais de 10 nanosegundos. Estes horários são sincronizados a cada quatro horas pelo segmento de controle. (PESTANA, 2011; LAMMERTSMA, 2005). 2.3.1.2 Segmento de Controle Segundo Alouni (1996), esse segmento é controlado pelo Departamento de Defesa Americano. A principal estação de controle situa-se na cidade de Colorado Springs, Colorado, já as demais estações localizam-se no atol de Kwajalein (Ilhas Marshall, Oceano Pacífico), Havaí (Oceano Pacífico) e nas ilhas de Ascensão (Oceano Atlântico) e Diego Garcia (Oceano Índico). As estações de controles estão localizadas próximo à linha do Equador para evitar 37 grandes interferências da ionosfera. (LAMMERTSMA, 2005). A localização dessas estações é mostrada na Figura 11: Figura 11 – Segmento de controle do GPS. Fonte: Monico, 2000. A função destas estações, segundo Lammertsma (2005), é monitorar todo o sistema GPS na procura de eventuais erros ou inconsistências nos dados emitidos pelos seus satélites, além de corrigir periodicamente os relógios internos dos mesmos. 2.3.1.3 Segmento de Usuário Neste segmento, de acordo com El-Rabbany (2002), incluem-se todos os receptores utilizados por civis e militares. Para a captação dos sinais emitidos pelos satélites em qualquer lugar do planeta, é necessário o uso de um receptor GPS que é um equipamento eletrônico provido de uma antena, podendo ser interna ou externa. Segundo Koolhaas (2011), há uma grande quantidade de receptores GPS no mercado, e cada ano aparecem novos modelos com diferentes benefícios e características. A Figura 12 fornece dois exemplos de receptores: 38 Figura 12 – Exemplos de receptores GPS Fonte: Monico, 2000 Para Monico (2000), “há uma grande quantidade de receptores no mercado civil, para as mais diversas aplicações, limitadas apenas pela imaginação dos usuários, o que demonstra que o GPS realmente atingiu sua maturidade”. 2.3.2 Funcionamento O princípio básico de navegação pelo GPS, segundo Monico (2000), consiste: [...] na medida de distâncias entre o usuário e quatro satélites. Conhecendo as coordenadas dos satélites num sistema de referência apropriado, é possível calcular as coordenadas da antena do usuário no mesmo sistema de referência dos satélites. Do ponto de vista geométrico, apenas três distâncias, desde que não pertencentes ao mesmo plano, seriam suficientes. Nesse caso, o problema se reduziria à solução de um sistema de três equações, a três icógnitas. A quarta medida é necessária em razão do não sincronismo entre os relógios dos satélites e o do usuário, adicionando uma icógnita ao problema. Lammertsma (2005) descreve, em mais detalhes, os passos necessários para o cálculo da posição geográfica: 39 1. O receptor recebe o sinal de um satélite GPS. 2. O mesmo determina a diferença entre o tempo atual e o tempo recebido pelo sinal do satélite. 3. A partir desta diferença, é realizado o cálculo para determinar a distância entre o receptor e o satélite, sabendo-se que o sinal foi enviado a uma velocidade próxima da luz. 4. O receptor recebe um sinal de outros dois satélites, e novamente é calculada a distância entre ambos. 5. Conhecendo a distância de três satélites GPS, o receptor determina a sua localização utilizando o princípio matemático chamado trilateração. Esse processo é demonstrado na Figura 13. A trilateração corresponde a um cálculo matemático para conhecer os pontos de intersecção entre três esferas. No caso do sistema GPS, o raio de cada uma dessas esferas é equivalente à distância entre o satélite e a antena, que foi calculada pelo receptor. Fazendo a intersecção dessas três esferas, é possível identificar dois pontos que são comuns às mesmas (como pode ser visto na Figura 13, item c). Utilizando o planeta Terra como uma quarta esfera, descarta-se um ponto e somente o outro ponto é comum entre as quatro esferas. Este ponto é a posição exata do usuário. Para que os cálculos das distâncias sejam feitas corretamente, é importante que os relógios internos dos satélites estejam precisos e sincronizados, sendo estes constantemente atualizados pelos segmentos de controle do sistema. (PESTANA, 2011). 40 Figura 13 – Processo de trilateração entre satélites Fonte: Lammertsma, 2005 De acordo com El-Abbany (2002), somente três satélites são necessários para determinar a posição de um alvo na superfície terrestre. Porém, na prática, há a necessidade da participação de um quarto satélite para a sincronia de horários entre os satélites e o receptor. 2.3.2.1 Modos de Operação De acordo com Monico (2000), o sistema GPS possui dois padrões de operação: Standard Positioning System (SPS): Disponível para todos os usuários civis. Possui uma margem de erro entre 100 e 140 metros, com um nível de confiança de 95%. Precise Positioning System (PPS): Restrito ao uso militar e de usuários autorizados. Sua margem de erro é de 1 a 20 metros. Segundo o autor, o sistema GPS pode ter precisão maior do que estes dois padrões de operação. Porém, por se tratar de um sistema global, uma margem de erro menor pode por em risco os aspectos de segurança. 41 2.4 SISTEMAS DE INFORMAÇÕES GEOGRÁFICOS O capítulo apresentado a seguir abrange os conceitos e utilizações dos Sistemas de Informações Geográficos, assim como noções básicas de cartografia para compreender, com maiores detalhes, os tipos de dados que este sistema gerencia. 2.4.1 Definição Há diversas definições aceitas para entender o conceito de Sistema de Informação Geográfico (SIG ou GIS - Geographic Information System, traduzido para o inglês). Para Câmara e outros (1996, p. 3), SIG “são sistemas de informação construídos especialmente para armazenar, analisar e manipular dados geográficos”. Segundo Davis (2001, p. 13, tradução nossa), um SIG pode ser definido como “tecnologias e metodologias para coletar, gerenciar, analisar, modelar e apresentar dados geográficos para uma ampla gama de aplicações”, já para Longsdon (1995, apud FRENCH, 1996, p. 187, tradução nossa) trata-se de “um sistema composto por hardware, software e processos designados para suportar a captura, gerenciamento, manipulação, análise e visualização de dados espaciais com a finalidade de solucionar problemas complexos de gestão”. Devido a estas definições, podemos perceber a importância de uso de um SIG quando existir a necessidade de conhecer o local de um dado. Pode-se dizer, de forma genérica, “Se onde é importante para seu negócio, então Geoprocessamento é uma ferramenta de trabalho”. Sempre que o onde aparece, dentre as questões e problemas que precisam ser resolvidos por um sistema informatizado, haverá uma oportunidade para considerar a adoção de um SIG. (CÂMARA; DAVIS, 2011, p. 1). 42 2.4.2 Funções Uma vez entendidas as definições de um SIG, há de se conhecer, também, a maneira de como estes sistemas operam. Um SIG exerce diversas funções para tornar possível um gerenciamento de dados espaciais. Estas funções são descritas, a seguir, baseando-se nas definições de Davis (2001, p. 15): Coletar: obter dados geográficos a partir de diversas fontes, como, por exemplo, imagens de satélites, mapas, Internet, textos, etc. Armazenar e gerenciar: integrar os dados coletados em uma base de dados geográfica, de maneira que possam ser recuperados de maneira eficiente. Recuperar: selecionar os dados desejados para que possam ser utilizados por quem o necessita. Converter: transformar um dado de um determinado tipo para outro. Ex.: Converter a projeção de um mapa. Analisar: uso de técnicas para obter informações sobre os dados armazenados. Modelar: tornar os dados mais simples de acordo com um contexto. Visualizar: apresentar dados em vários formatos diferentes. Ex.: Mapas, gráficos, imagens. 2.4.3 Cartografia Por séculos o ser humano teve a curiosidade de conhecer o mundo que o cerca. Este desejo o levou a representar graficamente o espaço em que vive por meio de imagens e de técnicas de cartografia. A cartografia pode ser definida como uma ciência e arte voltada para o desenho e construção de mapas (RAMESH; MISRA, 1969, p. 13). A seguir, são descrito os principais elementos desta ciência que são essenciais no desenvolvimento do projeto desta pesquisa: 43 2.4.3.1 Mapas Os mapas são os principais objetos de pesquisa da Cartografia. É por meio delas que é possível conhecer a localização de um ponto no espaço. Segundo o IBGE (2011b): Mapa é a representação no plano, normalmente em escala pequena, dos aspectos geográficos, naturais, culturais e artificiais de uma área tomada na superfície de uma figura planetária, delimitada por elementos físicos, político-administrativos, destinada aos mais variados usos, temáticos, culturais e ilustrativos. Para a International Cartographic Association (2011, tradução nossa), um mapa é “uma imagem simbolizada da realidade geográfica, representando os recursos selecionados, ou características, resultantes do esforço criativo de seu autor”. Cada mapa é construído visando fornecer alguma informação específica. Existem mapas que contem informações físicas, naturais, políticas, econômicas e sociais de uma região. Além disso, um mapa deve informar qual projeção cartográfica foi utilizada para representar a área estudada, o sistema de coordenada usado para conhecer a posição de um determinado ponto na Terra e a escala para realizar cálculo de distâncias e conhecer o nível de detalhamento visualizado. 2.4.3.2 Projeções Antes de iniciar o trabalho de confecção de um mapa, é necessário que seja determinado qual projeção cartográfica é utilizada para representar a Terra em uma superfície plana (IBGE, 2011b). Segundo Bernhardsen (2002, p. 118), dados geográficos somente podem ser desenhados em um mapa se projetados em uma superfície plana, portanto, em razão da superfície da Terra ser curva (elipsóide), é necessária a aplicação de técnicas de projeção para torná-la plana. Entre as projeções mais conhecidas, destacam-se a Spherical Mercator (utilizada pelo serviço Google Maps) e a UTM13. 13 Universal Transverse Mercator 44 Segundo Oliveira (1993 apud FLITZ, 2005), as projeções cartográficas podem ser classificadas como: quanto ao tipo de superfície da projeção: o planas: quando a superfície for um plano; o cônicas: quando a superfície for um cone; o cilíndricas: quando a superfície for um cilindro; quanto à posição da superfície da projeção: o equatorial: quando o centro da superfície de projeção situa-se no equador terrestre; o polar: quando o centro do plano de projeção é um polo; o oblíqua ou horizontal: quando está em qualquer outra posição; A Figura 14 demonstra alguns tipos de projeções cartográficas quanto ao tipo de superfície utilizada para planificar a superfície terrestre. 45 Figura 14 – Tipos de projeções quando à sua superfície. Fonte: IBGE, 2011b. Apesar das diferentes técnicas de projeção, nenhuma é capaz de representar fielmente as áreas e distâncias do planeta Terra em sua totalidade, devido à sua forma elipsoidal. Cada projeção cartográfica busca representar as melhores distâncias ou áreas de uma região em específico, porém, sempre deformando as outras regiões próximas (FLITZ, 2005). 2.4.3.3 Sistemas de Coordenadas Em razão da esfericidade da Terra, para que seja possível representá-la em uma superfície não-plana, é necessário que seja utilizado um sistema de coordenadas para 46 determinar a maneira de como é distribuído de pontos sobre a superfície (IBGE, 2011b). Um sistema de coordenada pode ser definido como “uma estrutura de referências utilizadas para comparar os detalhes da Terra com um modelo (mapa)”. (RAMESH; MISRA, 1969, p. 79, tradução nossa). Entre os sistemas de coordenadas atualmente conhecidos, o mais utilizado para a representação de mapas é o sistema de coordenada geográfico. Este sistema basea-se em um par de coordenadas para determinar a localização sobre a superfície terrestre representada por meio de um mapa. (RAMESH; MISRA, 1969). De acordo com Bernhardsen (2002), este sistema de coordenada utiliza graus, minutos e segundos como unidade de medida. O par de coordenadas utilizado pelo sistema de coordenada geográfica é chamado de latitude e longitude, descritos a seguir. 2.4.3.3.1 Latitude As latitudes (ou paralelos), segundo o IBGE (2011b), são “os arcos contados sobre o meridiano do lugar e que vai do Equador até o lugar considerado”. A Figura 15 apresenta com maior detalhe a representação da latitude. Figura 15 – Latitude. Fonte: Branco, 2011. 47 A sua variação é de 0º até 90º N (norte) e de 0º até 90º S (sul). A latitude 0º é conhecida como Linha do Equador. (IBGE, 2011b). 2.4.3.3.2 Longitude Similares às latitudes, as longitudes (ou meridianos) são linhas imaginárias que partem do polo sul até o polo norte (RAMESH; MISRA, 1969). Na Figura 16, há uma representação ilustrada das longitudes. Figura 16 – Longitude. Fonte: Branco, 2011. A longitude varia de 0º até 180º W (oeste) e de 0º até 180 E (leste). A longitude 0º é conhecida como Meridiano de Greenwich, já a longitude 180º é comumente conhecida como Antimeridiano de Greenwich. 2.4.3.4 Escalas Não existe uma maneira eficaz de representar a superfície terrestre sem que haja uma redução no nível de detalhamento de um mapa. Para isso, utiliza-se uma escala para 48 determinar qual a proporção com a Terra usada para a construção do mapa. Segundo (CÂMARA et al., p. 6, 1996), a escala é “a relação entre as dimensões dos elementos representados em um mapa e a grandeza correspondente, medida sobre a superfície da Terra”. Portanto, é possível representar, matematicamente, a escala como: Figura 17 – Fórmula matemática da escala. Fonte: Elaboração dos autores, 2011. As escalas são itens obrigatórios de um mapa, sendo geralmente representados como na Figura 18. Figura 18 – Exemplos de escalas. Fonte: IBGE, 2011. Quanto maior for uma escala, menor será o nível de detalhamento de um mapa. Logo, para que seja conhecido em maior detalhe de uma determinada área da superfície terrestre, é necessário que a escala seja diminuída. (RAMESH; MISRA, 1969). 49 2.5 GOOGLE MAPS Segundo Google (2011b), o Google Maps é “um serviço do Google que oferece uma poderosa e amigável tecnologia de mapas e informações sobre empresas locais, incluindo endereços, informações de contato e rotas para as empresas”. Para Marimoto (2009), “ele é também o mais fácil de usar e pode ser instalado em praticamente qualquer aparelho, com versões nativas para o Symbian, Android, Windows Mobile e iPhone”. Lançado no ano de 2005, o Google Maps revolucionou o modo de visualizar mapas pela Internet. Com o uso da tecnologia AJAX14, é possível navegar em qualquer lugar do planeta com poucos cliques, sem que seja necessário renderizar toda a página. Suas funcionalidades e riquezas de informações fizeram os seus concorrentes ficarem obsoletos (PETERSON, 2011). Este serviço é muito utilizado pelas pessoas para localizar endereços e informações de contato. Além disso, o serviço Google Maps disponibiliza a funcionalidade de rotas detalhadas, ferramenta que auxilia o usuário a obter o melhor caminho para chegar a determinado endereço. Aliado a estas funcionalidades, há também a possibilidade de arrastamento dos mapas para melhor visualização, imagens de satélite, vista da rua desejada, atalhos no teclado e zoom com botão de rolagem. Para os locais que o usuário navega, há diversas informações disponíveis, como a descrição de pontos turísticos, fotos, sugestões de bares e restaurantes, museus. A Figura 19 mostra a maneira de como estas informações são expostas na interface do usuário. 14 Asynchronous JavaScript and XML (JavaScript e XML Assíncronos) – Tecnologia para troca de dados entre um servidor web sem a necessidade de recarregar a página. (W3SCHOOLS, 2011). 50 Figura 19 – Interface do serviço Google Maps. Fonte: http://maps.google.com, 2011. A Figura 20 fornece um exemplo da funcionalidade de vista da rua do Google Maps, utilizando um celular: Figura 20 – Funcionalidade vista da rua do Google Maps. Fonte: Marimoto, 2009. Sobre a limitação do Google Maps, segundo Marimoto (2009): A grande limitação do Google Maps é que ele não oferece a opção de baixar os mapas previamente, se limitando a transferi-los conforme você se desloca, usando tráfego de dados. O volume de dados transmitidos é relativamente pequeno, de forma que é perfeitamente possível usá-lo esporadicamente mesmo nos planos prépagos. 51 Entre os concorrentes diretos do Google Maps, destaca-se o serviço Bing Maps15 da Microsoft, Yahoo! Maps16 da Yahoo! e o OpenStreetMap17 da Fundação OpenStreeMap. O Google Maps difere-se destes outros serviços por oferecer maior riqueza em seus dados e interatividade com o seu usuário, tornando-o um dos principais serviços de mapas online da Internet. 2.5.1 Google Maps API Uma API pode ser definida como “um formato de mensagem e linguagem utilizada por um programa, aplicativo para se comunicar com o sistema operacional ou algum programa de controle”. (PC MAGAZINE, 2011a, tradução nossa). As API’s são utilizadas para poupar esforços com desenvolvimento de uma nova funcionalidade para o sistema, com isso o desenvolvimento de um novo software acaba se tornando mais rápido. Para Roos (2011), “uma API se assemelha ao Software como Serviço (SaaS), no sentido de que os criadores de software não têm tempo de começar do zero a cada vez que escrevem um programa”. Outras vantagens são visíveis na utilização de uma API na aplicação (software). Abaixo, seguem algumas destas vantagens: as empresas não precisam pagar por softwares de terceiros para utilizar uma funcionalidade nova. adaptação aos sistemas já existentes. Uma vez a especificação esteja disponível, fica transparente para o desenvolvedor ajustar a mesma às suas necessidades. comunidade colaborativa: desenvolvedores colaboram com tutoriais (dicas) de como utilizar a API. As dúvidas frequentes também são levadas em consideração. Nas duas seções, a seguir, são descritas duas APIs oferecidas pelo serviço de mapas da Google, a Google Geocoding API e a Google Direction API. 15 http://www.bing.com/maps/ 16 http://maps.yahoo.com/ 17 http://www.openstreetmap.org/ 52 2.5.1.1 Google Geocoding API Esta API é responsável pela conversão de endereços físicos em coordenadas geográficas, com isto os dados do endereço ficam mais “legíveis” para o serviço Google Maps. A operação inversa da operação também é possível com a utilização desta API. Este serviço é disponibilizado pela Google e é voltado a desenvolvedores que desejam obter localizações mais precisas a partir de coordenadas ou de endereços. Para Google (2011d), o Google Geocoding API pode ser usada apenas em conjunto com um mapa do Google; a geocodificação de resultados sem exibi-los em um mapa é proibida. Esta API em conjunto com o Google Maps, fornece uma poderosa ferramenta de geolocalização, fornecendo a localização precisa baseada em informações. 2.5.1.2 Google Direction API O Google Directions API é um serviço que calcula rotas entre os locais usando uma solicitação HTTP. As rotas podem informar origens, destinos e pontos de referência (Google, 2011c). De acordo com Reckziegel (2010), esta API aceita tanto endereços do tipo texto como também latitudes e longitude previamente formatadas de acordo com o padrão estabelecido. Este serviço, em conjunto com o Google Maps, é bastante eficiente e tem sido muito utilizado pelas pessoas que desejam ir para um lugar desconhecido por elas, ou então por um endereço que contenha muitas ruas, dependendo assim de um guia para mostrar qual o melhor trajeto de onde ela está (ponto origem) até onde querem chegar (ponto destino). Para o cálculo da rota, o usuário deve informar o endereço de origem em que se encontra e o endereço de destino a que deseja chegar. O cálculo da melhor rota, distância e tempo é feito pela API, que juntamente com o Google Maps, apresenta o resultado de forma interativa no mapa. 53 3 MÉTODO Por se tratar de uma pesquisa de cunho científico, é imprescindível a apresentação dos métodos que são utilizados na realização deste trabalho. O conceito de método, segundo Cervo e Bervian (2002, p. 23), “é a ordem que se deve impor aos diferentes processos necessários para atingir um certo fim ou um resultado desejado”. 3.1 CARACTERIZAÇÃO DO TIPO DE PESQUISA Definir o conceito de pesquisa é indispensável para conduzir com eficiência no avanço de qualquer trabalho científico. De acordo com a definição de Kourganoff (1990, apud MATTAR NETO, 2002, p. 94), “a pesquisa é o conjunto de investigações, operações e trabalhos intelectuais ou práticos que tenham como objetivo a descoberta de novos conhecimentos, a invenção de novas técnicas e a exploração ou a criação de novas realidades”. Para Cervo e Bervian (2002, p. 63), “a pesquisa é uma atividade voltada para a solução de problemas teóricos ou práticos com o emprego de processos científicos”. Já, para Ruiz (1996), uma pesquisa científica é a prática de uma investigação realizada de acordo com as regras aceitas pela ciência. No que se refere à sua área de ciência, esta pesquisa é caracterizada como prática, pois o seu principal objetivo é criar um protótipo a partir de um modelo proposto para atender às necessidades dos usuários de táxis. O intuito das pesquisas práticas é resolver problemáticas encontradas em determinadas situações, com objetivo de aumentar o conhecimento dos envolvidos nela (pesquisadores e pesquisados). (PRESTES, 2003, p. 25). Quanto ao seu objetivo, a utilização do tipo de pesquisa exploratória é a que melhor se encaixa neste trabalho, pois o mesmo busca aprofundar os seus conhecimentos teóricos por meio de uma pesquisa bibliográfica, seguido de uma proposta para o problema definido. Os objetivos das pesquisas exploratórias, segundo Andrade (1998, p. 104), são: “proporcionar maiores informações sobre determinado assunto; facilitar a delimitação de um 54 tema de trabalho; definir os objetivos ou formular as hipóteses de uma pesquisa ou descobrir novo tipo de enfoque para o trabalho que se tem em mente”. Já do ponto de vista da sua abordagem ao problema, trata-se de uma pesquisa qualitativa, pois, segundo Mezzaroba e Monteiro (2005), a mesma não pretende interpretar os seus dados dentro de seu contexto, e não de maneira descritiva, como ocorre nas pesquisas quantitativas. É utilizando as ponderações das informações feitas durante o desenvolvimento da pesquisa que trará valor ao trabalho realizado. Os resultados desejados por esta pesquisa não poderão ser demonstrados numericamente, mas por meio de modelos e de protótipos. O objeto de pesquisa proposto é o de pesquisa bibliográfica. Este foi escolhido pela facilidade que o pesquisador tem de encontrar mais materiais do que se fizesse uma pesquisa diretamente (GIL, 1991). O presente trabalho busca informações a partir de livros, artigos e normas para fundamentar suas escolhas e declarações. 3.2 ETAPAS As etapas para a elaboração da monografia são: a. levantamento teórico; b. estudo da plataforma Android; c. estudo da API do Google Maps; d. captação de requisitos; e. modelagem do sistema; f. prototipação; g. implementação do sistema; h. testes; i. avaliação; j. apresentação dos resultados. Estas etapas foram distribuídas dentro do período da realização desta pesquisa conforme o cronograma (ver Apêndice A). 55 3.3 ARQUITETURA DA SOLUÇÃO PROPOSTA Levando em consideração os objetivos pretendidos e as tecnologias escolhidas, uma proposta de solução para o problema foi desenvolvida, como mostra a Figura 21. Figura 21 – Arquitetura da Solução. Fonte: Elaboração dos Autores, 2011. Trata-se de uma arquitetura composta por três camadas: Camada Cliente: São todos os dispositivos móveis que acessam às informações do sistema utilizando um aplicativo desenvolvido especificamente para tal função. Camada Servidor: Possui a responsabilidade de armazenar e consultar os dados dos pontos de táxis cadastrados, além de processar as requisições realizadas pelas outras camadas. É composto por um servidor de aplicação e um banco de dados geográfico, capaz de armazenar e processar dados geográficos. Camada Administração: Responsável pela manutenção dos dados fornecidos pela camada Servidor. Nele, o administrador do sistema pode ter acesso aos dados dos pontos de táxis cadastrados, podendo adicionar novos pontos de táxis no sistema, além de atualizar ou remover os pontos da base de dados já existentes. 56 Externo, em relação ao sistema, há o uso da tecnologia GPS e do serviço de mapas oferecido pela Google, necessários para que toda a aplicação opere da maneira desejada. O sistema GPS, como visto na seção 2.3, é encarregado por fornecer as coordenadas geográficas do dispositivo móvel da camada cliente. Este, de posse desta informação, pode visualizar sua posição atual em um mapa utilizando o serviço de mapas provido pelo Google Maps por meio de seu smartphone. Para as ações que o cliente deste serviço queira executar sobre o sistema (como listar pontos de táxis mais próximos ou calcular custo de uma rota), são enviadas mensagens para a camada Servidor realizar o processamento destas requisições. 3.4 DELIMITAÇÕES A solução proposta está restrita somente à busca e a chamadas de pontos de táxis em smartphones que suportem a tecnologia Android, assim como a realização do cálculo do valor aproximado de uma rota por meio da API do Google Maps. 57 4 MODELAGEM DO SISTEMA Neste capítulo, é abordada a etapa de planejamento de desenvolvimento do sistema proposto por este trabalho, assim como a apresentação dos resultados do processo de modelagem do mesmo. Modelagem, de acordo com Booch, Rumbaugh e Jacboson (2000, p. 89), é “uma simplificação da realidade para entender melhor o sistema de desenvolvimento”. Para modelar um sistema, é necessário o uso de uma linguagem que permita representá-lo por meio de diagramas para as suas diferentes perspectivas. 4.1 LINGUAGEM DE MODELAGEM UNIFICADA (UML) De acordo com Booch, Rumbaugh e Jacobson (2000, p. 13), criadores desta linguagem, a UML é: [...] uma linguagem gráfica para visualização, especificação, construção e documentação de artefatos de sistemas complexos de software. A UML proporciona uma forma-padrão para a preparação de planos de arquitetura de projetos de sistemas, incluindo aspectos conceituais tais como as classes escritas em determinada linguagem de programação, esquemas de banco de dados e componentes de software reutilizáveis. Para modelar o sistema proposto, é utilizada a linguagem UML na sua versão 2.1 com base nos requisitos e regras de negócio captados nesta etapa de modelagem. 4.2 IDENTIFICAÇÃO DOS ATORES De acordo com Bezerra (2002, p. 51), um ator é “qualquer elemento externo que interage com o sistema”. Tipicamente, um ator representa o papel de um ser humano, porém, também pode representar qualquer dispositivo eletrônico que possa realizar interações com o sistema. Os atores são representados dentro da notação UML por bonecos. 58 No sistema proposto por este trabalho, há dois atores, o próprio usuário da aplicação e o administrador do sistema, como demonstrado na Figura 22. Figura 22 – Atores do sistema. Fonte: Elaboração dos autores, 2011. As definições do ator Usuário são mostradas no Quadro 1: Usuário Ator O Usuário é a parte interessada em obter informações dos pontos de táxis ao seu redor. Ele é capaz de requisitar dados gerais sobre cada ponto de táxi de seu interesse, Definição assim como informações sobre custos de rotas para os seus destinos desejados. Frequência de uso Conhecimento em informática Grau de escolaridade Diário. Intermediário. Necessita ter conhecimentos para manusear um smartphone. Ensino médio a ensino superior. Acesso a informações como: posição geográfica dos Permissão de acesso pontos de táxis, dados comerciais de cada ponto de táxi, possibilidade de realizar cálculos de rotas e de avaliar serviços. Quadro 1 – Definições do ator Usuário. Fonte: Elaboração dos autores, 2011. Já as informações do ator Administrador encontram-se no Quadro 2: 59 Administrador Ator Responsável pela manutenção das informações que o Definição sistema disponibiliza aos atores Usuário. Frequência de uso Diário. Conhecimento em informática Intermediário. Grau de escolaridade Ensino médio a ensino superior. Permissão de acesso Permite cadastrar novos pontos de táxis, além de remover ou atualizar pontos de táxis já cadastrados. Quadro 2 – Definições do ator Administrador. Fonte: Elaboração dos autores, 2011. Uma vez identificado os atores do sistema, é possível captar os requisitos e casos de uso do sistema de acordo com as necessidades de cada ator. 4.3 REQUISITOS Os requisitos, segundo as definições de Larman (2000, p. 60), “são uma descrição das necessidades ou dos desejos para um produto”. Requisitos também são “características, propriedades ou comportamentos desejados de um sistema”. (BOOCH; RUMBAUGH; JACBOSON, 2000, p. 450). É importante que os requisitos de software estejam claros e concisos com as necessidades de seus usuários, a fim de desenvolver um produto que agregue valor para quem o utiliza. Para Tayer e Doffman (1997, p. 250, apud PRESSMAN, 2002): A engenharia de requisitos fornece um mecanismo adequado para entender o que o cliente deseja, analisar as necessidades, avaliar a exequibilidade, negociar uma solução razoável, especificar a solução de maneira não-ambígua, validar a especificação e administrar os requisitos à medida que eles são transformados num sistema em operação. Os requisitos podem ser divididos em dois tipos: requisitos funcionais e requisitos não-funcionais. 60 4.3.1 Requisitos funcionais Rezende (2006, p. 123) afirma que “os requisitos funcionais podem ser definidos como as funções ou atividades que o software ou o sistema faz (quando pronto) ou fará (quando em desenvolvimento). Devem ser definidos claramente e relatados explicitamente”. Para o sistema apresentado por esta pesquisa, os requisitos funcionais são listados no Quadro 3. 61 Identificador Nome RF01 Apresentar mapa RF02 Mostrar posição atual RF03 Mostrar pontos de táxis no mapa Listar pontos de táxis RF04 ordenados pela proximidade RF05 RF06 RF07 Requisitar serviço por telefone Requisitar serviço por SMS Calcular estimativa de corrida Descrição O sistema deve ser capaz de apresentar um mapa interativo ao Usuário. No mapa, o sistema deverá indicar ao Usuário a sua posição atual. No mapa, o sistema deverá indicar ao Usuário os pontos de táxi no mapa. O sistema deverá apresentar uma lista de pontos de táxis próximos ao Usuário. O sistema deverá estar apto a requisitar um serviço de táxi por chamada por telefone. O sistema deverá estar apto a requisitar um serviço de táxi por mensagem SMS. O sistema deverá apresentar ao Usuário uma estimativa do valor da corrida, baseando-se na distância definida pelo Usuário. Com o intuito de buscar um ponto de táxi com maior RF08 Gerenciar favoritos rapidez, o Usuário deverá ser capaz de adicionar ou remover os pontos de táxi de sua preferência. RF09 Mostrar informações de um ponto de táxi RF10 Visualizar histórico RF11 Listar pontos de táxis RF12 Cadastrar ponto de táxi RF13 Remover ponto de táxi As informações referentes ao ponto de táxi, os táxis disponíveis, seus acessórios e suas formas de pagamento deverão ser mostradas para o Usuário. O Usuário pode visualizar um histórico de pontos de táxis requisitados anteriormente. O Administrador do sistema deve ter permissão para listar os pontos de táxis cadastrados no sistema. O Administrador do sistema deve ter permissão para cadastrar novos pontos de táxis no sistema. O Administrador do sistema deve ter permissão para remover um ponto de táxi da base de dados. O Administrador do sistema deve ter permissão para RF14 Atualizar ponto de táxi atualizar as informações um ponto de táxi já cadastrado no sistema. Quadro 3 – Requisitos funcionais. Fonte: Elaboração dos autores, 2011. 62 Os requisitos funcionais listados descrevem os comportamentos possíveis que o sistema pode realizar em resposta às ações dos usuários. Cada requisito captado é entregue aos desenvolvedores desta pesquisa para que estes possam transformar a necessidade em código de software para compor o sistema. 4.3.2 Requisitos não-funcionais Para Bezerra (2002, p. 21), os “requisitos não-funcionais declaram as características de qualidade que o sistema deve possuir e que estão relacionadas às suas funcionalidades”. Nos quadros, a seguir, são mostrados os requisitos não-funcionais do sistema desta pesquisa, agrupados pela sua classificação. No Quadro 4, há a descrição dos requisitos não-funcionais relacionados à usabilidade do sistema. Todos eles são descritos de maneira a tratar o modo de como o usuário interage com o sistema. Uma boa usabilidade garante uma boa satisfação por parte do seu usuário final. Identificador Descrição RNF01 A resolução mínima para utilizar o sistema é de 240 X 320. RNF02 O sistema apresentará textos e frases na língua portuguesa. RNF03 Os ícones apresentados no sistema deverão ser de fácil entendimento. RNF04 Deverá ser possível utilizar o aplicativo com a tela na posição horizontal. RNF05 RNF06 Para os processamentos de dados, deverá ser mostrada, na tela, uma janela a mensagem: “Carregando”. Com o intuito de tonar mais rápido o processo de cadastro de pontos de táxis, no módulo administrador, não deve haver transições de páginas. Quadro 4 – Requisitos não-funcionais – Usabilidade. Fonte: Elaboração dos autores, 2011. O Quadro 5 lista os requisitos não-funcionais pertencentes ao grupo de desempenho do sistema. Estes requisitos tratam sobre a velocidade de resposta às ações do usuário. 63 Identificador Descrição Os tempos de resposta para as consultas não devem ultrapassar 5 (cinco) RNF07 segundos. Quadro 5 – Requisitos não-funcionais – Desempenho. Fonte: Elaboração dos autores, 2011. O Quadro 6 fornece os requisitos não-funcionais que estão ligados às questões operacionais do sistema. Neles, são descritos os tipos de software e de hardware necessários para utilizar o sistema. Identificador Descrição A camada cliente do sistema deverá ser operada na plataforma Android RNF08 versão 2.2 ou superior. É obrigatório o uso de uma conexão via Internet para utilizar o sistema. RNF09 O smartphone pode, quando presente, utilizar os recursos de sua antena GPS para fornecer, ao aplicativo, informações à respeito da posição RNF10 geográfica do usuário. Quadro 6 – Requisitos não-funcionais – Operacionais. Fonte: Elaboração dos autores, 2011. No Quadro 7, há os requisitos não-funcionais classificados no grupo “Implementação”. Este grupo contém os requisitos que tratam das tecnologias utilizadas no desenvolvimento do sistema. Identificador Descrição RNF11 No módulo cliente, o sistema é implementada utilizando a linguagem Java. RNF12 O módulo servidor é implementado utilizando a linguagem Java. RNF13 No módulo servidor, é utilizado o framework Spring. RNF14 No módulo servidor, é utilizada a ferramenta Maven para gerenciamento do projeto do software. Quadro 7 – Requisitos não-funcionais – Implementação. Fonte: Elaboração dos autores, 2011. 64 E, por fim, no Quadro 8, há a listagem dos requisitos não-funcionais de arquitetura. Estes requisitos definem a arquitetura geral do sistema, o modo de como o mesmo responde às ações externas e também aos tipos de comunicações feitas entre as suas camadas. Identificador RNF15 RNF16 Descrição A camada servidor deverá operar utilizando um sistema operacional Linux. A camada de persistência deverá operar utilizando um sistema operacional Linux. RNF17 O servidor deverá possuir no mínimo 512 megabytes de memória RAM. RNF18 O SGBD utilizado para gerenciar os dados do sistema é o MongoDB. RNF19 RNF20 A comunicação entre a camada cliente e a camada servidor é feita utilizando o padrão de comunicação REST18, utilizando o protocolo HTTP. As mensagens trocadas entre as camadas seguirão o padrão do formato JSON19. Prevendo o crescimento do sistema, a sua arquitetura deverá ser escalável20 RNF21 para suportar um aumento de processamento e de armazenamento, quando for necessário. Quadro 8 – Requisitos não-funcionais – Arquitetura. Fonte: Elaboração dos autores, 2011. Os requisitos não-funcionais mostrados nesta seção são, para os desenvolvedores, importantes para documentar os padrões e regras utilizadas para o desenvolvimento do software proposto. 18 Representational State Transfer (Transferência de Estado Representacional) – Serviços oferecidos na web utilizando o protocolo HTTP seguindo padrões de nomenclaturas (IBM, 2011). 19 JavaScript Object Notation (Notação de Objetos JavaScript) – “É uma formatação leve de troca de dados. [...] JSON é em formato texto e completamente independente de linguagem” (JSON, 2011). 20 Escalabilidade – Capacidade de um software de aumentar o seu poder de processamento e armazenamento de dados para atender ao crescimento de usuários. (PC MAGAZINE, 2011c). 65 4.4 REGRAS DE NEGÓCIO Outra informação importante no processo de modelagem do sistema é a definição das regras de negócio que o sistema deverá seguir. “Regras de negócio são políticas, condições ou restrições que devem ser consideradas na execução dos processos existentes em uma organização”. (GOTTESDIENER, 1999, p. 70-71 apud BEZERRA, 2002). O Quadro 9 representa as regras de negócio do sistema. 66 Identificação Nome RN01 Informações dos pontos de táxi RN02 sendo que: Cálculo de estimativa de V = Estimativa do valor da corrida corrida L = Preço da largada D = Distância B = Valor da bandeira em vigor RN03 Preço de largada RN04 Referência no cálculo de custo de rota RN05 Bandeiras RN06 Campos obrigatórios RN07 Histórico RN08 Listagem de pontos de táxis próximos RN09 Descrição Para cada ponto de táxi, o sistema deverá fornecer ao Usuário as seguintes informações: 1 – nome; 2 – número de telefone; 3 – número de celular; 4 – condições de pagamentos aceitos; 5 – valor da bandeira 1; 6 – valor da bandeira 2; 7 – serviços oferecidos; 8 – site. A fórmula para calcular a estimativa de custo de uma corrida é dada como: V = L + (D × B) Favoritos no mapa Quadro 9 – Regras de negócio. Fonte: Elaboração dos autores, 2011. Não é considerado, neste valor, o custo de tempo parado. Cada município determina o preço da largada dos pontos de táxis. Utiliza-se o ponto de táxi mais próximo ao usuário para efetuar o cálculo do custo de rota. Cada município determina os valores e os horários de vigência de cada bandeira. Para o cadastro e atualização de pontos de táxis no sistema, os campos obrigatórios são: ‘nome’, ‘valor da bandeira 1’, ‘valor da bandeira 2’ e ‘preço da largada’. Para cada ligação telefônica efetuada, um registro contendo as informações da chamada (nome do ponto de táxi, número, data) deverá ser armazenada na base de dados do aplicativo. Somente os pontos de táxis próximos a um raio de 10 km em relação ao Usuário são listados. Deverá ser mostrada a distância de cada ponto de táxi em relação ao Usuário. A lista deverá ser ordenada por proximidade de forma ascendente. Deverá haver um destaque especial na interface do módulo cliente para facilitar a identificação de pontos de táxis inseridos dentro da lista de favoritos do Usuário. 67 Com base nas regras de negócio mostradas no acima, é possível conhecer as condições e restrições que necessitam ser desenvolvidas no software. Tais regras devem ser consideradas durante todo o processo de desenvolvimento. 4.5 PROTOTIPAÇÃO DAS TELAS O processo de prototipagem é uma etapa fundamental para a validação da interface visual do sistema juntamente com o seu usuário e para que desenvolvedores tenham uma referência documentada para criar as interfaces de usuário. Trata-se de “uma técnica que serve de complemento à análise de requisitos é a construção de protótipos. No contexto do desenvolvimento de software, um protótipo é um esboço de alguma parte do sistema”. (BEZERRA, 2002, p. 37). Protótipos são comumente utilizados para facilitar a análise dos casos de uso de um sistema proposto e para também validar os requisitos definidos junto ao seu cliente. São apresentados, a seguir, os protótipos da tela principal, de listagem de pontos de táxis e da visualização das informações de um ponto de táxi. A Figura 23 mostra o protótipo da tela principal do sistema. Nela, é possível visualizar a posição provável do usuário, indicado por um ícone azul. Ao redor deste ícone, há outros ícones, representados por um táxi, indicando ao usuário a posição geográfica dos pontos de táxis próximos a ele. O usuário pode clicar neste ícone para visualizar as informações do ponto de táxi escolhido. 68 Figura 23 – Protótipo da tela principal. Fonte: Elaboração dos autores, 2011. Na Figura 24, é possível visualizar o protótipo da tela que lista os pontos de táxis. Nela, são apresentados os pontos de táxis próximos em relação à posição atual do Usuário, sendo que esta lista deve ser ordenada pela proximidade. Ao lado de cada ponto de táxi, há informações como o nome do ponto de táxi, o seu número de telefone, a distância relativa ao usuário e a informação de que este ponto está na lista de favoritos do usuário ou não (representado por uma estrela). 69 Figura 24 – Protótipo da tela de listagem de pontos de táxis. Fonte: Elaboração dos autores, 2011. É possível visualizar, na Figura 25, a tela que apresenta as informações de um ponto de táxi ao Usuário. 70 Figura 25 – Protótipo da tela de informações de um ponto de táxi. Fonte: Elaboração dos autores, 2011. Nesta tela, o usuário pode realizar chamadas telefônicas ou por mensagem de texto (SMS21). Por fim, na Figura 26, é representada a interface visual da camada de administração do sistema. 21 Short Message Service – Serviço de Mensagens Curtas. 71 Figura 26 – Protótipo da camada de administração Fonte: Elaboração dos autores, 2011 É nesta interface que o Administrador do sistema pode cadastrar, atualizar ou remover os pontos de táxis disponíveis na base de dados do sistema. 4.6 CASOS DE USO De acordo com Larman (2000, p. 32), “casos de uso são descrições narrativas (textuais) dos processos em uma empresa ou sistema”. Os casos de usos definem o escopo do sistema, demonstrando as possíveis ações que os seus usuários poderão realizar. Nas duas seções, a seguir, são mostrados os casos de usos do sistema, assim como as suas respectivas descrições. 72 4.6.1 Diagrama de caso de uso Segundo Booch, Rumbaugh e Jacobson (2000), um diagrama de caso de uso permite que seja feita uma visualização do sistema como um todo, tendo como foco os seus usuários e as interações que o mesmo realiza como o sistema. Na Figura 27, é apresentado o diagrama de caso de uso resultante do processo de planejamento do projeto, na visão do ator Usuário. Figura 27 – Diagrama de caso de uso – Ator Usuário. Fonte: Elaboração dos autores, 2011. Na Figura 28, encontram-se os casos de uso para o usuário Administrador. 73 Figura 28 – Diagrama de caso de uso - Ator Administrador. Fonte: Elaboração dos autores, 2011. Estes diagramas servirão como base para dar prosseguimento para as outras etapas do processo de modelagem do sistema. 4.6.2 Descrição dos casos de uso A seguir, é apresentada a documentação do caso de uso CSU01 – Abrir mapa. 74 Abrir mapa Identificador CSU01 Descrição Para que algumas ações sejam feitas no sistema, o Usuário deverá abrir a janela contendo um mapa interativo. Ator primário Usuário Ator secundário Google Maps Pré-condições -- Fluxo de tarefas 1 – Usuário abre o menu. 2 – Seleciona a opção “Mapa”. Fluxos de exceção 2.a - Não sendo possível acessar o serviço de mapas do Google; 2.a.1 - É mostrada uma mensagem de erro ao usuário; Pós-condições - Um mapa é apresentado na tela do Usuário. Quadro 10 – Caso de uso CSU01 – Abrir mapa. Fonte: Elaborador pelos autores, 2011. As descrições dos demais casos de uso encontram-se no Apêndice B. 4.6.3 Diagrama de Sequência Para cada caso de uso identificado, é possível criar um diagrama de sequência que descreve (em um nível maior de detalhamento) todas as interações do usuário com o sistema para atingir o objetivo levantado pelo caso de uso. Um diagrama de sequência “mostra as interações de um sistema com seus atores para realizar todo um caso de uso ou uma parte dele”. (BLAHA; RUMBAUGH, 2006). A Figura 29 demonstra um diagrama de sequência feito para o caso de uso CSU11 – Realizar chamada por telefone. 75 Figura 29 – Diagrama de sequência para o CSU11. Fonte: Elaboração dos autores, 2011. Os diagramas de sequência complementam as informações dos diagramas de caso de uso, fornecendo maiores detalhes de como o caso de uso estudado deve se comportar para atingir o seu objetivo e quais mensagens devem ser trocadas entre os diferentes componentes do sistema. 4.6.4 Diagrama de Classe Com o objetivo de planejar e documentar as estruturas de dados do sistema, faz-se o uso de um digrama de classe. “Um diagrama de classe descreve os tipos de objetos no sistema e os vários tipos de relacionamento estático que existem entre eles” (FOWLER; SCOOT, 2000, p. 57). Na Figura 30, há o diagrama de classe para as classes de modelo do sistema, cuja função é representar as entidades do sistema. 76 Figura 30 – Diagrama de classe – Classes de modelo. Fonte: Elaboração dos autores, 2011. Para as classes controladoras (responsáveis por receber, interpretar e executar processamentos de dados requisitados pelo usuário) foram modelados como demonstra a Figura 31. Figura 31 – Diagrama de classe – Controladores. Fonte: Elaboração dos autores, 2011. 77 Estes diagramas permitem que analistas de sistemas e programadores tenham uma perspectiva de como os dados são estruturados e processados dentro do domínio de negócio do sistema. 4.6.5 Diagrama de Utilização Um diagrama de utilização, segundo Fowler e Scott (2000, p. 131) “mostra as relações físicas entre componentes de software e hardware no sistema implementado”. Nele, é possível ter uma visão macro da instalação do sistema, de forma que seja possível conhecer todos os seus componentes e as interações entre cada um. Na Figura 32, é demonstrado o digrama de utilização proposto para o desenvolvimento do sistema desta pesquisa. 78 Figura 32 – Diagrama de utilização. Fonte: Elaboração dos autores, 2011. Com este diagrama, é possível visualizar, com maiores detalhes, a arquitetura do sistema, suas tecnologias envolvidas e as interações entre cada nodo. Além disso, estas informações são úteis para a instalação do sistema em produção. 79 5 DESENVOLVIMENTO Após o processo de análise e de modelagem, segue-se a etapa de desenvolvimento do sistema, tendo como base a documentação realizada na etapa anterior. Este capítulo tem como objetivo expor toda a etapa de desenvolvimento realizada para a construção do sistema proposto, começando pelo resumo das tecnologias utilizadas, o histórico do desenvolvimento, apresentações das telas do sistema, avaliação e considerações finais. 5.1 TECNOLOGIAS E FERRAMENTAS Uma vez determinados os requisitos (funcionais e não-funcionais) e os casos de uso do sistema, deve-se escolher as tecnologias e ferramentas apropriadas para atender ao que foi determinado na etapa de análise e modelagem para apoiar o processo de desenvolvimento. Há diversas ferramentas e tecnologias disponíveis, hoje no mercado, cada uma com suas características próprias, vantagens e desvantagens. Após pesquisas das tecnologias disponíveis, os autores selecionaram aquelas que julgaram apropriadas para o desenvolvimento do sistema proposto por esta monografia. A relação das tecnologias está ilustrada na Figura 33. 80 Figura 33 – Tecnologias e ferramentas utilizadas no sistema. Fonte: Elaboração dos autores, 2011. Nos itens, a seguir, é feita uma breve descrição das tecnologias e das ferramentas utilizadas, assim como os motivos de escolha de cada uma. Android Como ilustrado no capítulo 2.2, Android é um sistema operacional e também uma plataforma de desenvolvimento de código fonte aberto e gratuito voltado para dispositivos móveis. Sua biblioteca de componentes é bastante rica e possui uma ótima documentação. Apesar de ser complexa para desenvolvedores iniciantes e exigir uma alta curva de aprendizado, a plataforma Android permite criar aplicativos interativos com o usuário e totalmente customizáveis. Java Java foi escolhida pelo fato de a plataforma Android executar aplicativos escritos nesta linguagem. Trata-se de uma linguagem de programação de alto nível e orientada a 81 objetos, o que permite criar trechos de códigos reaproveitáveis. Sua facilidade de aprendizado e alta produtividade foram essenciais para o desenvolvimento do projeto. Eclipse Trata-se de uma IDE que visa a facilitar o desenvolvimento de aplicativos. Juntamente com o plugin ADT22 (Android Development Tools - Ferramentas de Desenvolvimento Android), a ferramenta Eclipse ganha a capacidade de gerenciar projetos para a plataforma Android, sendo possível realizar a compilação de projetos e de também executá-los em um emulador para testes de aplicativos. JSON JSON é um formato leve e de fácil leitura para representação e troca de dados (JSON, 2011). Devido às limitações de processamento e de memória disponível dos smartphones, há de se escolher um formato que não consuma muitos recursos computacionais para preservar a energia contida nas baterias. Ao contrário do formato XML23, o formato JSON exige pouco processamento para criar e ler dados por possuir uma sintaxe mais simples e compacta. REST Defendido por Roy Thomas Fielding em 2000 em sua tese de doutorado, a arquitetura REST compreende um conjunto de técnicas de engenharia para sistemas heterogêneos distribuídos na web. Baseia-se no princípio de que qualquer recurso deve possuir um identificador único, sendo que o mesmo pode ser estar sujeito a manipulações (buscar, criar, atualizar e remover) utilizando operações padronizadas, conhecidas como verbos (que, para o protocolo HTTP, são, respectivamente: GET, POST, PUT e DELETE) (FIELDING, 2011). Trata-se de uma alternativa às tecnologias RPC24 e Web Services (SOAP25, WSDL26, etc.), pois caracteriza-se por ser leve (utiliza apenas o protocolo HTTP), ser 22 http://developer.android.com/sdk/eclipse-adt.html 23 eXtensible Markup Language - Formato de dados de tipo texto utilizado para troca mensagens entre sistemas pela web (W3C, 2011). 24 Remote Process Call - Chamada de Processo Remota. 25 Simple Object Access Protocol - Protocolo Simples de Acesso à Objetos. 26 Web Services Description Language - Linguagem de Descrição de Serviços Web. 82 independente de plataforma e de linguagem de programação. Sistemas que seguem a fundo estes padrões são conhecidos como sistemas RESTful. Baseando-se nos requisitos não-funcionais do sistema, desempenho é uma qualidade importante para a boa aceitação do software por parte de seus usuários. Por este motivo, foi escolhida a tecnologia REST para comunicação entre clientes, e o servidor pelo fato de a mesma apresentar uma arquitetura simples, rápida e, também, escalável. MongoDB MongoDB é um SGBD de código-fonte aberto, gratuito, desenvolvido com a linguagem de programação C++, multiplataforma, não-relacional, sem esquemas, de alta performance, orientado a documentos e escalável. (MONGODB, 2011a). O MongoDB pertence à categoria de banco de dados NoSQL, que utiliza uma nova abordagem para o armazenamento e consulta de dados. Diferentemente dos SGBDs relacionais, o MongoDB não dispõe seus dados armazenados na estrutura de tabelas, linhas e colunas. Ao invés disto, o MongoDB organiza os seus dados em collections (coleções), similar às tabelas dos banco de dados relacionais. Cada coleção pode conter vários documentos (referentes às linhas de uma tabela) e cada documento poderá conter vários campos (ou colunas, usando a abordagem entidade-relacional). Esta nomenclatura diferente é devido ao fato de o MongoDB não possuir esquema (padrão de formato de tabelas e colunas), ou seja, qualquer dado pode ser inserido em qualquer coleção. Com isto, é possível criar documentos auto-contidos, ou seja, documentos que possuem todas as informações necessárias para representar uma entidade da vida real, sem depender de outros documentos (no MongoDB, não há relacionamentos). A vantagem fica pelo fato de as consultas retornarem todos os dados necessários para o funcionamento do sistema, sem realizar operações lentas de junção (joins). Entretanto, a base de dados não fica normalizada, podendo conter dados redundantes. Outro fator decisivo na escolha deste banco de dados é a simplicidade dos dados do sistema proposto. Como há a necessidade de armazenar somente informações referentes a pontos de táxis, agrupar todas estas informações em uma única coleção aumenta o desempenho nas consultas de dados realizadas pelos usuários. Também há disponível um suporte para sharding, um método de replicação de dados em ambientes distribuídos em que diversos nós possam compartilhar dados entre si. No caso de um nó deixar de operar, outro nó assume o seu lugar. Importante no caso de a 83 aplicação necessitar aumentar a sua capacidade de armazenamento de dados. (MONGODB, 2011b). Entre outras funcionalidades, destacam-se o suporte nativo a dados geográficos bidimensionais, índices, autenticação, backups e ferramentas para métricas e monitoramento de desempenho. Visando o desempenho e escalabilidade do sistema, o MongoDB possui todas as qualificações para gerenciar os dados do sistema com bastante rapidez e eficiência. Apache Tomcat Servidor web de código-fonte aberto, desenvolvido em Java e mantido pela fundação Apache. É capaz de receber, tratar e responder requisições do protocolo HTTP. (APACHE, 2011b). O Apache Tomcat caracteriza-se por ser um servidor leve e bastante rápido devido à sua arquitetura simples e estável. Spring Framework Framework para aplicativos Java, o Spring Framework, oferece suporte ao desenvolvimento de aplicações orientadas à objetos de uma maneira simples e fácil. Dentro dos módulos utilizados, destacam-se os módulos Core (núcleo), responsável pelo gerenciamento de objetos do sistema, e o módulo MVC (Model-View-Controller - ModeloVisão-Controlador), é capaz de tratar e responder requisições vindas de um servidor web. (SPRING SOURCE, 2011). Google Maps O Google Maps, como visto na seção 2.5, oferece um serviço de mapas e ferramentas para cálculo de rotas e de geocoding (processo para associar coordenadas geográficas a endereços, e vice-versa). O serviço de mapas do Google Maps é essencial para apresentar dados geográficos para o usuário do sistema, porém, necessita que o usuário do sistema tenha uma conexão com a Internet ativa. GeoTools Biblioteca de código-fonte aberto e escrita utilizando a linguagem Java. Fornece métodos para manipulação de dados geográficos, como renderização gráfica de mapas, cálculo de 84 distâncias, conversão de projeções, entre outros. (GEOTOOLS, 2011). Apresenta uma boa documentação e seus componentes são fáceis de utilizar. Subversion Subversion é uma ferramenta para versionamento de arquivos de projetos de software. Permite que desenvolvedores compartilhem o mesmo código e mantenham os registros de todas as alterações feitas, sendo possível revertê-las caso alguma modificação prejudique o funcionamento do software. (APACHE, 2011c). Maven De acordo com Apache (2011d), Maven é um software voltado ao gerenciamento de projetos desenvolvidos em Java. Com ele, é possível ter o controle de várias operações, tais como: compilação, testes, resolução de dependências com outras bibliotecas, relatórios, documentação do projeto, entre outros. Para cada projeto, deverá haver um arquivo chamado pom.xml em que todas as configurações devem ser declaradas para o Maven poder interpretálas. JUnit JUnit é a biblioteca de testes unitários mais conhecida da linguagem Java. O mesmo permite criar e executar testes unitários de classes do sistema e ver os seus resultados em tempo real, sendo importante para verificar se o código escrito está de acordo com as regras escritas como testes unitários. jQuery jQuery é uma biblioteca de código-fonte aberto e gratuito para a linguagem JavaScript 27 focada no desenvolvimento de aplicativos web dinâmicos. Possui diversos plugins disponíveis gratuitamente na Internet que incrementam a sua capacidade de manipular elementos de páginas HTML. Não exige conhecimentos avançados em JavaScript, e sua documentação é completa e rica em detalhes. 27 Linguagem de programação client-side, interpretada e orientada à objetos que é executada por navegadores web (comumente chamados de browsers). 85 5.2 HISTÓRICO DO DESENVOLVIMENTO Os principais desafios enfrentados durante o processo de codificação do sistema foram: Conhecer a plataforma Android: Ambos os autores nunca tiveram alguma experiência anterior em desenvolvimento de aplicativos voltados a dispositivos móveis. Ao iniciar, perceberam que o desenvolvimento deste tipo de software é totalmente diferente de um aplicativo desktop ou web, utilizando conceitos e técnicas muito diferentes das já conhecidas. Um período de estudo foi reservado para conhecer os detalhes desta tecnologia. Desempenho: Esta foi uma das maiores preocupações durante o desenvolvimento. Já era de conhecimento dos autores que os smartphones possuem limitações de memória e de processamento, portanto, o desenvolvimento do sistema foi realizado de forma a utilizar o mínimo possível de recursos do dispositivo. Na camada de servidor, optou-se utilizar a arquitetura REST por se tratar de uma solução simples e leve. Já o banco de dados MongoDB correspondeu bem às expectativas do autores por oferecer uma boa eficiência na busca de dados devido aos dados não serem normalizados e pela ausência de operações de junções nas consultas. Usabilidade: Construir uma aplicação que seja fácil e confortável de usar é um fator decisivo para o seu sucesso. Com a falta de experiência na área de design voltada para o usuário final, os autores deste trabalho recorreram à busca de feedbacks obtidos de usuários que se ofereceram a utilizar o sistema em versão de testes. As sugestões destes usuários foram de grande importância para melhorar a interface visual do sistema. Manipular dados geográficos: A falta de conhecimento na manipulação de dados geográficos foi uma das dificuldades iniciais do projeto. Com alguns dias de estudo focados neste assunto, foi possível compreender, em maiores detalhes, algumas técnicas para utilizar estas estruturas de dados. Alheio às estas situações acima citadas, o processo de desenvolvimento do sistema deste trabalho ocorreu conforme o planejado, sendo possível implementar todos os casos de usos definidos. 86 5.3 APRESENTAÇÃO DO SISTEMA O sistema proposto por este trabalho, que foi desenvolvido com base na modelagem apresentada no capítulo 4 e implementado utilizando as ferramentas e tecnologias citadas na seção 5.1, é apresentado a seguir. Para demonstrar o funcionamento do sistema, foi criado um exemplo de como o mesmo pode ser utilizado por parte de seus usuários. 5.3.1 Módulo administrador O módulo administrador é utilizado pelo Administrador do sistema. Nele, é possível cadastrar, atualizar e remover pontos de táxis que são acessados pelos usuários finais do sistema. 5.3.1.1 Tela principal A tela principal do módulo administrador é demonstrada na Figura 34. 87 Figura 34 – Módulo administrador – tela principal. Fonte: Elaboração dos autores, 2011. No canto direito desta tela, o Administrador tem acesso às informações de todos os pontos de táxis cadastrados, podendo removê-los ou editá-los clicando em um dos ícones disponíveis em cada linha da tabela de ponto de táxis. Ao selecionar uma linha da tabela, um ícone vermelho indicando a posição geográfica do ponto de táxi selecionado é plotado no mapa, à esquerda. 5.3.1.2 Cadastro de ponto de táxi Na tela principal, ao clicar na aba contendo o texto “Novo ponto de táxi”, é possível visualizar um formulário de cadastro, conforme mostra a Figura 35. 88 Figura 35 – Módulo administrador – formulário de cadastro de ponto de táxi. Fonte: Elaboração dos autores, 2011. Nele, o Administrador pode informar os dados daquele ponto de táxi (nome, telefone, formas de pagamento, valor da bandeira 1, valor da bandeira 2, preço de largada, serviços e site), além de sua posição geográfica. Neste exemplo, foi cadastrado um ponto de táxi chamado “Ponto de Táxi Praça 7 de Setembro” com algumas informações (apenas para fins de exemplo; não foram utilizados dados reais) e a sua localização geográfica foi dada como: latitude 27,64568 S e longitude 48,667156 W, indicada no mapa por um ícone vermelho. 5.3.2 Módulo cliente Para os usuários finais do sistema, deve ser utilizado um smartphone com conexão para a Internet e possuir uma antena GPS. Segue, abaixo, um exemplo de como o sistema pode ser utilizado pelo Usuário. 89 5.3.2.1 Tela principal Ao iniciar o aplicativo “Hey, Táxi!” pelo seu smartphone, o Usuário terá acesso ao mapa e pode visualizar a sua posição atual (informada pelo sistema GPS) e também os pontos de táxis próximos à sua localização. Considerando que o Usuário esteja localizado na posição geográfica: latitude 27,65386 S e longitude 48,67591 W, a sua tela principal será semelhante à Figura 36. Figura 36 – Módulo cliente – tela principal. Fonte: Elaboração dos autores, 2011. A posição do Usuário é representada por um círculo azul, enquanto os pontos de táxis são representados por ícones vermelhos. O Usuário pode navegar por este mapa, arrastando-o para qualquer direção e também sendo capaz de aumentar e diminuir o nível zoom. Nota-se que, nesta tela, já é possível visualizar os pontos de táxis que estão mais próximos ao Usuário. 90 5.3.2.2 Informações de um ponto de táxi Ao clicar sobre um ícone de ponto de táxi, o aplicativo requisita as informações do ponto de táxi selecionado para o servidor. No momento em que a resposta chegar ao smartphone, uma tela é mostrada para o Usuário, como pode ser possível visualizar na Figura 37. Figura 37 – Módulo cliente – tela de informações de um ponto de táxi. Fonte: Elaboração dos autores, 2011. Esta tela fornece ao Usuário todas as informações, que foram cadastradas no módulo de administração, sobre um determinado ponto de táxi, como o seu nome, número para contato, valores da bandeira 1 e 2, serviços prestados, formas de pagamentos aceitos e o seu site. A estrela à esquerda do nome do ponto de táxi indica se o mesmo está incluso dentro da lista de ponto de táxis favoritos. O Usuário é capaz de clicar sobre este ícone para adicionar/remover este ponto de táxi desta lista. 91 5.3.2.3 Chamada telefônica Na tela de informações de um ponto de táxi, pressionando o botão menu do smartphone, o seguinte menu é apresentado na tela: Figura 38 – Módulo cliente – menu da tela de informações de um ponto de táxi. Fonte: Elaboração dos autores, 2011. O Usuário que deseja iniciar uma ligação telefônica deverá selecionar a opção “Chamada”. Uma janela aparecerá aguardando a escolha do usuário quanto ao número que deseja iniciar a ligação (telefone ou celular, quando disponíveis). A Figura 39 demonstra esta janela: 92 Figura 39 – Módulo cliente – seleção de chamadas. Fonte: Elaboração dos autores, 2011. Para qualquer escolha do Usuário, uma nova janela é aberta para dar início à ligação telefônica para o número escolhido, como demonstra a Figura 40: 93 Figura 40 – Módulo cliente – chamada telefônica. Fonte: Elaboração dos autores, 2011. Após realizar estes passos, o Usuário pode requisitar o serviço de táxi via chamada telefônica. No momento em que uma chamada é iniciada, um registro é adicionado no histórico de chamadas para futuras consultas. 5.3.2.4 Enviar mensagem de texto Caso seja de desejo do Usuário manter contato com um ponto de táxi via mensagem de texto (SMS), o mesmo deverá selecionar o item “Chamada de texto” no menu. A tela demonstrada na Figura 41 é aberta: 94 Figura 41 - Módulo cliente – tela para enviar mensagem de texto. Fonte: Elaboração dos autores, 2011. Nela, é possível informar o corpo da mensagem SMS. Após concluir o preenchimento da mensagem e clicar no botão “Enviar”, a mensagem de texto é enviada para o ponto de táxi escolhido. 5.3.2.5 Lista de favoritos Na tela principal, ao clicar no botão de menu do smartphone, o seguinte menu de opções é aberta ao Usuário: 95 Figura 42 – Módulo cliente – menu da tela principal. Fonte: Elaboração dos autores, 2011. Selecionando a opção “Favoritos”, ume tela, como representado pela Figura 43, é aberta: 96 Figura 43 – Módulo cliente – tela de lista de favoritos. Fonte: Elaboração dos autores, 2011. Uma lista de pontos de táxis mantida pelo Usuário é listada nesta tela. Selecionando um item desta lista, a tela de informações de um ponto de táxi (como apresentada na seção 5.3.2.2) é aberta. Com esta funcionalidade, a busca por um determinado ponto de táxi de interesse do Usuário tornar-se-á mais rápida. 5.3.2.6 Histórico de chamadas Abrindo o menu principal, quando clicar na opção “Histórico”, é apresentada a tela contendo o histórico de chamadas telefônicas realizadas pelo Usuário, como mostra a Figura 44. 97 Figura 44 – Módulo cliente – tela de histórico de chamadas. Fonte: Elaboração dos autores, 2011. Para cada item da lista, é mostrado o nome do ponto de táxi, a data da chamada e o número de telefone ou celular que foi acionado. Os itens desta lista são ordenados pela data da chamada. Com esta tela, o Usuário poderá encontrar com maior rapidez um determinado ponto de táxi que foi chamado anteriormente. Para os pontos de táxis que estão inclusos na lista de favoritos, uma estrela é colocada ao lado do ícone do táxi. O usuário pode limpar esta lista, selecionando a opção “Limpar histórico” no menu desta tela. 5.3.2.7 Cálculo de rota No caso de o Usuário deste exemplo desejar ir até a UNISUL Campus Pedra Branca (latitude: 27,62435 S; longitude: 48,68174 W), mas não possui informações sobre o ponto de táxi mais próximo, seus números para contato e de quanto custará uma corrida até o 98 seu destino, o mesmo pode selecionar a opção “Calcular rota” do menu principal do aplicativo. Será pedido que o Usuário plote no mapa um ícone informando aonde será o seu destino (indicado por um ícone azul). Após isso, o aplicativo é instruído para encontrar a melhor rota (utilizando a Direction API da Google, visto na seção 2.5.1.2) para este destino para então mostrá-la no mapa, como demonstrado na Figura 45: Figura 45 – Módulo cliente – cálculo de rota. Fonte: Elaboração dos autores, 2011. Após o cálculo da rota e a confirmação do Usuário para efetuar os cálculos, a seguinte janela é aberta: 99 Figura 46 – Módulo cliente – tela de custos de uma corrida. Fonte: Elaboração dos autores, 2011. É possível visualizar, nesta janela, informações importantes para o Usuário que requisitou este serviço: a distância da rota e os valores (aproximados) da corrida quando utilizar a bandeira 1 e 2. Abaixo, é mostrado informações do ponto de táxi que foi utilizado como referência para os cálculos dos custos da rota (sempre é utilizado o ponto de táxi mais próximo ao Usuário). No menu desta tela, o Usuário pode iniciar uma ligação telefônica ou enviar uma mensagem de texto para este ponto de táxi. 5.3.2.8 Listagem de pontos de táxis próximos Ao selecionar a opção “Listar próximos” no menu principal, a seguinte tela é mostrada ao Usuário: 100 Figura 47 – Módulo cliente – tela de listagem de pontos de táxis mais próximos. Fonte: Elaboração dos autores, 2011. Os pontos de táxis mais próximos da localização do Usuário, a um raio de 10 km de distância, são listados nesta tela. Para cada item desta lista, o nome do ponto de táxi e a sua distância relativa ao Usuário são informados. Os pontos de táxis cadastrados como favoritos são diferenciados por uma estrela ao lado do ícone de táxi. Ao clicar sobre um item da lista, a tela de informações do ponto de táxi selecionado é aberta (como foi mostrado na seção 5.3.2.2). 5.4 AVALIAÇÃO Com o intuito de verificar as expectativas de prováveis usuários perante o sistema proposto, a etapa de avaliação foi iniciada logo após o término da etapa de desenvolvimento. Para coletar estas informações, foi elaborado um questionário para ser entregue aos 101 entrevistados. De acordo com Lakatos e Marconi (1991, p. 201), “questionário é um instrumento de coleta de dados, constituído por uma série ordenada de perguntas, que devem ser respondidas por escrito e sem a presença do entrevistador”. Optou-se por utilizar esta técnica de coletada de dados por a mesma ser simples, rápida e atingir um número maior de pessoas simultaneamente. O seu objetivo é prover dados para fundamentar a comprovação dos objetivos desta pesquisa. O questionário, criado pelos autores deste trabalho, contém perguntas de múltipla escolha para conhecer a opinião dos usuários sobre alguns pontos importantes do sistema como usabilidade, desempenho, satisfação, entre outros. Além disso, uma área aberta para inserir comentários, críticas e sugestões foi adicionada para o usuário colocar sua avaliação geral do sistema. Todas as perguntas são opcionais. Os sete usuários entrevistados, a convite dos autores, ofereceram-se a testar os dois módulos do sistema e responder ao questionário. Suas identidades não foram reveladas. As questões contidas nos questionários respondidos pelos entrevistados são mostradas no Quadro 11: Número Pergunta Pergunta 1 Você costuma utilizar o serviço de táxi? Pergunta 2 Atualmente, você encontra dificuldades para encontrar um ponto de táxi? Pergunta 3 O software utilizado atende a suas necessidades? Pergunta 4 O tempo de resposta do software é satisfatório? Pergunta 5 É fácil aprender a usar? Pergunta 6 Possui navegabilidade intuitiva, simples e eficiente? Pergunta 7 Apresenta suas informações com legibilidade, clareza e consistência? Pergunta 8 O aplicativo é estável e não apresentou falhas? Pergunta 9 Com o software, ficou mais fácil e eficiente buscar e chamar um táxi? Pergunta 10 Comentários, críticas e/ou sugestões Quadro 11 - Perguntas do questionário. Fonte: Elaboração dos autores, 2011. As perguntas 1 até 9 são fechadas, sendo que as possíveis alternativas são: “Sim”, “Às vezes” e “Não”, enquanto que, a pergunta 10 é aberta, podendo o(a) entrevistado(a) deixar a sua opinião geral sobre o sistema. 102 Os questionários respondidos encontram-se no Apêndice C. A interpretação dos resultados obtidos é feita a seguir. 5.4.1 Interpretação dos resultados De posse dos resultados dos questionários realizado nesta etapa, foi possível representá-los em gráficos para que seja feita uma análise geral da opinião dos entrevistados sobre o sistema desenvolvido. Nesta seção, são expostas as análises e interpretações acerca dos resultados obtidos da etapa de avaliação. Na primeira pergunta no questionário, foi questionado se o(a) entrevistado(a) costuma utilizar o serviço de táxi de sua cidade. O resultado é mostrado na Figura 48. Figura 48 – Questionário – Resultados da pergunta 1. Fonte: Elaboração dos autores, 2011. Percebe-se, no gráfico a cima, que poucos entrevistados utilizam o serviço de táxi diariamente. Motivos para esta falta de uso neste tipo de serviço podem ser: preço, ineficiência, preferência por outro meio de transporte, falta de disponibilidade e de informação. O software proposto por este trabalho visa resgatar a confiança entre os usuários e os motoristas de táxis, oferecendo serviços que estimulem o uso deste meio de transporte. A segunda pergunta questiona a facilidade de encontrar os serviços de táxis, na visão dos entrevistados. O resultado desta pergunta encontra-se na Figura 49. 103 Figura 49 – Questionário – Resultados da pergunta 2. Fonte: Elaboração dos autores, 2011. Com os resultados desta pergunta, percebe-se que mais da metade dos entrevistados enfrentam dificuldades em encontrar um ponto de táxi, o que pode levá-los a utilizar outro meio de transporte. A terceira pergunta presente no questionário foi anulada por apresentar um questionamento de dupla interpretação. Não foi possível obter nenhuma informação com os resultados desta pergunta. A quarta pergunta do questionário é: “O tempo de resposta do software é satisfatório?”. O seu objetivo é verificar se a velocidade em que as informações são apresentadas ao usuário, assim que foram requisitadas, encontra-se em um nível satisfatório. A Figura 50 mostra o resultado desta pergunta. Figura 50 – Questionário – Resultados da pergunta 4. Fonte: Elaboração dos autores, 2011. 104 De acordo com o gráfico a cima, o tempo de resposta não atrapalhou o uso do sistema e não impediu o uso de suas funcionalidades, de acordo com a opinião dos entrevistados. A próxima pergunta questionou aos entrevistados a facilidade de entender o fluxo de trabalho exigido para realizar as tarefas no sistema. O resultado é demonstrado na figura a seguir. Figura 51 – Questionário – Resultados da pergunta 5. Fonte: Elaboração dos autores, 2011. Percebeu-se que ocorreram certas dificuldades por parte de alguns entrevistados em realizar as operações no sistema. Na seção de comentários e sugestões de um dos entrevistados, encontra-se a seguinte frase: “Instruir como calcular rota”, o que claramente demonstra que esta funcionalidade precise ser revista para tornar mais claro ao usuário a maneira correta de calcular o preço estimado de uma rota. Outra sugestão para auxiliar o aprendizado de uso é criando uma seção de ajuda para usuário iniciantes. A sexta pergunta também está relacionada à usabilidade, porém, ela enfatiza mais a navegabilidade do sistema, questionando aos entrevistados se o sistema os conduziu de uma maneira clara a realização de suas tarefas. O resultado desta pergunta é mostrado na Figura 52. 105 Figura 52 – Questionário – Resultados da pergunta 6. Fonte: Elaboração dos autores, 2011. Em geral, houve uma boa aceitação na forma em que o sistema conduz os seus usuários. Porém, alguns detalhes levantados nesta etapa merecem destaque, como, por exemplo, o seguinte comentário de um dos entrevistados: “Validar quando o usuário deseja sair do sistema”. A falta desta funcionalidade fazia com que o usuário saísse do sistema sem a intenção caso o mesmo pressione o botão “voltar” várias vezes. Uma correção para esta falha foi implementada após a coleta e leitura dos questionários. Na mesma categoria de perguntas relacionadas à interface, a oitava pergunta do questionário procura conhecer a opinião dos entrevistados a respeito da legibilidade, clareza e consistência das informações apresentadas no sistema. O resultado é mostrado na Figura 53. Figura 53 – Questionário – Resultados da pergunta 7. Fonte: Elaboração dos autores, 2011. 106 O gráfico mostrado na figura anterior demonstra que, segundo a opinião dos entrevistados, o sistema foi consistente em apresentar as suas informações ao usuário e não exibiu dados incorretos ou pouco legíveis. A próxima pergunta questiona ao entrevistado se o mesmo encontrou alguma falha no sistema. Na próxima figura, são exibidos os resultados obtidos desta pergunta. Figura 54 – Questionário – Resultados da pergunta 8. Fonte: Elaboração dos autores, 2011. Algumas falhas (bugs) foram encontradas pelos entrevistados durante o processo de avaliação, o que explica o fato de serem feitas repostas no item “Às vezes” nesta pergunta. As mesmas foram corrigidas após o término desta etapa. Por fim, na última pergunta, foi questionado aos entrevistados a sua opinião sobre a eficiência do software perante a problemática apontada neste trabalho. O seu resultado é demonstrado na Figura 55. 107 Figura 55 – Questionário – Resultados da pergunta 9. Fonte: Elaboração dos autores, 2011. Com base neste gráfico e nos comentários contidos nos questionários, é possível afirmar que o software proposto atendeu aos requisitos de facilitar e automatizar a busca e chamadas de táxis, na visão dos entrevistados deste questionário. Um comentário feito por um dos entrevistados reforça esta afirmação: “[...] de modo geral o software apresenta um bom resultado. Acredito que será muito útil.”. Após a coleta e avaliação dos resultados, percebeu-se um nível de satisfação considerada aceitável por parte dos entrevistados que responderam aos questionários. Algumas falhas foram encontradas nesta etapa, que logo foram corrigidas. Também foram feitas algumas sugestões de melhorias, sendo que as mais simples e rápidas de serem implementadas foram realizadas no sistema, as outras, que se mostraram mais relevantes, foram classificadas como sugestões de trabalhos futuros. Conclui-se, nesta etapa, que o objetivo geral do aplicativo de tornar mais fácil e eficiente a busca e chamada de táxis foi atingido, baseando-se nos questionários e feedbacks recebidos durante o período de desenvolvimento e avaliação. 5.5 CONSIDERAÇÕES Este capítulo apresentou, de uma maneira geral, todo o processo de desenvolvimento do sistema proposto, iniciando pelo estudo das tecnologias, seguindo para a implementação até chegar à apresentação do resultado final. Observou-se que o sistema 108 proposto atendeu aos requisitos levantados por esta pesquisa, servindo como uma boa opção de ferramenta para busca e chamadas de táxis de uma maneira simples e rápida. Com a avaliação do sistema, foi possível obter opiniões gerais sobre os módulos desenvolvidos, simulando o papel de um usuário final. A avaliação dos resultados mostrou que o sistema proposto atingiu as reais necessidades dos usuários que desejam requisitar um táxi. 109 6 CONCLUSÕES E TRABALHOS FUTUROS Este capítulo apresenta as conclusões finais desta pesquisa, baseados no sistema desenvolvido proposto por este trabalho, assim como os resultados obtidos por meio das avaliações de usuários. Também, neste capítulo, é feito algumas sugestões de trabalhos futuros para outras pesquisas desta área. 6.1 CONCLUSÕES Este trabalho apresentou um protótipo de solução para dispositivos móveis, que utilizam a plataforma Android, a auxiliarem os seus usuários a buscar e chamar os serviços de táxis mais próximos às suas localizações geográficas. Para tal, foram reunidos as tecnologias GPS, Android, Google Maps, MongoDB e arquitetura REST para criar um aplicativo que torne esta tarefa mais fácil e eficiente. No final da etapa de desenvolvimento, deu-se início ao processo de avaliação do protótipo com a aplicação dos questionários, a partir dos quais foram recolhidos opiniões e feedbacks de possíveis usuários do sistema. Com base nos resultados da etapa de avaliação do protótipo, verificou-se que este trabalho atingiu o seu objetivo em propor uma solução utilizando a Tecnologia da Informação (TI) para auxiliar usuários dos serviços de táxis dos centros urbanos a buscarem e realizarem chamadas aos pontos de táxis, de modo que este serviço prestado pelo sistema de informação desenvolvido torne este processo mais ágil e eficiente aos seus usuários. Conhecimentos teóricos e técnicos em GPS, SIG, cartografia e Google Maps foram fundamentais para a compreensão do problema e também na formulação da solução. Tanto a etapa de modelagem e captação de requisitos quanto à etapa de desenvolvido possibilitaram uma grande oportunidade de aprendizado e aperfeiçoamento de técnicas obtidas no decorrer do curso de graduação. As ferramentas e tecnologias selecionadas para o desenvolvimento do sistema proposto corresponderam às expectativas dos autores, fornecendo uma estrutura robusta e confiável para implementar as funcionalidades previstas no planejamento da pesquisa. O aplicativo “Hey, Táxi!”, objeto resultante desta pesquisa, atendeu às expectativas de seus autores e dos entrevistados da etapa de avaliação em criar 110 uma solução para dispositivos móveis que esteja aliada a uma necessidade comum para pessoas dos grandes centros urbanos, e que, ao mesmo tempo, gere valor para seus usuários oferecendo um serviço importante para quem necessita se deslocar para outros lugares utilizando um táxi como meio de transporte. 6.2 TRABALHOS FUTUROS O sistema proposto por este trabalho ainda pode possuir muitas funcionalidades, que podem ser incorporadas em trabalhos futuros. Tais funcionalidades podem ser de grande valor para o seu usuário final, aperfeiçoando as já existentes ou criando novos serviços para auxiliar às buscas de pontos de táxis. Algumas delas são baseadas nos feedbacks recebidos durante o período de desenvolvimento e de avaliação. Elas são descritas a seguir: possibilitar que um usuário avalie e faça comentários sobre o serviço prestado por um ponto de táxi, criando um ranking de pontos de táxis mais bem avaliados; para a funcionalidade de cálculo de rota, aperfeiçoar o algoritmo que sugere o ponto de táxi ao usuário para considerar, além da sua distância ao usuário, aquele ponto de táxi que: o oferecer o menor valor da bandeira utilizada no horário vigente; o possuir a melhor avaliação dos usuários; o atendeu uma chamada do usuário anteriormente; o estiver presente na lista de favoritos do usuário; o possuir táxis disponíveis para realizar uma corrida. permitir que os próprios usuários sugiram incluir informações de pontos de táxis que não estão cadastrados no sistema, ou fazer correções das informações já existentes; visualizar informações dos últimos pontos de táxis sem a necessidade de possuir uma conexão com a Internet ativa (modo offline); mostrar, ao usuário, informações como: o capacidade do porta malas, quando disponível; o capacidade de passageiros; o número de pontos de táxis disponíveis em um ponto de táxi. 111 busca de pontos de táxis que possuírem determinadas características de interesse ao usuário (possui telefone ou celular, aceita determinadas formas de pagamentos, possui ar-condicionado, há disponibilidade para transportar malas, etc.); aumentar o alcance do aplicativo proposto, desenvolvendo versões para outras tecnologias voltadas à dispositivos móveis, como, por exemplo, iPhone, iPad, HTML 5, Blackberry, Windows Phone, entre outros; estudo de técnicas para proteger os serviços RESTful oferecidos pelo servidor do sistema, de forma a disponibilizar determinados recursos somente a usuários devidamente autenticados e autorizados no sistema; estudo de usabilidade e ergonomia voltado à aplicativos para dispositivos móveis; utilizar os mesmos conceitos e tecnologias para a criação de um aplicativo para busca de pontos de ônibus de uma cidade, seus horários e itinerários. REFERÊNCIAS ALECRIM, Emerson. O kernel do Linux. Disponível em: <http://www.infowester.com/linuxkernel.php>. Acesso em: 25 jun. 2011. ALOUINI, Mohamed-Slim. GPS: An Overview. Tunisian Scientific Magazine, 1996. ANDRADE, Maria Margarida de. Introdução à metodologia do trabalho científico: elaboração de trabalhos na graduação. 3. ed. São Paulo: Atlas, 1998. APACHE. Apache License: Version 2.0. Disponível em: <http://www.apache.org/licenses/LICENSE-2.0>. Acesso em: 1 mai. 2011a. ______. Apache Tomcat. Disponível em: <http://tomcat.apache.org/>. Acesso em: 16 jul. 2011b. ______. Subversion. Disponível em: <http://subversion.apache.org/>. Acesso em: 16 jul. 2011c. ______. Apache Maven. Disponível em: <http://maven.apache.org/>. Acesso em: 16 jul. 2011d. BEZERRA, Eduardo. Princípios de análise de sistemas com UML. Rio de Janeiro: Campus, 2002. BLAHA, Michael; RUMBAUGH, James. Modelagem e Projetos Baseados em Objetos com UML 2. 2. ed. rev. e atual. Rio de Janeira: Campus, 2006. BOOCH, Graddy; RUMBAUGH, James; JACOBSON, Ivar. UML: guia do usuário. Rio de Janeiro: Campus, 2000. BORNSTEIN, D. Dalvik Virtual Machine. Disponível em: <http://www.dalvikvm.com/>. Acesso em: 2 mai. 2011. BRANCO, Anselmo L. Latitude, Longitude e GPS. Disponível em: <http://educacao.uol.com.br/geografia/ult1694u97.jhtm>. Acesso em: 22 abr. 2011. CÂMARA, Gilberto et al. Anatomia de Sistemas de Informação Geográfica. 1996. Disponível em: <http://www.dpi.inpe.br/gilberto/livro/anatomia.pdf>. Acesso em: 22 abr. 2011. CÂMARA, Gilberto; DAVIS, Clodoveu. Introdução. In: CÂMARA, Gilberto et al. Introdução à Ciência da Geoinformação. Disponível em: <http://www.dpi.inpe.br/gilberto/livro/introd/>. Acesso em: 21 abr. 2011. CERVO, Amado Luiz; BERVIAN, Pedro A. Metodologia Científica. 5. ed. São Paulo: Pretince Hall, 2002. DAVIS, Bruce Ellsworth. GIS: a visual approach. Cengage Learning, 2001. DANA, Nourie. Getting Started With an Integrated Development Enviromment (IDE). Disponível em: <http://java.sun.com/developer/technicalArticles/tools/intro.html>. Acesso em: 22 mai. 2011. DIAS, Kelvin Lopes; SADOK, Djamel Fauzi Hadj. Internet Móvel: Tecnologias, Aplicações e QoS. 19º Simpósio Brasileiro de Redes de Computadores: 2001. DOCFORGE. Framework. Disponível em: <http://docforge.com/wiki/Framework>. Acesso em: 8 mai. 2011. EL-RABBANY, Ahmed. Introduction to GPS: the Global Positioning System. Artech House Publishers, 2002. FELKER, Donn; DOBBS, Joshua. Android Application Development for Dummies. Wiley Publishing, 2011. FIELDING, Roy Thomas. Architectural Styles and the Design of Network-based Software Architectures. Disponível em: <http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm>. Acesso em: 16 jul. 2011. FLITZ, Paulo Roberto. Cartografia básica. 2 ed., rev. e ampl. Canoas: Centro Universitário La Salle, 2005. FOWLER, Marting; SCOOT, Kendal. UML Essencial: Um breve guia para a linguagempadrão de modelagem de objetos. 2 ed. Porto Alegre: Bookman, 2000. FRANCH, Gregory T. Understanding the GPS: an introduction to the Global Positioning System. GeoResearch: 1996. GARTNER. Gartner Says Worldwide Mobile Phone Sales Grew 35 Percent in Third Quarter 2010; Smartphone Sales Increased 96 Percent. Disponível em: <http://www.gartner.com/it/page.jsp?id=1466313>. Acesso em: 30 mai. 2011. ______. Gartner Says Sales of Mobile Devices in Second Quarter of 2011 Grew 16.5 Percent Year-on-Year; Smartphone Sales Grew 74 Percent. Disponível em: <http://www.gartner.com/it/page.jsp?id=1764714>. Acesso em: 3 set. 2011. GeoTools. About GeoTools. Disponível em: <http://geotools.org/about.html>. Acesso em: 19 out. 2011. GIL, Antônio Carlos. Como elaborar projetos de pesquisa. 3. ed. São Paulo: Atlas, 1996. GOOGLE. Android. Disponível em: <http://www.android.com>. Acesso em: 26 mar. 2011a. ______. Ajuda do Mapas: Sobre o Google Maps. Disponível em: <http://maps.google.com/support/bin/answer.py?hlrm=en&answer=7060>. Acesso em: 10 abr. 2011b. ______. Serviços da web da Google Maps API: The Google Directions API. Disponível em: <http://code.google.com/intl/pt-BR/apis/maps/documentation/directions/#Introduction>. Acesso em: 12 abr. 2011c. ______. Serviços da web da Google Maps API: Google Geocoding API. Disponível em: <http://code.google.com/intl/pt-BR/apis/maps/documentation/geocoding/#Geocoding>. Acesso em: 12 abr. 2011d. ______. What is Android?. Disponível em: <http://developer.android.com/guide/basics/what-is-android.html>. Acesso em: 1 mai. 2011e. ______. Licenses. Disponível em: <http://source.android.com/source/licenses.html>. Acesso em: 1 mai 2011f. ______. Introducing the T-Mobile G1. Disponível em: <http://www.google.com/intl/en_us/mobile/android/hpp.html>. Acesso em: 1 mai. 2011g. ______. Application Fundamentals. Disponível em: <http://developer.android.com/guide/topics/fundamentals.html>. Acesso em: 2 mai. 2011h. ______. Activities. Disponível em: <http://developer.android.com/guide/topics/fundamentals/activities.html>. Acesso em: 7 mai. 2011i. ______. Intents and Intent Filters. Disponível em: <http://developer.android.com/guide/topics/intents/intents-filters.html>. Acesso em: 7 mai. 2011j. ______. Press/media. Disponível em: <http://www.android.com/media/>. Acesso em: 7 mai. 2011k. GSM ASSOSIATION. Location Based Services. Disponível em: <http://www.gsmworld.com/documents/se23.pdf>. Acesso em: 23 abr. 2011. HANSON, Jarice. 24/7: how cell phones and the Internet change the way we live, work, and play. Greenwood Publishing Group: 2007 IBGE. Dados do Censo 2010 publicados no Diário Oficial da União do dia 04/11/2010. Disponível em: <http://www.ibge.gov.br/censo2010/dados_divulgados/index.php>. Acesso em: 26 mar. 2011a. ______. Noções Básicas de Cartografia. Disponível em: <http://www.ibge.gov.br/home/geociencias/cartografia/manual_nocoes/representacao.html>. Acesso em: 22 abr. 2011b. ______. Mapas Estaduais. Disponível em: <http://www.ibge.gov.br/mapas_ibge/atlas_juv_estaduais.php>. Acesso em: 3 set. 2011c. IBM. RESTful Web Services: The basics. Acessado em: <https://www.ibm.com/developerworks/webservices/library/ws-restful/>. Acesso em: 19 jun. 2011. INTERNATIONAL CARTOGRAPHIC ASSOCIATION. Mission. Disponível em: <http://icaci.org/mission>. Acesso em: 22 abr. 2011. IT WEB. Plataforma Android vira líder de mercado. Disponível em: <http://www.itweb.com.br/noticias/index.asp?cod=76469>. Acessado em: 26 mar. 2011. JIANXIN, Yu et al. Design and Implementation of Taxi Calling and Dispatching System based on GPS Mobile Phone: A Research for LBS Application Teaching Case. In: INTERNATIONAL CONFERENCE ON COMPUTER SCIENCE & EDUCATION, 4., 2009, China. Anais… p. 1163-1169. JSON. Introdução ao JSON. Disponível em: <http://www.json.org/json-pt.html>. Acesso em: 19 jun. 2011. KOOLHAAS, Michael. Elementos del sistema de posicionamiento global (GPS). Disponível em: <http://www.fagro.edu.uy/~topografia/docs/Elem.del_GPS1.3.pdf>. Acesso em: 22 abr. 2011. LAKATOS, E. M.; MARCONI, M. A. Fundamentos de metodologia científica. 3. ed. rev. e ampl. São Paulo : Atlas, 1991. LARMAN, Craig. Utilizando UML e padrões: uma introdução à análise e ao projeto orientado a objetos. Porto Alegre: Bookman, 2000. MARIMOTO, Carlos Eduardo. Smartphones: Guia Prático. Disponível em: <http://www.hardware.com.br/livros/smartphones/google-maps.html>. Acesso em: 10 abr. 2011. MATTAR NETO, João Augusto. Metodologia Científica na Era da Informática. São Paulo: Saraiva, 2002. MEZZAROBA, O; MONTEIRO, C. Manual de Metodologia da Pesquisa no Direito. 2. ed. rev. São Paulo: Saraiva, 2004. MONGODB. MongoDB. Disponível em: <http://www.mongodb.org/>. Acesso em: 16 jul. 2011a. ______. Sharding Introduction. Disponível em: <http://www.mongodb.org/display/DOCS/Sharding+Introduction>. Acesso em: 16 jul. 2011b. MONICO, J. F. G. Posicionamento pelo NAVSTAR-GPS: Descrição, fundamentos e aplicações. 1 ed. Presidente Prudente: Editora UNESP, 2000. MONQUEIRO, Julio Cesar Bessa. 40% do uso do Google Maps é através de dispositivos portáteis. Disponível em: <http://www.hardware.com.br/noticias/2011-03/googlemobile.html>. Acesso em: 17 mar. 2011. MYTAXI. myTaxi. Disponível em: <http://www.mytaxi.net>. Acesso em: 23 out. 2011. NIELSEN. Android Most Popular Operating System in U.S. Among Recent Smartphone Buyers. Disponível em: <http://blog.nielsen.com/nielsenwire/online_mobile/android-mostpopular-operating-system-in-u-s-among-recent-smartphone-buyers/>. Acesso em: 1 mai. 2011. PC MAGAZINE. Definition of: API. Disponível em: <http://www.pcmag.com/encyclopedia_term/0,2542,t=API&i=37856,00.asp>. Acesso em: 24 abr. 2011a. ______. Definition of: DBMS. Disponível em: <http://www.pcmag.com/encyclopedia_term/0,2542,t=DBMS&i=40952,00.asp>. Acesso em: 29 mai. 2011b. ______. Definition of: Scalable. Disponível em: < http://www.pcmag.com/encyclopedia_term/0,2542,t=scalable&i=50835,00.asp>. Acesso em: 10 out. 2011c. PEREIRA, Lúcio Camilo; SILVA, Lourenço. Android para Desenvolvedores. Brasport, 2009. PESTANA, António. Sistema de Posicionamento Global. Disponível em: <http://navstar.idt.ipp.pt/Acetatos/navstar_2002.pdf>. Acesso em: 24 jun. 2011. PETERSON, Michael P. A Critical Assessment of Maps and the Internet. Disponível em: <http://www.rbc.ufrj.br/_pdf_60_2008/60_03_7.pdf>. Acesso em: 25 jun. 2011. PRESSMAN, Roger. Engenharia de Software. 5. ed. Rio de Janeiro: McGraw-Hill, 2002. PRESTES, Maria Luci de Mesquita. A pesquisa e a construção do conhecimento científico: do planejamento aos textos, da escola à academia. 2. ed. São Paulo: Rêspel, 2003. PR NEWSWIRE. World Mobile Applications Market Worth US$25 Billion by 2015. Disponível em: <http://www.prnewswire.com/news-releases/marketsandmarkets-worldmobile-applications-market-worth-us25-billion-by-2015-114087839.html>. Acesso em: 30 mai. 2011. RAMESH, A.; MISRA, R. P. Fundamentals of Cartography: Revised and Enlarged. Concept Publishing, 1969. RECKZIEGEL, Maurício. Google Directions e Elevation API: Aperfeiçoando o cálculo de autonomia de veículos. Disponível em: <http://imasters.com.br/artigo/17349/tendencias/google_directions_e_elevation_api_aperfeico ando_o_calculo_de_autonomia_de_veiculos/>. Acesso em: 12 abr. 2011. REDE NACIONAL DE PESQUISA. O que é middleware. Disponível em: <http://www.rnp.br/noticias/2006/not-060926.html>. Acesso em: 9 mai. 2011. REZENDE, Denis Alcide. Engenharia de software e sistemas de informação. Brasport: 2006. ROGERS, Rick et al. Android Application Development: Programming with the Google SDK. O'Reilly, 2009 ROOS, Dave. HowStuffWorks: Como aproveitar melhor uma API para conferências online. Disponível em: <http://informatica.hsw.uol.com.br/conferencia-api4.htm>. Acesso em: 18 de mar. 2011. RUIZ, João Álvaro. Metodologia Científica: guia para eficiência nos estudos. São Paulo: Atlas, 1996. SILVA, Aloizio; MATEUS, Geraldo. A Mobile Location-Based Vehicle Fleet Management Service Application. In: IEEE INTELLIGENT VEHICLES SYMPOSIUM, 4., 2003, Columbus. Anais... p. 25-30. SOUSA, Giselle; LIMA, Zélia. Geoprocessamento a aplicação do GPS na navegação marítima. SEPA: Seminário Estudantil de Produção Acadêmica, Salvador, 1997. SKYCODERS. cab4me. Disponível em: <http://www.cab4me.com/>. Acesso em: 23 out. 2011. SPRING SOURCE. About Spring. Disponível em: <http://www.springsource.org/about>. Acesso em: 16 jul. 2011. STRICKLAND, Jonathan. HowStuffWorks: Como funciona o Android (Google Phone). Disponível em: < http://informatica.hsw.uol.com.br/google-phone2.htm>. Acesso em: 9 de mai. 2011. TANENBAUM, Andrew S; WOODHULL, Albert S. Sistemas operacionais: projeto e implementação. 2a edição. Porto Alegre: Bookmn, 2000. TARIFA DE TÁXI. Tarifa de Táxi. Disponível em: <http://www.tarifadetaxi.com/>. Acesso em: 23 out. 2011. TAURION, Cezar. Internet Móvel: Tecnologias, aplicações e modelos. Rio de Janeiro: Campus, 2002. TAXI MAGIC. Taxi Magic. Disponível em: <http://taximagic.com/>. Acesso em: 23 out. 2011. TELECO. Estatísticas de Celulares no Brasil. Disponível em: <http://www.teleco.com.br/ncel.asp>. Acesso em: 26 mar. 2011. VIVA O LINUX. O que é GNU/Linux. Disponível em: <http://www.vivaolinux.com.br/linux/>. Acesso em: 25 jun. 2011. W3C. XML. Disponível em: <http://www.w3.org/XML/>. Acesso em: 7 Ago. 2011. W3SCHOOLS. AJAX Introduction. Disponível em: <http://www.w3schools.com/ajax/ajax_intro.asp>. Acesso em: 3 set. 2011. 120 APÊNDICES 121 APÊNDICE A – CRONOGRAMA 122 APÊNDICE B – DESCRIÇÃO DOS CASOS DE USO Visualizar posição atual no mapa Identificador CSU02 Descrição Neste caso de uso, estão descritos os procedimentos para o Usuário localizar-se geograficamente no mapa. Ator primário Usuário Ator secundário GPS Pré-condições -- Fluxo de tarefas 1 – Realizar CSU01. 2 – É iniciado serviço de localização por GPS. 3 – A cada 1 (um) minuto, o sistema atualiza a posição do Usuário no mapa. Fluxos alternativos -- Fluxos de exceção 2.a - Não sendo possível acessar o serviço de GPS. 2.a.1 – É mostrada uma mensagem de erro. Pós-condições - Um ícone é plotado no mapa, indicando ao Usuário a sua posição geográfica. Quadro 12 - Caso de uso CSU02 - Visualizar posição atual no mapa. Fonte: Elaboração dos autores, 2011. 123 Visualizar pontos de táxis através do mapa Identificador CSU03 Descrição Permite que o Usuário visualize as posições geográficas dos pontos de táxis utilizando o mapa. Ator primário Usuário Ator secundário GPS, Google Maps Pré-condições -- Fluxo de tarefas 1 – Realizar CSU01. 2 – A aplicação requisitará as informações geográficas dos pontos de táxis do local que seta sendo mostrado ao Usuário. Fluxos alternativos -- Fluxos de exceção 2.a - Não sendo possível comunicar-se com o servidor da aplicação. 4.a.1 - Uma mensagem de erro é mostrada ao Usuário. 2.b - No caso de encontrar pontos de táxis sem informações geográficas. 4.b.1 - Não é mostrado no mapa. Pós-condições - Para cada ponto de táxi que foi encontrado, é plotado no mapa um ícone indicando a sua posição. Quadro 13 - Caso de uso CSU03 - Visualizar pontos de táxis através do mapa. Fonte: Elaboração dos autores, 2011. 124 Visualizar lista de pontos de táxis próximos Identificador CSU04 Descrição Com o objetivo de facilitar a busca de pontos de táxis, o sistema é capaz de listar os pontos de táxis próximos à localização do Usuário. Ator primário Usuário Ator secundário GPS Pré-condições - A posição do Usuário deve ser conhecida. Fluxo de tarefas 1 – Usuário abre o menu. 2 – Seleciona a opção “Lista”. 3 – A posição geográfica do Usuário é calculada pelo GPS. 4 – Uma nova janela é aberta. Fluxos alternativos -- Fluxos de exceção 3.a – Não sendo possível acessar o serviço do GPS. 3.a.1 – Uma mensagem de erro é mostrada. 3.a.2 – O sistema retornará à janela principal (mapa). Pós-condições - Lista com os pontos mais próximos à um raio de 10 km, ordenados por proximidade, em relação ao Usuário. Quadro 14 - Caso de uso CSU04 - Visualizar lista de pontos de táxis próximos. Fonte: Elaboração dos autores, 2011. Visualizar informações de pontos de táxis Identificador CSU05 Descrição Permite que o Usuário visualize informações e características de um ponto de táxi desejado. Ator primário Usuário Ator secundário -- Pré-condições -- Fluxo de tarefas 1 – O Usuário abre o mapa ou listagem de pontos de táxis. 2 – O mesmo clica em um ícone de um ponto de táxi. 3 – É feita uma requisição ao servidor para buscar as informações do táxi escolhido. Fluxos alternativos -- Fluxos de exceção 3.a - Não sendo possível comunicar-se com o servidor da aplicação. 3.a.1 - Uma mensagem de erro é mostrada ao Usuário. 3.a.2 - O sistema retornará à janela principal (mapa). Pós-condições - É apresentada uma tela contendo todas as informações do ponto de táxi escolhido. Quadro 15 - Caso de uso CSU05 - Visualizar informações de pontos de táxis. Fonte: Elaboração dos autores, 2011. 125 Visualizar histórico de chamadas Identificador CSU06 Descrição O Usuário pode recuperar informações de pontos de táxis que foram chamados anteriormente. Ator primário Usuário Ator secundário -- Pré-condições -- Fluxo de tarefas 1 – Usuário abre o menu. 2 – O mesmo clica no item “Histórico”. 3 – É feita uma busca das últimas chamadas realizadas pelo Usuário. Fluxos alternativos -- Fluxos de exceção 3.a - No caso de não encontrar nenhuma chamada. 3.a.1 - É apresentada uma lista vazia. Pós-condições - É apresentada uma lista contendo as últimas 10 chamadas para pontos de táxi diferentes realizadas pelo Usuário. Quadro 16 - Caso de uso CSU06 - Visualizar histórico de chamadas. Fonte: Elaboração dos autores, 2011. Gerenciar favoritos Identificador CSU07 Descrição Neste caso de uso, estão descritos as ações que o Usuário pode realizar para adicionar ou remover um ponto de táxi da sua lista de favoritos. Ator primário Usuário Ator secundário -- Pré-condições -- Fluxo de tarefas 1 – Usuário abre o menu. 2 – O mesmo clica no item “Favoritos”. 3 – É feita uma busca por pontos de táxis cadastrados como favorito pelo Usuário. Fluxos alternativos -- Fluxos de exceção 3.a - No caso de não existir nenhum ponto de táxi como favorito. 3.a.1 - É apresentada uma lista vazia. Pós-condições - É aberta uma janela no qual o Usuário é capaz de ver todos os pontos de táxis que foram marcados como favoritos. Quadro 17 - Caso de uso CSU07 - Gerenciar favoritos. Fonte: Elaboração dos autores, 2011. 126 Calcular estimativa de preço de corrida Identificador CSU08 Descrição Permite que o Usuário realize um cálculo da estimativa do valor da corrida, partindo da sua posição atual até um destino de sua escolha. Ator primário Usuário Ator secundário GPS, Google Maps Pré-condições - A posição do Usuário deve ser conhecida. Fluxo de tarefas 1 – Usuário abre o menu. 2 – O mesmo clica no item “Cálculo corrida”. 3 – O Usuário seleciona o seu destino. 4 – As informações são enviadas ao servidor. 5 – O sistema encontra o ponto de táxi mais próximo. 6 – O sistema calcula a estimativa da corrida. Fluxos alternativos -- Fluxos de exceção 4.a - Não sendo possível comunicar-se com o servidor da aplicação. 4.a.1 - Uma mensagem de erro é mostrada ao Usuário. 5.a – Não sendo possível encontrar um ponto de táxi próximo. 5.a.1 – Uma mensagem de erro é mostrada ao Usuário. 6.a - Não sendo possível acessar serviço de mapas do Google. 6.a.1 - Uma mensagem de erro é mostrada ao Usuário. Pós-condições - É apresentado a distância e o custo estimado desta corrida. - É apresentado o ponto de táxi utilizado como referência para o cálculo da rota. Quadro 18 - Caso de uso CSU08 - Calcular estimativa de preço de corrida. Fonte: Elaboração dos autores, 2011. 127 Realizar chamada Identificador CSU09 Descrição Permite que o Usuário visualize as opções de chamadas para um ponto de táxi escolhido. Ator primário Usuário Ator secundário -- Pré-condições -- Fluxo de tarefas 1 – O Usuário seleciona um ponto de táxi de seu interesse. 2 – O mesmo abre o menu. 3 – Clica no item “Chamar”. Fluxos alternativos -- Fluxos de exceção -- Pós-condições - Caso o ponto de táxi tenha pelo menos um número de telefone, é mostrada a opção “Telefone”. - Caso o ponto de táxi tenha pelo menos um número de celular, é mostrada a opção “SMS”. Quadro 19 - Caso de uso CSU09 - Realizar chamada. Fonte: Elaboração dos autores, 2011. Realizar chamada por telefone Identificador CSU10 Descrição O Usuário é capaz de realizar uma chamada telefônica para um determinado ponto de táxi. Ator primário Usuário Ator secundário Operadora de telefonia Pré-condições - O dispositivo do Usuário deve ter capacidade de realizar chamadas telefônicas. - O Usuário deve ter crédito para poder realizar chamadas telefônicas. - O ponto de táxi escolhido deverá possuir um número de telefone. Fluxo de tarefas 1 – Realizar CSU10. 2 – O Usuário seleciona a opção “Telefone”. 3 – É aberta uma janela para iniciar a ligação telefônica. Fluxos alternativos -- Fluxos de exceção 3.a - No caso de não ser possível realizar uma chamada telefônica. 3.a.1 - O sistema retornará à janela de informações do ponto de táxi. Pós-condições - O sistema inicia uma chamada com o ponto de táxi. Quadro 20 - Caso de uso CSU10 - Realizar chamada por telefone. Fonte: Elaboração dos autores, 2011. 128 Realizar chamada por SMS Identificador CSU11 Descrição Permite que o Usuário realize uma requisição de serviço de táxi por uma mensagem SMS. Ator primário Usuário Ator secundário Operadora de telefonia Pré-condições - O dispositivo do Usuário deve ter capacidade de enviar mensagens SMS. - O Usuário deve ter créditos para poder enviar mensagens SMS. - O ponto de táxi escolhido deve possuir um número de telefone celular. Fluxo de tarefas 1 – Realizar CSU10. 2 – O Usuário seleciona a opção “SMS”. 3 – Uma janela mostrando o conteúdo da mensagem é aberta ao Usuário. 4 – Usuário clica no botão “Enviar”. Fluxos alternativos -- Fluxos de exceção 4.a - No caso de não ser possível realizar uma chamada telefônica. 4.a.1 - Uma mensagem de erro é apresentada ao Usuário. 4.b.1 - Voltar ao passo 3. Pós-condições - O celular enviará uma mensagem SMS para o ponto de táxi escolhido, informando o endereço do emissor. Quadro 21 - Caso de uso CSU11 - Realizar chamada por SMS. Fonte: Elaboração dos autores, 2011. Listar pontos de táxis Identificador CSU12 Descrição Caso de uso que descreve a funcionalidade de listagem de pontos de táxis no módulo administrador. Ator primário Administrador Ator secundário -- Pré-condições -- Fluxo de tarefas 1 – Administrador abre o sistema de administração. 2 – Clica na aba “Pontos de táxis”. Fluxos alternativos -- Fluxos de exceção -- Pós-condições - Os pontos de táxis cadastrados são listados na tela. Quadro 22 - Caso de uso CSU12 - Cadastrar ponto de táxi. Fonte: Elaboração dos autores, 2011. 129 Cadastrar ponto de táxi Identificador CSU13 Descrição Permite que o Administrador cadastre novos pontos de táxis para estarem disponíveis aos usuários do sistema. Ator primário Administrador Ator secundário -- Pré-condições -- Fluxo de tarefas 1 – Administrador abre o sistema de administração. 2 – Clica na aba “Novo ponto de táxi”. 3 – Preenche o formulário. 4 – Indica a posição geográfica do novo ponto de táxi no mapa. 5 – Clica no botão “Salvar”. Fluxos alternativos -- Fluxos de exceção 5.a – Não fornecendo as informações obrigatórias: ‘Nome’, ‘Bandeira 1’, ‘Bandeira 2’, ‘Preço de largada’ e a posição geográfica do ponto de táxi. 5.a.1 – Uma mensagem de erro é apresentada na tela. 5.a.2 – Retornar ao passo 3. Pós-condições - Uma mensagem de sucesso da operação é apresentada na tela. Quadro 23 - Caso de uso CSU13 - Cadastrar ponto de táxi. Fonte: Elaboração dos autores, 2011. 130 Remover ponto de táxi Identificador CSU14 Descrição Descreve os passos para que um Administrador possa remover um ponto de táxi da base de dados do sistema. Ator primário Administrador Ator secundário -- Pré-condições - O ponto de táxi deve estar cadastrado no sistema. Fluxo de tarefas 1 – Realizar CSU13. 3 – Clica no ícone de remoção. 4 – Uma mensagem de confirmação é apresentada. 5 – O Administrador clica em ‘OK’. Fluxos alternativos 5.a – Clicando em ‘Cancelar’ 5.a.1 – Encerrar caso de uso. Fluxos de exceção -- Pós-condições - Uma mensagem de sucesso da operação é apresentada na tela. - O ponto de táxi é removido da listagem de pontos de táxis. Quadro 24 - Caso de uso CSU14 - Remover ponto de táxi. Fonte: Elaboração dos autores, 2011. 131 Atualizar ponto de táxi Identificador CSU15 Descrição Descreve os passos para que um Administrador possa atualizar as informações de um ponto de táxi. Ator primário Administrador Ator secundário -- Pré-condições - O ponto de táxi deve estar cadastrado no sistema. Fluxo de tarefas 1 – Realizar CSU13. 3 – Clica no ícone de atualização. 4 – Uma aba é aberta com os campos de cadastro do ponto de táxi já preenchidos. 5 – O Administrador informa as novas informações do ponto de táxi. 6 – O Administrador clica em ‘Salvar’. Fluxos alternativos 5.a – Clicando em ‘Cancelar’ 5.a.1 – Encerrar caso de uso. Fluxos de exceção Pós-condições - Uma mensagem de sucesso da operação é apresentada na tela. - As novas informações do ponto de táxi fornecidas no formulário são salvas na base de dados do sistema. Quadro 25 - Caso de uso CSU15 - Atualizar ponto de táxi. Fonte: Elaboração dos autores, 2011. 132 APÊNDICE C – RESULTADOS DOS QUESTIONÁRIOS 133 134 135 136 137 138