SlideShare uma empresa Scribd logo
1 de 29
UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL
CENTRO UNIVERSITÁRIO DE DOURADOS
DEPARTAMENTO DE CIÊNCIAS EXATAS
BACHARELADO EM ANÁLISE DE SISTEMAS
Desenvolvimento de um aplicativo para coleta de dados sócio-econômicos
compatível com dispositivos portáteis com sistema operacional PalmOS,
WindowsCE ou PocketPC, utilizando a linguagem Java.
por
Marcos Bispo de Oliveira
Orientação:
Leopoldo Francesco Vettor
Supervisão:
Prof. André Luis Gonsales
Relatório de Estágio Supervisionado apresentado à
Universidade Federal do Mato Grosso do Sul –
UFMS, Centro Universitário de Dourados, como
parte dos requisitos para obtenção do grau de
Bacharel em Análise de Sistemas.
Dourados/MS., 20 de agosto de 2004
2
Resumo
O objetivo deste relatório é apresentar a descrição e a documentação de uma ferramenta para
viabilizar a coleta de dados sócio-econômicos utilizando dispositivos digitais portáteis (handhelds,
PDA´s ou computadores de mão), que utilizam os sistemas operacionais PalmOS (desenvolvido pela
Palm Computing), WindowsCE ou PocketPC (ambos desenvolvidos pela Microsoft).
Serão apresentados neste relatório: uma breve descrição da tecnologia (linguagem de programação e
ferramentas) utilizadas no desenvolvimento do aplicativo, os objetivos e os requisitos, os diagramas
UML, os diagramas de entidade-relacionamento e algumas telas capturadas da aplicação em
execução.
3
Índice de texto
Lista de Figuras...................................................................................................................................5
Lista de abreviações............................................................................................................................6
Introdução...........................................................................................................................................7
Tecnologia utilizada............................................................................................................................8
O Java..............................................................................................................................................8
O SuperWaba..................................................................................................................................8
Principais características do SuperWaba.....................................................................................8
O SDK do SuperWaba inclui:.....................................................................................................10
Como desenvolver aplicações em SuperWaba?.........................................................................10
Solução Proposta...............................................................................................................................12
Modelagem da aplicação...................................................................................................................13
Especificação de Casos de Uso.....................................................................................................13
Diagrama de Classes.....................................................................................................................15
Diagrama de Componentes e Implantação.................................................................................16
Modelagem dos Dados..................................................................................................................18
Modelo Lógico...........................................................................................................................18
Modelo Físico.............................................................................................................................18
Interface da aplicação.......................................................................................................................20
Módulo de coleta de dados para o PDA......................................................................................20
Módulo servidor de recepção de dados.......................................................................................24
Considerações finais..........................................................................................................................27
Referências........................................................................................................................................28
Anexos................................................................................................................................................29
4
Lista de Figuras
Figura 1: Ambiente da IDE Eclipse.................................................................................................11
Figura 2: Diagrama de casos de uso................................................................................................14
Figura 3: Diagrama de classes inicial (ver ANEXO IV).................................................................15
Figura 4: Diagrama de classes final (ver ANEXO IV)...................................................................16
Figura 5: Diagrama de componentes...............................................................................................17
Figura 6: Diagrama de implantação................................................................................................17
Figura 7: Diagrama de entidade-relacionamento...........................................................................18
Figura 8: Modelo de entidade-relacionamento...............................................................................19
Figura 9: Tela inicial do aplicativo..................................................................................................20
Figura 10: Tela de detalhes do questionário...................................................................................21
Figura 11: Tela de detalhes do domicílio.........................................................................................21
Figura 12: Tela de detalhes do domicílio particular permanente..................................................22
Figura 13: Tela de listagem de moradores do domicílio.................................................................22
Figura 14: Tela de detalhes do morador do domicílio....................................................................23
Figura 15: Tela de listagem e manipulação de questionários armazenados.................................23
Figura 16: Mensagem de início da transmissão de dados..............................................................24
Figura 17: Aplicação servidora aguardando dados.........................................................................25
Figura 18: Dados recebidos pela aplicação servidora.....................................................................25
Figura 19: Dados armazenados em XML........................................................................................26
5
Lista de abreviações
DER = Diagrama de entidade-relacionamento
GPS = Global positionning system (Sistema de posicionamento global)
HTML = Hipertext markup language (Linguage de marcação de hipertexto)
IDE = Integrated development environment (Ambiente integrado de desenvolvimento)
JDK = Java development kit (Kit de desenvolvimento da linguagem Java)
MER = Modelo de entidade=-relacionamento
PDA = Personal digital assistant (Assistente pessoal digital)
PDB = Palm database (Formato de dados usado no PalmOS)
RAD = Rapid application development (Desenvolvimento rápido de aplicações)
ROM = Read only memory (Memória de acesso somente para leitura)
SDK = Software development kit (Kit de desenvolvimento de software)
SGBD = Sistema de gerenciamento de banco de dados
TCP/IP = Transfer control protocol / Internet prototol (Protocolo de controle e transmissão de
dados na internet)
UML = Unified modeling language (Linguagem unificada de modelagem)
USB = Universal serial bus (Barramento serial universal)
XML = Extensible markup language (Linguagem de marcação extensível)
6
Introdução
A aplicação desenvolvida durante o estágio recebeu o nome “Coleta”, sendo esta composta por dois
módulos: O aplicativo de coleta de dados para ser executado no PDA, utilizando a máquina virtual
SuperWaba1
, e a aplicação servidora, responsável pelo recebimento dos dados dos questionários
armazenados no PDA através de uma conexão TCP/IP.
O aplicativo de coleta para o PDA foi desenvolvido utilizando a linguagem Java, o SuperWaba SDK
e a IDE Eclipse. Já a aplicação servidora foi desenvolvida utilizando a ferramenta RAD Borland C++
Builder.
1
Disponível em http://www.superwaba.com.br
7
Tecnologia utilizada
Abaixo, temos uma breve descrição das tecnologias utilizadas na implementação do aplicativo de
coleta de dados sócio-econômicos.
O Java
Java é uma linguagem de programação com sintaxe equivalente a sintaxe do C++, porém, totalmente
orientada a objetos, criada pela Sun Microsystems, cujo objetivo inicial era ser utilizada em qualquer
dispositivo dotado de um processador e uma máquina virtual, como por exemplo: receptores de
televisão a cabo [HORSTMANN & CORNELL, 2000].
Com o passar do tempo, o Java tornou-se popular e hoje é uma das linguagens mais utilizadas para o
desenvolvimento de aplicações. Sua utilização abrange desde a criação de jogos para celular até o
desenvolvimento de aplicações corporativas de alto desempenho.
Um dos grandes diferenciais da linguagem Java em relação às outras linguagens do mercado reside
em sua portabilidade. A portabilidade decorre do fato de as aplicações desenvolvidas em Java
necessitarem de uma máquina virtual para serem executadas. Portanto, uma mesma aplicação pode
ser utilizada em plataformas Microsoft Windows, Linux, Unix ou Apple Macintosh sem que seja
necessário fazer uma única alteração, desde que haja uma máquina virtual Java disponível.
O SuperWaba
O SuperWaba é uma plataforma de código-fonte aberto para desenvolvimento de aplicações para
dispositivos portáteis (PDA’s), criada em 2000, derivada da máquina virtual Waba. SuperWaba é
distribuído na forma de um kit de desenvolvimento de software (SDK) contendo uma máquina
virtual, uma biblioteca de classes e programas utilitários para compilação e geração das aplicações.
Devido à maneira como o SuperWaba foi desenvolvido, pode-se usar ferramentas de
desenvolvimento Java para desenvolver programas em SuperWaba. No entanto, SuperWaba não é
derivado do Java e não tem conexão com a Sun Microsystems, a proprietária da marca Java e marcas
relacionadas.
Principais características do SuperWaba
Máquina virtual:
• É suportada por uma ampla gama de plataformas: PalmOS (2.0 e acima), WindowsCE (2.11
e acima), Windows 98/ME/NT/2000/XP, Linux (utilizando Wine), Mac OS-X, JDK 1.1 ou
superior;
• Permite a criação de bibliotecas nativas em C para todas as plataformas;
8
• Tem suporte total a Unicode;
• Tem suporte para telas em escala de cinza (PalmOS 2.0 e acima), coloridas e com alta
resolução em todos os PDA’s suportados;
• Suporte para exceções, tipos double e long (64 bits de precisão);
• Utilização total da memória dos PDA’s: a máquina virtual do SuperWaba utiliza a memória
disponível para aplicações (PalmOS 2.0 e acima).
Bibliotecas de extensão:
• Container para exibição de HTML;
• Manipulador de XML;
• Classes para exibição de informações de dispositivos GPS, baseadas no protocolo GPS da
Garmin (fabricante de equipamentos GPS);
• Suporte para Symbol® Scanners no Windows CE e PalmOS;
• Suporte para leitura de arquivos no formato PalmDoc e PalmZip;
• Suporte para algoritmos de criptografia: Blowfish, MD5, SHA1, TEA;
• Personal Information Management Abstract Layer (PIMal): acesso a informações PIM em
plataformas Windows CE e PalmOS de forma independente de plataforma;
• API para desenvolvimento de jogos;
Entrada/saída:
• Suporte para TCP/IP, porta serial, USB, infravermelho, bluetooth;
• Suporte para Secure Digital e Memory Stick card;
• O formato PDB, utilizado no PalmOS, foi portado para Windows CE, fazendo com que os
arquivos de dados possam ser utilizados em ambas as plataformas sem qualquer modificação;
• Camada de acesso a dados, com uma implementação para o banco de dados IBM DB2e e
uma para manipulação de arquivos PDB (PDBDriver);
• Recursos de impressão.
Interface do usuário:
• Dois estilos diferentes: PalmOS e Windows CE;
• Em ambos os estilos, todos os controle tem um estado visível quando desabilitados;
• Janelas popup podem ser movidas;
• Controle de posicionamento dos componentes permite o ajuste da aplicação em qualquer
resolução.
9
O SDK do SuperWaba inclui:
A máquina virtual, compilada para 15 plataformas;
A biblioteca de classes, que contem os seguintes pacotes:
• waba.fx: som (wave e tons), fontes customizadas, bitmaps, e uma poderosa classe para o
desenho de círculos, linhas, polígonos, imagens, etc;
• waba.io: classes para as operações de entrada/saída;
• waba.sys: acesso a várias configurações dos PDA’s, como versão da ROM, nome do usuário,
formatos, plataforma em execução, etc;
• waba.ui: interface básica com usuário;
• waba.util: classes de estruturas de dados;
• Pacotes de extensão.
Utilitários para o desenvolvedor:
• warp: usado para empacotar as classes em arquivos PDB, que podem ser sincronizados nos
PDA’s (Windows CE e PalmOS);
• exegen: cria atalhos para as aplicações com ícones customizados e arquivos para instalação
em WindowsCE;
• TTF2PDBs: converte fontes truetype em arquivos PDB para serem usadas nos PDA’s;
• scripts para automatizar a geração das aplicações.
Documentação, exemplos e o código-fonte da máquina virtual.
Como desenvolver aplicações em SuperWaba?
Para desenvolver aplicações em SuperWaba é necessário ter apenas o SDK e um editor de textos.
Porém, o trabalho será mais agradável se for utilizado um ambiente integrado de desenvolvimento
(IDE), como o Eclipse ou Borland JBuilder.
Neste trabalho, a IDE utilizada foi o Eclipse2
(versão 2.1), devido à facilidade encontrada para
configurá-la para compilar e gerar aplicações utilizando o SDK do SuperWaba.
A seguir, na figura 1, é mostrado o ambiente principal do Eclipse:
2
Disponível em http://www.eclipse.org
10
Figura 1: Ambiente da IDE Eclipse
O Eclipse é uma IDE desenvolvida inicialmente pela IBM, disponibilizada na forma de software
livre, e atualmente é o produto do desenvolvimento colaborativo de uma grande comunidade de
programadores ao redor do mundo. O Eclipse foi a ferramenta usada para o desenvolvimento do
aplicativo Coleta.
Os passos para se desenvolver uma aplicação em SuperWaba utilizando a IDE Eclipse consistem
basicamente em:
• Configuração do Eclipse para compilar e gerar aplicações em SuperWaba;
• Criação do ambiente de desenvolvimento da aplicação, incluindo a definição do diretório
onde é armazenado o projeto, o código-fonte, os arquivos de configuração e o script
build.xml utilizado para a geração da aplicação;
• Desenvolvimento e testes;
• Geração dos executáveis para a plataforma de destino;
• Transferência da aplicação e dos arquivos de dados para o PDA;
11
Solução Proposta
O aplicativo de coleta de dados sócio-econômicos é baseado em um questionário sócio-econômico
utilizado pelo IBGE (Instituto Brasileiro de Geografia e Estatística), em anexo.
O questionário contém informações sobre o domicílio do entrevistado e sobre cada morador deste
domicílio. Portanto, a aplicação de coleta de dados deve permitir:
• Coletar e armazenar informações sobre o domicílio do entrevistado;
• Coletar e armazenar informações sobre os moradores de cada domicílio pesquisado;
• Gerenciar os dados armazenados, permitindo a inclusão, a alteração, a exclusão e a consulta;
• Transmitir os dados armazenados para um servidor central.
A aplicação é composta dos seguintes módulos:
• Módulo de Coleta de dados a ser executado no PDA;
• Módulo servidor de recepção de dados;
O módulo de coleta de dados será utilizado pelo usuário que fará as entrevistas utilizando um PDA
para armazenar os dados do questionário. O módulo servidor será executado em um
microcomputador responsável por receber os dados armazenados nos PDA utilizados pelos
entrevistadores, através de uma conexão TCP/IP.
12
Modelagem da aplicação
A modelagem da aplicação foi feita com base na notação UML (Unified Modeling Language)
[FURLAN, 1998]. A UML é uma linguagem gráfica para visualização, especificação, construção e
documentação de sistemas de software, utilizando as técnicas de orientação a objeto. Essa linguagem
proporciona uma forma padrão para a preparação de planos para a arquitetura de projetos de
sistemas, incluindo aspectos conceituais, tais como processos de negócios e funções do sistema,
além de itens concretos, como as classes escritas em uma determinada linguagem de programação, e
esquemas de bancos de dados e componentes de software reutilizáveis [FURLAN, 1998].
A modelagem do sistema será apresentada basicamente através de quatro dos diagramas disponíveis
na UML:
• O diagrama de casos de uso, que descreve a funcionalidade do sistema percebida por atores
externos. Um ator interage com o sistema podendo ser um usuário, dispositivo ou outro sistema.
• O diagrama de classes, que denota a estrutura estática do sistema onde cada classe representa
coisas ou entidades que serão manipulados pelo sistema, mostrando também o relacionamento
existente entre elas;
• O diagrama de componentes fornecerá uma visão geral dos módulos do sistema;
• O diagrama de implantação fornecerá uma idéia de como o sistema estará organizado após sua
implantação
Na modelagem da solução também foram utilizados alguns conceitos da análise estruturada moderna
de Yourdon [YOURDON, 1990] para a representação dos modelos de dados, e as ferramentas de
diagramação que utilizaremos são o diagrama de entidade-relacionamento e o modelo de entidade-
relacionamento.
Utilizaremos o diagrama de entidade-relacionamento para detalhar a estrutura e a organização dos
dados que o sistema irá tratar. Usaremos também o Modelo de Entidade-Relacionamento (MER),
onde temos a representação das entidades e a descrição de nome e tipo dos campos que as compõem
e ainda temos o nome lógico dos relacionamentos entre as entidades, representando assim a estrutura
física dos dados.
Todos os diagramas foram desenhados utilizando uma versão de demonstração da ferramenta de
modelagem PowerDesigner, versão 9.5.2, desenvolvida pela Sybase, Inc.
Nas próximas seções serão apresentados os diagramas e respectivas descrições.
Especificação de Casos de Uso
13
Na especificação de casos de uso apresentamos uma visão geral da aplicação e das entidades
externas (atores) que estarão interagindo com ela.
Na figura 2, mostramos as interações que deverão ocorrer entre os usuários e os módulos da
aplicação:
Administrador
Validar dados
Usuário
Entrevista pessoa
Fornece entrada de dados
Transmite dados armazenados
Fornece dados
Pessoa
Aplicativo Servidor Coleta
Gerenciar permissões de acesso
Aplicativo Palm Coleta
Tratar & armazenar dados recebidos
Banco de dados (SGBD)
Remover permissão de acesso ao usuário
Dar permissão de acesso ao usuário
Figura 2: Diagrama de casos de uso
14
Diagrama de Classes
No diagrama de classes, conforme representado pela figura 3 e figura 4, definimos as entidades
envolvidas com a aplicação de acordo com o paradigma da orientação a objeto, onde se representa a
classe com seus atributos e operações.
O modelo de classes é obtido a partir da análise das especificações de requisitos do sistema e da
análise dos casos de uso. Serão apresentados dois diagramas de classes, o primeiro foi desenhado
antes do início da implementação do aplicativo de coleta, e o segundo obtido após a versão final da
aplicação, através de engenharia reversa do código-fonte do aplicativo de coleta.
1..1
0..*
1..1
0..1
1..1
0..*
1..1
0..*
1..1
0..*
0..1
0..*
1..1
0..*
1..1
0..*
1..1
0..*
1..1
0..*
1..1
0..*
1..1
0..*
1..1
0..*
1..1
0..*
1..1
0..*
1..1
0..*
1..1
0..*
1..1
0..*
1..1
0..*
1..1
0..*
1..1
0..*
1..1
0..*
1..1
0..*
Especie
+
+
Especie
Descricao
: java.lang.Long
: java.lang.String
Tipo
+
+
Tipo
Descricao
: java.lang.Long
: java.lang.String
Situacao
+
+
Situacao
Descricao
: java.lang.Long
: java.lang.String
Situacao_terreno
+
+
Situacao_terreno
Descricao
: java.lang.Long
: java.lang.String
Forma_abastecimento_agua
+
+
Forma_abastecimento_agua
Descricao
: java.lang.Long
: java.lang.String
Forma_canalizacao_agua
+
+
Forma_canalizacao_agua
Descricao
: java.lang.Long
: java.lang.String
Destino_dejetos
+
+
Destino_dejetos
Descricao
: java.lang.Long
: java.lang.String
Destino_lixo
+
+
Destino_lixo
Descricao
: java.lang.Long
: java.lang.String
Tipo_relacao
+
+
Tipo_relacao
Descricao
: java.lang.Long
: java.lang.String
Grau_instrucao
+
+
Grau_instrucao
Descricao
: java.lang.Long
: java.lang.String
Estado_civil
+
+
Estado_civil
Descricao
: java.lang.Long
: java.lang.String
Etinia
+
+
Etinia
Descricao
: java.lang.Long
: java.lang.String
Municipio
+
+
Municipio
Nome
: java.lang.Long
: java.lang.String
Estado
+
+
Estado
Nome
: java.lang.String
: java.lang.String
Distrito
+
+
Distrito
Nome
: java.lang.Long
: java.lang.String
Ocupacao
+
+
Ocupacao
Descricao
: java.lang.Long
: java.lang.String
Coleta
+
#
+
<<Constructor>>
<<Destructor>>
Coleta ()
finalize ()
Transmitir_dados (java.lang.String Servidor, java.lang.Integer Porta, java.lang.Integer Metodo)
: void
: java.lang.Boolean
Questionario
+
+
+
+
Questionario
Homens
Mulheres
Logradouro
: java.lang.Long
: java.lang.Integer
: java.lang.Integer
: java.lang.String
+
#
+
<<Constructor>>
<<Destructor>>
Questionario ()
finalize ()
Validar ()
: void
: java.lang.Boolean
Domicilio : 1
+
+
Domicilio
Tem_sanitario
: java.lang.Long
: java.lang.Boolean
+
#
<<Constructor>>
<<Destructor>>
Domicilio ()
finalize () : void
Morador
+
+
+
+
+
+
+
+
Morador
Nome
Sexo
Resp_domicilio
Data_nasc
Idade_presumida
Alfabetizado
Renda_mensal
: java.lang.Long
: java.lang.String
: java.lang.String
: java.lang.Boolean
: java.util.Date
: java.lang.Integer
: java.lang.Boolean
: java.lang.Double
+
#
<<Constructor>>
<<Destructor>>
Morador ()
finalize () : void
Domicilio_particular_permanente
+ Num_banheiros : java.lang.Integer
+
#
<<Constructor>>
<<Destructor>>
Domicilio_particular_permanente ()
finalize ()
ItemBD : 1
+
+
id
tabela
: java.lang.Long
: java.lang.String
+
#
+
+
+
+
+
+
+
+
<<Constructor>>
<<Destructor>>
<<Getter>>
<<Setter>>
<<Getter>>
<<Setter>>
ItemBD ()
finalize ()
Obter_dados ()
Gravar_dados ()
Excluir_dados ()
Novo_id ()
getId ()
setId (java.lang.Long newId)
getTabela ()
setTabela (java.lang.String newTabela)
: void
: java.lang.Boolean
: java.lang.Boolean
: java.lang.Boolean
: java.lang.Long
: java.lang.Long
: void
: java.lang.String
: void
Domicilio : 2
+
+
Domicilio
Tem_sanitario
: java.lang.Long
: java.lang.Boolean
+
#
<<Constructor>>
<<Destructor>>
Domicilio ()
finalize () : void
ItemBD : 2
+
+
id
tabela
: java.lang.Long
: java.lang.String
+
#
+
+
+
+
+
+
+
+
<<Constructor>>
<<Destructor>>
<<Getter>>
<<Setter>>
<<Getter>>
<<Setter>>
ItemBD ()
finalize ()
Obter_dados ()
Gravar_dados ()
Excluir_dados ()
Novo_id ()
getId ()
setId (java.lang.Long newId)
getTabela ()
setTabela (java.lang.String newTabela)
: void
: java.lang.Boolean
: java.lang.Boolean
: java.lang.Boolean
: java.lang.Long
: java.lang.Long
: void
: java.lang.String
: void
Figura 3: Diagrama de classes inicial (ver ANEXO IV)
15
questionario
domicilio
domicilio_part
morador
lista
dados
tabela
Coleta
-
-
-
-
-
+
+
-
-
-
*
*
*
*
*
*
-
-
-
tbPrincipal
btIniciar
btTransmitir
btLista
btFinalizar
server_trans
porta_trans
ult_erro_socket
ult_resultado
Trans
questionario
domicilio
domicilio_part
morador
lista
nm_cat_questionario
cat_questionario
rs_questionario
ds_questionario
: TabPanel
: Button
: Button
: Button
: Button
: String
: int
: int
: String
: String
: UIQuestionario
: UIDomicilio
: UIDomicilio_particular_permanente
: UIMorador
: UILista
: String
: Catalog
: ResizeStream
: DataStream
= "127.0.0.1"
= 6000
= ""
= "QUES.COLE.QUES"
+
+
+
+
+
+
+
+
+
+
+
+
+
<<Constructor>> Coleta ()
onStart ()
Transmitir_dados (String Servidor, int Porta)
limpaControles ()
novoIdQuestionario ()
abreCatalogo (boolean limpar)
fechaCatalogo ()
gravarDados ()
apagaQuestionario (long id_quest)
apagaMoradores (long id_quest)
atualizaNumHM (long id_quest)
carregaQuestionario (long id_quest)
onEvent (Event event)
: void
: boolean
: void
: long
: boolean
: void
: boolean
: boolean
: boolean
: void
: boolean
: void
<<SuperWaba>>
MainWindow
DataGrid
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
NEXT
PREV
SAME
FIRST
LAST
linesPerPage
cols
captions
tdColors
lineSelected
widths
xb
yb
wb
hb
x0
gscr
ce
lineH
firstDraw
startLine
endLine
minLines
: int
: int
: int
: int
: int
: int
: int
: String[]
: Color[]
: int
: int[]
: int
: int
: int
: int
: int
: Graphics
: ControlEvent
: int
: boolean
: int
: int
: int
= 0
= 1
= 2
= 3
= 4
= null
= {Color.BLACK,Color.BLACK,Color.BLACK,Color.BLACK}
= -1
= null
= 12
= 4
= 12
= new ControlEvent(ControlEvent.PRESSED,this)
= true
= 1
= 1
= 3
+
+
+
+
#
+
+
+
+
+
-
-
-
-
-
<<Constructor>> DataGrid (GridModel ds)
getPreferredHeight ()
getPreferredWidth ()
setGridModel (GridModel ds)
onBoundsChanged ()
onPaint (Graphics screen)
selectedLine ()
resetSelection ()
scroll (int direction)
onEvent (Event event)
getRow (int rowIdx)
getMaxWidth (int colIdx)
drawCols (Graphics screen, int ky)
drawRow (Graphics screen, String data[], int ky, boolean isTitle)
drawWaitCursor (boolean draw)
: int
: int
: void
: void
: void
: int
: void
: boolean
: void
: String[]
: int
: void
: void
: void
<<SuperWaba>>
Control
DataSet
- dataSet : String[]
+
+
+
+
+
+
+
+
+
+
+
+
<<Constructor>> DataSet (int ySize, int xSize)
getColumnCount ()
getItemCount ()
getPreferredColumnWidth (int columnIndex)
getPreferredRowHeight (int columnIndex)
getRowCount ()
getSelected (int rowIdx, int colIdx)
getValidChars (int rowIdx, int colIdx)
getValueAt (int rowIdx, int colIdx)
isCellEditable (int rowIdx, int colIdx)
isHeader (int rowIdx)
setValueAt (Object val, int rowIdx, int colIdx)
: int
: int
: int
: int
: int
: Object
: String
: Object
: boolean
: boolean
: void
UIDomicilio
+
+
+
+
+
+
+
+
+
+
+
btGravar
btCancelar
btAvancar
cbSanitario
lbEspecie
lbDestLixo
lbDestDejetos
cmbEspecie
cmbDestLixo
cmbDestDejetos
containerAtual
: Button
: Button
: Button
: Check
: Label
: Label
: Label
: ComboBox
: ComboBox
: ComboBox
: Container
= new Button("Gravar")
= new Button("Cancelar")
= new Button("Avançar >")
= new Check("Possui sanitário?")
= new Label("Espécie:")
= new Label("Destino do lixo:")
= new Label("Destino dos dejetos:")
= new ComboBox()
= new ComboBox()
= new ComboBox()
+
+
+
+
+
+
+
+
<<Constructor>> UIDomicilio ()
alinharControles ()
adicionarEm (Container container)
setarEdits ()
setarCombos ()
removerDe (Container container)
gravarDados ()
manipulaEvento (Event evento)
: void
: void
: void
: void
: void
: boolean
: void
UIDomicilio_particular_permanente
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
btGravar
btCancelar
btVoltar
edtNumBanheiros
lbNumBanheiros
lbFAbastAgua
lbFCanAgua
lbTipo
lbSituacao
lbSitTerreno
cmbFAbastAgua
cmbFCanAgua
cmbTipo
cmbSituacao
cmbSitTerreno
containerAtual
: Button
: Button
: Button
: Edit
: Label
: Label
: Label
: Label
: Label
: Label
: ComboBox
: ComboBox
: ComboBox
: ComboBox
: ComboBox
: Container
= new Button("Gravar")
= new Button("Cancelar")
= new Button("< Voltar")
= new Edit()
= new Label("Nº banheiros:")
= new Label("Abast. água:")
= new Label("Canal. água:")
= new Label("Tipo:")
= new Label("Situação:")
= new Label("Sit. terreno:")
= new ComboBox()
= new ComboBox()
= new ComboBox()
= new ComboBox()
= new ComboBox()
+
+
+
+
+
+
+
+
<<Constructor>> UIDomicilio_particular_permanente ()
alinharControles ()
adicionarEm (Container container)
setarEdits ()
setarCombos ()
removerDe (Container container)
gravarDados ()
manipulaEvento (Event evento)
: void
: void
: void
: void
: void
: boolean
: void
UILista
+
+
+
+
+
+
+
*
-
-
-
btAtualizar
btCarregar
btApagar
lbNumReg
dados
tabela
containerAtual
nm_cat_questionario
cat_questionario
rs_questionario
ds_questionario
: Button
: Button
: Button
: Label
: DataSet
: DataGrid
: Container
: String
: Catalog
: ResizeStream
: DataStream
= new Button("Atualizar")
= new Button("Abrir")
= new Button("Apagar")
= new Label("Número de registros:")
= "QUES.COLE.QUES"
+
+
+
+
+
+
+
+
<<Constructor>> UILista ()
alinharControles ()
adicionarEm (Container container)
abreCatalogo (boolean limpar)
fechaCatalogo ()
atualizarTabela ()
removerDe (Container container)
manipulaEvento (Event evento)
: void
: void
: boolean
: void
: void
: void
: void
UIMorador
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
*
+
+
+
+
btGravar
btCancelar
btAdicionar
btRemover
btExibir
btVoltar
edtNome
edtDataNascimento
edtIdadePresum
edtRendaMensal
lbMoradores
lbNome
lbSexo
lbDataNascimento
lbIdadePresum
lbRendaMensal
lbGrauInstr
lbEstCivil
lbOcupacao
lbEtinia
lbTipoRelacaoRespDom
lbLocalNasc
cmbMoradores
cmbSexo
cmbGrauInstr
cmbEstCivil
cmbOcupacao
cmbEtinia
cmbTipoRelacaoRespDom
cmbEstadoNasc
cmbMunicipioNasc
cbAlfabetizado
cbRespDomicilio
containerAtual
nm_cat_morador
cat_morador
rs_morador
ds_morador
questionario
: Button
: Button
: Button
: Button
: Button
: Button
: Edit
: Edit
: Edit
: Edit
: Label
: Label
: Label
: Label
: Label
: Label
: Label
: Label
: Label
: Label
: Label
: Label
: ComboBox
: ComboBox
: ComboBox
: ComboBox
: ComboBox
: ComboBox
: ComboBox
: ComboBox
: ComboBox
: Check
: Check
: Container
: String
: Catalog
: ResizeStream
: DataStream
: long
= new Button("Gravar")
= new Button("Cancelar")
= new Button("Adicionar Morador")
= new Button("Excluir Morador")
= new Button("Exibir Morador")
= new Button("Ok")
= new Edit()
= new Edit()
= new Edit()
= new Edit()
= new Label("Moradores do domicílio:")
= new Label("Nome:")
= new Label("Sexo:")
= new Label("Data nasc.:")
= new Label("Idade:")
= new Label("Renda:")
= new Label("Grau instr.:")
= new Label("Estado civil:")
= new Label("Ocup.:")
= new Label("Etn.:")
= new Label("Rel. c/ resp. domic.:")
= new Label("Local nasc.:")
= new ComboBox()
= new ComboBox()
= new ComboBox()
= new ComboBox()
= new ComboBox()
= new ComboBox()
= new ComboBox()
= new ComboBox()
= new ComboBox()
= new Check("Alfabetizado")
= new Check("Resp. domicílio")
= "MORA.COLE.MORA"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<<Constructor>> UIMorador ()
alinharControles ()
limpaControles ()
alinharControlesMorador ()
adicionarEm (Container container)
setarEdits ()
setarCombos ()
removerDe (Container container)
preparaMorador (Container container)
despreparaMorador (Container container)
exibirMorador ()
adicionarMorador ()
removerMorador ()
gravarDados ()
abreCatalogo (boolean limpar)
fechaCatalogo ()
manipulaEvento (Event evento)
: void
: void
: void
: void
: void
: void
: void
: void
: void
: boolean
: void
: boolean
: boolean
: boolean
: void
: void
UIQuestionario
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
btGravar
btCancelar
btDomicilio
btMorador
btDetectaGPS
edtQuestionario
edtHomens
edtMulheres
edtLogradouro
edtCoordGPS
lbQuestionario
lbHomens
lbMulheres
lbLogradouro
lbEstado
lbCidade
lbDistrito
lbCoordGPS
cmbEstado
cmbCidade
cmbDistrito
questionario
containerAtual
: Button
: Button
: Button
: Button
: Button
: Edit
: Edit
: Edit
: Edit
: Edit
: Label
: Label
: Label
: Label
: Label
: Label
: Label
: Label
: ComboBox
: ComboBox
: ComboBox
: long
: Container
= new Button("Gravar")
= new Button("Cancelar")
= new Button("Domicilio")
= new Button("Moradores")
= new Button("GPS")
= new Edit()
= new Edit()
= new Edit()
= new Edit()
= new Edit()
= new Label("Nº do Questionario:")
= new Label("Homens:")
= new Label("Mulheres:")
= new Label("Logr.:")
= new Label("UF:")
= new Label("Cidade:")
= new Label("Distrito/localidade:")
= new Label("Coord. GPS:")
= new ComboBox()
= new ComboBox()
= new ComboBox()
+
+
+
+
+
+
+
+
<<Constructor>> UIQuestionario ()
alinharControles ()
adicionarEm (Container container)
setarEdits ()
setarCombos ()
removerDe (Container container)
gravarDados ()
manipulaEvento (Event evento)
: void
: void
: void
: void
: void
: boolean
: void
Figura 4: Diagrama de classes final (ver ANEXO IV)
Diagrama de Componentes e Implantação
O diagrama de componentes, conforme mostrado na figura 5, nos dá uma visão das partes que
formam a aplicação. O diagrama de implementação nos dá uma idéia de como a aplicação estará
disposta em seu ambiente após sua implantação, como mostra a figura 6.
16
Classes de Interface
Tabelas de dados pdb (Palm Database)
Classes auxiliares
Figura 5: Diagrama de componentes
Coleta
Banco de dados
Servidor Coleta
Conexão TCP/IP
via socket
(rede local,
intranet ou
internet)
Dados
coletados
Funções
exportadas
Comandos SQL
Dados e
Aplicativo
desktop
(PC & MS-Windows
compatível)
Aplicação
java em
dispositivo Palm,
WindowsCE ou
PocketPC
Interbase ou Firebird
(Linux & MS-Windows)
Figura 6: Diagrama de implantação
17
Modelagem dos Dados
Devemos ressaltar que a modelagem dos dados apresenta a estrutura de armazenamento de dados
que deverá ser manipulada pela aplicação servidora, que receberá os dados armazenados nos PDA´s
e fará o seu armazenamento em um SGBD relacional. Já o aplicativo de coleta de dados, executado
no PDA, utiliza um esquema simples de tabelas de dados, sem qualquer inter-relacionamento ou
integridade referencial.
Modelo Lógico
No DER (Diagrama de entidade-relacionamento), representado pela figura 7, apresentamos a
estrutura lógica de armazenamento dos dados que a aplicação deverá tratar. Nota-se que no DER
mostramos apenas a estrutura de entidades (que futuramente se tornarão tabelas de banco de dados)
e os seus relacionamentos, e não nos preocupamos em mostrar os atributos ou campos de cada
entidade.
Questionario
Morador
Domicilio
Especie
Tipo
Situacao
Situacao_terreno
Forma_abastecimento_agua
Forma_canalizacao_agua
Destino_dejetos
Destino_lixo
Tipo_relacao
Grau_instrucao
Estado_civil
Etinia
Municipio
Estado
Distrito
Ocupacao
Figura 7: Diagrama de entidade-relacionamento
Modelo Físico
No MER (Modelo de entidade-relacionamento), enfatizamos a estrutura física das entidades e seus
inter-relacionamentos, mostrando para cada entidade, todos os seus campos e tipos de dados e para
cada relacionamento, o nome físico do mesmo, e ainda todas as chaves primárias e estrangeiras de
cada entidade, conforme apresentado na figura 8.
18
A estrutura física dos dados foi formatada e especificada para ser compatível com o gerenciador de
banco de dados Firebird (compatível com o Interbase, da Borland).
FK_DISTRITO_MUNICIPIO
FK_MUNICIPIO_ESTADO
FK_QUESTIONARIO_DISTRITO
FK_QUESTIONARIO_MUNICIPIO
FK_QUESTIONARIO_ESTADO
FK_DOMICILIO_SIT
FK_DOMICILIO_DESTLIXO
FK_DOMICILIO_FAGUA
FK_DOMICILIO_ESPECIE FK_DOMICILIO_FORCANAGUA
FK_DOMICILIO_DESTDEJ
FK_DOMICILIO_TIPO
FK_DOMICILIO_SITUACAO
FK_DOMICILIO_QUEST
FK_MORADOR_OCUPACAO
FK_MORADOR_ETINIA
FK_MORADOR_GINST
FK_MORADOR_TRELFK_MORADOR_ESTCIVIL
FK_MORA_MUN_NASCIMENTO
FK_MORA_EST_NASCIMENTO
FK_MORADOR_DOMICILIO
Questionario
Questionario
Distrito
Municipio
Estado
Homens
Mulheres
Logradouro
long integer
long integer
long integer
character(2)
integer
integer
variable character(200)
<pk>
<fk1>
<fk2>
<fk3>
Morador
Morador
Tipo_relacao
Etinia
Estado_civil
Ocupacao
Municipio
Grau_instrucao
Estado
Domicilio
Nome
Sexo
Resp_domicilio
Data_nasc
Idade_presumida
Alfabetizado
Renda_mensal
long integer
long integer
long integer
long integer
long integer
long integer
long integer
character(2)
long integer
variable character(100)
character(1)
boolean
date
integer
boolean
decimal(9,2)
<pk>
<fk4>
<fk2>
<fk5>
<fk1>
<fk6>
<fk3>
<fk7>
<fk8>
Domicilio
Domicilio
Especie
Destino_dejetos
Forma_abastecimento_agua
Tipo
Forma_canalizacao_agua
Situacao
Destino_lixo
Situacao_terreno
Questionario
Tem_sanitario
Num_banheiros
long integer
long integer
long integer
long integer
long integer
long integer
long integer
long integer
long integer
long integer
boolean
integer
<pk>
<fk4>
<fk6>
<fk3>
<fk7>
<fk5>
<fk8>
<fk2>
<fk1>
<fk9>
Especie
Especie
Descricao
long integer
variable character(60)
<pk>
Tipo
Tipo
Descricao
long integer
variable character(60)
<pk>
Situacao
Situacao
Descricao
long integer
variable character(60)
<pk>
Situacao_terreno
Situacao_terreno
Descricao
long integer
variable character(60)
<pk>
Forma_abastecimento_agua
Forma_abastecimento_agua
Descricao
long integer
variable character(60)
<pk>
Forma_canalizacao_agua
Forma_canalizacao_agua
Descricao
long integer
variable character(60)
<pk>
Destino_dejetos
Destino_dejetos
Descricao
long integer
variable character(60)
<pk>
Destino_lixo
Destino_lixo
Descricao
long integer
variable character(60)
<pk>
Tipo_relacao
Tipo_relacao
Descricao
long integer
variable character(60)
<pk>
Grau_instrucao
Grau_instrucao
Descricao
long integer
variable character(60)
<pk>
Estado_civil
Estado_civil
Descricao
long integer
variable character(60)
<pk>
Etinia
Etinia
Descricao
long integer
variable character(60)
<pk>
Municipio
Municipio
Estado
Nome
long integer
character(2)
variable character(100)
<pk>
<fk>
Estado
Estado
Nome
character(2)
variable character(100)
<pk>
Distrito
Distrito
Municipio
Nome
long integer
long integer
variable character(100)
<pk>
<fk>
Ocupacao
Ocupacao
Descricao
long integer
variable character(60)
<pk>
Figura 8: Modelo de entidade-relacionamento
19
Interface da aplicação
Módulo de coleta de dados para o PDA
As telas do aplicativo de coleta foram capturadas a partir de um emulador do sistema operacional
PalmOS, desenvolvido e distribuído pela Palm Computing.
Figura 9: Tela inicial do aplicativo
20
Figura 10: Tela de detalhes do questionário
Figura 11: Tela de detalhes do domicílio
21
Figura 12: Tela de detalhes do domicílio particular permanente
Figura 13: Tela de listagem de moradores do domicílio
22
Figura 14: Tela de detalhes do morador do domicílio
Figura 15: Tela de listagem e manipulação de questionários armazenados
23
Figura 16: Mensagem de início da transmissão de dados
Módulo servidor de recepção de dados
As telas da aplicação servidora foram capturadas a partir da aplicação em execução, as quais
demonstram a aplicação aguardando uma conexão (figura 17), a aplicação exibindo os dados
recebidos (figura 18) de um PDA emulado e o resultado dos dados transmitidos armazenados em
um arquivo XML para processamento posterior (figura 19).
24
Figura 17: Aplicação servidora aguardando dados
Figura 18: Dados recebidos pela aplicação servidora
25
Figura 19: Dados armazenados em XML
26
Considerações finais
Espera-se que este relatório tenha dado uma visão geral do aplicativo de coleta de dados sócio-
econômicos desenvolvido durante o estágio supervisionado. Além do aplicativo de coleta, foi
desenvolvido um protótipo de servidor para recepção de dados através de conexão TCP/IP. Para
trabalhos futuros temos a implementação de novas funcionalidades e recursos para armazenamento e
gerenciamento dos dados armazenados em SGBD pela aplicação servidora.
27
Referências
[FURLAN, 1998] Furlan, José Davi. Modelagem de Objetos através da UML – the Unified
Modeling Language. São Paulo: Makron Books, 1998.
[HORSTMANN & CORNELL, 2000] Horstmann, Cay S. & Cornell, Gary. Core Java™ 2 Volume
I - Fundamentals - 5th
Edition. USA: Prentice Hall PTR, 2000.
[YOURDON, 1990] Yourdon, Edward. Análise estruturada moderna. Tradução de Dalton Conde
de Alencar – Rio de Janeiro: Campus, 1990.
28
Anexos
29

