pesquisa e desenvolvimento para dispositivos móveis

Propaganda
CENTRO UNIVERSITÁRIO VILA VELHA
CURSO DE CIÊNCIA DA COMPUTAÇÃO
IGOR DA COSTA ROCHA ELIAS
JURANDIR LUCHINI VICTOR
MARCOS ANTONIO RAMPINELLI
PESQUISA E DESENVOLVIMENTO PARA
DISPOSITIVOS MÓVEIS
VILA VELHA
2009
IGOR DA COSTA ROCHA ELIAS
JURANDIR LUCHINI VICTOR
MARCOS ANTONIO RAMPINELLI
PESQUISA E DESENVOLVIMENTO PARA
DISPOSITIVOS MÓVEIS
Trabalho de Conclusão de Curso apresentado ao Centro Univertário Vila Velha como
requisito parcial para a obtenção do grau
de Bacharel em Ciência da Computação.
Orientador: Cristiano Biancardi
VILA VELHA
2009
IGOR DA COSTA ROCHA ELIAS
JURANDIR LUCHINI VICTOR
MARCOS ANTONIO RAMPINELLI
PESQUISA E DESENVOLVIMENTO PARA
DISPOSITIVOS MÓVEIS
BANCA EXAMINADORA
Prof. Msc. Cristiano Biancardi
Centro Universitário Vila Velha
Orientador
Prof. Msc. Renato Elias N. de
Moraes
Centro Universitário Vila Velha
Prof. Msc. Sandro Tonini da Silva
Centro Universitário Vila Velha
Trabalho de Conclusão de Curso
aprovado em 04/06/2009.
Aos nossos pais e amigos...
AGRADECIMENTOS
Agradecemos a Deus, nossas famílias , familiares, namoradas, amigos, colegas, o
orientador e a banca examinadora.
“Uma das causas do fracasso na vida é deixar para amanhã o que se pode fazer
hoje, e depois fazê-lo apressadamente.”
Provérbio Chinês
LISTA DE TABELAS
1
Comparação WAP x JME . . . . . . . . . . . . . . . . . . . . . . . . . .
49
2
Tecnologias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
63
3
Requisitos para o módulo Web . . . . . . . . . . . . . . . . . . . . . . .
64
4
Requisitos para módulo Móvel . . . . . . . . . . . . . . . . . . . . . . .
64
5
Cores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
86
6
Mensagens do Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . .
87
7
Eficiência dos Casos de Uso do Pacote Cliente . . . . . . . . . . . . . .
89
8
Eficiência dos Casos de Uso do Pacote Clinica . . . . . . . . . . . . . .
89
LISTA DE FIGURAS
1
Comparação entre o número de celulares e computadores no mundo .
21
2
Projeções para a internet móvel no mundo . . . . . . . . . . . . . . . .
22
3
Comparação entre WAP e Internet quando usado para acessar a Web .
27
4
Cliente WAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
5
Uso do Gateway WAP . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
6
Gateway WAP e elementos da rede sem fio . . . . . . . . . . . . . . . .
29
7
Gateway do proxy WAP . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
8
Codificador / Decodificador do Gateway WAP . . . . . . . . . . . . . . .
31
9
Pilha de Protocolos WAP . . . . . . . . . . . . . . . . . . . . . . . . . .
32
10
Plataforma Java e suas edições
. . . . . . . . . . . . . . . . . . . . . .
37
11
JME e seus componentes . . . . . . . . . . . . . . . . . . . . . . . . . .
38
12
JME dividida em camadas . . . . . . . . . . . . . . . . . . . . . . . . . .
39
13
Configurações do JME . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
14
Relacionamento entre as diferentes implementações do GCF . . . . . .
42
15
Diagrama de Pacotes . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
16
Diagrama de Caso de Uso do Pacote Cliente . . . . . . . . . . . . . . .
54
17
Diagrama de Caso de Uso do Pacote Clínica . . . . . . . . . . . . . . .
54
18
Diagrama de Classes do Pacote Cliente . . . . . . . . . . . . . . . . . .
58
19
Diagrama de Classes do Pacote Clínica . . . . . . . . . . . . . . . . . .
59
20
Diagrama de Estados da Classe Cheque . . . . . . . . . . . . . . . . .
59
21
Diagrama de Estados da Classe Parcela . . . . . . . . . . . . . . . . . .
60
22
Diagrama de Estados da Classe Consulta . . . . . . . . . . . . . . . . .
60
23
Diagrama de Seqüência do Caso de Uso Visualizar Consulta . . . . . .
61
24
Diagrama de Seqüência do Caso de Uso Sugerir Consulta . . . . . . .
61
25
Diagrama de Seqüência do Caso de Uso Visualizar Correio . . . . . . .
61
26
Diagrama de Seqüência do Caso de Uso Visualizar Agenda . . . . . . .
62
27
Diagrama de Seqüência do Caso de Uso Agendar Consulta . . . . . . .
62
28
Diagrama de Seqüência do Caso de Uso Emitir Relatório de Consultas
62
29
Comunicação entre as páginas Web e o servidor . . . . . . . . . . . . .
65
30
Arquitetura do Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . .
67
31
Arquitetura em Camadas do Pacote Cliente . . . . . . . . . . . . . . . .
67
32
Arquitetura em Camadas do Pacote Clinica . . . . . . . . . . . . . . . .
68
33
Diagrama de Classes do Pacote DP_Cliente . . . . . . . . . . . . . . .
69
34
Diagrama de Classes do Pacote DP_Clínica
. . . . . . . . . . . . . . .
70
35
Modelo baseado na escolha do endereço . . . . . . . . . . . . . . . . .
70
36
Modelo baseado na escolha do endereço e CEP . . . . . . . . . . . . .
71
37
Modelo baseado na escolha do CEP . . . . . . . . . . . . . . . . . . . .
72
38
Permissão de acesso . . . . . . . . . . . . . . . . . . . . . . . . . . . .
73
39
Classe responsável pela auditoria . . . . . . . . . . . . . . . . . . . . .
73
40
Classe Tabela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
74
41
Diagrama de Classe do Pacote GT_Cliente . . . . . . . . . . . . . . . .
74
42
Diagrama de Classe do Pacote GT_Clinica . . . . . . . . . . . . . . . .
74
43
Exemplo de diagrama sem o uso do padrão Facade . . . . . . . . . . .
75
44
Exemplo de diagrama usando o padrão Facade . . . . . . . . . . . . . .
75
45
Diagrama de Classe do Pacote GT_Cliente reformulado . . . . . . . . .
75
46
Diagrama de Classe do Pacote GT_Clinica reformulado . . . . . . . . .
76
47
Diagrama de Classe do Pacote GD_Cliente . . . . . . . . . . . . . . . .
76
48
Diagrama de Classe do Pacote GD_Clínica . . . . . . . . . . . . . . . .
77
49
Diagrama de Classe do Pacote GD_Cliente reformulado . . . . . . . . .
77
50
Diagrama de Classe do Pacote GD_Clínica reformulado . . . . . . . . .
78
51
Modelo de Entidade e Relacionamento (MER): Parte A . . . . . . . . .
79
52
Modelo de Entidade e Relacionamento (MER): Parte B . . . . . . . . .
80
53
Diagrama de Classe do Pacote IU_Cliente . . . . . . . . . . . . . . . . .
81
54
Diagrama de Classe do Pacote IU_Clínica . . . . . . . . . . . . . . . . .
81
55
Diagrama de Classe do Pacote Banco . . . . . . . . . . . . . . . . . . .
82
56
Diagrama de Classe do Pacote Login . . . . . . . . . . . . . . . . . . .
82
57
Diagrama de Classe do Pacote Pessoa . . . . . . . . . . . . . . . . . .
83
58
Pacote Utilitário DAO . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
83
59
Diagrama de Seqüência do Caso de Uso Visualizar Consulta . . . . . .
84
60
Diagrama de Seqüência do Caso de Uso Sugerir Consulta . . . . . . .
84
61
Diagrama de Seqüência do Caso de Uso Visualizar Correio . . . . . . .
84
62
Diagrama de Seqüência do Caso de Uso Visualizar Agenda . . . . . . .
85
63
Diagrama de Seqüência do Caso de Uso Agendar Consulta . . . . . . .
85
64
Diagrama de Seqüência do Caso de Uso Emitir Relatório de Consultas
85
65
Ícones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
86
66
Diagrama de Navegabilidade do Pacote Cliente . . . . . . . . . . . . . .
87
67
Diagrama de Navegabilidade do Pacote Clínica . . . . . . . . . . . . . .
88
68
Diagrama de Componentes do Sistema MobOdonto . . . . . . . . . . .
89
69
Diagrama de Implantação do Sistema MobOdonto . . . . . . . . . . . .
90
70
Funcionalidade Login . . . . . . . . . . . . . . . . . . . . . . . . . . . .
90
71
Funcionalidade Visualizar Correio . . . . . . . . . . . . . . . . . . . . .
91
72
Funcionalidade Visualizar Consultas . . . . . . . . . . . . . . . . . . . .
91
73
Funcionalidade Sugerir Consultas: Escolha do dia da semana . . . . .
91
74
Funcionalidade Sugerir Consultas: Escolha do horário disponível . . . .
91
75
Tela principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
92
76
Tela principal para seleção da funcionalidade . . . . . . . . . . . . . . .
92
77
Funcionalidade Visualizar Consultas: Escolha do horário . . . . . . . .
92
78
Funcionalidade Visualizar Consultas: Visualizando dados do cliente . .
93
79
Funcionalidade Login . . . . . . . . . . . . . . . . . . . . . . . . . . . .
93
80
Funcionalidade Visualizar Consultas . . . . . . . . . . . . . . . . . . . .
93
81
Componente Wrapper . . . . . . . . . . . . . . . . . . . . . . . . . . . .
94
82
Estrutura do Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
95
LISTA DE SIGLAS
3G
Terceira Geração
AJAX
Asynchronous JavaScript And XML
AMA
All Mobile Alliance
API
Application Programming Interface
ASP
Active Server Pages
CDC
Connected Device Configuration
CDMA
Code Division Multiple Access
CLDC
Connected Limited Device Configuration
CSS
Cascading Style Sheets
CVM
Compact Virtual Machine
FP
Foundation Profile
GCF
Generic Connection Framework
GUI
Graphical User Interface
HDML
Handheld Device Markup Language
HTML
Hypertext Markup Language
http
Hypertext Transfer Protocol
HTTPS
Hypertext Transfer Protocol Secure
IDE
Integrated Development Environment
IMP
Information Mobile Profile
IP
Internet Protocol
JCP
Java Community Process
JEE
Java Enterprise Edition
JME
Java Micro Edition
JSE
Java Standard Edition
JSP
Java Server Pages
JSR
Java Specification Request
JVM
Java Virtual Machine
KVM
Kilobyte Virtual Machine
LWUIT
Lightweight User Interface Toolkit
MIDP
Mobile Information Device Profile
PBP
Personal Basis Profile
PDA
Personal Digital Assistants
PNG
Portable Network Graphics
PP
Personal Profile
SATSA
Security And Trust Services API
SDK
Software Development Kit
SGBD
Sistema Gerenciador de Banco de Dados
SMS
Short Message Service
TCP
Transmission Control Protocol
TIC
Tecnologias de Informação e Comunicação
UML
Unified Modeling Language
USSD
Unstructured Supplementary Service
VM
Virtual Machine
WAE
Wireless Application Environment
WAP
Wireless Application Protocol
WBMP
Wireless Bitmap
WCSS
Wireless Cascade Style Sheet
WDP
Wireless Datagram Protocol
WML
Wireless Markup Language
WSP
Wireless Session Layer
WTA
Wireless Telephony Application
WTLS
Wireless Transport Layer Security
XHTML-MP
eXtensible Hypertext Markup Language
XML
eXtensible Markup Language
SUMÁRIO
RESUMO
ABSTRACT
1 INTRODUÇÃO
19
2 JUSTIFICATIVA
23
2.1 Motivações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
3 OBJETIVOS
24
4 TECNOLOGIAS
25
4.1 WAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.1 Histórico
25
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
4.1.2 Arquitetura de Aplicativo WAP . . . . . . . . . . . . . . . . . . .
26
4.1.3 Cliente WAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
4.1.4 Gateway WAP . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
4.1.5 Funcionamento do Gateway WAP . . . . . . . . . . . . . . . . .
29
4.1.6 Servidor de Aplicativos WAP . . . . . . . . . . . . . . . . . . . .
31
4.1.7 Pilha de Protocolos WAP . . . . . . . . . . . . . . . . . . . . . .
32
4.1.7.1
Wireless Application Environment - WAE . . . . . . . .
32
4.1.7.2
Wireless Session Layer - WSP . . . . . . . . . . . . . .
33
4.1.7.3
Wireless Transaction Layer - WTP . . . . . . . . . . . .
33
4.1.7.4
Wireless Transport Layer Security - WTLS . . . . . . .
34
4.1.7.5
Wireless Application Environment - WAE . . . . . . . .
34
4.1.7.6
Wireless Datagram Protocol . . . . . . . . . . . . . . .
35
4.2 Linguagem e Plataforma Java . . . . . . . . . . . . . . . . . . . . . . . .
35
4.2.1 Plataforma JME . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
4.2.2 Java Community Process (JCP) e Java Specification Request
(JSR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
4.2.3 Configurações . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
4.2.3.1
CLDC (Connected Limited Device Configuration) . . . .
40
4.2.3.2
CDC (Connected Device Configuration) . . . . . . . . .
42
4.2.4 Perfis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
5 WAP x JME
45
5.1 Ambientes de Desenvolvimento . . . . . . . . . . . . . . . . . . . . . . .
45
5.2 Conectividade
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
5.3 Segurança de Informação . . . . . . . . . . . . . . . . . . . . . . . . . .
46
5.4 Acesso a Serviço Local do Dispositivo . . . . . . . . . . . . . . . . . . .
46
5.5 Disponibilidade em Dispositivo Móvel
. . . . . . . . . . . . . . . . . . .
46
5.6 Frameworks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
5.7 Persistência de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
5.8 Interface com Usuário . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
5.9 Comparação entre JME e WAP . . . . . . . . . . . . . . . . . . . . . . .
49
6 ESTUDO DE CASO: SISTEMA MOBODONTO
51
6.1 Modelo de Desenvolvimento . . . . . . . . . . . . . . . . . . . . . . . .
51
6.2 Especificação de Requisitos . . . . . . . . . . . . . . . . . . . . . . . . .
51
6.2.1 Descrição do Mini-Mundo . . . . . . . . . . . . . . . . . . . . . .
52
6.2.2 Modelo de Casos de Uso . . . . . . . . . . . . . . . . . . . . . .
53
6.2.3 Diagramas de Casos de Uso . . . . . . . . . . . . . . . . . . . .
53
6.2.4 Descrição dos Casos de Uso . . . . . . . . . . . . . . . . . . . .
54
6.2.4.1
Visualizar Consultas . . . . . . . . . . . . . . . . . . . .
55
6.2.4.2
Sugerir Consultas . . . . . . . . . . . . . . . . . . . . .
55
6.2.4.3
Visualizar Correio . . . . . . . . . . . . . . . . . . . . .
55
6.2.4.4
Agendar Consulta . . . . . . . . . . . . . . . . . . . . .
56
6.2.4.5
Visualizar Agenda . . . . . . . . . . . . . . . . . . . . .
56
6.2.4.6
Emitir Relatório de Consultas . . . . . . . . . . . . . . .
57
6.3 Especificação de Análise . . . . . . . . . . . . . . . . . . . . . . . . . .
58
6.3.1 Diagrama de Classes . . . . . . . . . . . . . . . . . . . . . . . .
58
6.3.2 Diagrama de Estados . . . . . . . . . . . . . . . . . . . . . . . .
59
6.3.3 Diagrama de Seqüência . . . . . . . . . . . . . . . . . . . . . . .
60
6.4 Especificação de Projeto
. . . . . . . . . . . . . . . . . . . . . . . . . .
63
6.4.1 Tipo de Aplicação, Plataformas de Implementação, Tecnologias
de Apoio e Hardware . . . . . . . . . . . . . . . . . . . . . . . .
63
6.4.1.1
Framework Ajax . . . . . . . . . . . . . . . . . . . . . .
64
6.4.1.2
SSL e Certificado Digital . . . . . . . . . . . . . . . . .
65
6.4.2 Arquitetura do Sistema . . . . . . . . . . . . . . . . . . . . . . .
66
6.4.3 Arquitetura em Camadas . . . . . . . . . . . . . . . . . . . . . .
67
6.4.3.1
Domínio do Problema (DP) . . . . . . . . . . . . . . . .
6.4.3.1.1
6.4.3.2
Considerações . . . . . . . . . . . . . . . . . .
70
Gerência de Tarefas (GT) . . . . . . . . . . . . . . . . .
74
6.4.3.2.1
6.4.3.3
68
Padrão de Projeto Facade . . . . . . . . . . .
74
Gerência de Dados (GD) . . . . . . . . . . . . . . . . .
76
6.4.3.3.1
Padrão de Projeto Singleton . . . . . . . . . .
77
6.4.3.3.2
Modelo de Entidade e Relacionamento (MER)
78
Interface com Usuário (IU) . . . . . . . . . . . . . . . .
81
6.4.3.4
6.4.4 Pacote Utilitários . . . . . . . . . . . . . . . . . . . . . . . . . . .
81
6.4.4.1
Banco . . . . . . . . . . . . . . . . . . . . . . . . . . . .
81
6.4.4.2
Login . . . . . . . . . . . . . . . . . . . . . . . . . . . .
82
6.4.4.3
Pessoa . . . . . . . . . . . . . . . . . . . . . . . . . . .
83
6.4.4.4
DAO . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
83
6.4.5 Diagrama de Seqüência . . . . . . . . . . . . . . . . . . . . . . .
83
6.4.6 Padrões de Interface . . . . . . . . . . . . . . . . . . . . . . . . .
85
6.4.6.1
Ícones . . . . . . . . . . . . . . . . . . . . . . . . . . .
86
6.4.6.2
Cores . . . . . . . . . . . . . . . . . . . . . . . . . . . .
86
6.4.6.3
Mensagens . . . . . . . . . . . . . . . . . . . . . . . . .
86
6.4.6.4
Diagrama de Navegabilidade . . . . . . . . . . . . . . .
87
6.4.6.5
Aspectos de Usabilidade e Eficiência . . . . . . . . . .
88
6.4.7 Diagrama de Componentes . . . . . . . . . . . . . . . . . . . . .
89
6.4.8 Diagrama de Implantação . . . . . . . . . . . . . . . . . . . . . .
89
6.4.9 Protótipo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
90
6.4.10 Estrutura de Sistema
94
. . . . . . . . . . . . . . . . . . . . . . . .
7 CONCLUSÃO
96
7.1 Conclusão dos Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . .
96
7.2 Dificuldades Encontradas . . . . . . . . . . . . . . . . . . . . . . . . . .
96
7.3 Retorno Para o Grupo . . . . . . . . . . . . . . . . . . . . . . . . . . . .
97
7.4 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
97
REFERÊNCIAS
99
RESUMO
Nos últimos anos, a tendência no sentido de dispositivos menores e mais rápidos, juntamente com a necessidade de acesso à informação em movimento, tem moldado o
caminho para uma nova tecnologia que reúne o mundo da Web e da telefonia móvel.
Essa tendência na tecnologia é fornecer aos usuários a capacidade de terem tudo
que possivelmente precisariam em um dispositivo que caiba no bolso. Neste contexto,
é proposto um sistema para auxílio dos controles administrativos em um consultório
ortodôntico. Para tal, foram pesquisados e encontrados os melhores métodos e tecnologias para o desenvolvimento deste sistema que suportará o acesso pela Web
convencional e por dispositivos móveis.
Palavras-chave: Wireless, WAP (Wireless Application Protocol), JME (Java Micro Edition).
ABSTRACT
In recent years, the appearing of smaller and faster devices with the need to access
information everywhere has shaping a new technology that combines the Web and the
mobile technology. The new trend is to provide users the possibility to have everything
they need in a device that fits in their pockets. For this purpose, we searched and found
the best ways and technologies for this development. In this context, it was proposed
a software that helps an orthodontic office to control their administrative tasks with access from the Web and mobile phones.
Keywords: Wireless, WAP (Wireless Application Protocol), JME (Java Micro Edition).
19
1
INTRODUÇÃO
O acesso à rede mundial de computadores tem crescido a taxas exorbitantes nos últimos anos, especialmente no Brasil cujas taxas giram em torno de 16% anuais e, nos
últimos dois anos, passou para 78% o aumento do número de internautas residenciais,
de acordo com [1] e [2]. Paralelamente ao crescimento da Internet, o avanço das Tecnologias de Informação e Comunicação - TIC, especialmente a telefonia celular, tem
permitido uma maior aderência das aplicações comerciais às demandas de mercado,
tornando a mobilidade um fator primordial para aumento da lucratividade das empresas, principalmente em virtude de melhoria dos serviços prestados a seus clientes.
O mercado de aplicações móveis produz serviços cada vez mais impressionantes
como o Google Maps que é baseado em pesquisa e visualização de mapas e imagens
de praticamente qualquer lugar do planeta via satélite podendo ser possível, também,
visualizar a posição do usuário no mapa e de sua rede de amigos; o Modality, presente no iPhone, que é uma ferramenta que permite ampliar e navegar por imagens
do corpo humano utilizando teclado touchscreen presente no aparelho; e o CallACab
permite que os usuários liguem para um táxi próximo a sua localização com um único
clique e com visão detalhada do mapa onde ele se encontra presente na plataforma
Android - do Google. [3] [4].
Nesse sentido, a melhoria contínua das interfaces das aplicações em aparelhos celulares, bem como a ampliação dos recursos oferecidos, permitidos pela miniaturização
de componentes, telas coloridas e maiores, além de baterias de longa duração, tem
revolucionado a telefonia sem fio. Muitas modificações e inovações foram introduzidas
na tecnologia utilizada pelos telefones celulares desde que a Motorola apresentou,
em 1973, seu protótipo do primeiro telefone celular. Pesando 794,16 gramas, o DynaTAC 8000x, da Motorola, ganhou logo o apelido de "tijolo". O preço também era
pesado: 3.995 dólares. Sua bateria permitia uma hora de conversação e a memória
20
armazenava 30 números de telefones. Podia não ser exatamente bonito, mas permitia
comunicação móvel - ao menos para quem conseguisse carregá-lo. [5]
Em 35 anos de evolução, houve um crescimento meteórico na tecnologia e na adição
de funções nos aparelhos celulares. E o melhor: por um preço mais acessível.
Os modelos, atualmente, podem vir acompanhados de telas sensíveis ao toque, de
câmeras digitais, de acesso a Internet e a tecnologia Bluetooth, suportam jogos, dentre muitas outras funcionalidades. Como exemplo de grande sucesso dessas tecnologias, pode-se citar o iPhone, da Apple, e o G1, fabricado pela HTC o qual é baseado
na plataforma Android, do Google - ambos com as funcionalidades descritas acima e
com os preços acessíveis a uma boa parte da população, principalmente em países
de primeiro mundo.
Os custos de aquisição mais acessíveis têm permitido um constante crescimento do
mercado de usuários de celular no Brasil e no mundo. Segundo dados da Agência
Nacional de Telecomunicações (Anatel), no mês de setembro de 2008, o mercado
brasileiro de aparelhos celulares já atingiu a marca de 140,6 milhões. [6]
Com o advento da tecnologia 3G (Terceira Geração) na telefonia móvel, as operadoras de celular no Brasil poderão oferecer a seus usuários serviços como telefonia por
voz e a transmissão de dados a longas distâncias com altas taxas de transmissão.
Importante ressaltar que mais de 25% da população brasileira já mora em municípios
onde pelo menos uma operadora de celular oferece a tecnologia 3G. Isso faz com que
a Internet através do celular seja mais viável e atrativa, tornando o Brasil o país que
mais acessa internet via celular na América Latina, seguido pelo México e Venezuela,
de acordo com [7] [8].
21
Figura 1: Comparação entre o número de celulares e computadores no mundo
Interessante observar que, mesmo com as restrições atuais nos custos de acesso
a dados pelo celular - especialmente nos mercados em estágio de desenvolvimento,
como o brasileiro -, os usuários de Internet móvel já passam de 400 milhões no mundo
- um terço dos internautas que navegam pelo PC - e a previsão é de que cheguem
próximo à marca de um bilhão dentro de três anos, como mostra a figura 1[9].
Em mercados mais maduros como o Japão, o número de usuários de internet pelo
celular já é superior ao de internautas que navegam pelo desktop. Para as empresas
de internet - como Microsoft, Google e Yahoo! -, trata-se de um novo universo de
oportunidades. Segundo previsões do eMarketer, os gastos com anúncios em celulares devem chegar a 13,8 bilhões de dólares em 2011. Deste total, 17% virão do
mercado de aplicações de buscas. Segundo [9], dos 982,4 milhões de usuários de
internet móvel previstos para 2011, mais de 90% vão utilizar os serviços de busca,
fornecendo combustível para um mercado de 2,3 bilhões de dólares em links patrocinados como mostra a figura 2[9].
22
Figura 2: Projeções para a internet móvel no mundo
Tendo em vista todas as possibilidades de mobilidade discutidas até agora, a utilização de computação móvel na área de saúde, especificamente na odontologia, pode
ser vista como elemento interessante para agilidade na geração de informações e
diagnósticos nos tratamentos dos pacientes. A área da odontologia é marcada por
processos minuciosos que necessitam de um rigoroso controle a fim de promover um
acompanhamento mais preciso no tratamento do paciente. Processos esses como
acompanhamento constante do tratamento do paciente e os procedimentos que foram
e serão tomados nas consultas. Desta maneira, um sistema de informação seria dito
ideal para o contexto se combinassem as garantias de estabilidade, de veracidade e
integridade da informação com a facilidade de acesso que a Internet oferece tanto em
dispositivos móveis como em computadores pessoais.
Este trabalho visa conceituar um sistema de informação, destinado às clínicas ortodônticas, que possa auxiliar na gestão do tratamento do paciente, abrangendo desde
a possibilidade de marcação e visualização de consultas até o controle de pagamento
das parcelas, com a flexibilidade oferecida pela internet e telefonia móvel ter a facilidade de acesso como foi descrito.
23
2
JUSTIFICATIVA
O avanço rápido das Tecnologias de Informação e Comunicação - TICs, aliado à crescente necessidade de diferenciação dos serviços oferecidos no mercado de saúde
odontológico são fatores catalisadores de soluções em software. Nesse sentido, este
trabalho é justificado pela ausência no mercado de uma solução específica no setor
odontológico, que contemple várias funcionalidades dos serviços prestados, diferenciandoos e tornando sua gestão mais otimizada. Adicionalmente, a possibilidade de estudo e
de convergência de várias tecnologias de computação móvel em um protótipo, aliado
ao estudo científico dessas tecnologias, torna-se um diferencial do trabalho proposto.
2.1 Motivações
Por em prática todo conteúdo aprendido nas disciplinas relacionadas à programação
orientada a objetos, engenharia de software e banco de dados durante a graduação
foram uma das principais motivações para a realização deste projeto de pesquisa.
Além disso, o contato com o desenvolvimento para dispositivos móveis, por ser um
mercado novo, em crescimento, estando cada vez mais presente na vida das pessoas,
nos motivou ainda mais pelo retorno de aprendizado e possíveis oportunidades de
negócios.
24
3
OBJETIVOS
Esta seção tem como objetivo principal apresentar o sistema proposto como estudo
de caso. Os itens que se seguem apresentam os principais processos e etapas dentro do desenvolvimento de software aplicados no projeto, alem de discussões sobre
arquiteturas, padrões e as melhores soluções adotadas. Como objetivos secundários,
este trabalho pretende:
• Realizar um estudo comparativo das tecnologias open-source mais difundidas
para o desenvolvimento de aplicativos móveis, WAP e JME, no que se diz respeito à implementação, usabilidade e às tendências do mercado de trabalho;
• Implementar aplicativos embarcados em aparelhos celulares utilizando ferramentas CASE, UML (Unified Modelling Language, Linguagem de Modelagem Unificada) e Internet (como a linguagem de estilo CSS Mobile e as linguagens de
marcação XML, XHTML-MP);
• Elaborar um estudo de caso aplicando os conceitos e tecnologias abordadas de
forma a construir um sistema, denominado MobOdonto.
25
4
TECNOLOGIAS
Nesta seção serão apresentadas as tecnologias escolhidas como base para as pesquisas
e suas principais definições para auxiliarem no cumprimento dos objetivos descritos
na seção 3.
4.1 WAP
WAP - Wireless Application Protocol, Protocolo de Aplicativos Sem Fio - é um protocolo de comunicação e ambiente de aplicações para distribuição de recursos de
informação, serviços de telefonia avançado e acesso à internet a partir de dispositivos
móveis. Ele representa um novo modo de olhar o fenômeno sem fio - permitindo aos
aplicativos "seguirem"seus clientes e fornecendo a eles serviços inovadores. [10]
4.1.1 Histórico
De acordo com [10], em 1995, nos EUA, a Unwired Planet apresentou a HDML (Handheld Device Mark Up Language, Linguagem de Marcação para Dispositivos Sem Fio)
- que é uma versão reduzida de HTML para ser usada em dispositivos sem fio. E, no
Japão, a operadora NTT DoCoMo apresentou um serviço chamado i-mode, no início
de 1996. Essa tecnologia se tornou muito popular com quase sete milhões de usuários
acessando serviços de internet a partir de telefones móveis.
Essas duas tecnologias apresentaram questões interessantes como qual seria a vencedora. Seria aquela que fornecesse a melhor solução para determinado problema ou
aquela mais amplamente adotada? Essa foi uma questão respondida durante 1999.
Ela poderia ter se mantido no enfoque apenas do desenvolvimento do HDML, o que
permitiria crescer no EUA como a NTT DoCoMo fez com o i-mode no Japão. Entretanto, em vez disso, ela optou por envolver os principais fabricantes de telefones
26
móveis em seu projeto, reconhecendo que quanto mais dispositivos existissem no mercado mundial oferecendo suporte à tecnologia, mais ela poderia vender suas soluções
de internet sem fio em todo o mundo. O envolvimento de outras empresas, cada uma
com uma grande base de clientes em diferentes partes do mundo, tem ajudado a promover a tecnologia.
Assim o WAP Forum (hoje a All Mobile Alliance) foi criada pela Phone.com (antiga
Unwired Planet), Ericsson, Nokia e Motorola. Com o advento do WAP Forum, a
Phone.com compartilhou seu conhecimento e a parceria logo evoluiu para as abrangentes
especificações WAP, que incluem as camadas de aplicativo complementar, sessão,
transação, segurança e protocolo de transporte. Também foi criada uma nova linguagem de marcação, chamada WML, Wireless Markup Language ou Linguagem de
Marcação Sem Fio. Esses protocolos minimizam os problemas associados ao uso de
protocolos de internet para transferência de dados sem fio. Eles fazem isso eliminando
transferências de dados desnecessárias usando código binário para reduzir o volume
de dados que precisa ser enviado. Além disso, as sessões sem fio são projetadas
para serem facilmente suspensas e retomadas, sem as cargas adicionais associadas
a protocolos de internet. Assim, os protocolos são muito convenientes para a baixa
largura de banda associada à comunicação sem fio. Com 90% do mercado de aparelhos telefônicos representado no WAP Forum, o WAP será a principal maneira de
acessar a Internet.
4.1.2 Arquitetura de Aplicativo WAP
Os protocolos WAP foram projetados tendo em vista os protocolos Web. O objetivo era
usar a estrutura da Web subjacente, mas tornar a comunicação entre os provedores
de conteúdo e dispositivos móveis mais eficientes e com menos demora do que os
próprios protocolos da Web se fossem usados [10].
Como a arquitetura WAP foi projetada para ser parecida com a da Web, o paradigma
cliente-servidor usado pela Internet foi herdado pelo WAP. A principal diferença, entretanto, é a presença do gateway WAP para fazer a transformação entre o protocolo
HTTP e WAP. [10]. A abstração representada pela figura 3[10] mostra a principal diferença mencionada anteriormente.
27
Figura 3: Comparação entre WAP e Internet quando usado para acessar a Web
4.1.3 Cliente WAP
Segundo [10], o único requisito para que um dispositivo seja compatível com WAP é
que ele deve implementar um agente usuário WAE, um agente usuário WTA e a Pilha
WAP.
• O Agente de Usuário WAE (Wireless Application Environment, Ambiente de Aplicativos Sem Fio) é o micro-navegador que traz o conteúdo para exibição. Ele recebe o código WML compilado, o WMLScript e todas as imagens do gateway
WAP, e os executam ou os apresentam na tela. O navegador deve implementar toda a funcionalidade fornecida pelo código WML e WMLScript. Ele também
deve gerenciar a interação com o usuário, como a entrada de saída de textos e
mensagens de erro ou aviso;
• O Agente de Usuário WTA (Wireless Telephony Applications, Aplicações de Telefonia Sem Fio) recebe arquivos WTA compilados do servidor WTA e os executam.
O Agente de Usuário WTA inclui acesso à interface para o telefone e funcionalidade de rede, como discagem de números, respostas às chamadas, gerenciamento de mensagens e serviços de indicação de local;
• A implementação da Pilha WAP permite ao telefone se conectar com o gateway
WAP usando os protocolos WAP.
28
A figura 4[10] ilustra o Cliente WAP:
Figura 4: Cliente WAP
4.1.4 Gateway WAP
De acordo com [10], o gateway WAP é, na verdade um proxy (servidor que atende
a requisições repassando os dados a outros servidores [11]). Ele é utilizado para
conectar o domínio sem fio com o da Internet. Entretanto, ele contém funcionalidades
de gateway de protocolos, além de funcionalidades de codificação/decodificação. A
figura 5[10] ilustra o uso de um proxy/gateway WAP.
Figura 5: Uso do Gateway WAP
29
4.1.5 Funcionamento do Gateway WAP
A figura 6[10] apresenta um gateway WAP e outros elementos na rede sem fio mostrando
como o gateway WAP colabora e faz a interface com todos os outros elementos para
fornecer um serviço completo.
Figura 6: Gateway WAP e elementos da rede sem fio
Segundo [10], quando se inicia uma sessão WAP em um telefone móvel, os seguintes
passos são executados.
• Uma conexão é criada, via WSP (Wireless Session Protocol, Protocolo de Sessão
Sem Fio), entre o dispositivo móvel e o gateway WAP, o qual se supõe estar presente na rede da operadora;
• Quando se introduz o endereço de um site WAP, é enviado para o gateway um
pedido do micro-navegador do dispositivo, usando WSP. O WSP é o protocolo
WAP responsável por iniciar e terminar as conexões dos dispositivos móveis com
o gateway WAP;
• O gateway transforma o pedido WSP em um pedido HTTP e o envia para o
servidor de origem apropriado;
• O servidor de origem envia de volta para o gateway a informação solicitada, via
HTTP;
30
• O gateway transforma e compacta a informação e a envia de volta para o micronavegador no dispositivo móvel.
A parte do gateway do proxy WAP cuida da transformação de todos os pedidos enviados e recebidos pelo cliente, usando WAP, para o que servidor de origem está usando
(HTTP, por exemplo). O provedor de conteúdo envia seu conteúdo para o gateway
usando o protocolo HTTP. Então, ele encaminha todo o conteúdo recebido para os
dispositivos WAP, usando os protocolos WAP [10]. A figura 7[10] ilustra o que foi discutido neste parágrafo.
Figura 7: Gateway do proxy WAP
A funcionalidade de codificação/decodificação dentro do gateway é usada para converter o conteúdo WML e WMLScript que transita no cliente para uma forma otimizada
para redes de banda baixa [10].
O gateway WAP também é conectado ao serviço WTA, presente na rede da operadora, que fornece a interface para acessar alguns dos serviços de rede que a operadora queira oferecer. Como ele normalmente é o elemento da operadora de rede
que é contactado pelos clientes para acessar serviços, ele também precisa incluir funcionalidade de tarifação e implementa uma interface para cada uma das portadoras
presentes na rede sem fio[10] .
31
Figura 8: Codificador / Decodificador do Gateway WAP
Outro serviço que a funcionalidade CODEC (codificação/decodificação) pode fornecer
é a transformação de código HTML ou texto em WML.
O gateway WAP também é conectado ao serviço WTA, presente na rede da operadora, que fornece a interface para acessar alguns dos serviços de rede que a operadora queira oferecer. Como ele normalmente é o elemento da operadora de rede
que é contatado pelos clientes para acessar serviços, ele também precisa incluir funcionalidade de tarifação e implementa uma interface para cada uma das portadoras
presentes na rede sem fio [10].
4.1.6 Servidor de Aplicativos WAP
O servidor de aplicativos/origem/conteúdo WAP tem exatamente a mesma função que
um servidor Web e fornece os mesmos recursos para os clientes. A distinção entre eles é apenas lógica, pois os dois podem coexistir no mesmo dispositivo físico,
e alguns servidores podem fornecer as duas funções usando o mesmo software. A
única diferença,é claro, o conteúdo que eles armazenam e enviam para os clientes.
Enquanto o servidor Web oferece suporte a HTML, JavaScript, multimídia e todos
os formatos de imagens, o servidor de aplicativos WAP armazena arquivos WML,
WMLScript e arquivos de imagem WBMP. Um servidor WAP normalmente é apenas um servidor de aplicativos WAP com funcionalidades de gateway incluídas. Ele
fornecerá todos os serviços que um servidor de origem normal fornece, mas também
atuará como um gateway WAP [10].
O servidor de aplicativos WAP também pode, é claro, conter todas as tecnologias
usadas para fornecer conteúdo dinâmico. É possível usar XML em conjunto com ASP
32
e Servlets Java, para citar apenas algumas, para gerar conteúdo WML dinamicamente
[10].
Para permitir que um servidor Web contenha aplicativos WAP é necessário simplesmente incluir os tipos de arquivos WAP nos ajustes do servidor [10].
4.1.7 Pilha de Protocolos WAP
A pilha WAP foi baseada no modelo de referência OSI ISO [ISO7498] e herdou a
maior parte de suas características. A principal diferença entre as duas é o numero
de camadas: o WAP tem apenas cinco camadas, enquanto o modelo OSI possui sete
[10].
A figura 9 [10] ilustra a pilha WAP.
Figura 9: Pilha de Protocolos WAP
A seguir, a descrição das camadas da pilha WAP segundo [10].
4.1.7.1
Wireless Application Environment - WAE
A camada de aplicação do WAP fornece um ambiente que inclui todos os elementos
relacionados ao desenvolvimento e à execução de aplicativos.Os principais blocos de
construção do WAE são os seguintes:
33
• Uma linguagem de marcação leve: WML;
• Uma linguagem de script leve: WMLScript;
• Uma interface para serviços locais e serviços de telefonia avançados: WTA.
4.1.7.2
Wireless Session Layer - WSP
O WSP (Wireless Session Protocol, Protocolo de Sessão Sem Fio), permite que
serviços troquem dados entre aplicativos de forma organizada. Ele inclui dois protocolos diferentes:
• Serviços de sessão à conexão: Operam através do WTP (Wireless Transaction
Protocol ou Protocolo de Transação Sem Fio);
• Serviços de sessão sem conexão: Operam diretamente através da camada de
transporte (WDP, Wireless Datagram Protocol, Protocolo de Datagrama Sem
Fio).
Sob alguns aspectos, a camada de sessão WSP é basicamente uma forma binária de
HTTP. A transmissão binária de dados entre o servidor e um cliente é uma adaptação
essencial feita para rede móvel de largura de banda estreita. O WSP fornece todos
os métodos definidos por HTTP/1.0 e permite a capacidade de negociação para obter
total compatibilidade com HTTP/1.1.
4.1.7.3
Wireless Transaction Layer - WTP
O WTP (Wireless Transport Layer, protocolo de transmissão sem Fio) fornece serviços
para realizar transações confiáveis e não confiáveis e opera por intermédio da camada
WDP ou por meio da camada de segurança opcional, WTLS. A WTP, assim como as
outras camadas no WAP, é otimizada para se adaptar à pequena largura de banda
da interface de rádio, tentando reduzir o volume total de transações repetidas entre o
cliente e o servidor. Em particular, três classes diferentes de serviço são fornecidas
para as camadas superiores:
• Pedidos Não Confiáveis: O iniciador (neste caso, um servidor de conteúdo)
envia um pedido para o respondedor( agente de usuário ) que não responde com
34
um reconhecimento. A transação na tem estado e termina quando a mensagem
chamada for enviada.
• Pedidos Confiáveis: O iniciador envia um pedido para o respondedor, que o
reconhece. O respondedor armazena as informações de estado da transação
por algum tempo, para que possa retransmitir a mensagem de reconhecimento,
caso o servidor a peça novamente. A transação termina no iniciador, quando
este recebe a mensagem de reconhecimento.
• Pedidos Confiáveis com uma mensagem de resultado: O iniciador envia um
pedido para o respondedor que o reconhece implicitamente com uma mensagem
de resultado. O iniciador então, reconhece a mensagem de resultado, mantendo
a informação de estado da transação por algum tempo, após o reconhecimento
ter sido enviado, no caso de ele não chegar. A transação termina no respondedor, quando ele recebe a mensagem de reconhecimento.
4.1.7.4
Wireless Transport Layer Security - WTLS
O TLS (Wireless Transport Layer Security, Segurança de Camada de Transporte Sem
Fio) é a solução para o problema de segurança fornecida pelo WAP Forum. WTLS
é uma camada opcional e tem por base a TLS (Transport Layer Security, Segurança
de Camada de Transporte) v1.0, que por sua vez é baseada na SSL (Secure Sockets
Layer, Camada de Soquetes Seguros) v3.0, que são protocolos de Internet. O WTLS
opera através da camada de transporte (WDP). Ela fornece serviços que garantem
privacidade, autenticação de servidor, autenticação de cliente e integridade de dados.
4.1.7.5
Wireless Application Environment - WAE
O WDP (Wireless Datagram Protocol, Protocolo de Datagramas Sem Fio) é a camada
inferior da pilha WAP e é aquela dos elementos que tornam o WAP, o protocolo extremamente portátil que é, possível de ser usado em redes móveis extremamente
diferentes. O WDP isola as camadas superiores dos serviços de portadoras fornecidos pela rede, permitindo aos aplicativos uma transmissão de dados transparente por
meio de diferentes portadoras. Os serviços de portadora são o âmago da comunicação entre o telefone móvel e as estações rádio-base. Eles incluem SMS (Short
Message Service ou Serviço de Mensagens Curtas), CSD, USSD (Unstructured Supplementary Service Data ou Serviço Complementar de Dados Estruturados - trata-se
35
de uma modalidade de serviço de envio de mensagens curtas para o celular) e CDMA
(Code Division Multiple Access ou Acesso Múltiplo por Divisão de Código).
4.1.7.6
Wireless Datagram Protocol
O WDP (Wireless Datagram Protocol, Protocolo de Datagramas Sem Fio) é a camada
inferior da pilha WAP e é aquela dos elementos que tornam o WAP, o protocolo extremamente portátil que é, possível de ser usado em redes móveis extremamente
diferentes. O WDP isola as camadas superiores dos serviços de portadoras fornecidos pela rede, permitindo aos aplicativos uma transmissão de dados transparente por
meio de diferentes portadoras. Os serviços de portadora são o âmago da comunicação entre o telefone móvel e as estações rádio-base. Eles incluem SMS (Short
Message Service ou Serviço de Mensagens Curtas), CSD, USSD (Unstructured Supplementary Service Data ou Serviço Complementar de Dados Estruturados - trata-se
de uma modalidade de serviço de envio de mensagens curtas para o celular) e CDMA
(Code Division Multiple Access ou Acesso Múltiplo por Divisão de Código).
4.2 Linguagem e Plataforma Java
Java é uma plataforma desenvolvida pela Sun Microsystems, na década de 1990, com
a idéia de que aplicações criadas para ela pudessem ser executadas em diferentes
ambientes computacionais [12].
Tudo começou em 1991 com um projeto, conhecido como Green Project, iniciado por
uma equipe da empresa. Essa equipe, liderada por James Gosling, tinha como objetivo principal criar um interpretador para dispositivos eletrônicos de consumo como
TVs, vídeos-cassete, torradeiras e liquidificadores. Em 1992 foi desenvolvido um protótipo chamado *7 (StarSeven), que era uma espécie de controle remoto para esses
eletrônicos, com interface intuitiva e tela touchscreen. Para que o dispositivo pudesse
controlar uma ampla quantidade de aparelhos, foi criada uma linguagem denominada
Oak, onde sua principal característica era ser independente de arquitetura de processador onde seria executada. Toda essa idéia teria sido perfeita se não fosse um
pequeno problema: inexistência de mercado [13].
No início da década, as empresas estavam começando e ainda buscavam modelos
36
de negócios viáveis fazendo com que o crescimento neste setor não atingisse o nível
esperado pela Sun. Quase que em paralelo a esses acontecimentos, em 1993, surge
o navegador Mosaic revolucionando a maneira como as pessoas enxergavam a Web.
De certa forma, todas as principais características e idéias que a Sun havia buscado
com o Green Project estavam coincidentemente sendo aplicadas à Internet e, vendo
todo esse potencial, a equipe adaptou o projeto para a grande rede em 1995. Com
esta adaptação o nome da linguagem foi modificado para Java, como hoje é conhecido
[13].
A primeira versão da linguagem foi lançada em 1996 e a partir dela, a plataforma
foi crescendo e ganhando força tornando-se hoje uma das mais usadas no mundo
[14]. Com o tempo, o Java foi amadurecendo e vislumbrando possibilidades em outros
setores da indústria além da Internet e, reconhecendo a impossibilidade de criar uma
plataforma única capaz de abranger completamente as demais áreas de mercado, a
Sun dividiu a tecnologia em três edições, cada uma visando segmentos específicos
de negócio:
• JSE (Java Standard Edition) [15] - projetada para rodar em computadores pessoais (desktops) e estações de trabalho.
• JEE (Java Enterprise Edition) [16] - projetada com foco em aplicações para
serem executadas no servidor.
• JME (Java Micro Edition) [17] - especializada em pequenos dispositivos com
memória, tela e poder de processamento limitados.
A figura 10 [18] mostra um diagrama com uma visão geral da plataforma Java:
4.2.1 Plataforma JME
Em tempos anteriores, os dispositivos não possuíam opções para download e instalação de softwares além dos pré-configurados pelos fabricantes. Com a introdução
do JME, os aparelhos que o implementavam deixaram de ser estáticos e tornaram-se
mais atrativos à medida que os usuários poderiam adaptá-los instalando ou mesmo
escrevendo suas próprias aplicações[19].
37
Figura 10: Plataforma Java e suas edições
A plataforma JME define um conjunto de tecnologias e especificações para ampliar
o alcance do Java em direção aos pequenos aparelhos. Desta maneira, seu foco está
nos dispositivos de consumo com limitações de memória, tela e processamento, como
celulares, PDAs, pagers, entre outros. A plataforma é baseada em três elementos [20]:
• As configurações, que contém um conjunto básico de bibliotecas e definições de
capacidades da JVM (Java Virtual Machine ou Máquina Virtual Java) para uma
ampla quantidade de dispositivos;
• Os perfis, que definem um conjunto de APIs (Application Programming Interface
ou Interface de Programação de Aplicativos) para suporte a uma quantidade
mais restrita e específica de dispositivos;
• Os pacotes opcionais, que definem um conjunto de APIs para uma tecnologia
em particular.
A figura 11 [18] ilustra o que foi discutido.
38
Figura 11: JME e seus componentes
Devido à grande diferença dos aparelhos em termos de capacidades de hardware, a
Sun os subdividiu em duas categorias: a dos pequenos dispositivos, ou seja, equipamentos com limitação de processamento e memória e a dos dispositivos com maiores
capacidades como smartphones e set-top boxes.
A categoria dos pequenos dispositivos está representada pela configuração CLDC
(Connected Limited Device Configuration, Configuração para dispositivos Conectados
e Limitados), onde estão incluídos pagers, celulares e PDAs. A configuração CDC
(Connected Device Configuration, Configuração para Dispositivos Conectados) representa os aparelhos mais robustos, normalmente set-top boxes para TVs, sistemas de
navegação para automóveis e alguns PDAs com mais recursos [20].
Como as configurações não provêem suporte para o gerenciamento da aplicação,
como o controle da interface e acessos a informações em um servidor ou a dados
persistentes no dispositivo, necessita-se dos perfis e pacotes opcionais para fazerem
esse trabalho. Os perfis trazem classes mais específicas do que as presentes nas
configurações. [17] O MIDP (Mobile Information Device Profile, Perfil de Dispositivo
de Informações Móvel), por exemplo, é o mais utilizado e complementa as funcionalidades da CLDC [21].
Além dos perfis, existem os pacotes opcionais que são independentes de qualquer
tipo de dispositivo. Eles trazem APIs específicas para determinada funcionalidade. O
39
Bluetooth, por exemplo, pode ser citado como um destes recursos e, portanto, existe
um conjunto de classes definidas para explorarem esta característica. A figura 12[22]
mostra a divisão do pacote JME:
Figura 12: JME dividida em camadas
4.2.2 Java Community Process (JCP) e Java Specification Request
(JSR)
Todo desenvolvimento de tecnologia para a plataforma Java se estabelece através de
especificações e para que elas sejam criadas é necessária uma entidade que controle
todo o processo. Baseado nestas premissas existem o JCP (Java Community Process) e a JSR (Java Specification Request).
O JCP (Java Community Process) [22] é uma comunidade representada pela Sun
e outros parceiros da indústria, que tem como objetivo manter a padronização das
tecnologias que compõem a plataforma. Atualmente, o JCP possui mais de 1200
membros, entre eles grandes empresas como IBM, Fujistu, Motorola, Borland e Oracle.
A JSR (Java Specification Request) é um documento criado e enviado pelos membros
do JCP com proposta de desenvolvimento ou melhoria de uma tecnologia. Uma JSR
contém todas as características de determinado produto informando o que ele deve
contemplar. De posse dessas informações, qualquer empresa pode definir sua própria
implementação, desde que esteja condizente com sua respectiva especificação.
Todas as tecnologias que fazem parte da plataforma Java, desde a JVM passando
pelos servidores de aplicação, JSPs (JavaServer Pages) e Servlets até as Configurações e Perfis presentes no JME são especificações mantidas pelo JCP [23].
40
4.2.3 Configurações
As configurações definem a base de funcionalidades para dispositivos com características comuns, isto é, especificam os recursos e classes presentes na JVM. Desta
forma, intermediam a comunicação entre o Perfil e a VM (Virtual Machine, sinônimo
de Java Virtual Machine - JVM) e sua especificação está diretamente ligada à implementação de uma máquina virtual. Assim, cada configuração tem sua própria VM [19].
A plataforma JME as divide em duas partes, separadas por capacidades de hardware dos dispositivos que suportam: CLDC e CDC ilustrados na figura 13.
Figura 13: Configurações do JME
4.2.3.1 CLDC (Connected Limited Device Configuration)
A CLDC define as bibliotecas e especificações da VM com o objetivo de suportar dispositivos com restrições de processamento, memória, tela, entrada de dados e bateria
como celulares e PDAs. A CLDC trabalha em cima da KVM (Kilobyte Virtual Machine
- uma máquina virtual Java limitada), que foi projetada para consumir uma quantidade
mínima de memória por não poder implementar boa parte das características da JVM
padrão [19] e [22].
Assim como toda tecnologia Java, a CLDC também é uma especificação. Devido às
grandes mudanças no mercado móvel, tendo em vista o surgimento de novos recursos
e o aumento das capacidades dos aparelhos, sua especificação precisa acompanhar
esta evolução. Atualmente, a CLDC está definida em duas especificações: JSR 30
(CLDC 1.0) e JSR 139 (CLDC 1.1). Como as capacidades dos dispositivos que a
CLDC abrange variam consideravelmente, a JSR 30 (CLDC 1.0) não definiu qualquer
41
requisito mínimo de hardware além do requisito de memória. Nesta especificação é
esperado que a VM, as bibliotecas de Configurações e Perfis e a aplicação tenham
entre 160KB e 512KB de memória. Mais especificamente possuam as seguintes características:
• 128KB de memória não-volátil para a VM e classes presentes na configuração.
• 32KB de memória volátil para suportar o armazenamento dos objetos durante a
execução da aplicação.
Assim como a CDC, a CLDC é baseada na plataforma JavaSE, logo, implementa algumas funções presentes nela. Porém, devido a limitações impostas pelos aparelhos,
algumas tiveram que ser retiradas da versão 1.0 para economia de memória. Entre
elas: reflection, suporte a ponto flutuante, finalização de objetos e tratamentos de exceções derivadas da classe java.lang.Error. [24]
Para a versão 1.1 algumas características da especificação foram alteradas para se
adaptar às novas capacidades dos aparelhos. Para os requisitos mínimos de hardware
foi definido pelo menos 192KB de memória. Mais especificamente:
• pelo menos 160KB de memória não-volátil para a VM e as bibliotecas definidas
na CLDC.
• pelo menos 32KB de memória volátil para os objetos da aplicação.
Durante o tempo de uso da CLDC 1.0, percebeu-se que algumas características retiradas dessa JSR eram de extrema importância para o desenvolvimento das aplicações
e, logo, foram incorporadas à versão 1.1. Entre elas, destaca-se o suporte a dados de
ponto flutuante. [25]
Por serem considerados muito grandes e complexos para dispositivos móveis, os
pacotes java.io e java.net presentes na plataforma JavaSE não foram colocados na
CLDC. Em detrimento, foi criado o GCF (Generic Connection Framework) que, baseado
nas reais necessidades e capacidades dos aparelhos, define em algumas classes e
interfaces formas de conectividade e I/O (Input/Output ou Entrada e Saída de dados).
O GCF é um framework usado para fazer conexões como HTTP, HTTPS, streams
42
e datagramas. Ele foi definido e incluído na JSR 30 (CLDC 1.0), mas por ser amplamente flexível possibilita que outros perfis e pacotes opcionais estendam sua base
e definam sua própria implementação de conectividade, como mostrado na figura 14
[26].
Figura 14: Relacionamento entre as diferentes implementações do GCF
4.2.3.2 CDC (Connected Device Configuration)
A CDC [27] especifica recursos de VM e bibliotecas com foco em aparelhos mais
robustos como smartphones, set-top boxes e PDAs com mais recursos. Sua implementação é executada sobre a CVM (Compact Virtual Machine ou Máquina Virtual
Compacta), máquina virtual baseada na VM Java.
Por abranger dispositivos com maiores capacidades ela possui suporte completo da
plataforma JSE o que torna mais simples a adaptação de quem desenvolve e utiliza
ferramentas e recursos para desktops. Basicamente, os dispositivos suportados devem possuir um processador de 32bits, 2MB de memória volátil e 2.5MB de memória
não-volátil como requisito mínimo [28].
A CDC está especificada em duas JSRs, onde cada uma está baseada em uma versão do JavaSE. A JSR 36 (CDC 1.0) possui características da versão 1.3 e a JSR 218
(CDC 1.1.2) da 1.4.2.
4.2.4 Perfis
Mesmo pertencendo à mesma configuração, os dispositivos ainda possuem algumas
diferenças entre si. Por exemplo, um celular e um PDA se encaixam nas especifi-
43
cações da CLDC, o que significa que compartilham características em comum. Porém,
mesmo sendo definidos como parte de uma mesma família ainda possuem tamanho
de tela diferente. Como solução para esse problema foi introduzido pela Sun o conceito de perfil.
O perfil traz bibliotecas mais específicas para um grupo de dispositivos em particular. Existem diferentes perfis associados às configurações e abaixo segue uma lista:
Os perfis associados à CLDC:
• MIDP (Mobile Information Device Profile) [29]
Perfil definido para pequenos dispositivos, como celulares e PDAs. Sua API define
classes para manipulação de interface, persistência de dados e outros recursos específicos para o uso da aplicação. Atualmente, sua combinação com a configuração
CLDC define o ambiente mais utilizado nos aparelhos. [30]
O MIDP possui duas versões, 1.0 e 2.0, definidas nas especificações JSR 37 e JSR
118. Ambas definem os mesmos requisitos mínimos de display e entrada de dados:
96x54 pixels e teclado ou tela touchscreen, respectivamente. A diferença fica com
base na disponibilidade de memória, onde o MIDP 1.0 define 128KB (memória nãovolátil além da requerida pela CLDC), 8KB (memória não-volátil para dados armazenados pela aplicação) e 32KB (memória volátil para execução) e a versão 2.0 assume
256KB, 8KB e 128KB [31] [32].
• IMP (Information Mobile Profile) [33]
Perfil baseado no MIDP 1.0 que tem como objetivo suportar dispositivos que não possuem capacidades gráficas avançadas como parquímetro, aparelho de medida industrial e módulos wireless em alarmes residenciais [34]. Atualmente permanece na versão 1.0 definida pela JSR 195. Os perfis associados à CDC:
• FP (Foundation Profile) [35]
Perfil sem muitas funcionalidades e o mais básico da CDC, define API para dispositivos
desprovidos de interface gráfica como impressoras de rede, roteadores e gateways e
em caso de necessidade de uma GUI (Graphical User Interface ou Interface Gráfica do
Usuário), o FP pode ser integrado a um sistema que faça esse controle. Está definida
na JSR 46 (FP 1.0) [36] e JSR 219 (FP 1.1.2) [37].
44
• PBP (Personal Basis Profile) [38]
Fornece suporte a aparelhos com interface gráfica simples, como dispositivos para
automóveis, incluindo uma versão leve da biblioteca gráfica AWT presente no JavaSE.
• PP (Personal Profile) [39]
Perfil que oferece suporte completo a biblioteca AWT, abrangendo aparelhos com GUI
mais refinada como PDAs com mais recursos e browsers em dispositivos embarcados.
45
5
WAP x JME
Durante o decorrer deste trabalho foi feita uma análise minuciosa de cada tecnologia, buscando uma maior exploração de suas arquiteturas e funcionamentos para fins
comparativos. Com base nessas informações é mostrada uma tabela comparativa,
ilustrada na tabela 1, com foco em recursos relevantes para ambas, com intuito de
mostrar vantagens e desvantagens de cada uma como forma de justificativa daquela
de tal adoção:
5.1 Ambientes de Desenvolvimento
• WAP: Há várias .ferramentas disponíveis no mercado como Wapalize! WAP
Development Kit e WAPTor. Como há variação de características entre celulares
com suporte as diferentes versões do WAP e recursos do próprio aparelho, os
SDKs (Software Development Kit ou Kit de Desenvolvimento de Software) dos
fabricantes, como o Mobile Internet Toolkit 3.1 da Nokia.
• JME: Possui suporte para desenvolvimento nas duas principais IDEs (Integrated
Development Environment ou Ambiente Integrado de Desenvolvimento) do mercado, NetBeans e Eclipse. Ambas oferecem excelente suporte aos emuladores
e disponibilizam ferramentas que auxiliam a criação de projetos. Além desses
ambientes, a maior parte dos fabricantes de celulares disponibiliza seus SDKs
proprietários oferecendo possibilidade de teste da aplicação nos emuladores de
cada modelo de aparelho.
5.2 Conectividade
• WAP: O WAP possui suporte a protocolos como IP, TCP e HTTP provendo a um
aplicativo a possibilidade de usufruir tecnologias utilizadas na internet.
46
• JME: O JME possibilita o estabelecimento de comunicação de diferentes formas,
desde HTTP e Sockets TCP a SMS e Bluetooth. Os tipos básicos de conectividade são definidos no framework GCF, presente na plataforma.
5.3 Segurança de Informação
• WAP: O WAP possui a camada WTLS que é uma camada opcional que é baseada
na SSL 3.0 que são protocolos da Internet. Esta camada fornece serviços que
garantem privacidade, autenticação de servidor, autenticação de clientes e integridade de dados[40].
• JME: Possui suporte a HTTPS, o que possibilita uso de comunicação segura
com SSL habilitada no servidor além de disponibilizar APIs com suporte a certificados digitais para identificação segura e criptografia de dados como, por exemplo, o SATSA [41].
5.4 Acesso a Serviço Local do Dispositivo
• WAP: Os aplicativos WAP podem acessar os serviços do aparelho por intermédio da WTAI (Wireless Telephony Application Interface ou Interface para Aplicação para Telefonia Sem Fio). "WTAI é usada para acessar os serviços que
estão presentes localmente no dispositivo-cliente ou na rede móvel"[40].
• JME: A plataforma JME oferece um amplo suporte a acesso a recursos disponíveis
em aparelhos que, são oferecidos por APIs específicas definidas no celular. A
JSR 75, por exemplo, quando implementada no dispositivo possibilita acesso ao
seu sistema de arquivos e a recursos como lista de contatos, entre outros.
5.5 Disponibilidade em Dispositivo Móvel
• WAP: Desde a criação do WAP, as empresas associadas à OMA (All Mobile
Alliance) provêem em seus dispositivos suportes ao WAP. Atualmente, suportam
a versão 2.0 do WAP, mas mantendo compatibilidade com versões anteriores.
Entretanto, esta compatibilidade pode variar entre aparelhos ficando a decisão
por parte do fabricante;
47
• JME: Atualmente a maior parte dos celulares fabricados chega aos consumidores com alguma implementação do JME, porém, dispositivos mais antigos
não provêem esse suporte o que evita o uso da tecnologia para quem possui
modelos pouco recentes.
5.6 Frameworks
• WAP: Até o presente momento de realização da pesquisa não foi encontrado
framework relevante para auxilio na construção de aplicativo WAP.
• JME: Possui vários frameworks disponíveis para melhorar a produtividade no
processo de desenvolvimento. Alguns dos mais utilizados para aplicações desktop e Web possuem versões ou semelhantes para JME. Por exemplo, Mobile
JUnit para testes unitários, MEChart para geração de gráficos, Floggy para persistência de dados, entre outros.
5.7 Persistência de Dados
• WAP: A persistência de dados em aplicativos WAP é realizada através da integração de tecnologias como ASP (Active Server Pages), JSP (Java Server
Pages) e ColdFusion. A versão 2.0 do WAP possui uma interface de persistência de dados para gravar e recuperar dados tanto do dispositivo móvel quanto de
um dispositivo de memória instalada.
• JME: Amplas alternativas para persistência. A CLDC trabalha com API do RMS
por padrão, mas existe a possibilidade de utilização do Floggy, framework que
abstrai a complexidade existente no seu uso. Para CDC as possibilidades são
ainda maiores como a utilização de SGBDs (Sistema Gerenciador de Banco de
Dados) otimizados Oracle, Sybase e outros.
5.8 Interface com Usuário
• WAP: A camada WAE provê elementos para o desenvolvimento visual como
WML que possui textos formatados (itálico, negrito e sublinhado) entrada de dados. Versões anteriores a 1.2.1 proviam textos e imagens (WBMP) em preto e
48
branco. A partir da versão 2.0 é possível utilizar textos coloridos, assim como
imagens GIF, JPEG e PNG, e outros recursos que tornam um aplicativo mais
atraente como o uso da linguagem de estilo CSS Mobile (versão móvel do CSS).
• JME: Além da API básica, a plataforma também possui algumas bibliotecas de
componentes com recursos mais avançados como o LWUIT (oficial da SUN),
JavaPolish, J4ME. Outro recurso muito utilizado e, uma alternativa as citadas
bibliotecas, é a criação de telas através de imagens vetoriais em SVG, onde os
componentes podem ser gerados através do mapeamento da imagem.
Para uma melhor visualização das características das tecnologias apresentadas, a
tabela 1 exibe as comparações:
49
Ambiente de
Desenvolvimento
RAD
Conectividade
Segurança de
Informação
Acesso Serviço
Local
Compatibilidade
WAP
JME
-
NetBeans, Eclipse
IP, TCP e HTTP
HTTP, TCP, SMS
Bluetooth
HTTPS e bibliotecas
externas
JSR 75
Camada WTLS - SSL 3
Interface WTAI
Framework
Aparelhos com mini-browser e
suporte a WML/XHTML-MP
-
Persistência de
Informação
Interação com ASP, JSP e
ColdFusion
Interface com
Usuário
KVM
Mobile JUnit, MEChart,
Floggy
Frameworks, SGBDs
otimizados
Versões anteriores a 1.2.1:
Linguagem WML, imagens WBMP
(imagem preto-e-branco), textos
formatados (itálico, negrito e
sublinhado)
LWUIT (oficial da
SUN), JavaPolish,
J4ME, imagens
vetoriais em SVG
A partir da versão 2.0:
Imagens GIF, JPEG e PNG, CSS
Mobile, linguagem xHTML-MP
Tabela 1: Comparação WAP x JME
5.9 Comparação entre JME e WAP
Tanto JME quanto WAP possuem pontos fortes e fracos. Alguns dos recursos mostrados na tabela 1 cumprem muito bem o seu papel para cada tecnologia, levando em
consideração suas diferenças. Tanto o WAP quanto o JME oferecem bons ambientes
de desenvolvimento, acesso a recursos específicos do aparelho celular e um sólido
suporte à conectividade.
A principal vantagem do WAP é a sua disponibilidade na maior parte dos aparelhos celulares. Para oferecer suporte à tecnologia, basta que o dispositivo possua
um simples micro-browser que interprete seus protocolos e, para JME, necessita da
50
implementação de suas especificações, o que seria inviável para alguns com poucos
recursos de hardware. O ponto forte do JME é a quantidade de recursos oferecidos
pela plataforma. Uma vez que o aparelho possui capacidade para suportar a tecnologia, pode-se explorar muitas características do dispositivo e, com WAP, seu leque de
possibilidades é mais restrito.
Embasado por esta análise comparativa decidiu-se adotar as duas tecnologias, de
forma a aproveitar suas características para alcançar áreas distintas. Como um dos
principais objetivos do projeto é tornar a aplicação disponível para acesso na maior
parte dos celulares, uma vez que existem diferentes modelos de diferentes fabricantes
disponíveis no mercado, o WAP foi escolhido para implementar uma solução destinada
aos clientes da clínica. E, como os casos de uso para o ortodontista são diferentes
dos clientes, o JME será adotado para desenvolver uma solução específica para o
mesmo, possibilitando focar maiores recursos às suas necessidades.
51
6
ESTUDO DE CASO: SISTEMA
MOBODONTO
Esta seção tem como objetivo apresentar o sistema proposto como estudo de caso.
Desta forma, serão descritos os principais processos, e etapas, envolvidos no seu
desenvolvimento, assim como uma discussão sobre arquitetura, padrões e melhores
soluções adotadas. Dentro dos processos citados incluem-se a fase de levantamento
de requisitos, análise e projeto, responsáveis por estabelecer um conhecimento maior
a respeito das particularidades do negócio.
6.1 Modelo de Desenvolvimento
Para auxiliar o desenvolvimento do sistema foi adotado o modelo em cascata. Segundo [42], o modelo em cascata define uma abordagem sistemática e seqüencial
que se inicia com a especificação dos requisitos pelo cliente e evolui ao longo do
planejamento passando pelas fases de modelagem, construção e implantação do software buscando garantir, ao final do processo, a qualidade do sistema. Este modelo
foi escolhido por ser um paradigma já consolidado no mercado além de satisfazer as
necessidades do projeto devido à baixa complexidade do sistema proposto aliado ao
fato dos requisitos serem bem definidos e pouco variáveis.
6.2 Especificação de Requisitos
Segundo [43], a especificação de requisitos busca compreender o problema e levantar
todas as necessidades do futuro sistema a ser desenvolvido. Esta seção foi desenvolvida usando a técnica de modelagem de casos de uso apresentando os diagramas
de caso de uso, descrição dos casos de usos identificados e o mini-mundo, sendo este
uma breve descrição do domínio do problema.
52
6.2.1 Descrição do Mini-Mundo
O gestor da clínica necessita fazer um controle de seus funcionários e para isso deseja armazenar os dados como nome do funcionário, data de nascimento, telefone
residencial, telefone celular, endereço, email e a função exercida. Além disso, precisa controlar seus parceiros mantendo seus dados armazenados como razão social,
nome fantasia, CNPJ, telefone, fax, endereço e contatos. A clínica também necessita
de um controle de seus clientes e, portanto deseja guardar o nome do cliente, data
de nascimento, telefone residencial, telefone comercial, telefone celular, endereço e
email.
Para melhor organizar os atendimentos aos clientes será necessário um agendamento
de consultas e, para tal objetivo, será preciso conhecer o nome do cliente, o telefone,
o horário e a data da realização da consulta. Dessa maneira, complementando a necessidade citada acima, a clínica necessita visualizar uma agenda com as consultas
marcadas exibindo os horários e pacientes envolvidos. Além disso, é preciso gerar
um relatório de consultas e pacientes, como uma forma de agregação de informações
para controle e possíveis tomadas de decisões estratégicas. O relatório de consultas deve mostrar as consultas com suas respectivas datas e horários, procedimento
realizado e nome do paciente. No relatório de pacientes, devem ser mostradas informações a respeito do mesmo como nome, telefone e endereço.
O gestor também requer um controle do seu financeiro. Para isso, precisa registrar
os pagamentos de consultas dos clientes e visualizar um relatório contendo os valores pagos mensalmente.
A clínica necessita dispor uma forma de acesso para os clientes. Desta maneira, os
clientes devem poder visualizar suas consultas contendo as informações sobre a data
e horário marcados. Além disso, como uma alternativa ao agendamento convencional
efetuado por telefone, devem poder sugerir o agendamento de consultas à clínica enviando as datas e horários disponíveis para a marcação. Como forma de controlar
seus pagamentos, os clientes também precisam visualizar seu financeiro onde serão
mostrados os tratamentos atuais e um histórico dos pagamentos das parcelas referentes a eles. Além disso, os clientes precisam visualizar seu correio de mensagens
onde serão recebidas mensagens enviadas pela clinica.
53
6.2.2 Modelo de Casos de Uso
Segundo [43], o modelo de caso de uso é uma representação das funcionalidades
externamente observáveis do sistema e dos elementos externos ao sistema que interagem com ele.
O sistema proposto foi subdividido em diagramas de pacotes que tem como propósito
prover uma visão de nível mais alto do sistema mostrando sua decomposição em subsistemas, como mostrado na figura 15.
Figura 15: Diagrama de Pacotes
O sistema foi dividido em dois pacotes como uma forma de separar os elementos
relacionados ao Cliente dos relacionados à Clínica. A divisão auxilia numa melhor
compreensão do domínio do problema, na reutilização de componentes e também podendo ser tratados de forma separada na fase de projeto.
Pacote Cliente: contém todas as funcionalidades que serão utilizadas pelo cliente.
Pacote Clínica: contém todas as funcionalidades que serão utilizadas pela clínica.
6.2.3 Diagramas de Casos de Uso
Segundo [43], um diagrama de caso de uso representa graficamente os atores, casos
de uso e relacionamentos entre esses elementos e tem o objetivo de ilustrar quais
elementos externos interagem com que funcionalidades do sistema. As figuras 16 e
17 ilustram os diagramas de casos de uso referentes aos pacotes Cliente e Clínica.
54
Figura 16: Diagrama de Caso de Uso do Pacote Cliente
Figura 17: Diagrama de Caso de Uso do Pacote Clínica
6.2.4 Descrição dos Casos de Uso
Nesta seção os casos de uso de maior relevância, mostrados nos diagramas da seção
6.1.3, são descritos.
55
6.2.4.1 Visualizar Consultas
Sumário: Ator usa o sistema para visualizar todas as suas consultas marcadas.
Ator: Cliente.
Precondições: O ator estar identificado no sistema.
Fluxo Principal:
1. O ator solicita ao sistema a visualização de suas consultas agendadas.
2. O sistema exibe as consultas com suas datas e horários e o caso de uso termina.
6.2.4.2 Sugerir Consultas
Sumário: Ator envia sugestão de data e horário para agendamento de uma nova
consulta.
Ator: Cliente.
Precondições: O ator estar identificado no sistema.
Fluxo Principal:
1. O ator solicita ao sistema os horários livres da semana para agendamento de
consulta.
2. O sistema exibe as datas e horários disponíveis para uma nova consulta.
3. O ator seleciona o dia e o horário desejado.
4. O sistema armazena as informações e o caso de uso termina.
6.2.4.3 Visualizar Correio
Sumário: Ator visualiza seu correio contendo as mensagens enviadas pela clínica.
Ator: Cliente.
Precondições: O ator estar identificado no sistema.
Fluxo Principal:
1. O ator solicita ao sistema a visualização do seu correio.
2. O sistema exibe a lista de mensagens existentes com seus respectivos títulos.
3. O ator seleciona a mensagem que deseja visualizar.
56
4. O sistema exibe o conteúdo da mensagem escolhida e o caso de uso termina.
Fluxo Alternativo (2) Excluir Mensagem:
1. O ator seleciona a mensagem que deseja excluir.
2. O sistema exclui a mensagem e volta ao passo 2.
6.2.4.4 Agendar Consulta
Sumário: Ator agenda consulta para um cliente no sistema.
Ator: Funcionário/Dentista
Precondições: Ator estar identificado no sistema o cliente estar cadastrado no sistema.
Fluxo Principal:
1. O ator informa data e hora livres para agendamento e o nome do cliente que
deseja marcar a consulta.
2. O sistema armazena as informações sobre a consulta.
3. O sistema envia mensagem de confirmação e caso de uso termina.
Pos-condições: A consulta desejada foi efetuada no sistema.
6.2.4.5 Visualizar Agenda
Sumário: Ator visualiza todas as consultas que serão realizadas no dia.
Ator: Funcionário/Dentista.
Precondições: O ator estar identificado no sistema.
Fluxo Principal:
1. O ator solicita ao sistema a visualização das consultas do dia.
2. O sistema retorna a lista das consultas do dia com os horários e clientes envolvidos e o caso de uso termina.
Fluxo Alternativo (2) Cancelar consulta:
57
1. O ator seleciona a consulta que deseja cancelar.
2. O sistema cancela a consulta.
3. O sistema envia uma mensagem informando o cliente sobre o cancelamento e
retorna ao passo 2.
Pos-condições: As consultas solicitadas foram exibidas e podem ou não terem sido
excluídas.
6.2.4.6 Emitir Relatório de Consultas
Sumário: Ator visualiza todas as consultas que serão realizadas no dia.
Ator: Funcionário/Dentista.
Precondições: O ator estar identificado no sistema.
Fluxo Principal:
1. O ator solicita ao sistema a visualização do relatório de consultas agendadas em
um determinado intervalo de data.
2. O sistema retorna a lista das consultas com os horários e clientes envolvidos.
Fluxo Alternativo (1) Visualizar consultas sugeridas:
1. O ator solicita ao sistema a visualização do relatório de consultas sugeridas em
um determinado intervalo de data.
2. O sistema retorna a lista das consultas com os horários e clientes envolvidos.
Fluxo Alternativo (1) Visualizar consultas canceladas
1. O ator solicita ao sistema a visualização do relatório de consultas canceladas em
um determinado intervalo de data.
2. O sistema retorna a lista das consultas com os horários e clientes envolvidos.
Pos-condições: As consultas solicitadas foram exibidas.
58
6.3 Especificação de Análise
Segundo [43], a análise corresponde à fase onde é realizado um estudo detalhado
dos requisitos levantados e então construídos modelos que representam o sistema e
no sistema proposto será utilizada a abordagem da Análise Orientada a Objetos. Esta
seção será dividida em três partes: Diagramas de Classes, Diagramas de Estados e
Diagramas de Seqüências.
6.3.1 Diagrama de Classes
Segundo [43], o diagrama de classes representa a estrutura das classes de objetos
do sistema e suas relações. As figuras 18 e 19 ilustram os diagramas de classes dos
pacotes Cliente e Clínica.
Figura 18: Diagrama de Classes do Pacote Cliente
59
Figura 19: Diagrama de Classes do Pacote Clínica
6.3.2 Diagrama de Estados
Segundo [44], o diagrama de estado mostra os estados e as transições que o objeto
de uma determinada classe pode assumir. As figuras 20, 21 e 22 ilustram o diagrama
de estados das classes Cheque, Parcela e Consulta.
Figura 20: Diagrama de Estados da Classe Cheque
60
Figura 21: Diagrama de Estados da Classe Parcela
Figura 22: Diagrama de Estados da Classe Consulta
6.3.3 Diagrama de Seqüência
Segundo [44], o diagrama de seqüência define a interação entre objetos e enfatiza
mais a seqüência temporal que os relacionamentos estáticos do objeto. As figuras 23,
24, 25, 26, 27 e 28 ilustram os diagramas de seqüência dos casos de usos descritos
na seção 6.1.4.
61
Figura 23: Diagrama de Seqüência do Caso de Uso Visualizar Consulta
Figura 24: Diagrama de Seqüência do Caso de Uso Sugerir Consulta
Figura 25: Diagrama de Seqüência do Caso de Uso Visualizar Correio
62
Figura 26: Diagrama de Seqüência do Caso de Uso Visualizar Agenda
Figura 27: Diagrama de Seqüência do Caso de Uso Agendar Consulta
Figura 28: Diagrama de Seqüência do Caso de Uso Emitir Relatório de Consultas
63
6.4 Especificação de Projeto
Esta seção contém a Especificação de Projeto para o sistema MobOdonto. Esta seção
foi divida em seis partes. A primeira parte apresenta a uma visão das tecnologias
utilizadas pelo sistema. A segunda parte apresenta a arquitetura do sistema e sua
divisão em camadas, além da discussão sobre cada uma delas e seus respectivos
diagramas de classe. A terceira apresenta o pacote utilizado para reusabilidade de
componentes no sistema. A quarta parte apresenta os diagramas de seqüências revisados para a fase de projeto. A quinta parte apresenta o projeto de interface com
usuário onde serão apresentados ícones, cores e mensagens utilizados no sistema.
A última parte mostra os diagramas de componente e implantação.
6.4.1 Tipo de Aplicação, Plataformas de Implementação, Tecnologias de Apoio e Hardware
O MobOdonto será um aplicativo ambiente WEB com alguns módulos que serão executados a partir de dispositivos móveis. As funcionalidades discutidas na especificação de análise Visualizar Correio, Visualizar Consultas e Sugerir Consultas, pertencentes ao pacote Cliente, serão implementadas em WAP e a funcionalidade Visualizar
Agenda do pacote Clínica em JME. Essas implementações terão como apoio as tecnologias apresentadas na tabela 2 abaixo.
Tecnologia
Linguagem de Programação
Linguagem de Marcação
SGBD
Tecnologias Auxiliares
Solução
Java
XHTML, XHTML-MP
MySQL 5.0
Ajax
Tabela 2: Tecnologias
Para que o sistema funcione de maneira eficiente são necessários alguns requisitos de
hardware e software. Abaixo são exibidas as tabelas que mostram todos os requisitos
que devem ser obedecidos para tal.
64
HardwareSoftware
Processador
Memória RAM
Servidor Web
Servidor de Aplicação Java
Requisito
x86
512MB
Apache 2.2
GlassFish v2
Tabela 3: Requisitos para o módulo Web
Tecnologia
WAP
JME
Compatibilidade
WAP 2.0
Nenhuma mensagem
Tabela 4: Requisitos para módulo Móvel
6.4.1.1
Framework Ajax
Para fins de melhorias nas requisições e respostas feitas pelas páginas Web ao servidor, foi desenvolvido um framework Ajax de pequeno porte que viabiliza essa melhoria. Como conseqüência, a aplicação estará se livrando de recargas de páginas
inteiras quando se pressiona um botão ou se digita um valor tornando-se, assim, em
um aplicativo mais rápido fazendo o usuário sentir-se como se estivesse trabalhando
em um sistema desktop dinâmico.
Além de eliminar as incômodas recargas de páginas, o JavaScript do framework se comunica com o servidor Web assincronamente. Em outras palavras, o código JavaScript
fará uma solicitação ao servidor, mas o usuário poderá inserir dados em formulários
Web e até mesmo clicar em botões - tudo isso enquanto o servidor Web estiver trabalhando em segundo plano. Em seguida, quando o servidor tiver terminado o processo, o framework dará suporte para atualizar apenas a parte da página que requer mudanças. Assim, o framework combina o poder das solicitações assíncronas
com a atualização de páginas sem recargas tendo um aplicativo Web responsivo e
dinâmico.Assim como mostra a figura 29, o framework envia as solicitações, independente do navegador de Internet, via JavaScript para o servidor e sua resposta só terá
os dados que a página precisa, sem qualquer marcação ou apresentação.
65
Figura 29: Comunicação entre as páginas Web e o servidor
A comunicação entre as páginas Web e o servidor é realizada com uso do formato
JSON (Javascript Object Notation), que, em linhas gerais, é construído com base em
uma coleção de pares chave/valor que definem propriedades e seus valores e, que
é uma alternativa ao tradicional XML (eXtensible Markup Language). Segundo [45],
para enviar informações entre uma página Web e um servidor, precisará de alguma
maneira de formatá-las sendo o JSON uma maneira de enviar e retornar dados e sua
escolha dada pela complexidade do aplicativo e pela equipe de desenvolvedores. Assim, foi adotado o formato JSON por apresentar maior facilidade de montagem dos
pacotes de dados em relação ao formato XML.
A atualização das páginas Web é realizada utilizando o HTML DOM (Document Object
Model) que é um padrão W3C (World Wide Web Consortium). Segundo [46], o HTML
DOM define um conjunto padrão de objetos de HTML, e uma forma padrão de acessar
e manipular documentos HTML. Todos os elementos HTML, juntamente com os seus
atributos, podem ser acessados através do DOM. O conteúdo pode ser alterado ou
suprimido, e novos elementos podem ser criados, independente da plataforma.
6.4.1.2 SSL e Certificado Digital
Visando maior segurança no tráfego das informações entre as páginas Web, as informações serão criptografadas por certificados digitais SSL (Secure Sockets Layer ).
Segundo [47], SSL é uma tecnologia de segurança que é comumente utilizada para
codificar os dados trafegados entre o computador do usuário e um site da Internet.
O protocolo SSL, através de um processo de criptografia dos dados, previne que
os dados trafegados possam ser capturados, ou mesmo alterados no seu curso en-
66
tre o navegador (browser ) do usuário e o site com o qual ele está se relacionando,
garantindo desta forma que informações sigilosas possam ser trafegadas com segurança.
Segundo [48], O certificado digital é um documento eletrônico que tem como aspecto
principal duas chaves: uma pública, que é de conhecimento geral, e outra privada,
que deve ser mantida em sigilo e com toda a segurança pelo titular do certificado.
Esse par de chaves tem uma série de características importantes. Primeiramente, a
tecnologia utilizada na geração dessas chaves é a chamada "criptografia assimétrica",
que é o método mais comum para autenticar transações conduzidas pela Internet. Em
segundo lugar, embora elas sejam matematicamente relacionadas, é impossível calcular uma chave a partir da outra. Daí, a denominação de "assimétricas". Terceiro,
uma chave desempenha a função inversa da outra: o que uma delas faz, somente a
outra pode desfazer. Por exemplo, a chave privada é usada para assinar o conteúdo
de um documento, enquanto a chave pública é usada para validar essa assinatura.
O certificado digital é obtido de uma autoridade certificadora e contém o nome do
titular (pessoa física ou jurídica), o número de série, a data da sua validade, a chave
pública do titular e a assinatura (eletrônica) da Autoridade Certificadora, que garante o
próprio certificado. Ou seja, devido aos certificados digitais, uma transação eletrônica
realizada via internet torna-se mais segura, pois permite que as partes envolvidas apresentem cada uma, as suas credenciais para comprovar, à outra parte, a sua real
identidade.
6.4.2 Arquitetura do Sistema
A figura 30 ilustra a arquitetura do sistema utilizando divisão em pacotes. O diagrama
de pacotes é o mesmo ilustrado na especificação de análise com a única diferença de
que foi inserido o novo pacote Utilitário que ajudará na reutilização de componentes no
sistema proposto e em outros contextos. As dependências entre os pacotes também
são as mesmas com diferença de que os pacotes Cliente e Clínica fazem requisição
de serviços para o novo pacote incorporado ao diagrama.
67
Figura 30: Arquitetura do Sistema
6.4.3 Arquitetura em Camadas
Os pacotes Clínica e Cliente, ilustrados na figura 30, foram decompostos em novos
pacotes sendo eles: Domínio do Problema (DP), Gerência de Tarefas (GT), Gerência
de Dados (GD) e Interface com o Usuário (IU) de acordo com o modelo MVC Estendido [49] e tendo suas classes identificadas por estereótipos. Essa abordagem deu
origem a novos diagramas de pacotes, ilustrados nas figuras 31 e 32, e que o conteúdo destes serão discutido nas próximas subseções.
Figura 31: Arquitetura em Camadas do Pacote Cliente
68
Figura 32: Arquitetura em Camadas do Pacote Clinica
A dependência entre os pacotes, ilustrados nas figuras 31 e 32, mostram a requisição
de serviços para realização das funcionalidades do sistema. Esta divisão em pacotes
foi baseada usando o padrão arquitetural MVC Estendido que tem como objetivo criar
uma independência e divisão de responsabilidades entre as partes que envolvem o
sistema. Desta forma obtêm-se uma maior coesão entre as classes do sistema facilitando possíveis mudanças em qualquer uma das camadas.
6.4.3.1 Domínio do Problema (DP)
O pacote de domínio do problema é o local onde estão contidas as classes, suas
multiplicidades e associações que modelam o domínio do problema. As figuras 33 e 34
apresentam o diagrama de classes do domínio do problema DP_Cliente e DP_Clínica
sendo relativos aos pacotes Cliente e Clínica, respectivamente.
69
Figura 33: Diagrama de Classes do Pacote DP_Cliente
70
Figura 34: Diagrama de Classes do Pacote DP_Clínica
6.4.3.1.1 Considerações
A modelagem de classes para o contexto de endereço pode ser construída de várias
maneiras, mas, preferencialmente, deve ser passível de atualização com a base dos
Correios. As atualizações são realizadas freqüentemente e uma possível modelagem
seria essa como apresentada na figura 35.
Figura 35: Modelo baseado na escolha do endereço
O modelo acima apresenta algumas características como:
• É necessária a escolha do endereço manualmente bem como a inserção dos
71
dados referentes à classe Complemento e os dados referentes ao CEP são buscados automaticamente;
• Caso um número de CEP ou endereço não existam, estes poderão ser cadastrados na base
• Evita dados redundantes entre Endereço e Complemento, pois um endereço
pode ou não possuir um complemento associado. Diferente se os campos da
classe Complemento estivessem na classe Endereço, neste caso, existiriam dados nulos ou redundantes;
• Eficiência por busca de dados pode ser comprometida por conseqüência da complexidade da estrutura;
• Apresenta problemas em uma atualização da base disponibilizada pelos Correios. Os números de CEP cadastrados manualmente podem ser sobrescritos
ou não pelos novos.
Outra forma de modelagem dessa estrutura é a mostrada na figura 36.
Figura 36: Modelo baseado na escolha do endereço e CEP
Este modelo apresenta algumas características como:
• São necessárias as escolhas do número do CEP e do Endereço manualmente
bem como a inserção dos dados referentes à classe Complemento;
• Caso um número de CEP ou endereço não existam, estes poderão ser cadastrados na base
• Evita dados redundantes entre Endereço e Complemento, pois um endereço
pode ou não possuir um complemento associado. Diferente se os campos da
classe Complemento estivessem na classe Endereço, neste caso, existiriam dados nulos ou redundantes;
72
• Eficiência por busca de dados pode ser comprometida por conseqüência da complexidade da estrutura;
• Apresenta problemas em uma atualização da base disponibilizada pelos Correios. Os números de CEP cadastrados manualmente podem ser sobrescritos
ou não pelos novos.
Após estudos realizados, a modelagem que apresentou mais eficiência com atualizações e respostas às buscas é mostrado na figura 37.
Figura 37: Modelo baseado na escolha do CEP
Este modelo apresenta algumas características como:
• É necessária apenas a escolha do número do CEP. Os dados referentes às
classes de Cidade, Bairro e CEP são armazenados na classe Cliente;
• A redundância dos dados, nas classes Funcionário e Cliente, têm por finalidade
deixar a base de CEP atualizada de acordo com a fornecida pelos Correios.
Assim, atualizações fornecidas pelo órgão podem ser realizadas sem comprometimento dos dados já utilizados;
• Caso um número de CEP não exista, os novos dados podem ser cadastrados na
classe Cliente deixando a base de acordo com a fornecida pelos Correios;
• Alta eficiência na busca de dados por conseqüência da complexidade da estrutura.
Visando a segurança da informação existem algumas classes especializadas para
tratamento de controle de acesso e de auditoria. As figuras 38 e 39 mostram essas
classes, respectivamente.
73
Figura 38: Permissão de acesso
Figura 39: Classe responsável pela auditoria
Uma forma de proteção contra divulgação indevida de informações é fazer uso do controle de acesso dos usuários às funcionalidades do sistema. Como mostra a figura 38,
as classes de Rotina, de Função e de Permissão fazem o controle de todos os acessos às funcionalidades para cada grupo de acesso. Desta forma, é possível controlar
o conteúdo que cada grupo terá acesso com facilidade de manutenção dessas regras.
Uma prática comum de segurança em sistemas de informação é a adoção de auditoria que, no sistema proposto, consiste em armazenar as alterações feitas pelo usuário
nos dados do sistema. Como ilustra a figura 39, a classe Auditoria armazena dados
como o nome da tabela da base de dados em que ocorreu a alteração bem como o tipo
de funcionalidade que foi acessada - inclusão, alteração ou exclusão. A classe guarda
ainda a descrição dos dados alterados, o horário que o evento ocorreu e o usuário
que realizou o acesso através de seu código atribuído pela classe Token. Classe essa
responsável por armazenar o código do usuário e o seu horário de entrada no sistema.
A auditoria pode ser implantada em funcionalidades que forem necessárias e por determinadas ações. A classe Tabela, como mostra a figura 40, tem a especialidade de
controlar o último código da chave primária de cada tabela do banco de dados, bem
como sinalizar qual método será auditado, ou seja, qual dentre os métodos de incluir,
alterar e excluir a auditoria armazenará informações.
74
Figura 40: Classe Tabela
6.4.3.2 Gerência de Tarefas (GT)
No pacote de gerência de tarefas estão as classes que lidam com as regras de negócio
do sistema. As figuras 41 e 42 apresentam as classes para os pacotes GT_Cliente e
GT_Clínica respectivamente.
Figura 41: Diagrama de Classe do Pacote GT_Cliente
Figura 42: Diagrama de Classe do Pacote GT_Clinica
6.4.3.2.1 Padrão de Projeto Facade
Nos diagramas mostrados nas figuras acima, foi utilizado o padrão de projeto Facade. Segundo [50], o padrão Facade busca simplificar o uso de um sistema complexo
definindo uma interface especializada e simples, reduzindo o número de objetos com
os quais o objeto cliente deve lidar. Seu uso reduz problemas futuros na manutenção
da aplicação, uma vez que o cliente terá apenas a visão da classe responsável pela
implementação do Facade, não sofrendo impacto por possíveis alterações nas classes
de controle. Abaixo são exibidos dois diagramas onde a figura 43[50] representa um
75
diagrama onde não é utilizado o padrão e a figura 44[50] outro em que é incluído seu
uso.
Figura 43: Exemplo de diagrama sem o uso do padrão Facade
Figura 44: Exemplo de diagrama usando o padrão Facade
Como resultado de estudo do padrão de projeto facade, os diagramas ilustrados nas
figuras 41 e 42 foram reformulados para contemplar a utilização deste padrão. As figuras 45 e 46 ilustram respectivamente os diagramas de classe dos pacotes GT_Cliente
e GT_Clinica.
Figura 45: Diagrama de Classe do Pacote GT_Cliente reformulado
76
Figura 46: Diagrama de Classe do Pacote GT_Clinica reformulado
6.4.3.3 Gerência de Dados (GD)
No pacote gerência de dados estão as classes responsáveis por realizarem a persistência das informações do sistema em um banco de dados.
Figura 47: Diagrama de Classe do Pacote GD_Cliente
77
Figura 48: Diagrama de Classe do Pacote GD_Clínica
6.4.3.3.1 Padrão de Projeto Singleton
O padrão de projeto Singleton tem como objetivo garantir a existência de apenas uma
instância de uma determinada classe em qualquer ponto do sistema [51]. Baseado
nesta definição, o padrão foi adotado para evitar a criação desnecessária de objetos,
pois a cada conexão realizada com o banco de dados um objeto diferente era criado
causando desperdício de memória. Como resultado de estudo do padrão de projeto
Singleton, os diagramas ilustrados nas figuras 47 e 48 foram reformulados para contemplar a utilização deste padrão. As figuras 49 e 50 ilustram respectivamente os
diagramas de classe dos pacotes GD_Cliente e GD_Clinica.
Figura 49: Diagrama de Classe do Pacote GD_Cliente reformulado
78
Figura 50: Diagrama de Classe do Pacote GD_Clínica reformulado
6.4.3.3.2 Modelo de Entidade e Relacionamento (MER)
O sistema MobOdonto utilizará um banco de dados relacional para a persistência de
dados e, assim, foi necessário realizar o mapeamento Objeto-Relacional. O Modelo
de Entidade e Relacionamento foi dividido em duas figuras para melhor interpretação
de seu conteúdo. As figuras 51 e 52 ilustram o modelo de entidade e relacionamento.
Para a criação do MER mencionado foi utilizada a ferramenta DBDesigner 4.
79
Figura 51: Modelo de Entidade e Relacionamento (MER): Parte A
80
Figura 52: Modelo de Entidade e Relacionamento (MER): Parte B
81
6.4.3.4 Interface com Usuário (IU)
As figuras 53 e 54, respectivamente, apresentam os diagramas de classes referentes
ao componente de Interface com o Usuário do pacote Clínica e Cliente.
Figura 53: Diagrama de Classe do Pacote IU_Cliente
Figura 54: Diagrama de Classe do Pacote IU_Clínica
6.4.4 Pacote Utilitários
Este pacote contém as classes e pacotes comuns aos pacotes Cliente e Clínica e
serão descritos a seguir de forma breve.
6.4.4.1 Banco
Contém a classe cheque para tratar da manipulação de cheques. A figura 55 apresenta o pacote Banco.
82
Figura 55: Diagrama de Classe do Pacote Banco
Apesar de este pacote possuir apenas uma classe, novas classes podem ser incorporadas para contemplarem outros contextos em outras aplicações.
6.4.4.2 Login
O pacote Login contém todas as classes que tratam os aspectos relacionados à segurança dentro do sistema.
Figura 56: Diagrama de Classe do Pacote Login
83
6.4.4.3 Pessoa
O pacote Pessoa contém as classes para tratar as informações relacionadas ao endereço de uma pessoa.
Figura 57: Diagrama de Classe do Pacote Pessoa
6.4.4.4 DAO
O pacote DAO contém as classes reutilizáveis que são responsáveis pela persistência
de dados e auxiliam a execução de tarefas na camada de Gerencia de Dados dos
pacotes Cliente e Clinica. A figura 58 ilustra o diagrama de classe para o pacote DAO.
Figura 58: Pacote Utilitário DAO
6.4.5 Diagrama de Seqüência
Os diagramas de seqüência apresentados na especificação de análise foram reformulados para contemplar a arquitetura em camadas proposta na seção 6.3.3 deste
84
documento. Os diagramas para os casos de uso Sugerir Consulta, Visualizar Consulta e Visualizar Correio do pacote Cliente e o caso de uso Visualizar Agenda, Agendar Consulta e Emitir Relatório de Consultas do pacote Clínica serão apresentados
respectivamente nas figuras 59, 60, 61, 62, 63 e 64.
Figura 59: Diagrama de Seqüência do Caso de Uso Visualizar Consulta
Figura 60: Diagrama de Seqüência do Caso de Uso Sugerir Consulta
Figura 61: Diagrama de Seqüência do Caso de Uso Visualizar Correio
85
Figura 62: Diagrama de Seqüência do Caso de Uso Visualizar Agenda
Figura 63: Diagrama de Seqüência do Caso de Uso Agendar Consulta
Figura 64: Diagrama de Seqüência do Caso de Uso Emitir Relatório de Consultas
6.4.6 Padrões de Interface
Para auxiliar a usabilidade do sistema por parte do usuário, textos, ícones, cores e
mensagem podem ser utilizados. Esta seção mostrará os itens, citados anteriormente,
que serão utilizados no sistema proposto. Esta seção foi dividida em três partes sendo
elas: Ícones, Cores e Mensagem.
86
6.4.6.1 Ícones
Para auxiliar na navegabilidade e identificação de funcionalidades presentes no sistema, a figura 65 mostra os ícones utilizados e suas respectivas funcionalidades as
que estão relacionados.
Figura 65: Ícones
6.4.6.2 Cores
Para que o usuário esteja alerta e tenha facilidade de leitura sobre os dados apresentados no sistema, a tabela 5 mostra uma lista de cores e suas respectivas funcionalidades utilizadas no desenvolvimento do sistema.
Item
Mensagens de alerta
Texto padrão
Plano de fundo
Hiperlink
Hiperlink visitado
Código Hexadecimal
FF0000
000000
FFFFFF
FFFFFF
0000CC
Tabela 5: Cores
As cores mostradas na tabela acima estão utilizando o padrão de cores no formato
RGB.
6.4.6.3 Mensagens
O usuário precisa estar ciente de que todas suas funcionalidades foram executadas
e também se toda informação apresentada, persistida, excluída e alteradas obtiveram
sucesso ou insucesso em suas execuções no sistema. A tabela 6 apresenta as mensagens utilizadas.
87
Ação
Visualizar Mensagem
Visualizar Mensagem
Acesso ao Banco de Dados
Excluir Mensagem
Excluir Mensagem
Visualizar Agenda
Visualizar Agenda
Mensagem
Erro ao exibir mensagem
Nenhuma mensagem
Erro ao acessar banco de dados
Mensagem excluída com sucesso
Erro ao excluir mensagem
Erro ao exibir agenda
Nenhuma consulta agendada
Tabela 6: Mensagens do Sistema
6.4.6.4 Diagrama de Navegabilidade
Segundo [52], o diagrama de navegabilidade mostra a navegação entre as diferentes
funcionalidades do sistema, isto é, apresenta a seqüência em que as telas ou janelas
do sistema podem ser navegadas pelo usuário para o mesmo realize as funcionalidades representadas pelos casos de uso definidos para cada pacote do sistema. A
figura 66 apresenta o diagrama para o pacote Cliente e a figura 67 para o pacote
Clínica.
Figura 66: Diagrama de Navegabilidade do Pacote Cliente
88
Figura 67: Diagrama de Navegabilidade do Pacote Clínica
6.4.6.5 Aspectos de Usabilidade e Eficiência
Segundo [53], os aspectos referentes à usabilidade são definidos para mostrar a relação de interação entre o usuário e o sistema mostrando os níveis de efetividade,
satisfação, facilidade de uso e aprendizado do sistema desenvolvido.
Devido às várias limitações provenientes da utilização dos dispositivos móveis, o sistema procura empregar o uso de boas práticas que auxiliem usabilidade. Todos os
componentes buscam ser objetivos procurando diminuir o esforço necessário para realizar determinada tarefa e todas as ações do sistema possuem nomes diretos e sugestivos para uma maior compreensão do que será feito quando o mesmo for acionado
evitando um tempo maior na resposta e na realização da tarefa desejada pelo usuário.
As tabelas 7 e 8, mostram as estimativas de eficiência relacionadas ao tempo de
resposta dos casos de uso dos pacotes Cliente e Clínica.
89
Caso de Uso
Visualizar correio
Visualizar consultas
Sugerir consultas
Freqüência de Utilização
10dia
50dia
5mês
Tempo Máximo Esperado
5 segundos
5 segundos
3 segundos
Tabela 7: Eficiência dos Casos de Uso do Pacote Cliente
Caso de Uso
Visualizar agenda
Agendar consulta
Emitir relatório de
consultas
Freqüência de Utilização
5dia
10dia
3mês
Tempo Máximo Esperado
3 segundos
5 segundos
10 segundos
Tabela 8: Eficiência dos Casos de Uso do Pacote Clinica
6.4.7 Diagrama de Componentes
Segundo [43], o diagrama de componentes mostra os vários componentes de software
do sistema e suas respectivas dependências. Cada componente possui elementos
que definem uma funcionalidade dentro do sistema visando à reutilização. A figura 68
ilustra o diagrama de componentes do sistema.
Figura 68: Diagrama de Componentes do Sistema MobOdonto
6.4.8 Diagrama de Implantação
Segundo [43], o diagrama de implantação representa a topologia física do sistema e,
opcionalmente, os componentes que são executados nela. Através deste diagrama é
possível ter uma visão da estrutura necessária para implantação do sistema.
90
Figura 69: Diagrama de Implantação do Sistema MobOdonto
6.4.9 Protótipo
Nesta seção serão apresentados os protótipos das telas do sistema MobOdonto contemplando as funcionalidades escolhidas e estudas para o cumprimento dos objetivos
discutidos na seção 3 deste documento. Para a versão WAP, as figuras 70, 71, 72
ilustram as telas para as respectivas as funcionalidades: Login, Visualizar Correio, Visualizar Consultas. As figuras 73 e 74 ilustram a funcionalidade Sugerir Consulta. A
tela principal que dá acesso a essas funcionalidades é ilustrada na figura 74. As figuras foram feitas com auxílio do simulador WAP Proof. A figura 71 ilustra a utilização
de abreviação de informação devido à resolução do aparelho simulado.
Figura 70: Funcionalidade Login
91
Figura 71: Funcionalidade Visualizar Correio
Figura 72: Funcionalidade Visualizar Consultas
Figura 73: Funcionalidade Sugerir Consultas: Escolha do dia da semana
Figura 74: Funcionalidade Sugerir Consultas: Escolha do horário disponível
92
Figura 75: Tela principal
Para a versão JME, as figuras 76, 77, 78 ilustram as telas para a funcionalidade de
Visualizar Consultas. A tela principal que dá acesso a essa funcionalidade é ilustrada
na figura 76. Todas as figuras foram feitas com auxílio da IDE Eclipse utilizando o
emulador disponível no JME SDK 3.0.
Figura 76: Tela principal para seleção da funcionalidade
Figura 77: Funcionalidade Visualizar Consultas: Escolha do horário
93
Figura 78: Funcionalidade Visualizar Consultas: Visualizando dados do cliente
Para a versão Web, as figuras 79 e 80 ilustram as telas para as respectivas as funcionalidades: Login e Visualizar Consultas. Todas as figuras foram feitas com auxílio
do software Macromedia Dreamweaver 8.
Figura 79: Funcionalidade Login
Figura 80: Funcionalidade Visualizar Consultas
94
6.4.10 Estrutura de Sistema
O sistema discutido neste documento utiliza três tecnologias distintas para apresentar
suas informações geradas ao usuário. Os módulos propostos WEB, WAP e JME utilizam respectivamente JSON, HTML e XML para representação dessas informações.
Neste contexto foi identificada a necessidade do desenvolvimento de um componente
(wrapper ), que possui a responsabilidade na identificação, interpretação, conversão
e o envio das informações que devem ser apresentadas em cada um dos módulos
mencionados, como sendo a solução para a situação. A figura 81 ilustra o diagrama
de classe para ilustrar este componente.
Figura 81: Componente Wrapper
É importante ressaltar que mais classes(wrappers) podem ser adicionadas tornando
assim o sistema mais robusto.
Aplicando o que foi discutido no início nesta seção até agora, temos a figura 82 ilustrando a integração do novo componente no sistema proposto e em seguida é descrito
seu funcionamento.
95
Figura 82: Estrutura do Sistema
O funcionamento dá-se da seguinte forma: a partir de um dos módulos é feita a requisição ao sistema para realização de determinada tarefa. Estas requisições são centralizadas em uma Servlet que as recebe e de acordo com o que foi solicitado, redireciona para a camada de controle que contém a implementação correta do padrão
Facade para que o sistema que realiza a tarefa. O resultado da requisição feita por um
dos módulos é então retornada para a Servlet que identifica de qual módulo originouse a requisição acionando assim a respectivo wrappers (empacotador) para realizar
o tratamento dos dados resultantes da requisição para que o módulo apresente as
informações ao usuário.
96
7
CONCLUSÃO
Esta seção tem como objetivo apresentar as considerações finais do projeto proposto,
citar as dificuldades encontradas durante todo o processo de desenvolvimento do sistema, mostrar os retornos de aprendizado e experiência obtidos, além de levantar
possíveis melhorias e incrementos de forma a tornar o projeto mais robusto.
7.1 Conclusão dos Objetivos
De acordo com as expectativas das pesquisas realizadas, foi utilizada a tecnologia
WAP para implementar as funcionalidades referentes ao paciente, a tecnologia JME
foi adotada para que o ortodontista tenha acesso e a tecnologia JSP para a Web, por
sua vez, contemplou toda a funcionalidade necessária para um controle administrativo
utilizando a mobilidade oferecida pela Internet.
Desta forma, a implementação de um ambiente de serviços via Web que aperfeiçoe e
flexibilize o atendimento aos pacientes do consultório tomando como base para a escolha das melhores práticas e ferramentas de desenvolvimento, através de pesquisas,
foi alcançada com sucesso superando, assim, o inicialmente almejado.
7.2 Dificuldades Encontradas
No desenvolvimento do módulo Web ocorreram dificuldades para encontrar ferramentas e componentes visuais que utilizassem a tecnologia Ajax e, ao mesmo tempo, que
fossem passíveis de rápido aprendizado e de fácil manutenção. Assim como ocorreu
no desenvolvimento do módulo JME em encontrar componentes visuais que não comprometessem no desempenho da aplicação dando, ao mesmo tempo, uma agradável
experiência de uso do sistema ao usuário.
97
Outro percalço foi encontrar um software simulador do ambiente WAP que fosse gratuito. A maioria encontrada no mercado oferece mais limitações do que funcionalidades
propriamente ditas restringindo, assim, a visualização dos resultados do desenvolvimento desse módulo. Na comunicação dos módulos de celulares com o servidor de
aplicação houve um entrave no que se diz respeito ao formato dos dados trafegados.
Se estes seriam em formato texto, em XML ou outro criado apenas para este propósito.
7.3 Retorno Para o Grupo
Com o desenvolvimento deste projeto houve um ganho de conhecimento e de experiência significativos na área de levantamento de requisitos, analise, projeto, implementação e testes no desenvolvimento de uma solução em Web, WAP e JME - tecnologias
em evidência nos dias atuais.
Além de ter existido a oportunidade de realização de pesquisa e desenvolvimento
da solução em ambiente real, o que acentua a curva de aprendizado dos membros do
grupo criando, também, como fruto de toda pesquisa uma ferramenta comercializável
destinada a consultórios odontológicos.
7.4 Trabalhos Futuros
Como continuidade das pesquisas e desenvolvimento é possível a adoção do uso de
tecnologias como o Bluetooth em um caso de uso adicional no pacote Clínica para
o ortodontista uma vez que a API da JSR-82 para JME seria a mais viável. Como
caso de uso para usufruir desta tecnologia, o cadastro de uma consulta poderá ser
feita com a persistência desses dados na memória do dispositivo móvel e, em um
momento oportuno, essas informações poderão ser transferidas para um computador
pessoal com acesso à Internet e, este, atualizar a agenda de consultas com a base.
Ainda no ambiente JME, pode-se realizar mais pesquisas a fim de encontrar padrões
comuns, ou que sejam próximos, em aparelhos que contemplem a tecnologia para
o desenvolvimento da solução destinado a estes padrões reconhecidos explorando,
assim, mais recursos que o aparelho oferece. E, desta forma, contemplar todas as
98
funcionalidades do sistema para esta tecnologia.
Para a Web pode-se fazer uso de tecnologias como o JSF para usufruir de seus componentes não comprometendo o desempenho do sistema.
99
REFERÊNCIAS
[1] UOL.
Brasil
é
11o
país
em
número
de
internautas.
Acessado
em:
16
out.
2008.
Disponível
em:
<http://tecnologia.uol.com.br/ultnot/bbc/2007/03/06/ult4449u5.jhtm>.
Em
dois
anos,
número
de
internautas
residenciais
[2] FOLHA.
cresce 78% no Brasil. Acessado em 20/10/2008. Disponível em:
<http://www1.folha.uol.com.br/folha/informatica/ult124u451040.shtml>.
[3] UOL. iPhone 3G: 11 aplicativos que você precisa conhecer. Acessado em
20/10/2009. Disponível em: <http://idgnow.uol.com.br/telecom/2008/06/13/iPhone3g-11-aplicativos-que-voce-precisa-conhecer>.
[4] UOL.
Conheça
10
aplicativos
que
venceram
o
Android
veloper
Challenge.
Acessado
em
20/10/2009.
Disponível
<http://idgnow.uol.com.br/telecom/2008/09/10/conheca-10-aplicativos-quevenceram-o-android-developer-challenge>.
Deem:
[5] UOL. A História do Celular. Acessado em 20/10/2008. Disponível em:
<http://idgnow.uol.com.br/galerias/idgphotoalbum.2006-02-03.9367726313>.
[6] UOL.
Celulares
passam
de
140
milhões
Brasil.
Acessado
em
20/10/2008.
Disponível
<http://www1.folha.uol.com.br/folha/informatica/ult124u451040.shtml>.
no
em:
[7] UOL.
Brasil
lidera
uso
da
web
no
celular
na
América
Latina,
diz
pesquisa.
Acessado
em
20/10/2008.
Disponível
em:
<http://www1.folha.uol.com.br/folha/informatica/ult124u451040.shtml>.
3G.
Acessado
[8] WIKIPEDIA.
<http://pt.wikipedia.org/wiki/3G>.
em
20/10/2008.
Disponível
em:
[9] UOL. Por que as empresas de internet querem invadir o seu celular? Acessado
em 16/10/2008. Disponível em: <http://idgnow.uol.com.br/telecom/2008/02/27/porque-as-empresas-de-internet-querem-invadir-o-seu-celular>.
[10] AREHART, C. e. a. Professional WAP. [S.l.]: Birmingham: Wrox Press, 2000.
[11] WIKIPEDIA.
Proxy.
Acessado
<http://pt.wikipedia.org/wiki/Proxy>.
em
15/05/2009.
Disponível
em:
[12] MICROSYSTEMS, I. S. Developer Resources for Java Technology. Acessado em
18/10/2008. Disponível em: <http://java.sun.com>.
100
[13] MICROSYSTEMS, I. S. Java Technology: The Early Years. Acessado em
20/10/2008. Disponível em: <http://java.sun.com/features/1998/05/birthday.html>.
[14] TIOBE.
Visual
Programming
Languages
ular.
Acessado
em
20/10/2008.
Disponível
<http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html>.
Popem:
[15] MICROSYSTEMS, I. S. Java SE Overview. Acessado em 20/10/2008. Disponível
em: <http://java.sun.com/javase/>.
[16] MICROSYSTEMS, I. S. Java EE at a Glance. Acessado em 20/10/2008.
Disponível em: <http://java.sun.com/javaee>.
[17] MICROSYSTEMS, I. S. Java ME: the Most Ubiquitous Application
Platform for Mobile Devices. Acessado em 20/10/2008. Disponível em:
<http://java.sun.com/javame>.
[18] DEVMEDIA.
CONCEITOS
BASICOS
DAS
PLATAFORMAS
JAVA
E
J2ME.
Acessado
em
20/10/2008.
Disponível
em:
<http://www.devmedia.com.br/articles/viewcomp.asp?comp=6484>.
[19] MUCHOW, J. W. Core J2ME Tecnologia e MIDP. [S.l.]: Makron Books, 2004.
[20] MICROSYSTEMS, I. S. Java ME Platform Overview. Acessado em 20/10/2008.
Disponível em: <http://java.sun.com/javame/technology/index.jsp>.
[21] MICROSYSTEMS,
I.
S.
Connected
Limited
figuration
(CLDC).
Acessado
em
25/10/2008.
<http://java.sun.com/products/cldc/overview.html>.
Device
Disponível
Conem:
[22] MICROSYSTEMS,
I.
S.
Survey
of
Java
ME
day
(Update).
Acessado
em
25/10/2008.
Disponível
<http://developers.sun.com/mobility/getstart/articles/survey/>.
Toem:
[23] PROCESS, J. C. General JCP Questions. Acessado em 25/10/2008. Disponível
em: <http://jcp.org/en/introduction/faq>.
[24] MICROSYSTEMS, I. S. CLDC SPECIFICATION 1.0. 2006.
[25] MICROSYSTEMS, I. S. CLDC SPECIFICATION 1.1. Acessado em 27/10/2008.
[26] MICROSYSTEMS,
I.
S.
The
Generic
Connection
Framework.
Acessado
em
26/10/2008.
Disponível
em:
<http://developers.sun.com/mobility/midp/articles/genericframework>.
[27] MICROSYSTEMS, I. S. Java ME Technology - CDC. Acessado em 26/10/2008.
Disponível em: <http://java.sun.com/javame/technology/cdc/index.jsp>.
[28] MICROSYSTEMS, I. S. Personal profile overview. 2005.
[29] MICROSYSTEMS, I. S. MIDP (Mobile Information Device Profile). Acessado em
27/10/2008. Disponível em: <http://java.sun.com/products/midp/>.
101
[30] MICROSYSTEMS, I. S. Summary of CLDC-Based Profiles. Acessado em
26/10/2008. Disponível em: <http://developers.sun.com/mobility/midp/ttips/cldc>.
[31] MICROSYSTEMS, I. S. Midp jsr-37 jcp specification. 2000.
[32] MICROSYSTEMS, I. S. Midp jsr-118 jcp specification. 2006.
[33] MICROSYSTEMS, I. S. Information Module Profile (IMP) JSR-195. Acessado em
27/10/2008. Disponível em: <http://java.sun.com/products/imp>.
I.
S.
Understanding
the
Java
[34] MICROSYSTEMS,
form
Architecture.
Acessado
em
25/10/2008.
Disponível
<http://www.sun.com/software/opensource/java/intro_java_tech.jsp>.
Platem:
[35] MICROSYSTEMS, I. S. Foundation Profile Overview. Acessado em 27/10/2008.
Disponível em: <http://java.sun.com/products/foundation/overview.html>.
[36] PROCESS, J. C. JSR 46: Foundation Profile. Acessado em 27/10/2008.
Disponível em: <http://jcp.org/en/jsr/detail?id=46>.
[37] PROCESS, J. C. JSR 219: Foundation Profile 1.1. Acessado em 27/10/2008.
Disponível em: <http://jcp.org/en/jsr/detail?id=219>.
[38] MICROSYSTEMS,
I.
S.
Personal
Basis
Overview.
Acessado
em
27/10/2008.
Disponível
<http://java.sun.com/products/personalbasis/overview.html>.
Profile
em:
[39] MICROSYSTEMS, I. S. Personal Profile Overview. Acessado em 27/10/2008.
Disponível em: <http://java.sun.com/products/personalprofile/overview.html>.
[40] WIKIPEDIA.
WAP.
Acessado
<http://pt.wikipedia.org/wiki/Wap>.
em
20/10/2009.
Disponível
em:
[41] MICROSYSTEMS, I. S. Security and Trust Services API for J2ME (SATSA). Acessado em 27/10/2008. Disponível em: <http://java.sun.com/products/satsa>.
[42] PRESSMAN, R. Engenharia de Software. [S.l.]: Makron Books, 2006.
[43] BEZERRA, E. Principios de Analise e Projeto de Sistemas Com UML. [S.l.]: Elsevier, 2006.
[44] PAGE-JONES, M. Fundamentos do Desenho Orientado a Objetos. [S.l.]: Makron
Books, 2001.
[45] WIKIPEDIA. JavaScript HTML DOM Objects. Acessado em 18/05/2009.
Disponível em: <http://www.w3schools.com/js/js_obj_htmldom.asp>.
[46] MCLAUGHLIN, B. Use a Cabeça! Iniciação Rápida Ajax. [S.l.]: Alta Books, 2006.
[47] LANIWAY. Certificados Seguros SSL. Acessado em 21/02/2009. Disponível em:
<http://www.laniway.com.br/br/corporativo/certificado>.
[48] ICPBRASIL. que é um Certificado Digital. Acessado em 21/02/2009. Disponível
em: <https://www.icpbrasil.gov.br/duvidas/faq/o-que-e-um-certificado-digital>.
102
[49] FRAGMENTAL. MVC e Camadas. Acessado em 20/04/2009. Disponível em:
<http://www.fragmental.com.br/wiki/index.php?title=MVC_e_Camadas>.
[50] SHALLOWAY ALAN; TROTT, J. Design Patterns Explained: A New Perspective
on Object-Oriented Design. [S.l.]: Bookman Companhia, 2001.
[51] JAVAFREE. Singleton. Acessado
<http://www.javafree.org/wiki/Singleton>.
em
23/05/2009.
Disponível
em:
[52] SOUZA CELSO ANDRé; ARAúJO FILHO, J. E. R. de. Estudo do paradigma orientado a objetos em sistemas de decisão e mineração de dados em ambientes
distribuídos através de ferramentas computacionais inteligentes. p. 10, 2008.
[53] WIKIPEDIA. Usabilidade. Acessado
<http://pt.wikipedia.org/wiki/Usabilidade>.
em
20/04/2009.
Disponível
em:
Download