RELATÓRIO FINAL Sistema para monitoramento de serviços com o Android OS



Documentos relacionados
Java. para Dispositivos Móveis. Thienne M. Johnson. Novatec. Desenvolvendo Aplicações com J2ME

Introdução Dalvik Linux 2.6. Android. Diogo de Campos, João Paulo Pizani Flor, Maurício Oliveira Haensch, Pedro Covolan Bachiega

Desenvolvimento de um aplicativo básico usando o Google Android

Sistemas Distribuídos

Satélite. Manual de instalação e configuração. CENPECT Informática cenpect@cenpect.com.br

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Projeto Arquitetural do IEmbedded

Pré-Projeto do Trabalho de Conclusão de Curso Tiago Garcia Pereira 1. INTRODUÇÃO

Agregador de feeds RSS para dispositivos móveis

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

Computação II Orientação a Objetos

DESENVOLVIMENTO DE UM APLICATIVO DO TIPO SECRETÁRIO VIRTUAL PARA A PLATAFORMA ANDROID

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

3 SCS: Sistema de Componentes de Software

QUESTINAMENTOS AO EDITAL DE CONCORRÊNCIA 01/2013

UM FRAMEWORK PARA DESENVOLVIMENTO DE

Relatorio do trabalho pratico 2

Engenharia de Software

Introdução a Computação Móvel

Considerações a serem feitas antes da implantação.

CONTRA CONTROLE DE ACESSOS E MODULARIZADOR DE SISTEMAS

Tecnologia e Informática

Android e Bancos de Dados

Manual de instalação e configuração da Ferramenta Android SDK

Aplicação Prática de Lua para Web

I N T R O D U Ç Ã O W A P desbloqueio,

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

DESENVOLVIMENTO WEB DENTRO DOS PARADIGMAS DO HTML5 E CSS3

Manual de Operação Aplicativo ClickIt

IW10. Rev.: 02. Especificações Técnicas

Comm5 Tecnologia Manual de utilização da família MI. Manual de Utilização. Família MI

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Firewall. Alunos: Hélio Cândido Andersson Sales

BRAlarmExpert. Software para Gerenciamento de Alarmes. BENEFÍCIOS obtidos com a utilização do BRAlarmExpert:

Sistemas Operacionais

Visão geral Estrutura do sistema Ferramentas de desenvolvimento Uma aplicação. Android. Universidade Federal de Santa Catarina. 17 de dezembro de 2008

Alarme Automotivo com mensagem para móvel utilizando Arduino

Soluções de Gerenciamento de Clientes e de Impressão Universal

Curso de Aprendizado Industrial Desenvolvedor WEB

MAGREGISTER 1.0: GERADOR DE INTERFACES DE COLETAS DE DADOS PARA PDA S. Acadêmico: Gilson Chequeto Orientador: Adilson Vahldick

Sistemas Embarcados Android

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

Engenharia de Requisitos Estudo de Caso

5 Mecanismo de seleção de componentes

OCOMON PRIMEIROS PASSOS

PARANÁ GOVERNO DO ESTADO

Configurando o DDNS Management System

BlackBerry Mobile Voice System

Manual Captura S_Line

Versão /10. Xerox ColorQube 9301/9302/9303 Serviços de Internet

Android Como configurar Rede sem fio Univates-Professores

Gerenciamento de Arquivos e Pastas. Professor: Jeferson Machado Cordini jmcordini@hotmail.com

Aula 03-04: Modelos de Sistemas Distribuídos

OSMobile Força de Vendas

Quando se fala em ponto eletrônico, a primeira coisa que vem à sua cabeça ainda é dor?

Rotina de Discovery e Inventário

Disciplina: Introdução à Informática Profª Érica Barcelos

INTRODUÇÃO E CONFIGURAÇÃO DO PRIMEFACES MOBILE EM APLICAÇÕES JSF

Itinerários de Ônibus Relatório Final

Redes de Computadores

A LIBERDADE DO LINUX COM A QUALIDADE ITAUTEC

Computadores de Programação (MAB353)