Mais conteúdo relacionado

Mais procurados

Desenvolvimento de um modelo de simulação social da cidade de Mandirituba
Desenvolvimento de um modelo de simulação social da cidade de MandiritubaDesenvolvimento de um modelo de simulação social da cidade de Mandirituba
Desenvolvimento de um modelo de simulação social da cidade de MandiritubaLeonardo Alcantara
 
AMAO - DESENVOLVIMENTO DE UM AMBIENTE ONLINE DE AUXÍLIO À CORREÇÃO E RESOLUÇÃ...
AMAO - DESENVOLVIMENTO DE UM AMBIENTE ONLINE DE AUXÍLIO À CORREÇÃO E RESOLUÇÃ...AMAO - DESENVOLVIMENTO DE UM AMBIENTE ONLINE DE AUXÍLIO À CORREÇÃO E RESOLUÇÃ...
AMAO - DESENVOLVIMENTO DE UM AMBIENTE ONLINE DE AUXÍLIO À CORREÇÃO E RESOLUÇÃ...Felipe Pontes
 
MÓDULO DE GERENCIAMENTO DE BOLSAS DO SISTEMA CONTROLE DE PROCESSOS
MÓDULO DE GERENCIAMENTO DE BOLSAS DO SISTEMA CONTROLE DE PROCESSOSMÓDULO DE GERENCIAMENTO DE BOLSAS DO SISTEMA CONTROLE DE PROCESSOS
MÓDULO DE GERENCIAMENTO DE BOLSAS DO SISTEMA CONTROLE DE PROCESSOSLeno Matos Lisboa
 
