IntroduçãoDesenvolvimento
Conclusão
Identificando variabilidades em aplicações paraAndroid
Adorilson Bezerra
Universidade Federal do Rio Grande do NorteDepartamento de Informática e Matemática Aplicada
8 de outubro de 2011
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
MotivaçãoMetodologia
Diversidade de aparelhos
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
MotivaçãoMetodologia
Problema
I Diferentes características dos dispositivos
I Diferente disponibilidade de memória e tamanho máximo daaplicação
I Diferentes perfis (MIDP 1.0 e MIDP 2.0);
I Diferentes implementações de um mesmo perfil em J2ME(diferente JSRs);
I APIs proprietárias e pacotes opcionais;
I Bugs específicos
I Línguas internacionais
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
MotivaçãoMetodologia
Metodologia
I Leitura de trabalhos relacionados
I Consulta à comunidade
I Consulta à API(http://developer.android.com/guide/basics/what-is-android.html)
I Leitura de código-fonte de projetos FLOSS
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
Trabalhos relacionadosPlataforma AndroidVariabilidades em aplicações para Android
Aplicativos móveis (J2ME)
I Vander Alves, Ivan Cardim, Heitor Vital, Pedro H. M. Sampaio,Alexandre L. G. Damasceno, Paulo Borba, Geber Ramalho:Comparative Analysis of Porting Strategies in J2ME Games.ICSM 2005: 123-132
I Pedro H. M. Sampaio, Alexandre L. G. Damasceno, IgorSampaio, Vander Alves, Geber Ramalho, Paulo Borba: PortandoJogos em J2ME: Desafios, Estudo de Caso, e Diretrizes.SCENTIA 2004 vol. 15
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
Trabalhos relacionadosPlataforma AndroidVariabilidades em aplicações para Android
Comparative Analysis of Porting Strategies in J2ME Games
I EstratégiasI Incremental Approach: the Zaak Case
I Nokia S60 -> Nokia S40I Redução do tamanho: 186K -> 63KI Carregamento de imagens
I Program Transformation: The Rain of FireI Nokia S40, Nokia S60 e Motorola T720 (ad hoc)I Java Transformation System (JaTS)
I Preprocessing: The My Big Brother CaseI 8 versões para 50 aparelhosI Compilação condicional
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
Trabalhos relacionadosPlataforma AndroidVariabilidades em aplicações para Android
Comparative Analysis of Porting Strategies in J2ME Games
I Avaliação
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
Trabalhos relacionadosPlataforma AndroidVariabilidades em aplicações para Android
Comparative Analysis of Porting Strategies in J2ME Games
I Lições aprendidas e boas práticasI Iniciar o desenvolvimento pelos dispositivos com maiores
restriçõesI É possível combinar as estratégiasI Separar os interesses (código de lógico e código para elementos
gráficos, por exemplo)I Testar o software nos aparelhos reaisI Manter uma base de bugs conhecidos
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
Trabalhos relacionadosPlataforma AndroidVariabilidades em aplicações para Android
Portando Jogos em J2ME: Desafios, Estudo de Caso, eDiretrizes
I Aprofundamento do estudo de caso "Zaak"do artigo anteriorI Categoriza as soluções atuais:
I Ferramentas de pré-processamento (Antenna e J2ME Polish)I Diretrizes específicas (Motorola Port Guide)I Diretrizes amplasI Ferramentas semi-automáticas (Tira Jump)I Abordagens Formais (restrito a GUI)
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
Trabalhos relacionadosPlataforma AndroidVariabilidades em aplicações para Android
Portando Jogos em J2ME: Desafios, Estudo de Caso, eDiretrizes
I Efeitos no porte do código-fonte
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
Trabalhos relacionadosPlataforma AndroidVariabilidades em aplicações para Android
Portando Jogos em J2ME: Desafios, Estudo de Caso, eDiretrizes
I Síntese das atividades do estudo de caso
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
Trabalhos relacionadosPlataforma AndroidVariabilidades em aplicações para Android
Sobre Android
I Benjamin Speckmann: The Android mobile platform. EasternMichigan University. 2008.
I Jan Bosch: From Software Product Lines to SoftwareEcosystems. SPLC 2009.
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
Trabalhos relacionadosPlataforma AndroidVariabilidades em aplicações para Android
The Android mobile platform
I Android vs Symbian vs Windows Mobile
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
Trabalhos relacionadosPlataforma AndroidVariabilidades em aplicações para Android
The Android mobile platform
I Desenvolvimento para Android vs Desenvolvimento paraSymbian OS
I Vantagens: todasI Desvantagens: nenhuma de ordem técnica
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
Trabalhos relacionadosPlataforma AndroidVariabilidades em aplicações para Android
From Software Product Lines to Software Ecosystems
I Um ecossistema de software é um conjunto de soluções desoftware que possibilitam, suportam e automatizam atividades etransações...
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
Trabalhos relacionadosPlataforma AndroidVariabilidades em aplicações para Android
From Software Product Lines to Software Ecosystems
I Sistemas operacionais
Característica: fornecedores de S.O.’s disponibilizamferramentas de desenvolvimento visando aadotação do ecossistema por desenvolvedores deaplicações
Fator de sucesso: minimização do esforço dos desenvolvedorespara a criação de aplicações
Desafio: rápida evolução dos dispositivos
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
Trabalhos relacionadosPlataforma AndroidVariabilidades em aplicações para Android
O que é o Android
Android é um conjunto de softwares para dispositivosmóveis, incluindo sistema operacional, middleware eaplicações chaves/básicas. O Android SDK provê asferramentas e API’s necessárias para desenvolvimento deaplicações utilizando a linguagem de programação Java.
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
Trabalhos relacionadosPlataforma AndroidVariabilidades em aplicações para Android
Características - independentes do aparelho
I Framework de aplicações possibilitando reuso e troca decomponentes)
I Maquina virtual Dalvik
I Navegador web integrado (usando o motor WebKit)
I SQLite para armazenamento local de dados
I Suporte para midias comuns de audio, video e formatos deimagens (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
I Ambiente de desenvolvimento inclue um emulador de dispositivo,ferramentas para depuração, analise dinâmica de memória eperformance, e um plugin para o Eclipse IDE.
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
Trabalhos relacionadosPlataforma AndroidVariabilidades em aplicações para Android
Características - dependentes do aparelho
I Otimizações gráficas graças a biblioteca 2D customizada;gráficos 3D baseados em Open GL ES 1.0 (aceleração porhardware opcional)
I Telefonia GSM
I Bluetooth, EDGE, 3G, e WiFi
I Câmera, GPS, bússola, e acelerômetro
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
Trabalhos relacionadosPlataforma AndroidVariabilidades em aplicações para Android
Arquitetura
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
Trabalhos relacionadosPlataforma AndroidVariabilidades em aplicações para Android
Arquitetura
Aplicações: o Android é distribuído com diversas aplicações
Framework de aplicações: componentes para serem utilizadas nodesenvolvimento de aplicações
Bibliotecas: conjunto de bibliotecas em C/C++ usadas por váriascomponentes do sistema
Runtime: bibliotecas básica do Java
Kernel Linux: versão 2.6
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
Trabalhos relacionadosPlataforma AndroidVariabilidades em aplicações para Android
Estrutura padrão de diretórios
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
Trabalhos relacionadosPlataforma AndroidVariabilidades em aplicações para Android
Dispositivos com ou sem sensores
I Acelerômetro
I Câmera
I Luminosidade
I Bluetooth
I ...
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
Trabalhos relacionadosPlataforma AndroidVariabilidades em aplicações para Android
Se tem acelerômetro...
Figura: Testando se o dispositivo tem acelerômetro
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
Trabalhos relacionadosPlataforma AndroidVariabilidades em aplicações para Android
Gráficos: 2D ou 3D
Figura: Testando se o dispositivo tem suporte para gráficos 3d
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
Trabalhos relacionadosPlataforma AndroidVariabilidades em aplicações para Android
Tamanhos e densidade das telas
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
Trabalhos relacionadosPlataforma AndroidVariabilidades em aplicações para Android
Mecanismo de interação
I Teclado físico
I Trackball
I Botões de navegação (five-way navigation pad)
Raro esse tipo de restrição
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
Trabalhos relacionadosPlataforma AndroidVariabilidades em aplicações para Android
Versão da API
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
Trabalhos relacionadosPlataforma AndroidVariabilidades em aplicações para Android
Pacote de compatibilidade
I Suporte estático para API’s mais recentes
I A partir da API nível 4
I Facilita o desenvolvimento na medida em que permite odesenvolver se preocupar menos com a versão da API
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
Trabalhos relacionadosPlataforma AndroidVariabilidades em aplicações para Android
Versão do OpenGL ES
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
Trabalhos relacionadosPlataforma AndroidVariabilidades em aplicações para Android
Android NDK
I Suporte para desenvolvimento em código nativoI ARMv5TE (incluindo instruções Thumb-1)I ARMv7-A (incluindo instruções Thumb-2 e VFPv3-D16, com
suporte opcional para NEON/VFPv3-D32)I x86
I Aumenta a complexidade sem necessariamente aumentar aperformance
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
Trabalhos relacionadosPlataforma AndroidVariabilidades em aplicações para Android
AndroidManifest.xml
I "Promete"mas não cumpre
I As restrições são válidas apenas para filtragem no AndroidMarket
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
DificuldadesTrabalhos futuros
Dificuldades
I Inexperiência com a plataforma
I Ausência de trabalhos na área de LPS relacionados à plataforma
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
DificuldadesTrabalhos futuros
Trabalhos futuros
I Aprofundar a pesquisa
Adorilson Bezerra Identificando variabilidades em aplicações para Android
IntroduçãoDesenvolvimento
Conclusão
DificuldadesTrabalhos futuros
Perguntas ?
Cuidado como você usa o Android. Ele sabe quando ousuário é um macaco: http://is.gd/nDcoFc
Adorilson Bezerra Identificando variabilidades em aplicações para Android