Download - Identificando variabilidades em aplicações para android

Transcript
Page 1: Identificando variabilidades em aplicações para android

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

Page 2: 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

Page 3: 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

Page 4: 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

Page 5: 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

Page 6: 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

Page 7: 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

Page 8: 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

Page 9: 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

Page 10: 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

Page 11: 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

Page 12: 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

Page 13: 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

Page 14: 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

Page 15: 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

Page 16: 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

Page 17: 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

Page 18: 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

Page 19: 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

Page 20: 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

Page 21: 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

Page 22: 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

Page 23: 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

Page 24: 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

Page 25: 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

Page 26: 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

Page 27: 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

Page 28: 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

Page 29: 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

Page 30: 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

Page 31: 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

Page 32: 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

Page 33: 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

Page 34: 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

Page 35: 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