Desenvolvimento do protótipo de uma ferramenta para Engenharia de Requisitos ...
Desenvolvimento do protótipo de uma ferramenta para Engenharia de Requisitos ...Desenvolvimento do protótipo de uma ferramenta para Engenharia de Requisitos ...
Desenvolvimento do protótipo de uma ferramenta para Engenharia de Requisitos ...Diego Lusa
 
Relatorio Bic Schoolsenses@Internet
Relatorio Bic Schoolsenses@InternetRelatorio Bic Schoolsenses@Internet
Relatorio Bic Schoolsenses@InternetAntonio Nascimento
 
Apostila bradesco windows 10
Apostila bradesco windows 10Apostila bradesco windows 10
Apostila bradesco windows 10Waldomiro Silva
 
Sistema Gerenciador Para um Salão de Beleza
Sistema Gerenciador Para um Salão de BelezaSistema Gerenciador Para um Salão de Beleza
Sistema Gerenciador Para um Salão de BelezaDaiana de Ávila
 
Fabio virtualizacao (1)
Fabio   virtualizacao (1)Fabio   virtualizacao (1)
Fabio virtualizacao (1)gsabatke
 
Trabalho de diplomação I
Trabalho de diplomação ITrabalho de diplomação I
Trabalho de diplomação IEdmilson Hora
 