Documento de Análise e Projeto VideoSystem

A plataforma Android: Uma Introdução

Visão geral das redes sem fio

Instruções de operação

TRANSMISSOR ECF. Sistema de transmissão de arquivos Nota Fiscal Paulista. Manual de Utilização

Produtos da Fábrica de Software

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

PROTÓTIPO DE UM SISTEMA DE RASTREAMENTO PARA COMPUTADORES

Faculdade de Tecnologia SENAC Goiás. Disciplina: Gerenciamento de Rede de Computadores. Goiânia, 16 de novembro de 2014.

SISTEMAS DISTRIBUÍDOS

CONFIGURAÇÃO MINIMA EXIGIDA:

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO

MANUAL DO USUÁRIO. para tv TV101

Sistemas Operacionais

Segundo Pré-teste. Data de realização. 18 de Novembro de Local.

Organização e Arquitetura de Computadores I. de Computadores

Intranets. FERNANDO ALBUQUERQUE Departamento de Ciência da Computação Universidade de Brasília 1.INTRODUÇÃO

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource Rev: 02

AP_ Conta Aplicativo para digitação e envio de contas médicas no padrão TISS

Análise e Projeto Orientados a Objetos Aula IV Requisitos. Prof.: Bruno E. G. Gomes IFRN

Manual de Instalação

Manual de Utilização do Sistema GRServer Cam on-line (Gerenciamento de Câmeras On-line)

ANDROID APPLICATION PROJECT

Plataforma Sentinela

Operador de Computador. Informática Básica

Para que seja instalado o Bematef Total, é necessário que o computador onde seja efetuada a instalação

Sistemas Embarcados Android

PROJETO INFORMÁTICA NA ESCOLA

SISTEMAS OPERACIONAIS LIVRES GERENCIAMENTO DE SERVIÇOS NO WINDOWS. Professor Carlos Muniz

1.1. Organização de um Sistema Computacional

CAPITULO 4 A ARQUITETURA LÓGICA PARA O AMBIENTE

APLICATIVO WEB PARA O SETOR DE EXTENSÃO IFC VIDEIRA

UNIVERSIDADE FEDERAL DE SANTA CATARINA JNC MOBILE 2.0. Anderson Buon Berto Gilberto Torrezan Filho. Florianópolis - SC 2005/1

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;

4 Um Exemplo de Implementação

Introdução à Computação

Transcrição:

UNIVERSIDADE FEDERAL DE VIÇOSA CENTRO DE CIÊNCIAS EXATAS DEPARTAMENTO DE INFORMÁTICA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO INF 655 COMPUTAÇÃO MÓVEL RELATÓRIO FINAL Sistema para monitoramento de serviços com o Android OS Alunos: Alex Vidigal Bastos João Paulo Nogueira Paulo Alexandre Lobato Professor: Mauro Nacif Rocha VIÇOSA MG DEZEMBRO DE 2008

SUMÁRIO 1 Introdução... 2 1.1 Motivação... 2 1.2 Propósito do documento... 2 1.3 Escopo... 3 1.4 Definições e Siglas... 3 2 Referencial Teórico... 3 2.1 Android... 3 2.1.1 Visão geral da arquitetura... 4 2.2 Interface em dispositivos móveis... 4 2.3 Comunicação e rede... 5 2.4 SQLite... 5 3 Descrição Geral... 6 3.1 Gerenciamento de Redes... 6 3.2 Visão Geral do Produto... 7 3.3 Perspectivas do Produto... 8 3.4 Funções do Produto... 8 3.5 Componetes de Evolução do Produto... 8 3.6 Limitações do Produto... 8 3.7 Usuários do Produto... 9 4 Requisitos Funcionais... 9 4.1 Requisito funcional selecionar perfil... 9 4.2 Requisito funcional gerenciar perfil... 9 4.3 Requisito funcional gerenciar elementos de rede... 9 4.4 Requisito funcional monitorar elementos de rede... 9 4.5 Requisito funcional gravar histórico de estado... 9 5 Casos de Uso...10 5.1 Diagrama de casos de uso...10 5.2 Caso de uso selecionar perfil...10 5.3 Caso de uso gerenciar perfil...10 5.4 Caso de uso gerenciar elementos de rede...11 5.5 Caso de uso monitorar elementos de rede...11 5.6 Caso de uso gravar histórico de estado...11 6 Persistência...12 6.1 Modelo Entidade-Relacionamento do banco de dados...12 6.2 Script do SQLite para a definição da estrutura do banco...12 7 Diagrama de classes...13 7.1 Descrição das classes...13 7.2 Diagrama...14 8 Fluxo de navegação e telas do produto...14 8.1 Selecionando um perfil...15 8.2 Cadastro/Edição/Exclusão de um perfil...16 8.3 Cadastro/Edição/Exclusão de um elemento de rede...16 8.4 Tela principal da aplicação (lista de serviços e seus estados)...17 8.5 Ícone do aplicativo no menu do Android OS...17 9 Dificuldades Encontradas...18 10 Considerações Finais...19 11 Referências...20 INF655 Computação Móvel Página 1

