UNIVERSIDADE FEDERAL DE VIÇOSA CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS DEPARTAMENTO DE INFORMÁTICA Pizzaria Manão Emilio Gonçalves Fabrício Luís Santos da Silva Filipe Ribeiro Nalon Leonardo Vieira Dos Santos Reis 41281 50293 50295 50264 Documentação do Projeto realizado na Disciplina INF 492 – Computação Móvel VIÇOSA MINAS GERAIS – BRASIL MARÇO/2007 Sumário Sumário 1. Introdução 2. Motivações 3. Objetivos 4. Tecnologias e Ferramentas Utilizadas 5. Decisões de Projeto 6. Telas da Aplicação 7. Dificuldades Encontradas 8. Conclusões 9. Agradecimentos 10. Referências Bibliográficas 02 03 04 06 07 10 12 16 17 18 19 2 1. Introdução Esse documento tem por finalidade descrever o projeto final da disciplina INF 492 (Computação Móvel) lecionada no segundo semestre de 2006, contendo as motivações, tecnologias utilizadas, dificuldades encontradas e soluções para a implementação do mesmo. O projeto tem como finalidade desenvolver uma aplicação para dispositivos móveis, com objetivo de colocar em prática o aprendizado visto em aula e de trazer um nova realidade para os alunos do curso de Ciência da Computação, a de desenvolver software baseado em algum tipo de restrição seja esta a de memória, linguagem ou até mesmo de tecnologias pouco difundidas. Neste projeto foi desenvolvida uma aplicação para PDA cujo objetivo é atender pedidos dos clientes de uma determinada pizzaria de forma automatizada. Desta forma o cliente poderá fazer seu pedido sem a necessidade de um garçom. Para isto basta-se o cliente sentar-se à mesa, analisar o cardápio e envia através de um PDA o que deseja consumir à cozinha. O cliente também finalizará a sua conta através do PDA 3 2. Motivações 2.1 Aplicações para dispositivos móveis Os sistemas de computação e os sistemas de comunicação estão se tornando cada vez mais interdependentes, e isto já está evidente em muitas áreas da sociedade. Essa tendência força a comunidade de computação não só a desenvolver sistemas inovadores, mas também a redefinir os sistemas existentes em termos dos papéis que estes representam. O que nos conduz a uma faixa de novas perspectivas e exploração de novos paradigmas para o desenvolvimento da próxima geração de sistemas. Destes, salienta-se o desenvolvimento de sistemas em escala global e sistemas cujas arquiteturas são dinâmicas e adaptativas. Dentro deste contexto, a computação móvel está aumentando em importância e presença. Esse desenvolvimento é o resultado de avanços tecnológicos em muitos domínios. Prevê-se que redes de comunicação sem fio combinada com o desenvolvimento de computadores portáteis (notebook, PDA) permitirão ao usuário deslocar-se junto com seu ambiente computacional e ter um acesso constante às fontes de informações. Nesta perspectiva, aplicações móveis, executando em diferentes ambientes, trazem novos desafios para prover a funcionalidade que os usuários móveis esperam obter do sistema. O dinamismo fornecido pelo ambiente permite ao usuário deslocar-se enquanto a aplicação continua em execução. Durante o deslocamento, as aplicações estão sujeitas a importantes variações no ambiente de execução (banda, latência, serviços, etc...), as quais devem ser absorvidas por um comportamento adaptativo. A complexidade inerente deste ambiente, heterogêneo, dinâmico e adaptativo, induz à necessidade de se prover suporte para o desenvolvimento de aplicações, tanto no nível de runtime quanto no de ferramentas, modelos, linguagens e metodologias de programação. Sistemas atuais para desenvolvimento de aplicações móveis são específicos de um domínio de aplicação, como acesso a dados multimídia, tornando-os difíceis de serem reutilizados para o projeto de outras aplicações. 2.2 Aplicação para móvel para uma pizzaria Quando um cliente entra uma determinada pizzaria (ou qualquer outro tipo de comércio que necessite de garçons para atender clientes) ele se acomoda sentando em uma mesa, escolhe através do cardápio o que ele deseja consumir e em seguida chama o garçom 4 para requisitar o seu pedido. No entanto este processo de chamar o garçom muitas vezes é dispendioso, pois poderão ocorrer momentos em que nenhum garçom esteja por perto e acessível, deixando o cliente incomodado e fará que o seu pedido seja atrasado já que sem o garçom a cozinha fica incapaz de receber a sua solicitação. Em uma pizzaria com muita demanda de clientes este processo se tornará mais caro, pois a pizzaria necessitará de mais garçom para atender todos os clientes em um tempo razoável, porém, podendo ainda, mesmo com uma boa quantidade de garçons, deixar alguns clientes insatisfeitos. 2.3 Conclusão Visto que neste processo do cliente fazer o pedido e ser entregue à cozinha, o garçom exerce somente o papel de meio de transporte para fazer a comunicação entre o cliente e a cozinha e considerando o avanço e a crescente utilização de dispositivos móveis e redes sem fio, entende-se que este processo pode ser automatizado utilizando um meio de comunicação mais eficiente e dispositivos móveis, minimizando o tempo de atendimento ao cliente, deixando-os mais satisfeitos, e reduzindo custos com garçons. 5 3. Objetivos Este projeto tem como objetivo desenvolver um aplicativo para dispositivos móveis (para um PDA) cuja finalidade é automatizar o processo de pedidos, visando otimizar e melhorar a qualidade do atendimento aos clientes da pizzaria. Este trabalho também tem como objetivo estabelecer um primeiro contato, a todos elementos do grupo, com o desenvolvimento de uma aplicação voltada para dispositivos móveis. 6 4. Tecnologias e Ferramentas Utilizadas 4.1 Wireless Fidelity – Wi-FI O Wi-Fi é a tecnologia de interconexão entre dispositivos sem fio mais popular do momento, a transmição dos seus dados ocorre via rádio. Desde que foi aprovado pelo IEEE (Institute of Eletrical and Eletronics Engineers) em 1996, o padrão de rede sem fio Wi-Fi (802.11), bem como sua popularidade, tem crescido de forma surpreendente. Muitos se referem (erroneamente) ao Wi-Fi como uma tecnologia móvel, sendo esta, na verdade, está na categoria de tecnologias sem fio ou semi-móveis, já que a sua (semi)mobilidade existe apenas dentro dos limites da rede sem fio local. O Wi-Fi tem algumas variações principais: 802.11b - a mais difundida no momento, opera na faixa de frequência não regulamentada de 2.4GHz e com taxas de transferência de até 11Mbps; 802.11a - opera em 5.0GHz (também não regulamentada) permite taxas de transferências bem maiores, de aproximadamente 54Mbps; 802.11g - além de permitir taxas de transferência de até 54Mpbs, ele também opera em 2.4GHz. Um dos assuntos mais discutidos e polêmicos em torno do Wi-Fi é a questão da segurança, que acontece muitas vezes por causa da utilização do espectro rádio-elétrico. Para garantir um nível maior de segurança, é necessário se proteger com formas de encriptação, filtros e chaves de segurança, evitando assim que intrusos tenham acesso ao seus dados mesmo que a pessoa esteja dentro da área de cobertura do sinal. No entanto, chaves do tipo WEP não são muito seguras, pois podem ser facilmente "quebradas" por pessoas que tenham algum conhecimento sobre o assunto. O ideal é usar encriptação do tipo WPA, que dão uma segurança maior. 4.2 J2ME O Java Plataform, Micro Edition (Java ME) ou J2ME É uma tecnologia que possibilita o desenvolvimento de software para sistemas e aplicações embarcadas, ou seja, toda aquela que roda em um dispositivo de propósito específico, desempenhando alguma tarefa que seja útil para o dispositivo. 7 É a plataforma Java para dispositivos compactos, como celulares, PDAs, controles remotos e uma outra gama de dispositivos. Java ME é uma coleção de APIs do Java definidas através da JCP (Java Community Proccess). A comunidade JCP adotou duas abordagens para especificar as necessidades dos pequenos dispositivos - a sua arquitetura computacional. Primeiro eles definiram o ambiente de execução Java (do inglês Java run-time environment) e um conjunto de classes básicas, chamadas de core, que operam sobre cada dispositivo. Isso foi denominado Configurações (do inglês Configurations). Uma configuração define a JVM (Java Virtual Machine) para um pequeno e específico dispositivo computacional. Há duas configurações para um dispositivo embarcado, uma para dispositivos com maior capacidade computacional (do inglês High-end consumer devices), denominado CDC (Connected Device Configuration). A outra com menor capacidade computacional (do inglês Low-end consumer devices), denominado CLDC (Connected Limited Device Configuration), esta é usada para celulares e PDAs. A segunda abordagem foi definida como um perfil (do inglês profile). Um perfil consiste em um conjunto de classes que possibilita os desenvolvedores de software implementar as aplicações de acordo com as características das aplicações dos pequenos dispositivos computacionais. Foi denominado o MIDP (Mobile Information Device Profile), oferecendo recursos como rede, componentes de interface, armazenamento local, etc. 4.3 Netbeans A Netbeans IDE é um ambiente de desenvolvimento - uma ferramenta para programadores, que permite escrever, compilar, debugar e instalar programas. A IDE é completamente escrita em Java, mas pode suportar qualquer linguegem de programação. Existem também um grande número de módulos para extender a IDE NetBeans. A NetBeans IDE é um produto livre, sem restrições de como ele pode ser usado. O Netbeans disponibilizar em seu site pacotes para desenvolvimento específicos em determinada área da computação. Vejamos alguns: Mobility Pack - fornece auxilio no desenvolvimento de aplicativos móveis poderosos e com ferramentas visuais. Visual Web Pack - facilita o desenvolvimento de aplicativos para Web. C/C++ Pack - disponibiliza o desenvolvimentos de aplicativos C/C++ no NetBeans IDE. 8 Profiler - ajuda os usuários a localizar gargalos e vazamentos de memória nos seus aplicativos. Enterprise Pack (Esquema XML, WSDL, BPEL, serviços de segurança da Web) – facilita o desenvolvimento de aplicativos SOA(Services-Oriented Architecture ) e sua modelagem. 4.4 Banco de Dados Access Microsoft Access é um sistema relacional de gerenciamento de banco de dados, uma ferramenta poderosa que pode ser usada para classificar, organizar e mostrar em forma de relatório as informações importantes que você usa todos os dias. Devido à sua facilidade de uso, ele é uma ferramenta excelente para aqueles que estão começando a usar banco de dados, assim como para aqueles que já têm experiência. Banco de dados é definido como um caso especial de um arquivo, isto porque os componentes (campos) são relacionados entre si por alguma coisa a mais do que uma simples concatenação. Arquivos comuns de acesso direto ou seqüencial não são banco de dados de acordo com esta definição, já que seus elementos (registros) são simplesmente colocados em ordem, formando assim o conjunto. A única razão para introduzir relacionamentos adicionais entre os elementos de um arquivo é que você pode ter acesso às informações por diferentes caminhos. Assim: “Um banco de dados é qualquer arquivo que pode ser acessado por uma chave que não seja a sua chave de ordenação”. Qualquer arquivo é ou um arquivo simples ou um banco de dados. É um arquivo simples se você tem que acessá-lo em uma e somente uma maneira; de outra forma ele é um banco de dados. 9 5. Decisões de Projeto 5.1 Aplicação Este projeto necessita de dois sub-sistemas, uma aplicação desktop que funcionaria com servidor recebendo as mensagens dos clientes, e outra aplicação para dispositivos móveis que fará os pedidos. Entretanto, para este projeto optou-se por desenvolver somente a aplicação para o dispositivo móvel, tendo em vista que o foco da disciplina era proporcionar aos alunos um contato com o desenvolvimento de software para dispositivos com pouca disponibilidade de recursos (dispositivos móveis) e a complexidade de um sistema desktop que faz o controle de uma pizzaria. Portanto, a modelou-se o banco de dados de forma à atender as necessidades do aplicativo em questão, retirando relacionamento referentes a parte de controle de estoque, e outras coisas para a aplicação desktop. 5.2 Wi-FI x Bluetooth Bluetooth é uma tecnologia que possibilita a comunicação sem fio entre dispositivos, porém ela tem limitações de distância de 10 a 15 metros de alcance e apenas setes dispositivos podem se comunicar com o servidor ao mesmo tempo, portanto, para esta aplicação, esta tecnologia não atenderia as necessidades, por isso foi decidido utilizar a tecnologia wi-fi, visto que esta tem um alcance de até 100 metros e que não tem restrições de quantidade de usuários se comunicando ao mesmo tempo e é uma tecnologia gratuita. 5.3 Banco de Dados Optamos pelo uso do Microsoft Access pelo fato dele ser um banco de dados simples, de fácil utilização, que suporta todas as exigências desta aplicação e porque este seria um dos bancos de dados que nos possibilitaria um desenvolvimento da aplicação com uma maior velocidade. 5.4 Modelagem Para a modelagem do banco de dados foi utilizada a ferramenta de modelagem amos o ERwin . 10 Abaixo temos duas figuras obtidas desta modelagem a primeira contendo o modelo físico e segunda contendo o modelo lógico, ambas foram tirada do modelo entidade relacionamento da pizzaria gerado pelo ERwin. Figura1 – Modelo Físico Figura2 – Modelo Lógico 11 6. Telas da Aplicação Figura 1 – Telas Inicial Neste Tela Inicial o usuário escolherá o que ele deseja naquele momento, as opções variam desde a escolher um pedido, ver o valor da conta até que aquele instante até pedir a conta. 12 Figura 2 – Tela de Pedidos Na tela de pedidos o usuário preencherá os dados referentes aos produtos escolhidos por ele no cardápio. De forma que ele poderá escolher a opção incluir, na qual ele vai adicionando estes produtos na lista, ou escolher a opção enviar, na qual ele enviará os produtos escolhidos para o órgão responsável pela recepção dos pedidos feitos pelos os usuários deste estabelecimento. 13 Figura 3 – Tela de Sub Total Nesta tela o cliente poderá ver todos os pedidos solicitados por ele até então e valor parcial da sua conta. 14 Figura 4 – Tela Pedir Conta Nesta tela o cliente faz a solicitação do encerramento da sua conta. Após ele ter escolhido a opção pedir, o estabelecimento enviará algum funcionário para receber o valor da conta. 15 7. Dificuldades Encontradas Encontramos dificuldades com o J2ME, pois, apesar de alguns integrantes do grupo estarem familiarizados com linguagem de programação JAVA, o ambiente de programação é totalmente novo para todos, no qual não temos todos os recursos habituais da programação desktop e também pela falta de documentação para auxiliar na programação. J2ME está bem desenvolvida para programar com celulares, porém para PDAs ainda não tem boas ferramentas de desenvolvimento, dificultando assim o desenvolvimento do nosso projeto, pois ele foi desenvolvido com uma aplicação normal para celular, o qual tem recursos de tela mais limitados do que para PDAs, e depois testado em um PDA. Portanto, todo o posicionamento dos campos e comandos na interface não pode ser feita da melhor forma e como desejávamos. Tivemos dificuldades em encontrar um emulador para testar nossa aplicação, pois todos que encontrávamos não era gratuito e quando achamos, ele não rodou a aplicação, portanto tivemos que testá-la em um dispositivo real. Encontramos dificuldades em compatibilidade do projeto quando testado no emulador de celular e quando testado no PDA, pois os botões, labels, tickers são posicionado diferentes e a tabela fica da cor preta, assim o posicionamento foi feito na base da tentativa e erro, ou seja, colocamos alguma coisa e a testamos no PDA. A IDE utilizada para fazer a aplicação também nos trouxe problemas, pois ela não deixa alterar o código gerado automaticamente e se este é alterado usando um outro editor qualquer o projeto não funciona, simplesmente temos que recomeçar tudo novamente. 16 8. Conclusões Trabalhar com dispositivos móveis foi uma tarefa bem árdua, já que tivemos muitas dificuldades para colocar o nosso projeto funcionando na pratica. No entanto, não podemos deixar de citar que ter desenvolvido um projeto nesta área da computação foi uma tarefa muito gratificante para todos integrantes deste grupo, pois além de nos permitir trabalhar no desenvolvimento de programas que possuem algum tipo de restrição, possibilitou nos trabalhar com tecnologias novas, sem falar na experiência que ganhamos ao produzir este software. Com relação às ferramentas utilizadas, concluímos que elas são extremamente importantes para o desenvolvimento deste tipo de aplicação, já que facilita muita a vida de seus usuários. Mas com certeza elas ainda deixam muita coisa a desejar principalmente o J2ME e a IDE Netbeans que nos trouxe vários problemas no decorrer do trabalho. 17 9. Agradecimentos - Ao professor Mauro pelo auxilio prestado durante o desenvolvimento deste projeto. - Ao PDA professor do Mauro, que nos encorajou a terminar o projeto, quando tivemos problemas com o emulador. - Aos nossos professores orientadores que permitiu os desenvolvedores deste projeto darem o seu enfoque necessário neste trabalho. 18 10. Referências Bibliográficas Netbeans - http://www.netbeans.org/index_pt.html - último acesso março de 2007 Sites relacionados ao J2ME -http ://www.devmedia.com.br/visualizacomponente.aspx?comp=3451&site=6 - último acesso março de 2007 Sites relacionados ao J2ME http://www.imasters.com.br/artigo/3462/java/interface_de_alto_nivel_do_j2me/ - último acesso março de 2007 Programando em Palm - http://www.lia.ufc.br/~windson/palm.html - último acesso fevereiro de 2007 Sites relacionado ao Wi-FI - http://pt.wikipedia.org/wiki/Wi-Fi - último acesso março de 2007 Sites relacionado ao Wi-FI - http://www.comunicacao.pro.br/setepontos/15/wifi.htm - último acesso março de 2007 Sites relacionado ao Wi-FI - http://www.mobilezone.com.br/conect_wifi.htm - último acesso março de 2007 19