Relatório de estágio curricular
Relatório de estágio curricularRelatório de estágio curricular
Relatório de estágio curricularLeonardo Flores
 

Mais procurados (12)

Desenvolvimento de um modelo de simulação social da cidade de Mandirituba
Desenvolvimento de um modelo de simulação social da cidade de MandiritubaDesenvolvimento de um modelo de simulação social da cidade de Mandirituba
Desenvolvimento de um modelo de simulação social da cidade de Mandirituba
 
AMAO - DESENVOLVIMENTO DE UM AMBIENTE ONLINE DE AUXÍLIO À CORREÇÃO E RESOLUÇÃ...
AMAO - DESENVOLVIMENTO DE UM AMBIENTE ONLINE DE AUXÍLIO À CORREÇÃO E RESOLUÇÃ...AMAO - DESENVOLVIMENTO DE UM AMBIENTE ONLINE DE AUXÍLIO À CORREÇÃO E RESOLUÇÃ...
AMAO - DESENVOLVIMENTO DE UM AMBIENTE ONLINE DE AUXÍLIO À CORREÇÃO E RESOLUÇÃ...
 
MÓDULO DE GERENCIAMENTO DE BOLSAS DO SISTEMA CONTROLE DE PROCESSOS
MÓDULO DE GERENCIAMENTO DE BOLSAS DO SISTEMA CONTROLE DE PROCESSOSMÓDULO DE GERENCIAMENTO DE BOLSAS DO SISTEMA CONTROLE DE PROCESSOS
MÓDULO DE GERENCIAMENTO DE BOLSAS DO SISTEMA CONTROLE DE PROCESSOS
 