1 Introdução Computação Móvel é um novo paradigma computacional que tem como objetivo disponibilizar ao usuário acesso permanente a uma rede fixa ou móvel, independente de sua posição física. Dispositivos móveis, também chamados de handhelds, estão surgindo de diversas formas. Atualmente existem os PDAs (Personal Digital Assistants), telefones celulares, Smartphones, que é um telefone celular com funcionalidades avançadas que podem ser estendidas por meio de programas executados no seu Sistema Operacional, e vários outros tipos de dispositivos. Com é o caso do Smartphone, os dispositivos móveis estão surgindo com muitas outras facilidades, funcionalidades e interfaces como GPS (Global Positioning System), tocadores de áudio e câmeras fotográficas digitais, jogos eletrônicos cada vez mais sofisticados e placas de comunicação sem fio multiprotocolos. O mercado desses dispositivos está crescendo muito e atingindo diversas áreas como negócios, indústria, escolas, hospitais, etc. 1.1 Motivação Nossa principal motivação foi a possibilidade de trabalhar de forma bem prática em um ambiente de desenvolvimento desse novo paradigma, a Computação Móvel, que é também um dos objetivos da disciplina INF655 Computação Móvel. Um outro incentivo foi a crescente área de monitoramento e gerenciamento de redes. O acesso à Internet, por exemplo, em muitos países já é considerado um serviço básico, como água, luz etc. Mesmo que no Brasil ainda não esteja dessa forma acessível a toda a população, as redes cabeadas e sem fio estão cada vez mais presentes no dia a dia de pequenas e grandes empresas, instituições de ensino e também em redes domésticas. Alguns desafios funcionaram como motivadores para o desenvolvimento dessa aplicação: Trabalhar com o Android SDK; Interface para dispositivos móveis; Comunicação e redes (serviços de rede); Banco de Dados em dispositivos móveis. 1.2 Propósito do documento O propósito deste documento é descrever e especificar um sistema para monitoramento de serviços de rede com um dispositivo móvel que possui o Android OS. INF655 Computação Móvel Página 2

1.3 Escopo O objetivo da aplicação é monitorar computadores e serviços através de um dispositivo móvel. O sistema deverá permitir verificar a disponibilidade de um serviço em uma rede fixa através de um dispositivo móvel. 1.4 Definições e Siglas MonDroid - sistema para monitoramento de serviços com o Android OS. SDK - é a sigla de Software Development Kit, ou seja, Kit de Desenvolvimento de Software. UP/DOWN indica que o serviço está online/offline. SO Sistema Operacional, em inglês OS. Ping - comando usado pelo protocolo ICMP para testar a conectividade entre equipamentos. ICMP - Internet Control Message Protocol, é um protocolo integrante do Protocolo IP. HTTP - HyperText Transfer Protocol, é um protocolo de aplicação responsável pelo tratamento de pedidos/respostas entre cliente e servidor na Internet. 2 Referencial Teórico Este capítulo descreve algumas tecnologias e metodologias que serviram de base para o desenvolvimento e também para o enriquecimento do nosso aprendizado. 2.1 Android Android é uma pilha de software para dispositivos móveis que inclui um sistema operacional, middleware e aplicações chave. A versão beta do Android SDK fornece as ferramentas e APIs necessárias para começar a desenvolver aplicativos na plataforma Android utilizando a linguagem de programação Java [1]. Recursos: Framework de aplicação que permita a reutilização e a substituição de componentes; Máquina virtual Dalvik, otimizada para dispositivos móveis; Navegador integrado de código aberto baseado no WebKit engine; Gráficos otimizados e personalizados por uma biblioteca gráfica 2D, 3D baseado no OpenGL ES 1,0 especificação (aceleração de hardware opcional); SQLite para armazenamento de dados estruturados; INF655 Computação Móvel Página 3

