35
Introdução Desenvolvimento Conclusão Identificando variabilidades em aplicações para Android Adorilson Bezerra Universidade Federal do Rio Grande do Norte Departamento de Informática e Matemática Aplicada 8 de outubro de 2011 Adorilson Bezerra Identificando variabilidades em aplicações para Android

Identificando variabilidades em aplicações para android

Embed Size (px)

DESCRIPTION

Slides resultantes de uma pesquisa (em andamento) sobre variabilidades entre aplicações para Android. Essa pesquisa está sendo feita na disciplina de Linha de Produto de Software, no mestrado na UFRN/Dimap.

Citation preview

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