Desenvolvimento do protótipo de uma ferramenta para Engenharia de Requisitos ...
Desenvolvimento do protótipo de uma ferramenta para Engenharia de Requisitos ...Desenvolvimento do protótipo de uma ferramenta para Engenharia de Requisitos ...
Desenvolvimento do protótipo de uma ferramenta para Engenharia de Requisitos ...
 
Relatorio Bic Schoolsenses@Internet
Relatorio Bic Schoolsenses@InternetRelatorio Bic Schoolsenses@Internet
Relatorio Bic Schoolsenses@Internet
 
Apostila bradesco windows 10
Apostila bradesco windows 10Apostila bradesco windows 10
Apostila bradesco windows 10
 
Sistema Gerenciador Para um Salão de Beleza
Sistema Gerenciador Para um Salão de BelezaSistema Gerenciador Para um Salão de Beleza
Sistema Gerenciador Para um Salão de Beleza
 
Fabio virtualizacao (1)
Fabio   virtualizacao (1)Fabio   virtualizacao (1)
Fabio virtualizacao (1)
 
Trabalho de diplomação I
Trabalho de diplomação ITrabalho de diplomação I
Trabalho de diplomação I
 
Apostila c cplusplus
Apostila c cplusplusApostila c cplusplus
Apostila c cplusplus
 
Relatório de estágio curricular
Relatório de estágio curricularRelatório de estágio curricular
Relatório de estágio curricular
 
Curriculum Vitae
Curriculum VitaeCurriculum Vitae
Curriculum Vitae
 

Semelhante a Relatório de estágio

E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...Paulo Steinhauser
 
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...Paulo Steinhauser
 
Apostila passo a passo como programar em android edição03
Apostila passo a passo como programar em android edição03Apostila passo a passo como programar em android edição03
Apostila passo a passo como programar em android edição03Horacio Diamante Mondlane
 
Plano de projeto de software para o sistema MEA - monitoraemto de eventos ad...
Plano de projeto de software para o sistema  MEA - monitoraemto de eventos ad...Plano de projeto de software para o sistema  MEA - monitoraemto de eventos ad...
Plano de projeto de software para o sistema MEA - monitoraemto de eventos ad...Lucas Aquino
 
Cópia de apostila nova curso idosos
Cópia de apostila nova curso idososCópia de apostila nova curso idosos
Cópia de apostila nova curso idososPaulo Rosa
 
Plano de Projeto de Software para produtos da Lacertae SW
Plano de Projeto de Software para produtos da Lacertae SWPlano de Projeto de Software para produtos da Lacertae SW
Plano de Projeto de Software para produtos da Lacertae SWrafahreis
 
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...Jucemar Dimon
 
Pre proposta trabalho final
Pre proposta trabalho finalPre proposta trabalho final
Pre proposta trabalho finalSergio Chaves
 
UM CURSO DE INFORMATICA BASICA PARA IDOSOS
UM CURSO DE INFORMATICA BASICA PARA IDOSOSUM CURSO DE INFORMATICA BASICA PARA IDOSOS
UM CURSO DE INFORMATICA BASICA PARA IDOSOSdjgsantos1981
 
Plano de projeto: Bichos do Campus na Web
Plano de projeto: Bichos do Campus na WebPlano de projeto: Bichos do Campus na Web
Plano de projeto: Bichos do Campus na WebJorge Roberto
 
PETIC-UFS 2010-2012
PETIC-UFS 2010-2012PETIC-UFS 2010-2012
PETIC-UFS 2010-2012geraldoao
 
Exercise Planning - Uma ferramenta de apoio ao meio educacional
Exercise Planning - Uma ferramenta de apoio ao meio educacionalExercise Planning - Uma ferramenta de apoio ao meio educacional
Exercise Planning - Uma ferramenta de apoio ao meio educacionalMarcos Pessoa
 
Pim ii virtualização de servidores e computadores na univen petróleo rev. final
Pim ii virtualização de servidores e computadores na univen petróleo rev. finalPim ii virtualização de servidores e computadores na univen petróleo rev. final
Pim ii virtualização de servidores e computadores na univen petróleo rev. finalCesar Jardim
 
O uso de programação reflexiva para o desenvolvimento de aplicações comerciai...
O uso de programação reflexiva para o desenvolvimento de aplicações comerciai...O uso de programação reflexiva para o desenvolvimento de aplicações comerciai...
O uso de programação reflexiva para o desenvolvimento de aplicações comerciai...Jefferson Simão Gonçalves
 

Semelhante a Relatório de estágio (20)

E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
 
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
 
Apostila passo a passo como programar em android edição03
Apostila passo a passo como programar em android edição03Apostila passo a passo como programar em android edição03
Apostila passo a passo como programar em android edição03
 
Plano de projeto de software para o sistema MEA - monitoraemto de eventos ad...
Plano de projeto de software para o sistema  MEA - monitoraemto de eventos ad...Plano de projeto de software para o sistema  MEA - monitoraemto de eventos ad...
Plano de projeto de software para o sistema MEA - monitoraemto de eventos ad...
 
Cópia de apostila nova curso idosos
Cópia de apostila nova curso idososCópia de apostila nova curso idosos
Cópia de apostila nova curso idosos
 
Plano de Projeto de Software para produtos da Lacertae SW
Plano de Projeto de Software para produtos da Lacertae SWPlano de Projeto de Software para produtos da Lacertae SW
Plano de Projeto de Software para produtos da Lacertae SW
 
Apostila Android Gratuita
Apostila Android GratuitaApostila Android Gratuita
Apostila Android Gratuita
 
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...
 
Pre proposta trabalho final
Pre proposta trabalho finalPre proposta trabalho final
Pre proposta trabalho final
 
UM CURSO DE INFORMATICA BASICA PARA IDOSOS
UM CURSO DE INFORMATICA BASICA PARA IDOSOSUM CURSO DE INFORMATICA BASICA PARA IDOSOS
UM CURSO DE INFORMATICA BASICA PARA IDOSOS
 
Plano de projeto: Bichos do Campus na Web
Plano de projeto: Bichos do Campus na WebPlano de projeto: Bichos do Campus na Web
Plano de projeto: Bichos do Campus na Web
 
PETIC-UFS 2010-2012
PETIC-UFS 2010-2012PETIC-UFS 2010-2012
PETIC-UFS 2010-2012
 
Pim viii soluções_por_software
Pim viii soluções_por_softwarePim viii soluções_por_software
Pim viii soluções_por_software
 
Como criar cronogramas através das melhores ferramentas gratuitas do mercado
Como criar cronogramas através das melhores ferramentas gratuitas do mercadoComo criar cronogramas através das melhores ferramentas gratuitas do mercado
Como criar cronogramas através das melhores ferramentas gratuitas do mercado
 
Exercise Planning - Uma ferramenta de apoio ao meio educacional
Exercise Planning - Uma ferramenta de apoio ao meio educacionalExercise Planning - Uma ferramenta de apoio ao meio educacional
Exercise Planning - Uma ferramenta de apoio ao meio educacional
 
Android - Notas de aula
Android - Notas de aulaAndroid - Notas de aula
Android - Notas de aula
 
Pim ii virtualização de servidores e computadores na univen petróleo rev. final
Pim ii virtualização de servidores e computadores na univen petróleo rev. finalPim ii virtualização de servidores e computadores na univen petróleo rev. final
Pim ii virtualização de servidores e computadores na univen petróleo rev. final
 
Restaurante
RestauranteRestaurante
Restaurante
 
Android juliana-mono
Android juliana-monoAndroid juliana-mono
Android juliana-mono
 
O uso de programação reflexiva para o desenvolvimento de aplicações comerciai...
O uso de programação reflexiva para o desenvolvimento de aplicações comerciai...O uso de programação reflexiva para o desenvolvimento de aplicações comerciai...
O uso de programação reflexiva para o desenvolvimento de aplicações comerciai...
 