Suporte Media para áudio, vídeo, imagem estática e formatos (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF); Telefonia GSM (dependente de hardware); Bluetooth, EDGE, 3G, e WiFi (dependente de hardware); Camera, GPS e bússola (dependente de hardware); Ambiente de desenvolvimento rico, incluindo um dispositivo emulador, ferramentas de depuração, memória e perfis de desempenho, e um plugin para a Eclipse IDE; 2.1.1 Visão geral da arquitetura O gráfico seguinte mostra os principais componentes do sistema operacional Android. Figura 1: Arquitetura de desenvolvimento do Android [2]. 2.2 Interface em dispositivos móveis A interface de uma aplicação computacional envolve todos os aspectos de um sistema com o qual mantemos contato e é um dos fatores mais importantes para o sucesso de um software. Por outro lado, a facilidade de evolução de um software, incluindo sua interface, é considerada pela engenharia de software como um atributo interno essencial aos produtos de software. INF655 Computação Móvel Página 4

A computação móvel tem aumentado a dificuldade e a complexidade do projeto de interfaces devido às limitações de recursos computacionais, falta de padronização, variedade de dispositivos e contextos de uso encontrados em telefones celulares, PDAs (Assistentes Pessoais Digitais) e Smartphones. O desenvolvimento dessas aplicações precisa ser ágil, de modo a responder às demandas de um mercado muito competitivo. Além disso, as demandas por mudanças e adaptações das aplicações para novos dispositivos têm forte impacto sobre o projeto de interfaces. Neste projeto também estudamos e aplicamos algumas técnicas de projeto e avaliação de interfaces no contexto de aplicações para computação móvel, tendo como principal objetivo uma melhor experiência e satisfação do usuário. [11] 2.3 Comunicação e rede Uma rede wireless permite a conexão entre diferentes pontos sem a necessidade do uso de cabos, ou seja, existe uma ligação que é feita por meio de equipamentos que usam radiofreqüência, infravermelho, etc. Existem diferentes tipos de redes sem fio, como celular, satélites, redes de computadores wireless e muitas outras que estão crescendo: rede de sensores, redes móveis adhoc e Free Space Optics (laser). Em redes de computadores elas podem ser classificadas baseando na área de abrangência delas: redes pessoais ou curta distância (WPAN), redes locais (WLAN), redes metropolitanas (WMAN) e redes de longa distância (WWAN). Em redes de computadores existem várias tecnologias como Bluetooth, ZigBee, Wi-Fi, WiMAX, Redes Mesh, etc. A família 802.11 é mais conhecida como redes Wi-Fi ou wireless, é sem dúvida uma das grandes novidades tecnológicas e na prática é o que se usa em redes locais sem fio. Como vimos anteriormente o Android OS dá suporte a muitas dessas tecnologias, dependendo mesmo do hardware disponível no dispositivo móvel. Como nossa aplicação foi desenvolvida sobre a arquitetura Android, essa questão de comunicação é bem transparente e fica a cargo do SO gerenciar qual tipo de conexão está disponível e provê o acesso a Internet, que utilizamos para verificar se um serviço está UP ou DOWN. 2.4 SQLite SQLite em uma biblioteca que implementa mecanismo transacional de banco de dados SQL. O código para o SQLite é de domínio público INF655 Computação Móvel Página 5

