Sumário Prólogo por Nick Grattan xvii Prefácio xix Público-alvo xx Agradecimentos Site de download xx xx Capítulo l Introdução l 1.1 O que é mobilidade? l 1.1.1 Portabilidade 2 l. l.2 Usabilidade 3 1.1.3 Funcionalidade 5 l. l.4 Conectividade 6 1.2 Desenvolvendo aplicações móveis 6 1.2.1 Considerações gerais 6 l.2.2 Mitos sobre o desenvolvimento das aplicações móveis 8 1.3 Resumo 9 Capítulo 2 Contexto de negócio 10 2. l Quem está se tornando móvel? l O 2.1.1 Profissionais 10 2. l.2 Consumidores 13 2.2 O que as pessoas querem fazer? 14 2.2.1 Comunicação 15 2.2.2 Trabalho 15 2.2.3 Entretenimento 17 2.2.4 Educação 18 2.2.5 Localização 19 2.3 Por que tornar móvel sua empresa? 19 2.3.1 Prós 19 2.3.2 Centras 20 2.4 Resumo 22
Capítulo 3 Arquiteturas de aplicação móvel 23 3.1 Cliente-servidor 23 3.1.1 Camadas 23 3.1.2 Filas 25 3.2 Clientes 26 3.2.1 Clientes magros 26 3.2.2 Clientes gordos 27 3.2.3 Hospedagem de página Web 27 3.3 Servidor 29 3.3. l Arquitetura de uma fila (one-tier) 30 3.3.2 Arquitetura de duas filas (two-lier} 31 3.3.3 Arquitetura de três filas (three-tier) 32 3.4 Tipos de conexão 33 3.4.1 Sempre conectado 34 3.4.2 Parcialmente conectado 34 3.4.3 Nunca conectado 34 3.5 Sincronização 34 3.5.1 Comunicação contínua 35 3.5.2 Sincronização do tipo armazenar e encaminhar 36 3.6 Padrões de arquiteturas interessantes 37 3.6. l Matriz de padrão 37 3.6.2 Arquitetura sem nenhuma camada, de três filas, sempre conectada 37 3.6.3 Arquitetura parcialmente conectada de três filas e três camadas 37 3.7 Princípios de boas arquiteturas de projetos 39 3.7.1 Requisitos 40 3.7.2 Independência de tecnologia 40 3.7.3 Alto desempenho e disponibilidade 40 3.7.4 Escalabilidade 40 3.7.5 Requisitos de sistema de usuário 40 3.8 Resumo 41 Capítulo 4 Infra-estrutura móvel 42 4. l Tipos de dispositivos móveis 42 4.1.1 Dispositivos RIM/Pagers 43 4.1.2 Telefones celulares 44 4.1.3 PDAs 45 4.1.4 Tablet PCs 47
4.1.5 PCslaptop 48 4.1.6 Híbridos 49 4. l.7 Capacidade e considerações de custos 49 4.2 Componentes de dispositivos móveis 50 4.2.1 CPU 51 4.2.2 Sistema operacional 53 4.2.3 Memória 53 4.2.4 Disco 54 4.2.5 Baterias e energia 55 4.2.6 Portas de conexão 56 4.2.7 Tela 57 4.2.8 Teclado 58 4.2.9 Mouse, stylus, caneta e voz 58 4.2.10 Periféricos 59 4.3 Métodos de conexão 60 4.3.1 Com fio 60 4.3.2 Sem fio (wireless) 62 4.4 Resumo 67 Capítulo 5 Interface com o usuário de cliente móvel 68 5.1 Interface com o usuário 68 5.1.1 Dispositivos de I/O 69 5.1.2 Teclado 70 5.1.3 Mouse 70 5.1.4 Stylus, caneta e tela sensível ao toque 70 5.1.5 Fala 71 5.1.6 Scanner 72 5.1.7 Tela 72 5.2 Conteúdo de aplicação 73 5.2.1 Texto 74 5.2.2 Imagens 75 5.2.3 Animação 75 5.2.4 Sons 77 5.2.5 Filmes 77 5.3 Experiência do usuário 78 5.3.1 Layout de página e navegação 78 5.3.2 Personalização e customização 82 5.3.3 Ajuda 84 5.3.4 Pesquisa 84
5.4 Melhores práticas para o desenvolvimento de uma interface com o usuário 85 5.4.1 Considere as dependências de hardware 85 5.4.2 Considere as dependências de software 85 5.4.3 Considere o dimensionamento e o posicionamento absoluto e relativo 87 5.4.4 Reduza a rolagem horizontal 88 5.4.5 Utilize bastante o texto 88 5.4.6 Verifique o escalonamento de imagem 89 5.4.7 Reduza o tamanho e a quantidade de imagens 89 5.4.8 Reduza a animação 90 5.4.9 Reduza a inserção de informações e a digitação 90 5.4.10 Implemente conjuntos separados de páginas 91 5.5 Resumo 92 Capítulo 6 Aplicações clientes móveis 93 6.1 Cliente magro 93 6.1.1 Considerações de desenvolvimento 94 6. l.2 Arquitetura 95 6.2 Cliente gordo 96 6.2.1 Considerações de desenvolvimento 96 6.2.2 Casos de uso comuns 97 6.2.3 Arquitetura 98 6.2.4 Camada de apresentação 99 6.2.5 Camada de negócios 99 6.2.6 Camada de acesso a dados 102 6.3 Hospedagem de página Web 103 6.3. l Considerações de desenvolvimento 103 6.3.2 Arquitetura 104 6.3.3 Camada de apresentação 104 6.3.4 Camada de negócios 104 6.3.5 Camada de acesso a dados 104 6.4 Práticas 105 6.4.1 Compare a hospedagem de páginas Web magra com a hospedagem de páginas Web gorda 105 6.4.2 Aumente a abstração de código e a capacidade de reutilização í 05 6.5 Resumo 106
Capítulo 7 Transferência de dados cliente-servidor 107 7.1 HTTP e HTML 108 7.2 WAP e WML 108 7.3 Software de sincronização 109 7.4 RDA e Merge Replication 110 7.5 SOAP e Web Services 112 7.6 Filas de mensagens (message queues) \ 14 7.7 TCP/IP 115 7.8 Resumo 116 Capítulo 8 Mobilizar as arquiteturas de aplicações existentes 117 8.1 Evolução das arquiteturas corporativas 117 8.1.1 Arquitetura cliente-servidor 117 8.1.2 Arquitetura centrada no serviço compatível com a Web 119 8.1.3 Arquitetura Web centrada no usuário de assinatura única 120 8.2 Anatomia de uma arquitetura Web corporativa 120 8.2.1 Arquitetura 120 8.2.2 Visão lógica 122 8.3 Considerações sobre quando mobilizar aplicações existentes 124 8.3.1 Arquitetura 124 8.3.2 Usuários, papéis e intitulações 126 8.3.3 Fila de apresentação 129 8.3.4 Fila de aplicação 131 8.3.5 Fila de banco de dados 132 8.3.6 Sistemas back-end preexistentes 136 8.3.7 Autenticação 136 8.3.8 Inscrição 140 8.3.9 Administração 140 8.3.10 Alta disponibilidade e desempenho 143 8.3.11 Escalabilidade 145 8.3.12 Segurança 145 8.4 Resumo 145 Capítulo 9 Segurança 147 9. l Arquiteturas Web corporativas mobilizadas 9.1.1 Vulnerabilidades 147 9.1.2 Ameaças 150 9.1.3 Mitigação 150 147
9.2 Assuntos de segurança para usuários móveis 151 9.2.1 Autenticação 151 9.2.2 Cartões inteligentes (smart cards) 153 9.2.3 Autenticação biométrica 153 9.3 Assuntos de segurança de clientes móveis 153 9.3.1 Logout automático e reentrada de credenciais 154 9.3.2 Destruição de dados 154 9.3.3 Encriptação de banco de dados 154 9.3.4 Nomes de usuário e senha incorporados no código 156 9.4 Problemas de segurança de comunicações cliente-servidor 156 9.4. l Encriptação de comunicação 156 9.5 Problemas de segurança em arquiteturas Web e em sistemas back-end 9.5.1 Firewalls e separação de filas 158 9.5.2 Serviços de aplicação e lockdown de porta 158 9.5.3 Encriptação de comunicação 158 9.5.4 Autenticação de bancos de dados 160 9.5.5 Encriptação de banco de dados 160 9.6 Resumo 160 156 Capítulo 10 Gerenciamento de desenvolvimento de aplicações móveis 161 10.1 Gerenciamento de projetos 161 10.1.1 Modelos de gerenciamento 161 10.1.2 Planejamento 164 10.1.3 Recursos de equipe 164 10.1.4 Reiatórios e reuniões de status 167 10.1.5 Financeiro 168 10.1.6 Ambiente 169 10.1.7 Gerenciamento de versão e de alterações 172 10.1.8 Treinamento 172 10. l.9 Dores de cabeça comuns da administração 172 10.2 Requisitos 173 10.2.1 Tipos de requisitos 174 10.2.2 Requisitos 176 10.2.3 Requisitos de documentação 177 10.3 Projeto 178 10.3.1 Documentação do projeto 178 10.3.2 Considerações sobre o projeto 180 10.4 Desenvolvimento e integração de código 180 10.4.1 Codificação 181 10.4.2 Teste de unidade 182
10.5 Teste de integração e de sistema 182 10.5.1 Processo de teste 182 10.5.2 Documentação de teste 183 10.5.3 Considerações sobre testes 184 10.6 Implantação e gerenciamento de versão 185 10.6.1 Releases de produção de cliente móvel 185 10.6.2 Releases de produção de servidor 186 10.7 Reavaliação e repetição 186 10.7.1 Reavaliação 187 10.7.2 Repetição 187 10.8 Operações e manutenção 187 10.8.1 Operações de rotina 188 10.8.2 Monitoração 188 10.8.3 Backup e restauração 189 10.9 Resumo 189 Capítulo 11 Estudo de caso do Mobile Museum 190 11.1 Casos de uso 190 11.1.1 Atores de casos de uso 191 11.1.2 Casos de uso existentes em sites Web 191 11.1.3 Casos de uso em sites Web móveis 193 11.2 Arquitetura 194 11.3 Detalhes do projeto de cliente 195 11.4 Detalhes do projeto de servidor 196 11.4.1 Camada de apresentação existente 196 11.4.2 Camada de lógica de negócio 200 11.4.3 Camada de acesso a dados 206 11.5 Mobilizar a aplicação existente 212 11.5.1 Arquitetura 212 11.5.2 Usuários e papéis 212 11.5.3 Camada de apresentação 212 11.5.4 Camada de lógica de negócio 216 11.5.5 Camada de acesso a dados 216 11.5.6 Autenticação 216 11.5.7 Inscrição 217 11.5.8 Administração 217 11.5.9 Suporte a dispositivos móveis 217 11.5.10 Projeto detalhado da camada de apresentação 11.6 Discussão 222 11.7 Extensões 223 11.8 Resumo 223 219
Capítulo 12 Estudo de caso Mobile Biologist 224 12.1 Casos de uso 225 12.1.1 Atores do caso de uso 225 12.1.2 Casos de uso de clientes móveis 226 12.1.3 Casos de uso de sites Web 227 12.2 Arquitetura 229 12.2.1 Arquitetura geral 229 12.2.2 Fluxo do processo 230 12.3 Projeto detalhado do cliente de Pocket PC 232 12.3.1 Camada de apresentação 233 12.3.2 Camada de lógica de negócio 235 12.3.3 Camada de acesso a dados 241 12.4 Projeto detalhado do cliente de Tablet PC 243 12.4. l Camada de apresentação 243 12.4.2 Camada de lógica de negócio 248 12.4.3 Camada de acesso a dados 253 12.5 Detalhes do projeto de servidor 255 12.5.1 XML Web Service 255 12.5.2 Camada de apresentação 257 12.5.3 Camada de lógica de negócio 261 12.5.4 Camada de acesso a dados 266 12.6 Discussão 270 12.7 Extensões 270 12.8 Resumo 271 Capítulo 13 Estudo de caso do Mobile Zoo 273 13.1 Casos de uso 273 13.1.1 Atores do casos de uso 274 13.1.2 Casos de uso existentes em sites Web 275 13.1.3 Casos de uso em sites Web móveis 276 13.2 Arquitetura 277 13.2.1 Arquitetura geral 277 13.3 Detalhes do projeto de cliente 278 13.3.1 Camada de apresentação 279 13.3.2 Camada de lógica de negócio 286 13.3.3 Camada de acesso a dados 288 13.4 Detalhes do projeto de servidor 290 13.4.1 XML Web Service 290 13.4.2 Camada de apresentação 291
13.4.3 Camada de lógica de negócio 293 13.4.4 Camada de acesso a dados 298 13.5 Discussão 302 13.6 Resumo 302 Apêndice A Leitura adicional 303 A. l Livros 303 A.2 Recursos on-line 304 Apêndice B O projeto de hospedagem Web de bolso 308 B. l Arquitetura 308 B.l.l Hospedagem de páginas Web 308 B. 1.2 Ambiente 309 B. 1.3 PWHCOMP 309 B. 1.4 PWHOST 310 B.2 Procedimento de desenvolvimento 311 B.2.1 Procedimentos gerais 311 B.2.2 Exemplos 313 B.3 Resumo 319 índice 322