Relatório de estágio

  • 1. UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL CENTRO UNIVERSITÁRIO DE DOURADOS DEPARTAMENTO DE CIÊNCIAS EXATAS BACHARELADO EM ANÁLISE DE SISTEMAS Desenvolvimento de um aplicativo para coleta de dados sócio-econômicos compatível com dispositivos portáteis com sistema operacional PalmOS, WindowsCE ou PocketPC, utilizando a linguagem Java. por Marcos Bispo de Oliveira Orientação: Leopoldo Francesco Vettor Supervisão: Prof. André Luis Gonsales Relatório de Estágio Supervisionado apresentado à Universidade Federal do Mato Grosso do Sul – UFMS, Centro Universitário de Dourados, como parte dos requisitos para obtenção do grau de Bacharel em Análise de Sistemas.
  • 2. Dourados/MS., 20 de agosto de 2004 2
  • 3. Resumo O objetivo deste relatório é apresentar a descrição e a documentação de uma ferramenta para viabilizar a coleta de dados sócio-econômicos utilizando dispositivos digitais portáteis (handhelds, PDA´s ou computadores de mão), que utilizam os sistemas operacionais PalmOS (desenvolvido pela Palm Computing), WindowsCE ou PocketPC (ambos desenvolvidos pela Microsoft). Serão apresentados neste relatório: uma breve descrição da tecnologia (linguagem de programação e ferramentas) utilizadas no desenvolvimento do aplicativo, os objetivos e os requisitos, os diagramas UML, os diagramas de entidade-relacionamento e algumas telas capturadas da aplicação em execução. 3
  • 4. Índice de texto Lista de Figuras...................................................................................................................................5 Lista de abreviações............................................................................................................................6 Introdução...........................................................................................................................................7 Tecnologia utilizada............................................................................................................................8 O Java..............................................................................................................................................8 O SuperWaba..................................................................................................................................8 Principais características do SuperWaba.....................................................................................8 O SDK do SuperWaba inclui:.....................................................................................................10 Como desenvolver aplicações em SuperWaba?.........................................................................10 Solução Proposta...............................................................................................................................12 Modelagem da aplicação...................................................................................................................13 Especificação de Casos de Uso.....................................................................................................13 Diagrama de Classes.....................................................................................................................15 Diagrama de Componentes e Implantação.................................................................................16 Modelagem dos Dados..................................................................................................................18 Modelo Lógico...........................................................................................................................18 Modelo Físico.............................................................................................................................18 Interface da aplicação.......................................................................................................................20 Módulo de coleta de dados para o PDA......................................................................................20 Módulo servidor de recepção de dados.......................................................................................24 Considerações finais..........................................................................................................................27 Referências........................................................................................................................................28 Anexos................................................................................................................................................29 4
  • 5. Lista de Figuras Figura 1: Ambiente da IDE Eclipse.................................................................................................11 Figura 2: Diagrama de casos de uso................................................................................................14 Figura 3: Diagrama de classes inicial (ver ANEXO IV).................................................................15 Figura 4: Diagrama de classes final (ver ANEXO IV)...................................................................16 Figura 5: Diagrama de componentes...............................................................................................17 Figura 6: Diagrama de implantação................................................................................................17 Figura 7: Diagrama de entidade-relacionamento...........................................................................18 Figura 8: Modelo de entidade-relacionamento...............................................................................19 Figura 9: Tela inicial do aplicativo..................................................................................................20 Figura 10: Tela de detalhes do questionário...................................................................................21 Figura 11: Tela de detalhes do domicílio.........................................................................................21 Figura 12: Tela de detalhes do domicílio particular permanente..................................................22 Figura 13: Tela de listagem de moradores do domicílio.................................................................22 Figura 14: Tela de detalhes do morador do domicílio....................................................................23 Figura 15: Tela de listagem e manipulação de questionários armazenados.................................23 Figura 16: Mensagem de início da transmissão de dados..............................................................24 Figura 17: Aplicação servidora aguardando dados.........................................................................25 Figura 18: Dados recebidos pela aplicação servidora.....................................................................25 Figura 19: Dados armazenados em XML........................................................................................26 5
  • 6. Lista de abreviações DER = Diagrama de entidade-relacionamento GPS = Global positionning system (Sistema de posicionamento global) HTML = Hipertext markup language (Linguage de marcação de hipertexto) IDE = Integrated development environment (Ambiente integrado de desenvolvimento) JDK = Java development kit (Kit de desenvolvimento da linguagem Java) MER = Modelo de entidade=-relacionamento PDA = Personal digital assistant (Assistente pessoal digital) PDB = Palm database (Formato de dados usado no PalmOS) RAD = Rapid application development (Desenvolvimento rápido de aplicações) ROM = Read only memory (Memória de acesso somente para leitura) SDK = Software development kit (Kit de desenvolvimento de software) SGBD = Sistema de gerenciamento de banco de dados TCP/IP = Transfer control protocol / Internet prototol (Protocolo de controle e transmissão de dados na internet) UML = Unified modeling language (Linguagem unificada de modelagem) USB = Universal serial bus (Barramento serial universal) XML = Extensible markup language (Linguagem de marcação extensível) 6
  • 7. Introdução A aplicação desenvolvida durante o estágio recebeu o nome “Coleta”, sendo esta composta por dois módulos: O aplicativo de coleta de dados para ser executado no PDA, utilizando a máquina virtual SuperWaba1 , e a aplicação servidora, responsável pelo recebimento dos dados dos questionários armazenados no PDA através de uma conexão TCP/IP. O aplicativo de coleta para o PDA foi desenvolvido utilizando a linguagem Java, o SuperWaba SDK e a IDE Eclipse. Já a aplicação servidora foi desenvolvida utilizando a ferramenta RAD Borland C++ Builder. 1 Disponível em http://www.superwaba.com.br 7
  • 8. Tecnologia utilizada Abaixo, temos uma breve descrição das tecnologias utilizadas na implementação do aplicativo de coleta de dados sócio-econômicos. O Java Java é uma linguagem de programação com sintaxe equivalente a sintaxe do C++, porém, totalmente orientada a objetos, criada pela Sun Microsystems, cujo objetivo inicial era ser utilizada em qualquer dispositivo dotado de um processador e uma máquina virtual, como por exemplo: receptores de televisão a cabo [HORSTMANN & CORNELL, 2000]. Com o passar do tempo, o Java tornou-se popular e hoje é uma das linguagens mais utilizadas para o desenvolvimento de aplicações. Sua utilização abrange desde a criação de jogos para celular até o desenvolvimento de aplicações corporativas de alto desempenho. Um dos grandes diferenciais da linguagem Java em relação às outras linguagens do mercado reside em sua portabilidade. A portabilidade decorre do fato de as aplicações desenvolvidas em Java necessitarem de uma máquina virtual para serem executadas. Portanto, uma mesma aplicação pode ser utilizada em plataformas Microsoft Windows, Linux, Unix ou Apple Macintosh sem que seja necessário fazer uma única alteração, desde que haja uma máquina virtual Java disponível. O SuperWaba O SuperWaba é uma plataforma de código-fonte aberto para desenvolvimento de aplicações para dispositivos portáteis (PDA’s), criada em 2000, derivada da máquina virtual Waba. SuperWaba é distribuído na forma de um kit de desenvolvimento de software (SDK) contendo uma máquina virtual, uma biblioteca de classes e programas utilitários para compilação e geração das aplicações. Devido à maneira como o SuperWaba foi desenvolvido, pode-se usar ferramentas de desenvolvimento Java para desenvolver programas em SuperWaba. No entanto, SuperWaba não é derivado do Java e não tem conexão com a Sun Microsystems, a proprietária da marca Java e marcas relacionadas. Principais características do SuperWaba Máquina virtual: • É suportada por uma ampla gama de plataformas: PalmOS (2.0 e acima), WindowsCE (2.11 e acima), Windows 98/ME/NT/2000/XP, Linux (utilizando Wine), Mac OS-X, JDK 1.1 ou superior; • Permite a criação de bibliotecas nativas em C para todas as plataformas; 8
  • 9. • Tem suporte total a Unicode; • Tem suporte para telas em escala de cinza (PalmOS 2.0 e acima), coloridas e com alta resolução em todos os PDA’s suportados; • Suporte para exceções, tipos double e long (64 bits de precisão); • Utilização total da memória dos PDA’s: a máquina virtual do SuperWaba utiliza a memória disponível para aplicações (PalmOS 2.0 e acima). Bibliotecas de extensão: • Container para exibição de HTML; • Manipulador de XML; • Classes para exibição de informações de dispositivos GPS, baseadas no protocolo GPS da Garmin (fabricante de equipamentos GPS); • Suporte para Symbol® Scanners no Windows CE e PalmOS; • Suporte para leitura de arquivos no formato PalmDoc e PalmZip; • Suporte para algoritmos de criptografia: Blowfish, MD5, SHA1, TEA; • Personal Information Management Abstract Layer (PIMal): acesso a informações PIM em plataformas Windows CE e PalmOS de forma independente de plataforma; • API para desenvolvimento de jogos; Entrada/saída: • Suporte para TCP/IP, porta serial, USB, infravermelho, bluetooth; • Suporte para Secure Digital e Memory Stick card; • O formato PDB, utilizado no PalmOS, foi portado para Windows CE, fazendo com que os arquivos de dados possam ser utilizados em ambas as plataformas sem qualquer modificação; • Camada de acesso a dados, com uma implementação para o banco de dados IBM DB2e e uma para manipulação de arquivos PDB (PDBDriver); • Recursos de impressão. Interface do usuário: • Dois estilos diferentes: PalmOS e Windows CE; • Em ambos os estilos, todos os controle tem um estado visível quando desabilitados; • Janelas popup podem ser movidas; • Controle de posicionamento dos componentes permite o ajuste da aplicação em qualquer resolução. 9
  • 10. O SDK do SuperWaba inclui: A máquina virtual, compilada para 15 plataformas; A biblioteca de classes, que contem os seguintes pacotes: • waba.fx: som (wave e tons), fontes customizadas, bitmaps, e uma poderosa classe para o desenho de círculos, linhas, polígonos, imagens, etc; • waba.io: classes para as operações de entrada/saída; • waba.sys: acesso a várias configurações dos PDA’s, como versão da ROM, nome do usuário, formatos, plataforma em execução, etc; • waba.ui: interface básica com usuário; • waba.util: classes de estruturas de dados; • Pacotes de extensão. Utilitários para o desenvolvedor: • warp: usado para empacotar as classes em arquivos PDB, que podem ser sincronizados nos PDA’s (Windows CE e PalmOS); • exegen: cria atalhos para as aplicações com ícones customizados e arquivos para instalação em WindowsCE; • TTF2PDBs: converte fontes truetype em arquivos PDB para serem usadas nos PDA’s; • scripts para automatizar a geração das aplicações. Documentação, exemplos e o código-fonte da máquina virtual. Como desenvolver aplicações em SuperWaba? Para desenvolver aplicações em SuperWaba é necessário ter apenas o SDK e um editor de textos. Porém, o trabalho será mais agradável se for utilizado um ambiente integrado de desenvolvimento (IDE), como o Eclipse ou Borland JBuilder. Neste trabalho, a IDE utilizada foi o Eclipse2 (versão 2.1), devido à facilidade encontrada para configurá-la para compilar e gerar aplicações utilizando o SDK do SuperWaba. A seguir, na figura 1, é mostrado o ambiente principal do Eclipse: 2 Disponível em http://www.eclipse.org 10
  • 11. Figura 1: Ambiente da IDE Eclipse O Eclipse é uma IDE desenvolvida inicialmente pela IBM, disponibilizada na forma de software livre, e atualmente é o produto do desenvolvimento colaborativo de uma grande comunidade de programadores ao redor do mundo. O Eclipse foi a ferramenta usada para o desenvolvimento do aplicativo Coleta. Os passos para se desenvolver uma aplicação em SuperWaba utilizando a IDE Eclipse consistem basicamente em: • Configuração do Eclipse para compilar e gerar aplicações em SuperWaba; • Criação do ambiente de desenvolvimento da aplicação, incluindo a definição do diretório onde é armazenado o projeto, o código-fonte, os arquivos de configuração e o script build.xml utilizado para a geração da aplicação; • Desenvolvimento e testes; • Geração dos executáveis para a plataforma de destino; • Transferência da aplicação e dos arquivos de dados para o PDA; 11
  • 12. Solução Proposta O aplicativo de coleta de dados sócio-econômicos é baseado em um questionário sócio-econômico utilizado pelo IBGE (Instituto Brasileiro de Geografia e Estatística), em anexo. O questionário contém informações sobre o domicílio do entrevistado e sobre cada morador deste domicílio. Portanto, a aplicação de coleta de dados deve permitir: • Coletar e armazenar informações sobre o domicílio do entrevistado; • Coletar e armazenar informações sobre os moradores de cada domicílio pesquisado; • Gerenciar os dados armazenados, permitindo a inclusão, a alteração, a exclusão e a consulta; • Transmitir os dados armazenados para um servidor central. A aplicação é composta dos seguintes módulos: • Módulo de Coleta de dados a ser executado no PDA; • Módulo servidor de recepção de dados; O módulo de coleta de dados será utilizado pelo usuário que fará as entrevistas utilizando um PDA para armazenar os dados do questionário. O módulo servidor será executado em um microcomputador responsável por receber os dados armazenados nos PDA utilizados pelos entrevistadores, através de uma conexão TCP/IP. 12
  • 13. Modelagem da aplicação A modelagem da aplicação foi feita com base na notação UML (Unified Modeling Language) [FURLAN, 1998]. A UML é uma linguagem gráfica para visualização, especificação, construção e documentação de sistemas de software, utilizando as técnicas de orientação a objeto. Essa linguagem proporciona uma forma padrão para a preparação de planos para a arquitetura de projetos de sistemas, incluindo aspectos conceituais, tais como processos de negócios e funções do sistema, além de itens concretos, como as classes escritas em uma determinada linguagem de programação, e esquemas de bancos de dados e componentes de software reutilizáveis [FURLAN, 1998]. A modelagem do sistema será apresentada basicamente através de quatro dos diagramas disponíveis na UML: • O diagrama de casos de uso, que descreve a funcionalidade do sistema percebida por atores externos. Um ator interage com o sistema podendo ser um usuário, dispositivo ou outro sistema. • O diagrama de classes, que denota a estrutura estática do sistema onde cada classe representa coisas ou entidades que serão manipulados pelo sistema, mostrando também o relacionamento existente entre elas; • O diagrama de componentes fornecerá uma visão geral dos módulos do sistema; • O diagrama de implantação fornecerá uma idéia de como o sistema estará organizado após sua implantação Na modelagem da solução também foram utilizados alguns conceitos da análise estruturada moderna de Yourdon [YOURDON, 1990] para a representação dos modelos de dados, e as ferramentas de diagramação que utilizaremos são o diagrama de entidade-relacionamento e o modelo de entidade- relacionamento. Utilizaremos o diagrama de entidade-relacionamento para detalhar a estrutura e a organização dos dados que o sistema irá tratar. Usaremos também o Modelo de Entidade-Relacionamento (MER), onde temos a representação das entidades e a descrição de nome e tipo dos campos que as compõem e ainda temos o nome lógico dos relacionamentos entre as entidades, representando assim a estrutura física dos dados. Todos os diagramas foram desenhados utilizando uma versão de demonstração da ferramenta de modelagem PowerDesigner, versão 9.5.2, desenvolvida pela Sybase, Inc. Nas próximas seções serão apresentados os diagramas e respectivas descrições. Especificação de Casos de Uso 13
  • 14. Na especificação de casos de uso apresentamos uma visão geral da aplicação e das entidades externas (atores) que estarão interagindo com ela. Na figura 2, mostramos as interações que deverão ocorrer entre os usuários e os módulos da aplicação: Administrador Validar dados Usuário Entrevista pessoa Fornece entrada de dados Transmite dados armazenados Fornece dados Pessoa Aplicativo Servidor Coleta Gerenciar permissões de acesso Aplicativo Palm Coleta Tratar & armazenar dados recebidos Banco de dados (SGBD) Remover permissão de acesso ao usuário Dar permissão de acesso ao usuário Figura 2: Diagrama de casos de uso 14
  • 15. Diagrama de Classes No diagrama de classes, conforme representado pela figura 3 e figura 4, definimos as entidades envolvidas com a aplicação de acordo com o paradigma da orientação a objeto, onde se representa a classe com seus atributos e operações. O modelo de classes é obtido a partir da análise das especificações de requisitos do sistema e da análise dos casos de uso. Serão apresentados dois diagramas de classes, o primeiro foi desenhado antes do início da implementação do aplicativo de coleta, e o segundo obtido após a versão final da aplicação, através de engenharia reversa do código-fonte do aplicativo de coleta. 1..1 0..* 1..1 0..1 1..1 0..* 1..1 0..* 1..1 0..* 0..1 0..* 1..1 0..* 1..1 0..* 1..1 0..* 1..1 0..* 1..1 0..* 1..1 0..* 1..1 0..* 1..1 0..* 1..1 0..* 1..1 0..* 1..1 0..* 1..1 0..* 1..1 0..* 1..1 0..* 1..1 0..* 1..1 0..* 1..1 0..* Especie + + Especie Descricao : java.lang.Long : java.lang.String Tipo + + Tipo Descricao : java.lang.Long : java.lang.String Situacao + + Situacao Descricao : java.lang.Long : java.lang.String Situacao_terreno + + Situacao_terreno Descricao : java.lang.Long : java.lang.String Forma_abastecimento_agua + + Forma_abastecimento_agua Descricao : java.lang.Long : java.lang.String Forma_canalizacao_agua + + Forma_canalizacao_agua Descricao : java.lang.Long : java.lang.String Destino_dejetos + + Destino_dejetos Descricao : java.lang.Long : java.lang.String Destino_lixo + + Destino_lixo Descricao : java.lang.Long : java.lang.String Tipo_relacao + + Tipo_relacao Descricao : java.lang.Long : java.lang.String Grau_instrucao + + Grau_instrucao Descricao : java.lang.Long : java.lang.String Estado_civil + + Estado_civil Descricao : java.lang.Long : java.lang.String Etinia + + Etinia Descricao : java.lang.Long : java.lang.String Municipio + + Municipio Nome : java.lang.Long : java.lang.String Estado + + Estado Nome : java.lang.String : java.lang.String Distrito + + Distrito Nome : java.lang.Long : java.lang.String Ocupacao + + Ocupacao Descricao : java.lang.Long : java.lang.String Coleta + # + <<Constructor>> <<Destructor>> Coleta () finalize () Transmitir_dados (java.lang.String Servidor, java.lang.Integer Porta, java.lang.Integer Metodo) : void : java.lang.Boolean Questionario + + + + Questionario Homens Mulheres Logradouro : java.lang.Long : java.lang.Integer : java.lang.Integer : java.lang.String + # + <<Constructor>> <<Destructor>> Questionario () finalize () Validar () : void : java.lang.Boolean Domicilio : 1 + + Domicilio Tem_sanitario : java.lang.Long : java.lang.Boolean + # <<Constructor>> <<Destructor>> Domicilio () finalize () : void Morador + + + + + + + + Morador Nome Sexo Resp_domicilio Data_nasc Idade_presumida Alfabetizado Renda_mensal : java.lang.Long : java.lang.String : java.lang.String : java.lang.Boolean : java.util.Date : java.lang.Integer : java.lang.Boolean : java.lang.Double + # <<Constructor>> <<Destructor>> Morador () finalize () : void Domicilio_particular_permanente + Num_banheiros : java.lang.Integer + # <<Constructor>> <<Destructor>> Domicilio_particular_permanente () finalize () ItemBD : 1 + + id tabela : java.lang.Long : java.lang.String + # + + + + + + + + <<Constructor>> <<Destructor>> <<Getter>> <<Setter>> <<Getter>> <<Setter>> ItemBD () finalize () Obter_dados () Gravar_dados () Excluir_dados () Novo_id () getId () setId (java.lang.Long newId) getTabela () setTabela (java.lang.String newTabela) : void : java.lang.Boolean : java.lang.Boolean : java.lang.Boolean : java.lang.Long : java.lang.Long : void : java.lang.String : void Domicilio : 2 + + Domicilio Tem_sanitario : java.lang.Long : java.lang.Boolean + # <<Constructor>> <<Destructor>> Domicilio () finalize () : void ItemBD : 2 + + id tabela : java.lang.Long : java.lang.String + # + + + + + + + + <<Constructor>> <<Destructor>> <<Getter>> <<Setter>> <<Getter>> <<Setter>> ItemBD () finalize () Obter_dados () Gravar_dados () Excluir_dados () Novo_id () getId () setId (java.lang.Long newId) getTabela () setTabela (java.lang.String newTabela) : void : java.lang.Boolean : java.lang.Boolean : java.lang.Boolean : java.lang.Long : java.lang.Long : void : java.lang.String : void Figura 3: Diagrama de classes inicial (ver ANEXO IV) 15
  • 16. questionario domicilio domicilio_part morador lista dados tabela Coleta - - - - - + + - - - * * * * * * - - - tbPrincipal btIniciar btTransmitir btLista btFinalizar server_trans porta_trans ult_erro_socket ult_resultado Trans questionario domicilio domicilio_part morador lista nm_cat_questionario cat_questionario rs_questionario ds_questionario : TabPanel : Button : Button : Button : Button : String : int : int : String : String : UIQuestionario : UIDomicilio : UIDomicilio_particular_permanente : UIMorador : UILista : String : Catalog : ResizeStream : DataStream = "127.0.0.1" = 6000 = "" = "QUES.COLE.QUES" + + + + + + + + + + + + + <<Constructor>> Coleta () onStart () Transmitir_dados (String Servidor, int Porta) limpaControles () novoIdQuestionario () abreCatalogo (boolean limpar) fechaCatalogo () gravarDados () apagaQuestionario (long id_quest) apagaMoradores (long id_quest) atualizaNumHM (long id_quest) carregaQuestionario (long id_quest) onEvent (Event event) : void : boolean : void : long : boolean : void : boolean : boolean : boolean : void : boolean : void <<SuperWaba>> MainWindow DataGrid + + + + + - - - - - - - - - - - - - - - - - - NEXT PREV SAME FIRST LAST linesPerPage cols captions tdColors lineSelected widths xb yb wb hb x0 gscr ce lineH firstDraw startLine endLine minLines : int : int : int : int : int : int : int : String[] : Color[] : int : int[] : int : int : int : int : int : Graphics : ControlEvent : int : boolean : int : int : int = 0 = 1 = 2 = 3 = 4 = null = {Color.BLACK,Color.BLACK,Color.BLACK,Color.BLACK} = -1 = null = 12 = 4 = 12 = new ControlEvent(ControlEvent.PRESSED,this) = true = 1 = 1 = 3 + + + + # + + + + + - - - - - <<Constructor>> DataGrid (GridModel ds) getPreferredHeight () getPreferredWidth () setGridModel (GridModel ds) onBoundsChanged () onPaint (Graphics screen) selectedLine () resetSelection () scroll (int direction) onEvent (Event event) getRow (int rowIdx) getMaxWidth (int colIdx) drawCols (Graphics screen, int ky) drawRow (Graphics screen, String data[], int ky, boolean isTitle) drawWaitCursor (boolean draw) : int : int : void : void : void : int : void : boolean : void : String[] : int : void : void : void <<SuperWaba>> Control DataSet - dataSet : String[] + + + + + + + + + + + + <<Constructor>> DataSet (int ySize, int xSize) getColumnCount () getItemCount () getPreferredColumnWidth (int columnIndex) getPreferredRowHeight (int columnIndex) getRowCount () getSelected (int rowIdx, int colIdx) getValidChars (int rowIdx, int colIdx) getValueAt (int rowIdx, int colIdx) isCellEditable (int rowIdx, int colIdx) isHeader (int rowIdx) setValueAt (Object val, int rowIdx, int colIdx) : int : int : int : int : int : Object : String : Object : boolean : boolean : void UIDomicilio + + + + + + + + + + + btGravar btCancelar btAvancar cbSanitario lbEspecie lbDestLixo lbDestDejetos cmbEspecie cmbDestLixo cmbDestDejetos containerAtual : Button : Button : Button : Check : Label : Label : Label : ComboBox : ComboBox : ComboBox : Container = new Button("Gravar") = new Button("Cancelar") = new Button("Avançar >") = new Check("Possui sanitário?") = new Label("Espécie:") = new Label("Destino do lixo:") = new Label("Destino dos dejetos:") = new ComboBox() = new ComboBox() = new ComboBox() + + + + + + + + <<Constructor>> UIDomicilio () alinharControles () adicionarEm (Container container) setarEdits () setarCombos () removerDe (Container container) gravarDados () manipulaEvento (Event evento) : void : void : void : void : void : boolean : void UIDomicilio_particular_permanente + + + + + + + + + + + + + + + + btGravar btCancelar btVoltar edtNumBanheiros lbNumBanheiros lbFAbastAgua lbFCanAgua lbTipo lbSituacao lbSitTerreno cmbFAbastAgua cmbFCanAgua cmbTipo cmbSituacao cmbSitTerreno containerAtual : Button : Button : Button : Edit : Label : Label : Label : Label : Label : Label : ComboBox : ComboBox : ComboBox : ComboBox : ComboBox : Container = new Button("Gravar") = new Button("Cancelar") = new Button("< Voltar") = new Edit() = new Label("Nº banheiros:") = new Label("Abast. água:") = new Label("Canal. água:") = new Label("Tipo:") = new Label("Situação:") = new Label("Sit. terreno:") = new ComboBox() = new ComboBox() = new ComboBox() = new ComboBox() = new ComboBox() + + + + + + + + <<Constructor>> UIDomicilio_particular_permanente () alinharControles () adicionarEm (Container container) setarEdits () setarCombos () removerDe (Container container) gravarDados () manipulaEvento (Event evento) : void : void : void : void : void : boolean : void UILista + + + + + + + * - - - btAtualizar btCarregar btApagar lbNumReg dados tabela containerAtual nm_cat_questionario cat_questionario rs_questionario ds_questionario : Button : Button : Button : Label : DataSet : DataGrid : Container : String : Catalog : ResizeStream : DataStream = new Button("Atualizar") = new Button("Abrir") = new Button("Apagar") = new Label("Número de registros:") = "QUES.COLE.QUES" + + + + + + + + <<Constructor>> UILista () alinharControles () adicionarEm (Container container) abreCatalogo (boolean limpar) fechaCatalogo () atualizarTabela () removerDe (Container container) manipulaEvento (Event evento) : void : void : boolean : void : void : void : void UIMorador + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + * + + + + btGravar btCancelar btAdicionar btRemover btExibir btVoltar edtNome edtDataNascimento edtIdadePresum edtRendaMensal lbMoradores lbNome lbSexo lbDataNascimento lbIdadePresum lbRendaMensal lbGrauInstr lbEstCivil lbOcupacao lbEtinia lbTipoRelacaoRespDom lbLocalNasc cmbMoradores cmbSexo cmbGrauInstr cmbEstCivil cmbOcupacao cmbEtinia cmbTipoRelacaoRespDom cmbEstadoNasc cmbMunicipioNasc cbAlfabetizado cbRespDomicilio containerAtual nm_cat_morador cat_morador rs_morador ds_morador questionario : Button : Button : Button : Button : Button : Button : Edit : Edit : Edit : Edit : Label : Label : Label : Label : Label : Label : Label : Label : Label : Label : Label : Label : ComboBox : ComboBox : ComboBox : ComboBox : ComboBox : ComboBox : ComboBox : ComboBox : ComboBox : Check : Check : Container : String : Catalog : ResizeStream : DataStream : long = new Button("Gravar") = new Button("Cancelar") = new Button("Adicionar Morador") = new Button("Excluir Morador") = new Button("Exibir Morador") = new Button("Ok") = new Edit() = new Edit() = new Edit() = new Edit() = new Label("Moradores do domicílio:") = new Label("Nome:") = new Label("Sexo:") = new Label("Data nasc.:") = new Label("Idade:") = new Label("Renda:") = new Label("Grau instr.:") = new Label("Estado civil:") = new Label("Ocup.:") = new Label("Etn.:") = new Label("Rel. c/ resp. domic.:") = new Label("Local nasc.:") = new ComboBox() = new ComboBox() = new ComboBox() = new ComboBox() = new ComboBox() = new ComboBox() = new ComboBox() = new ComboBox() = new ComboBox() = new Check("Alfabetizado") = new Check("Resp. domicílio") = "MORA.COLE.MORA" + + + + + + + + + + + + + + + + + <<Constructor>> UIMorador () alinharControles () limpaControles () alinharControlesMorador () adicionarEm (Container container) setarEdits () setarCombos () removerDe (Container container) preparaMorador (Container container) despreparaMorador (Container container) exibirMorador () adicionarMorador () removerMorador () gravarDados () abreCatalogo (boolean limpar) fechaCatalogo () manipulaEvento (Event evento) : void : void : void : void : void : void : void : void : void : boolean : void : boolean : boolean : boolean : void : void UIQuestionario + + + + + + + + + + + + + + + + + + + + + + + btGravar btCancelar btDomicilio btMorador btDetectaGPS edtQuestionario edtHomens edtMulheres edtLogradouro edtCoordGPS lbQuestionario lbHomens lbMulheres lbLogradouro lbEstado lbCidade lbDistrito lbCoordGPS cmbEstado cmbCidade cmbDistrito questionario containerAtual : Button : Button : Button : Button : Button : Edit : Edit : Edit : Edit : Edit : Label : Label : Label : Label : Label : Label : Label : Label : ComboBox : ComboBox : ComboBox : long : Container = new Button("Gravar") = new Button("Cancelar") = new Button("Domicilio") = new Button("Moradores") = new Button("GPS") = new Edit() = new Edit() = new Edit() = new Edit() = new Edit() = new Label("Nº do Questionario:") = new Label("Homens:") = new Label("Mulheres:") = new Label("Logr.:") = new Label("UF:") = new Label("Cidade:") = new Label("Distrito/localidade:") = new Label("Coord. GPS:") = new ComboBox() = new ComboBox() = new ComboBox() + + + + + + + + <<Constructor>> UIQuestionario () alinharControles () adicionarEm (Container container) setarEdits () setarCombos () removerDe (Container container) gravarDados () manipulaEvento (Event evento) : void : void : void : void : void : boolean : void Figura 4: Diagrama de classes final (ver ANEXO IV) Diagrama de Componentes e Implantação O diagrama de componentes, conforme mostrado na figura 5, nos dá uma visão das partes que formam a aplicação. O diagrama de implementação nos dá uma idéia de como a aplicação estará disposta em seu ambiente após sua implantação, como mostra a figura 6. 16
  • 17. Classes de Interface Tabelas de dados pdb (Palm Database) Classes auxiliares Figura 5: Diagrama de componentes Coleta Banco de dados Servidor Coleta Conexão TCP/IP via socket (rede local, intranet ou internet) Dados coletados Funções exportadas Comandos SQL Dados e Aplicativo desktop (PC & MS-Windows compatível) Aplicação java em dispositivo Palm, WindowsCE ou PocketPC Interbase ou Firebird (Linux & MS-Windows) Figura 6: Diagrama de implantação 17
  • 18. Modelagem dos Dados Devemos ressaltar que a modelagem dos dados apresenta a estrutura de armazenamento de dados que deverá ser manipulada pela aplicação servidora, que receberá os dados armazenados nos PDA´s e fará o seu armazenamento em um SGBD relacional. Já o aplicativo de coleta de dados, executado no PDA, utiliza um esquema simples de tabelas de dados, sem qualquer inter-relacionamento ou integridade referencial. Modelo Lógico No DER (Diagrama de entidade-relacionamento), representado pela figura 7, apresentamos a estrutura lógica de armazenamento dos dados que a aplicação deverá tratar. Nota-se que no DER mostramos apenas a estrutura de entidades (que futuramente se tornarão tabelas de banco de dados) e os seus relacionamentos, e não nos preocupamos em mostrar os atributos ou campos de cada entidade. Questionario Morador Domicilio Especie Tipo Situacao Situacao_terreno Forma_abastecimento_agua Forma_canalizacao_agua Destino_dejetos Destino_lixo Tipo_relacao Grau_instrucao Estado_civil Etinia Municipio Estado Distrito Ocupacao Figura 7: Diagrama de entidade-relacionamento Modelo Físico No MER (Modelo de entidade-relacionamento), enfatizamos a estrutura física das entidades e seus inter-relacionamentos, mostrando para cada entidade, todos os seus campos e tipos de dados e para cada relacionamento, o nome físico do mesmo, e ainda todas as chaves primárias e estrangeiras de cada entidade, conforme apresentado na figura 8. 18
  • 19. A estrutura física dos dados foi formatada e especificada para ser compatível com o gerenciador de banco de dados Firebird (compatível com o Interbase, da Borland). FK_DISTRITO_MUNICIPIO FK_MUNICIPIO_ESTADO FK_QUESTIONARIO_DISTRITO FK_QUESTIONARIO_MUNICIPIO FK_QUESTIONARIO_ESTADO FK_DOMICILIO_SIT FK_DOMICILIO_DESTLIXO FK_DOMICILIO_FAGUA FK_DOMICILIO_ESPECIE FK_DOMICILIO_FORCANAGUA FK_DOMICILIO_DESTDEJ FK_DOMICILIO_TIPO FK_DOMICILIO_SITUACAO FK_DOMICILIO_QUEST FK_MORADOR_OCUPACAO FK_MORADOR_ETINIA FK_MORADOR_GINST FK_MORADOR_TRELFK_MORADOR_ESTCIVIL FK_MORA_MUN_NASCIMENTO FK_MORA_EST_NASCIMENTO FK_MORADOR_DOMICILIO Questionario Questionario Distrito Municipio Estado Homens Mulheres Logradouro long integer long integer long integer character(2) integer integer variable character(200) <pk> <fk1> <fk2> <fk3> Morador Morador Tipo_relacao Etinia Estado_civil Ocupacao Municipio Grau_instrucao Estado Domicilio Nome Sexo Resp_domicilio Data_nasc Idade_presumida Alfabetizado Renda_mensal long integer long integer long integer long integer long integer long integer long integer character(2) long integer variable character(100) character(1) boolean date integer boolean decimal(9,2) <pk> <fk4> <fk2> <fk5> <fk1> <fk6> <fk3> <fk7> <fk8> Domicilio Domicilio Especie Destino_dejetos Forma_abastecimento_agua Tipo Forma_canalizacao_agua Situacao Destino_lixo Situacao_terreno Questionario Tem_sanitario Num_banheiros long integer long integer long integer long integer long integer long integer long integer long integer long integer long integer boolean integer <pk> <fk4> <fk6> <fk3> <fk7> <fk5> <fk8> <fk2> <fk1> <fk9> Especie Especie Descricao long integer variable character(60) <pk> Tipo Tipo Descricao long integer variable character(60) <pk> Situacao Situacao Descricao long integer variable character(60) <pk> Situacao_terreno Situacao_terreno Descricao long integer variable character(60) <pk> Forma_abastecimento_agua Forma_abastecimento_agua Descricao long integer variable character(60) <pk> Forma_canalizacao_agua Forma_canalizacao_agua Descricao long integer variable character(60) <pk> Destino_dejetos Destino_dejetos Descricao long integer variable character(60) <pk> Destino_lixo Destino_lixo Descricao long integer variable character(60) <pk> Tipo_relacao Tipo_relacao Descricao long integer variable character(60) <pk> Grau_instrucao Grau_instrucao Descricao long integer variable character(60) <pk> Estado_civil Estado_civil Descricao long integer variable character(60) <pk> Etinia Etinia Descricao long integer variable character(60) <pk> Municipio Municipio Estado Nome long integer character(2) variable character(100) <pk> <fk> Estado Estado Nome character(2) variable character(100) <pk> Distrito Distrito Municipio Nome long integer long integer variable character(100) <pk> <fk> Ocupacao Ocupacao Descricao long integer variable character(60) <pk> Figura 8: Modelo de entidade-relacionamento 19
  • 20. Interface da aplicação Módulo de coleta de dados para o PDA As telas do aplicativo de coleta foram capturadas a partir de um emulador do sistema operacional PalmOS, desenvolvido e distribuído pela Palm Computing. Figura 9: Tela inicial do aplicativo 20
  • 21. Figura 10: Tela de detalhes do questionário Figura 11: Tela de detalhes do domicílio 21
  • 22. Figura 12: Tela de detalhes do domicílio particular permanente Figura 13: Tela de listagem de moradores do domicílio 22
  • 23. Figura 14: Tela de detalhes do morador do domicílio Figura 15: Tela de listagem e manipulação de questionários armazenados 23
  • 24. Figura 16: Mensagem de início da transmissão de dados Módulo servidor de recepção de dados As telas da aplicação servidora foram capturadas a partir da aplicação em execução, as quais demonstram a aplicação aguardando uma conexão (figura 17), a aplicação exibindo os dados recebidos (figura 18) de um PDA emulado e o resultado dos dados transmitidos armazenados em um arquivo XML para processamento posterior (figura 19). 24
  • 25. Figura 17: Aplicação servidora aguardando dados Figura 18: Dados recebidos pela aplicação servidora 25
  • 26. Figura 19: Dados armazenados em XML 26
  • 27. Considerações finais Espera-se que este relatório tenha dado uma visão geral do aplicativo de coleta de dados sócio- econômicos desenvolvido durante o estágio supervisionado. Além do aplicativo de coleta, foi desenvolvido um protótipo de servidor para recepção de dados através de conexão TCP/IP. Para trabalhos futuros temos a implementação de novas funcionalidades e recursos para armazenamento e gerenciamento dos dados armazenados em SGBD pela aplicação servidora. 27
  • 28. Referências [FURLAN, 1998] Furlan, José Davi. Modelagem de Objetos através da UML – the Unified Modeling Language. São Paulo: Makron Books, 1998. [HORSTMANN & CORNELL, 2000] Horstmann, Cay S. & Cornell, Gary. Core Java™ 2 Volume I - Fundamentals - 5th Edition. USA: Prentice Hall PTR, 2000. [YOURDON, 1990] Yourdon, Edward. Análise estruturada moderna. Tradução de Dalton Conde de Alencar – Rio de Janeiro: Campus, 1990. 28