e, portanto, é livre para ser utilizada para qualquer fim, comercial ou privado. SQLite é atualmente encontrado em mais aplicações do que podemos contar, incluindo vários projetos de alto perfil. Ele funciona como um mecanismo de banco de dados SQL embutido. Ao contrário da maioria das demais bases de dados SQL, não tem um servidor separado, lê e escreve diretamente para arquivos em disco ordinário. Fornece um completo banco de dados SQL com várias tabelas, índices, triggers e views, tudo isso contido em um único arquivo em disco. O uso do SQLite é recomendado onde a simplicidade da administração, implementação e manutenção são mais importantes que incontáveis recursos que SGBDs mais voltados para aplicações complexas possivelmente implementam. Mas podemos nos surpreender com o número de situações onde a simplicidade é a melhor. A base do código é feita por uma equipe internacional de desenvolvedores que trabalham em tempo integral para o projeto. Os desenvolvedores continuam a expandir as capacidades do SQLite, melhorar o seu desempenho e confiabilidade. Como se trata de um sistema leve e que exige muito pouco em relação a espaço em disco e poder de processamento, o SQLite é muito indicado para sistemas embarcados em dispositivos móveis.[10] 3 Descrição Geral 3.1 Gerenciamento de Redes Gerenciar um sistema consiste em monitorar e controlar seu funcionamento para que ele satisfaça aos requisitos tanto dos seus usuários quanto dos seus proprietários [8]. Monitoração: É uma função de gerenciamento de rede destinada a observação e análise do estado e comportamento dos dispositivos gerenciados. Um usuário, ao utilizar um software gerente para verificar o estado operacional (up ou down) de uma ou mais interfaces de rede está executando uma função de monitoramento. Controle: É uma função de gerenciamento de rede destinada a alteração de parâmetros de gerenciamento que acarretam ações junto aos dispositivos gerenciados. Um usuário, ao utilizar um software gerente para desabilitar o funcionamento temporário de uma determinada interface de rede, está executando um função de controle. Dentro da área de gerenciamento de redes, podemos classificar as formas de gerenciamento em cinco áreas funcionais, dentre elas: Gerenciamento de Falhas, INF655 Computação Móvel Página 6

Gerenciamento de Desempenho, Gerenciamento de Contabilização, Gerenciamento de Configuração e Gerenciamento de Segurança, onde cada área trata requisitos específicos. A área de Gerenciamento de Falhas é responsável por: Detectar e reportar falhas; Manter logs de eventos significativos e erros ocorridos na rede, que possam ser examinados futuramente; Realizar seqüências de testes; Isolar e corrigir falhas; Antecipar falhas. Nossa aplicação está presente nessa área de Gerenciamento de Falhas, principalmente nas tarefas de detectar e reportar falhas e manter logs de eventos ocorridos no monitoramento, especificamente no estado de um computador ou serviço (UP/DOWN). A figura abaixo ilustra melhor onde o MonDroid está inserido. Figura 2: Ambiente de Gerenciamento de Redes 3.2 Visão Geral do Produto O sistema MonDroid tem como objetivo facilitar a monitoração e controle de computadores e serviços através de um dispositivo móvel, neste caso particular de um INF655 Computação Móvel Página 7

celular. O sistema Mondroid irá contemplar inicialmente a área funcional de falhas, permitindo detectar e reportar falhas em computadores e serviços da rede. O sistema deve verificar a disponibilidade dos dispositivos gerenciados, alertando sobre eventuais problemas. O sistema MonDroid será desenvolvido através da SDK do Android e será emulado pelo próprio emulador do Android. 3.3 Perspectivas do Produto Ser desenvolvido sobre a SDK do Android; Utilizar um banco de dados para dispositivos móveis (SQLite); Ter uma interface amigável, fácil e com uma boa satisfação do usuário; Auxiliar no gerenciamento de redes utilizando comunicação sem fio. 3.4 Funções do Produto Selecionar um perfil cadastrado; Cadastrar/Editar/Excluir perfis de elementos de rede; Cadastrar/Editar/Excluir elementos de rede de um perfil; Monitorar os elementos da rede, baseado no perfil cadastrado; Gravar um histórico de mudança de estado (UP/DOWN) para um determinado elemento da rede. 3.5 Componetes de Evolução do Produto O desenvolvimento do MonDroid é feito em camadas, onde temos: a camada de apresentação (interface), camada lógica do negócio (Java ME/Android) e camada de persistência de dados (SQLite). Em sua primeira versão demos prioridade ao monitoramento do serviço HTTP (porta 80), por isso nossa aplicação será desenvolvida para que posteriormente seja possível a evolução do sistema para demais serviços de monitoração e áreas funcionais. 3.6 Limitações do Produto O MonDroid foi testado apenas no simulador do Android, devido a falta de oportunidade de testar em um aparelho com o Android OS instalado. O está em sua primeira versão, fornecendo inicialmente apenas o serviço de ping para verificar a disponibilidade de um dispositivo em uma rede fixa, verificando se o mesmo está UP ou DOWN. INF 655 Computação Móvel Página 8

3.7 Usuários do Produto O MonDroid é preparado para o público que deseja monitorar os elementos ativos de uma rede, através de um dispositivo móvel com o Android OS. 4 Requisitos Funcionais 4.1 Requisito funcional selecionar perfil RF1: Selecionar perfil Descrição: O sistema deverá permitir ao usuário selecionar um perfil cadastrado para ser monitorado. 4.2 Requisito funcional gerenciar perfil RF2: Gerenciar perfil Descrição: O sistema deverá permitir ao usuário Cadastrar/Editar/Excluir um perfil de elementos de rede. 4.3 Requisito funcional gerenciar elementos de rede RF3: Gerenciar elementos de rede Descrição: O sistema deverá permitir ao usuário Cadastrar/Editar/Excluir um elemento de rede de um perfil previamente selecionado. 4.4 Requisito funcional monitorar elementos de rede RF4: Monitorar elementos de rede Descrição: O sistema deverá monitorar uma lista de serviços de um perfil e exibir o status (UP ou DOWN) do serviço (elemento). 4.5 Requisito funcional gravar histórico de estado RF5: Gravar histórico de estado Descrição: O sistema deverá gravar um histórico de estado (UP ou DOWN) dos serviços (elementos) monitorados, baseado no perfil selecionado. INF 655 Computação Móvel Página 9

5 Casos de Uso 5.1 Diagrama de casos de uso 5.2 Caso de uso selecionar perfil UC1: Selecionar perfil Atores: Usuário Descrição: O caso de uso é utilizado pelo Usuário para selecionar um perfil. Tem como objetivo exibir a lista de serviços do perfil selecionado. 5.3 Caso de uso gerenciar perfil UC2: Gerenciar perfil Atores: Usuário Descrição: O caso de uso é utilizado pelo Usuário para cadastrar/editar/excluir um perfil. Tem como objetivo gerenciar os perfis provendo o cadastro, edição e exclusão do mesmo. INF 655 Computação Móvel Página 10

5.4 Caso de uso gerenciar elementos de rede UC3: Gerenciar elementos de rede Atores: Usuário Descrição: O caso de uso é utilizado pelo Usuário para cadastrar/editar/excluir um elemento (serviço). Tem como objetivo gerenciar os elementos provendo o cadastro, edição e exclusão do mesmo. 5.5 Caso de uso monitorar elementos de rede UC4: Monitorar elementos de rede Atores: Usuário, Mondroid Descrição: O caso de uso é utilizado pelo Usuário e pelo sistema (MonDroid) para verificar o estado (UP ou DOWN) de uma lista de elementos de rede. Tem como objetivo verificar e exibir o estado de uma a lista de serviços do perfil selecionado. 5.6 Caso de uso gravar histórico de estado UC5: Gravar histórico de estado Atores: MonDroid Descrição: O caso de uso é utilizado pelo sistema (MonDroid) para gravar um histórico de estados (UP ou DOWN) do serviço. Tem como objetivo gerar um log dos estados de cada elemento de rede da lista monitorada. INF 655 Computação Móvel Página 11

6 Persistência A persistência dos dados será feita com o banco de dados presente na arquitetura da Android SDK (SQLite). 6.1 Modelo Entidade-Relacionamento do banco de dados Figura 3: Modelo ER do banco de dados 6.2 Script do SQLite para a definição da estrutura do banco # SQLite Version: 2.8.17 # Banco de Dados: mondroid.sqlite # -------------------------------------------------------- # Estrutura da tabela: historico CREATE TABLE historico ( servicos_idservicos INTEGER NOT NULL PRIMARY KEY, dataehora DATETIME NOT NULL DEFAULT '0000-00-00 00:00', situacao BOOLEAN NOT NULL ); # -------------------------------------------------------- # Estrutura da tabela: perfis CREATE TABLE perfis ( idperfil INTEGER NOT NULL PRIMARY KEY, nome VARCHAR(50) NOT NULL DEFAULT "", refresh INTEGER ); # -------------------------------------------------------- # Estrutura da tabela: servicos INF 655 Computação Móvel Página 12

CREATE TABLE servicos ( idservicos INTEGER NOT NULL PRIMARY KEY, perfis_idperfil INTEGER, tiposservicos_idtipos_servicos INTEGER, titulo VARCHAR(100) NOT NULL, caminho VARCHAR(50), porta INTEGER ); # -------------------------------------------------------- # Estrutura da tabela para a tabela: tipos_servicos CREATE TABLE tipos_servicos ( idtipos_servicos INTEGER NOT NULL PRIMARY KEY, nome VARCHAR(50) NOT NULL DEFAULT "" ); # -------------------------------------------------------- 7 Diagrama de classes 7.1 Descrição das classes Mondroid Classe principal do sistema. É responsável pela navegabilidade entre as telas e possuí as funções principais da aplicação juntamente com os métodos que atendem os casos de uso. Conexao Classe responsável pela função de verificação se um elemento de rede está UP ou DOWN. MondroidBdAdapter Classe que faz a conexão com o banco de dados e executa instruções SQL. Ela utiliza algumas classes pré-definidas na própria SDK, como a SQLiteDatabase e DatabaseHelper. Servicos Classe originada pela persistência de dados. Responsável pela instanciação dos objetos (elementos de rede) e operações sobre eles. Perfis Classe originada pela persistência de dados. Responsável pela instanciação dos objetos perfis, que possuem vários serviços ligados a eles. Historico Classe originada pela persistência de dados. Responsável pela instanciação dos objetos historico, que é o log de estados (UP/DOWN) de um determinado serviço. INF 655 Computação Móvel Página 13

7.2 Diagrama 8 Fluxo de navegação e telas do produto As telas foram capturadas durante a execução do MonDroid no emulador da Android SDK. Comparando as telas com o diagrama abaixo é possível ter uma visão de como é o funcionamento do produto. INF 655 Computação Móvel Página 14

8.1 Selecionando um perfil INF 655 Computação Móvel Página 15

8.2 Cadastro/Edição/Exclusão de um perfil 8.3 Cadastro/Edição/Exclusão de um elemento de rede INF 655 Computação Móvel Página 16

8.4 Tela principal da aplicação (lista de serviços e seus estados) 8.5 Ícone do aplicativo no menu do Android OS INF 655 Computação Móvel Página 17

9 Dificuldades Encontradas Os problemas encontrados foram, em sua maioria, conseqüências dos desafios que nos motivaram a desenvolver esse projeto. Considerando que o paradigma de desenvolvimento para dispositivos móveis é algo muito novo e que um dos objetivos desse trabalho é um primeiro contato com a Computação Móvel, era esperado que enfrentássemos algumas dificuldades, como: 1. Trabalhar com uma SDK recente e ainda em estado beta foi um grande desafio e alguns problemas como diferenças entre algumas funções da documentação e as disponíveis na versão atual foram superados com auxílio de fóruns e comunidades de desenvolvedores; 2. O emulador que vem incluso na SDK foi essencial, já que não possuímos um dispositivo móvel com o Android para efetuar testes. Mas infelizmente o emulador possui algumas limitações que nos custou um bom tempo de tentativas para descobrir que ele tinha problemas com ICMP do protocolo TCP/IP, usado para executar a função de Ping, que verifica a disponibilidade de um serviço. 3. Outra dificuldade no desenvolvimento de aplicações para dispositivos móveis é o projeto de interfaces, pois além da limitação no tamanho da tela, a forma que o usuário lida com o dispositivo é bem diferente de aplicativos desktop. 4. Trabalhar com interfaces no Android é um esforço talvez ainda maior, porque todas as telas são definidas em arquivos XML, que possuem uma estrutura definida e cada elemento na interface é definida por vários atributos como a posição (x,y), largura, altura, visibilidade, etc. A cada modificação é necessário executar o emulador para verificar se o elemento visual está na posição correta, esse processo é executado inúmeras vezes, custando um bom tempo para se chegar a um resultado final satisfatório. INF 655 Computação Móvel Página 18

10 Considerações Finais O projeto e desenvolvimento do MonDroid foi algo essencial para a fixação das teorias sobre o paradigma de desenvolvimento, a Computação Móvel. Apesar do aplicativo ser relativamente simples a escolha dele foi muito acertada, pois no desenvolvimento do mesmo tivemos contato com várias áreas desse novo paradigma, como: 1. Uma recente SDK, gratuita, opensource, que provavelmente será muito usada em dispositivos móveis; 2. Banco de dados para dispositivos com memória e recursos reduzidos (SQLite); 3. Comunicação em baixo nível através do uso de protocolos do tipo ICMP (Ping); 4. Projeto e criação de interfaces que envolvem um estudo de limitações de tamanho de tela e da experiência do usuário. Por causa de alguns problemas encontrados com o emulador, já mencionados, foi necessário limitar à verificação de serviços do tipo HTTP (porta 80). Também não foi possível implementar o histórico de estado (UP/DOWN) para os elementos de rede cadastrados. Essas funcionalidades ficarão para uma próxima versão do sistema, já que ficamos bem satisfeitos com a experiência e pretendemos continuar o desenvolvimento mesmo depois do término da disciplina. Depois desse contato com o desenvolvimento para dispositivos móveis ficou mais claro alguns conceitos estudados na disciplina INF655 Computação Móvel, sem dúvida o resultado final não seria o mesmo sem esse projeto prático. INF 655 Computação Móvel Página 19

11 Referências [1] Android SDK - http://code.google.com/android/ [2] Documentação do Android - http://code.google.com/android/documentation.html [3] Fórum Portal Android - http://forum.portalandroid.org [4] Android Development Community - http://www.anddev.org/ [5] J2ME Android - http://www.androidph.com/ [6] AAF Loureiro, DFH Sadok, GR Mateus, JMS Nogueira. Comunicação sem fio e Computação Móvel: Tecnologias, Desafios e Oportunidades. Minicurso apresentado no Congresso da Sociedade Brasileira de Computação. Campinas, São Paulo, 2003. [7] ROCHA, M. N. Simulação e Gerenciamento de Unidades Móveis em Ambientes de Comunicação Sem Fio. Tese de Doutorado, Departamento de Ciências da Computação, Universidade Federal de Minas Gerais, Belo Horizonte, 2001. [8] SLOMAN, Morris. Network and Distributed Sustems Management. USA: Addison- Wesley, 1994. [9] JUDE/Community - http://jude.change-vision.com [10] SQLite - http://www.sqlite.org/ [11] Giani Carla Ito. UMA ARQUITETURA PARA GERAÇÃO DE INTERFACES ADAPTATIVAS PARA DISPOSITIVOS MÓVEIS. INPE - Instituto Nacional de Pesquisas Espaciais, 2008. INF 655 Computação Móvel Página 20