SlideShare une entreprise Scribd logo
1  sur  35
Télécharger pour lire hors ligne
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
Introdução
                                       Motivação
                   Desenvolvimento
                                       Metodologia
                        Conclusão



Diversidade de aparelhos




                   Adorilson Bezerra   Identificando variabilidades em aplicações para Android
Introdução
                                            Motivação
                        Desenvolvimento
                                            Metodologia
                             Conclusão



Problema


      Diferentes características dos dispositivos
      Diferente disponibilidade de memória e tamanho máximo da
      aplicação
      Diferentes perfis (MIDP 1.0 e MIDP 2.0);
      Diferentes implementações de um mesmo perfil em J2ME
      (diferente JSRs);
      APIs proprietárias e pacotes opcionais;
      Bugs específicos
      Línguas internacionais




                        Adorilson Bezerra   Identificando variabilidades em aplicações para Android
Introdução
                                           Motivação
                        Desenvolvimento
                                           Metodologia
                             Conclusão



Metodologia




      Leitura de trabalhos relacionados
      Consulta à comunidade
      Consulta à API
      (http://developer.android.com/guide/basics/what-is-android.html)
      Leitura de código-fonte de projetos FLOSS




                       Adorilson Bezerra   Identificando variabilidades em aplicações para Android
Introdução     Trabalhos relacionados
                       Desenvolvimento     Plataforma Android
                            Conclusão      Variabilidades em aplicações para Android



Aplicativos móveis (J2ME)



      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
      Pedro H. M. Sampaio, Alexandre L. G. Damasceno, Igor
      Sampaio, Vander Alves, Geber Ramalho, Paulo Borba: Portando
      Jogos em J2ME: Desafios, Estudo de Caso, e Diretrizes.
      SCENTIA 2004 vol. 15




                       Adorilson Bezerra   Identificando variabilidades em aplicações para Android
Introdução    Trabalhos relacionados
                        Desenvolvimento    Plataforma Android
                             Conclusão     Variabilidades em aplicações para Android



Comparative Analysis of Porting Strategies in J2ME Games


      Estratégias
          Incremental Approach: the Zaak Case
               Nokia S60 -> Nokia S40
               Redução do tamanho: 186K -> 63K
               Carregamento de imagens
          Program Transformation: The Rain of Fire
               Nokia S40, Nokia S60 e Motorola T720 (ad hoc)
               Java Transformation System (JaTS)
          Preprocessing: The My Big Brother Case
               8 versões para 50 aparelhos
               Compilação condicional




                       Adorilson Bezerra   Identificando variabilidades em aplicações para Android
Introdução     Trabalhos relacionados
                   Desenvolvimento     Plataforma Android
                        Conclusão      Variabilidades em aplicações para Android



Comparative Analysis of Porting Strategies in J2ME Games



      Avaliação




                   Adorilson Bezerra   Identificando variabilidades em aplicações para Android
Introdução     Trabalhos relacionados
                       Desenvolvimento     Plataforma Android
                            Conclusão      Variabilidades em aplicações para Android



Comparative Analysis of Porting Strategies in J2ME Games




      Lições aprendidas e boas práticas
          Iniciar o desenvolvimento pelos dispositivos com maiores
          restrições
          É possível combinar as estratégias
          Separar os interesses (código de lógico e código para elementos
          gráficos, por exemplo)
          Testar o software nos aparelhos reais
          Manter uma base de bugs conhecidos




                       Adorilson Bezerra   Identificando variabilidades em aplicações para Android
Introdução     Trabalhos relacionados
                       Desenvolvimento     Plataforma Android
                            Conclusão      Variabilidades em aplicações para Android



Portando Jogos em J2ME: Desafios, Estudo de Caso, e
Diretrizes



      Aprofundamento do estudo de caso "Zaak"do artigo anterior
      Categoriza as soluções atuais:
          Ferramentas de pré-processamento (Antenna e J2ME Polish)
          Diretrizes específicas (Motorola Port Guide)
          Diretrizes amplas
          Ferramentas semi-automáticas (Tira Jump)
          Abordagens Formais (restrito a GUI)




                       Adorilson Bezerra   Identificando variabilidades em aplicações para Android
Introdução    Trabalhos relacionados
                        Desenvolvimento    Plataforma Android
                             Conclusão     Variabilidades em aplicações para Android



Portando Jogos em J2ME: Desafios, Estudo de Caso, e
Diretrizes


      Efeitos no porte do código-fonte




                       Adorilson Bezerra   Identificando variabilidades em aplicações para Android
Introdução    Trabalhos relacionados
                       Desenvolvimento    Plataforma Android
                            Conclusão     Variabilidades em aplicações para Android



Portando Jogos em J2ME: Desafios, Estudo de Caso, e
Diretrizes




      Síntese das atividades do estudo de caso




                      Adorilson Bezerra   Identificando variabilidades em aplicações para Android
Introdução    Trabalhos relacionados
                       Desenvolvimento    Plataforma Android
                            Conclusão     Variabilidades em aplicações para Android



Sobre Android




      Benjamin Speckmann: The Android mobile platform. Eastern
      Michigan University. 2008.
      Jan Bosch: From Software Product Lines to Software
      Ecosystems. SPLC 2009.




                      Adorilson Bezerra   Identificando variabilidades em aplicações para Android
Introdução    Trabalhos relacionados
                      Desenvolvimento    Plataforma Android
                           Conclusão     Variabilidades em aplicações para Android



The Android mobile platform
      Android vs Symbian vs Windows Mobile




                     Adorilson Bezerra   Identificando variabilidades em aplicações para Android
Introdução     Trabalhos relacionados
                      Desenvolvimento     Plataforma Android
                           Conclusão      Variabilidades em aplicações para Android



The Android mobile platform

      Desenvolvimento para Android vs Desenvolvimento para
      Symbian OS




          Vantagens: todas
          Desvantagens: nenhuma de ordem técnica
                      Adorilson Bezerra   Identificando variabilidades em aplicações para Android
Introdução    Trabalhos relacionados
                       Desenvolvimento    Plataforma Android
                            Conclusão     Variabilidades em aplicações para Android



From Software Product Lines to Software Ecosystems

      Um ecossistema de software é um conjunto de soluções de
      software que possibilitam, suportam e automatizam atividades e
      transações...




                      Adorilson Bezerra   Identificando variabilidades em aplicações para Android
Introdução    Trabalhos relacionados
                       Desenvolvimento    Plataforma Android
                            Conclusão     Variabilidades em aplicações para Android



From Software Product Lines to Software Ecosystems



      Sistemas operacionais
      Característica: fornecedores de S.O.’s disponibilizam
                     ferramentas de desenvolvimento visando a
                     adotação do ecossistema por desenvolvedores de
                     aplicações
      Fator de sucesso: minimização do esforço dos desenvolvedores
                     para a criação de aplicações
          Desafio: rápida evolução dos dispositivos




                      Adorilson Bezerra   Identificando variabilidades em aplicações para Android
Introdução    Trabalhos relacionados
                       Desenvolvimento    Plataforma Android
                            Conclusão     Variabilidades em aplicações para Android



O que é o Android




      Android é um conjunto de softwares para dispositivos
      móveis, incluindo sistema operacional, middleware e
      aplicações chaves/básicas. O Android SDK provê as
      ferramentas e API’s necessárias para desenvolvimento de
      aplicações utilizando a linguagem de programação Java.




                      Adorilson Bezerra   Identificando variabilidades em aplicações para Android
Introdução     Trabalhos relacionados
                        Desenvolvimento     Plataforma Android
                             Conclusão      Variabilidades em aplicações para Android



Características - independentes do aparelho


       Framework de aplicações possibilitando reuso e troca de
       componentes)
       Maquina virtual Dalvik
       Navegador web integrado (usando o motor WebKit)
       SQLite para armazenamento local de dados
       Suporte para midias comuns de audio, video e formatos de
       imagens (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
       Ambiente de desenvolvimento inclue um emulador de dispositivo,
       ferramentas para depuração, analise dinâmica de memória e
       performance, e um plugin para o Eclipse IDE.



                        Adorilson Bezerra   Identificando variabilidades em aplicações para Android
Introdução     Trabalhos relacionados
                       Desenvolvimento     Plataforma Android
                            Conclusão      Variabilidades em aplicações para Android



Características - dependentes do aparelho




       Otimizações gráficas graças a biblioteca 2D customizada;
       gráficos 3D baseados em Open GL ES 1.0 (aceleração por
       hardware opcional)
       Telefonia GSM
       Bluetooth, EDGE, 3G, e WiFi
       Câmera, GPS, bússola, e acelerômetro




                       Adorilson Bezerra   Identificando variabilidades em aplicações para Android
Introdução     Trabalhos relacionados
              Desenvolvimento     Plataforma Android
                   Conclusão      Variabilidades em aplicações para Android



Arquitetura




              Adorilson Bezerra   Identificando variabilidades em aplicações para Android
Introdução    Trabalhos relacionados
                         Desenvolvimento    Plataforma Android
                              Conclusão     Variabilidades em aplicações para Android



Arquitetura



    Aplicações: o Android é distribuído com diversas aplicações
   Framework de aplicações: componentes para serem utilizadas no
               desenvolvimento de aplicações
    Bibliotecas: conjunto de bibliotecas em C/C++ usadas por várias
                 componentes do sistema
      Runtime: bibliotecas básica do Java
   Kernel Linux: versão 2.6




                        Adorilson Bezerra   Identificando variabilidades em aplicações para Android
Introdução    Trabalhos relacionados
                     Desenvolvimento    Plataforma Android
                          Conclusão     Variabilidades em aplicações para Android



Estrutura padrão de diretórios




                    Adorilson Bezerra   Identificando variabilidades em aplicações para Android
Introdução     Trabalhos relacionados
                     Desenvolvimento     Plataforma Android
                          Conclusão      Variabilidades em aplicações para Android



Dispositivos com ou sem sensores




      Acelerômetro
      Câmera
      Luminosidade
      Bluetooth
      ...




                     Adorilson Bezerra   Identificando variabilidades em aplicações para Android
Introdução    Trabalhos relacionados
                        Desenvolvimento    Plataforma Android
                             Conclusão     Variabilidades 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ção    Trabalhos relacionados
                        Desenvolvimento    Plataforma Android
                             Conclusão     Variabilidades 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ção    Trabalhos relacionados
                   Desenvolvimento    Plataforma Android
                        Conclusão     Variabilidades em aplicações para Android



Tamanhos e densidade das telas




                  Adorilson Bezerra   Identificando variabilidades em aplicações para Android
Introdução     Trabalhos relacionados
                          Desenvolvimento     Plataforma Android
                               Conclusão      Variabilidades em aplicações para Android



Mecanismo de interação




      Teclado físico
      Trackball
      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ção     Trabalhos relacionados
                Desenvolvimento     Plataforma Android
                     Conclusão      Variabilidades em aplicações para Android



Versão da API




                Adorilson Bezerra   Identificando variabilidades em aplicações para Android
Introdução     Trabalhos relacionados
                        Desenvolvimento     Plataforma Android
                             Conclusão      Variabilidades em aplicações para Android



Pacote de compatibilidade




      Suporte estático para API’s mais recentes
      A partir da API nível 4
      Facilita o desenvolvimento na medida em que permite o
      desenvolver se preocupar menos com a versão da API




                        Adorilson Bezerra   Identificando variabilidades em aplicações para Android
Introdução     Trabalhos relacionados
                 Desenvolvimento     Plataforma Android
                      Conclusão      Variabilidades em aplicações para Android



Versão do OpenGL ES




                 Adorilson Bezerra   Identificando variabilidades em aplicações para Android
Introdução     Trabalhos relacionados
                      Desenvolvimento     Plataforma Android
                           Conclusão      Variabilidades em aplicações para Android



Android NDK




      Suporte para desenvolvimento em código nativo
          ARMv5TE (incluindo instruções Thumb-1)
          ARMv7-A (incluindo instruções Thumb-2 e VFPv3-D16, com
          suporte opcional para NEON/VFPv3-D32)
          x86
      Aumenta a complexidade sem necessariamente aumentar a
      performance




                      Adorilson Bezerra   Identificando variabilidades em aplicações para Android
Introdução    Trabalhos relacionados
                       Desenvolvimento    Plataforma Android
                            Conclusão     Variabilidades em aplicações para Android



AndroidManifest.xml




      "Promete"mas não cumpre
      As restrições são válidas apenas para filtragem no Android
      Market




                      Adorilson Bezerra   Identificando variabilidades em aplicações para Android
Introdução
                                          Dificuldades
                       Desenvolvimento
                                          Trabalhos futuros
                            Conclusão



Dificuldades




      Inexperiência com a plataforma
      Ausência de trabalhos na área de LPS relacionados à plataforma




                      Adorilson Bezerra   Identificando variabilidades em aplicações para Android
Introdução
                                           Dificuldades
                       Desenvolvimento
                                           Trabalhos futuros
                            Conclusão



Trabalhos futuros




       Aprofundar a pesquisa




                       Adorilson Bezerra   Identificando variabilidades em aplicações para Android
Introdução
                                          Dificuldades
                      Desenvolvimento
                                          Trabalhos futuros
                           Conclusão



Perguntas ?




      Cuidado como você usa o Android. Ele sabe quando o
      usuário é um macaco: http://is.gd/nDcoFc




                      Adorilson Bezerra   Identificando variabilidades em aplicações para Android

Contenu connexe

Similaire à Identificando variabilidades em aplicações para android

Mecanismos para controle de variabilidades em aplicações para Android
Mecanismos para controle de variabilidades em aplicações para AndroidMecanismos para controle de variabilidades em aplicações para Android
Mecanismos para controle de variabilidades em aplicações para AndroidAdorilson Bezerra
 
Guia para o Profissional Android
Guia para o Profissional AndroidGuia para o Profissional Android
Guia para o Profissional Androidarmeniocardoso
 
Ionic + Cordova para Desenvolvimento Mobile
Ionic + Cordova para Desenvolvimento MobileIonic + Cordova para Desenvolvimento Mobile
Ionic + Cordova para Desenvolvimento MobileWaldyr Felix
 
Minicurso iniciando com Android no Androidos Day
Minicurso iniciando com Android no Androidos DayMinicurso iniciando com Android no Androidos Day
Minicurso iniciando com Android no Androidos DayMessias Batista
 
Introdução ao desenvolvimento de aplicativos com PhoneGap e Sencha Touch
Introdução ao desenvolvimento de aplicativos com PhoneGap e Sencha TouchIntrodução ao desenvolvimento de aplicativos com PhoneGap e Sencha Touch
Introdução ao desenvolvimento de aplicativos com PhoneGap e Sencha TouchLeonardo Soares
 
Desenvolvimento de Aplicativos para a Plataforma Android
Desenvolvimento de Aplicativos para a Plataforma AndroidDesenvolvimento de Aplicativos para a Plataforma Android
Desenvolvimento de Aplicativos para a Plataforma AndroidJosé Alexandre Macedo
 
Estratégias de desenvolvimento de aplicativos para dispositivos móveis em vár...
Estratégias de desenvolvimento de aplicativos para dispositivos móveis em vár...Estratégias de desenvolvimento de aplicativos para dispositivos móveis em vár...
Estratégias de desenvolvimento de aplicativos para dispositivos móveis em vár...Evandro da Silva Amparo
 
Desenvolvimento para Android - Bento Gonçalves (08/2011)
Desenvolvimento para Android - Bento Gonçalves (08/2011)Desenvolvimento para Android - Bento Gonçalves (08/2011)
Desenvolvimento para Android - Bento Gonçalves (08/2011)Gustavo Ciello
 
PALESTRA :: Desenvolvimento para plataforma Android
PALESTRA :: Desenvolvimento para plataforma Android PALESTRA :: Desenvolvimento para plataforma Android
PALESTRA :: Desenvolvimento para plataforma Android Fundação Vanzolini
 
Programação para dispositivos Móveis - Criação de aplicativos - Android Aula...
Programação para dispositivos Móveis - Criação de aplicativos  - Android Aula...Programação para dispositivos Móveis - Criação de aplicativos  - Android Aula...
Programação para dispositivos Móveis - Criação de aplicativos - Android Aula...Diogo Rafael da Silva
 
Desenvolvendo para windows phone, um novo paradigma
Desenvolvendo para windows phone, um novo paradigmaDesenvolvendo para windows phone, um novo paradigma
Desenvolvendo para windows phone, um novo paradigmameet2Brains
 
Android - basic to advanced 1 - SENAI - MANAUS - Amazonas
Android -  basic to advanced 1 - SENAI - MANAUS - AmazonasAndroid -  basic to advanced 1 - SENAI - MANAUS - Amazonas
Android - basic to advanced 1 - SENAI - MANAUS - AmazonasDiogo Rafael da Silva
 
Android Por onde começar o Desenvolvimento para dispositivos mobiles e TVs
Android Por onde começar o Desenvolvimento para dispositivos mobiles e TVsAndroid Por onde começar o Desenvolvimento para dispositivos mobiles e TVs
Android Por onde começar o Desenvolvimento para dispositivos mobiles e TVsGabriel Molter
 
Palestra sobre android
Palestra sobre androidPalestra sobre android
Palestra sobre androidReuel Lopes
 
Apresentacao TCC - TCC - Desenvolvimento aplicativo para o ROS (Robotic Opera...
Apresentacao TCC - TCC - Desenvolvimento aplicativo para o ROS (Robotic Opera...Apresentacao TCC - TCC - Desenvolvimento aplicativo para o ROS (Robotic Opera...
Apresentacao TCC - TCC - Desenvolvimento aplicativo para o ROS (Robotic Opera...Caio Teixeira de Farias
 
Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016
Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016
Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016Leonardo Turbiani
 
Desenvolvendo aplicações móveis
Desenvolvendo aplicações móveisDesenvolvendo aplicações móveis
Desenvolvendo aplicações móveiscedulio
 

Similaire à Identificando variabilidades em aplicações para android (20)

Mecanismos para controle de variabilidades em aplicações para Android
Mecanismos para controle de variabilidades em aplicações para AndroidMecanismos para controle de variabilidades em aplicações para Android
Mecanismos para controle de variabilidades em aplicações para Android
 
Guia para o Profissional Android
Guia para o Profissional AndroidGuia para o Profissional Android
Guia para o Profissional Android
 
Ionic + Cordova para Desenvolvimento Mobile
Ionic + Cordova para Desenvolvimento MobileIonic + Cordova para Desenvolvimento Mobile
Ionic + Cordova para Desenvolvimento Mobile
 
Minicurso iniciando com Android no Androidos Day
Minicurso iniciando com Android no Androidos DayMinicurso iniciando com Android no Androidos Day
Minicurso iniciando com Android no Androidos Day
 
Palestra Android
Palestra AndroidPalestra Android
Palestra Android
 
Introdução ao desenvolvimento de aplicativos com PhoneGap e Sencha Touch
Introdução ao desenvolvimento de aplicativos com PhoneGap e Sencha TouchIntrodução ao desenvolvimento de aplicativos com PhoneGap e Sencha Touch
Introdução ao desenvolvimento de aplicativos com PhoneGap e Sencha Touch
 
Desenvolvimento de Aplicativos para a Plataforma Android
Desenvolvimento de Aplicativos para a Plataforma AndroidDesenvolvimento de Aplicativos para a Plataforma Android
Desenvolvimento de Aplicativos para a Plataforma Android
 
Estratégias de desenvolvimento de aplicativos para dispositivos móveis em vár...
Estratégias de desenvolvimento de aplicativos para dispositivos móveis em vár...Estratégias de desenvolvimento de aplicativos para dispositivos móveis em vár...
Estratégias de desenvolvimento de aplicativos para dispositivos móveis em vár...
 
Desenvolvimento para Android - Bento Gonçalves (08/2011)
Desenvolvimento para Android - Bento Gonçalves (08/2011)Desenvolvimento para Android - Bento Gonçalves (08/2011)
Desenvolvimento para Android - Bento Gonçalves (08/2011)
 
PALESTRA :: Desenvolvimento para plataforma Android
PALESTRA :: Desenvolvimento para plataforma Android PALESTRA :: Desenvolvimento para plataforma Android
PALESTRA :: Desenvolvimento para plataforma Android
 
Programação para dispositivos Móveis - Criação de aplicativos - Android Aula...
Programação para dispositivos Móveis - Criação de aplicativos  - Android Aula...Programação para dispositivos Móveis - Criação de aplicativos  - Android Aula...
Programação para dispositivos Móveis - Criação de aplicativos - Android Aula...
 
Desenvolvendo para windows phone, um novo paradigma
Desenvolvendo para windows phone, um novo paradigmaDesenvolvendo para windows phone, um novo paradigma
Desenvolvendo para windows phone, um novo paradigma
 
Android - basic to advanced 1 - SENAI - MANAUS - Amazonas
Android -  basic to advanced 1 - SENAI - MANAUS - AmazonasAndroid -  basic to advanced 1 - SENAI - MANAUS - Amazonas
Android - basic to advanced 1 - SENAI - MANAUS - Amazonas
 
A vez do mobile - Dev in Bahia #3
A vez do mobile - Dev in Bahia #3A vez do mobile - Dev in Bahia #3
A vez do mobile - Dev in Bahia #3
 
Android Por onde começar o Desenvolvimento para dispositivos mobiles e TVs
Android Por onde começar o Desenvolvimento para dispositivos mobiles e TVsAndroid Por onde começar o Desenvolvimento para dispositivos mobiles e TVs
Android Por onde começar o Desenvolvimento para dispositivos mobiles e TVs
 
Palestra sobre android
Palestra sobre androidPalestra sobre android
Palestra sobre android
 
Apresentacao TCC - TCC - Desenvolvimento aplicativo para o ROS (Robotic Opera...
Apresentacao TCC - TCC - Desenvolvimento aplicativo para o ROS (Robotic Opera...Apresentacao TCC - TCC - Desenvolvimento aplicativo para o ROS (Robotic Opera...
Apresentacao TCC - TCC - Desenvolvimento aplicativo para o ROS (Robotic Opera...
 
Desenvolvimento Android
Desenvolvimento AndroidDesenvolvimento Android
Desenvolvimento Android
 
Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016
Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016
Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016
 
Desenvolvendo aplicações móveis
Desenvolvendo aplicações móveisDesenvolvendo aplicações móveis
Desenvolvendo aplicações móveis
 

Identificando variabilidades em aplicações para android

  • 1. 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
  • 2. Introdução Motivação Desenvolvimento Metodologia Conclusão Diversidade de aparelhos Adorilson Bezerra Identificando variabilidades em aplicações para Android
  • 3. Introdução Motivação Desenvolvimento Metodologia Conclusão Problema Diferentes características dos dispositivos Diferente disponibilidade de memória e tamanho máximo da aplicação Diferentes perfis (MIDP 1.0 e MIDP 2.0); Diferentes implementações de um mesmo perfil em J2ME (diferente JSRs); APIs proprietárias e pacotes opcionais; Bugs específicos Línguas internacionais Adorilson Bezerra Identificando variabilidades em aplicações para Android
  • 4. Introdução Motivação Desenvolvimento Metodologia Conclusão Metodologia Leitura de trabalhos relacionados Consulta à comunidade Consulta à API (http://developer.android.com/guide/basics/what-is-android.html) Leitura de código-fonte de projetos FLOSS Adorilson Bezerra Identificando variabilidades em aplicações para Android
  • 5. Introdução Trabalhos relacionados Desenvolvimento Plataforma Android Conclusão Variabilidades em aplicações para Android Aplicativos móveis (J2ME) 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 Pedro H. M. Sampaio, Alexandre L. G. Damasceno, Igor Sampaio, Vander Alves, Geber Ramalho, Paulo Borba: Portando Jogos em J2ME: Desafios, Estudo de Caso, e Diretrizes. SCENTIA 2004 vol. 15 Adorilson Bezerra Identificando variabilidades em aplicações para Android
  • 6. Introdução Trabalhos relacionados Desenvolvimento Plataforma Android Conclusão Variabilidades em aplicações para Android Comparative Analysis of Porting Strategies in J2ME Games Estratégias Incremental Approach: the Zaak Case Nokia S60 -> Nokia S40 Redução do tamanho: 186K -> 63K Carregamento de imagens Program Transformation: The Rain of Fire Nokia S40, Nokia S60 e Motorola T720 (ad hoc) Java Transformation System (JaTS) Preprocessing: The My Big Brother Case 8 versões para 50 aparelhos Compilação condicional Adorilson Bezerra Identificando variabilidades em aplicações para Android
  • 7. Introdução Trabalhos relacionados Desenvolvimento Plataforma Android Conclusão Variabilidades em aplicações para Android Comparative Analysis of Porting Strategies in J2ME Games Avaliação Adorilson Bezerra Identificando variabilidades em aplicações para Android
  • 8. Introdução Trabalhos relacionados Desenvolvimento Plataforma Android Conclusão Variabilidades em aplicações para Android Comparative Analysis of Porting Strategies in J2ME Games Lições aprendidas e boas práticas Iniciar o desenvolvimento pelos dispositivos com maiores restrições É possível combinar as estratégias Separar os interesses (código de lógico e código para elementos gráficos, por exemplo) Testar o software nos aparelhos reais Manter uma base de bugs conhecidos Adorilson Bezerra Identificando variabilidades em aplicações para Android
  • 9. Introdução Trabalhos relacionados Desenvolvimento Plataforma Android Conclusão Variabilidades em aplicações para Android Portando Jogos em J2ME: Desafios, Estudo de Caso, e Diretrizes Aprofundamento do estudo de caso "Zaak"do artigo anterior Categoriza as soluções atuais: Ferramentas de pré-processamento (Antenna e J2ME Polish) Diretrizes específicas (Motorola Port Guide) Diretrizes amplas Ferramentas semi-automáticas (Tira Jump) Abordagens Formais (restrito a GUI) Adorilson Bezerra Identificando variabilidades em aplicações para Android
  • 10. Introdução Trabalhos relacionados Desenvolvimento Plataforma Android Conclusão Variabilidades em aplicações para Android Portando Jogos em J2ME: Desafios, Estudo de Caso, e Diretrizes Efeitos no porte do código-fonte Adorilson Bezerra Identificando variabilidades em aplicações para Android
  • 11. Introdução Trabalhos relacionados Desenvolvimento Plataforma Android Conclusão Variabilidades em aplicações para Android Portando Jogos em J2ME: Desafios, Estudo de Caso, e Diretrizes Síntese das atividades do estudo de caso Adorilson Bezerra Identificando variabilidades em aplicações para Android
  • 12. Introdução Trabalhos relacionados Desenvolvimento Plataforma Android Conclusão Variabilidades em aplicações para Android Sobre Android Benjamin Speckmann: The Android mobile platform. Eastern Michigan University. 2008. Jan Bosch: From Software Product Lines to Software Ecosystems. SPLC 2009. Adorilson Bezerra Identificando variabilidades em aplicações para Android
  • 13. Introdução Trabalhos relacionados Desenvolvimento Plataforma Android Conclusão Variabilidades em aplicações para Android The Android mobile platform Android vs Symbian vs Windows Mobile Adorilson Bezerra Identificando variabilidades em aplicações para Android
  • 14. Introdução Trabalhos relacionados Desenvolvimento Plataforma Android Conclusão Variabilidades em aplicações para Android The Android mobile platform Desenvolvimento para Android vs Desenvolvimento para Symbian OS Vantagens: todas Desvantagens: nenhuma de ordem técnica Adorilson Bezerra Identificando variabilidades em aplicações para Android
  • 15. Introdução Trabalhos relacionados Desenvolvimento Plataforma Android Conclusão Variabilidades em aplicações para Android From Software Product Lines to Software Ecosystems Um ecossistema de software é um conjunto de soluções de software que possibilitam, suportam e automatizam atividades e transações... Adorilson Bezerra Identificando variabilidades em aplicações para Android
  • 16. Introdução Trabalhos relacionados Desenvolvimento Plataforma Android Conclusão Variabilidades em aplicações para Android From Software Product Lines to Software Ecosystems Sistemas operacionais Característica: fornecedores de S.O.’s disponibilizam ferramentas de desenvolvimento visando a adotação do ecossistema por desenvolvedores de aplicações Fator de sucesso: minimização do esforço dos desenvolvedores para a criação de aplicações Desafio: rápida evolução dos dispositivos Adorilson Bezerra Identificando variabilidades em aplicações para Android
  • 17. Introdução Trabalhos relacionados Desenvolvimento Plataforma Android Conclusão Variabilidades em aplicações para Android O que é o Android Android é um conjunto de softwares para dispositivos móveis, incluindo sistema operacional, middleware e aplicações chaves/básicas. O Android SDK provê as ferramentas e API’s necessárias para desenvolvimento de aplicações utilizando a linguagem de programação Java. Adorilson Bezerra Identificando variabilidades em aplicações para Android
  • 18. Introdução Trabalhos relacionados Desenvolvimento Plataforma Android Conclusão Variabilidades em aplicações para Android Características - independentes do aparelho Framework de aplicações possibilitando reuso e troca de componentes) Maquina virtual Dalvik Navegador web integrado (usando o motor WebKit) SQLite para armazenamento local de dados Suporte para midias comuns de audio, video e formatos de imagens (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF) Ambiente de desenvolvimento inclue um emulador de dispositivo, ferramentas para depuração, analise dinâmica de memória e performance, e um plugin para o Eclipse IDE. Adorilson Bezerra Identificando variabilidades em aplicações para Android
  • 19. Introdução Trabalhos relacionados Desenvolvimento Plataforma Android Conclusão Variabilidades em aplicações para Android Características - dependentes do aparelho Otimizações gráficas graças a biblioteca 2D customizada; gráficos 3D baseados em Open GL ES 1.0 (aceleração por hardware opcional) Telefonia GSM Bluetooth, EDGE, 3G, e WiFi Câmera, GPS, bússola, e acelerômetro Adorilson Bezerra Identificando variabilidades em aplicações para Android
  • 20. Introdução Trabalhos relacionados Desenvolvimento Plataforma Android Conclusão Variabilidades em aplicações para Android Arquitetura Adorilson Bezerra Identificando variabilidades em aplicações para Android
  • 21. Introdução Trabalhos relacionados Desenvolvimento Plataforma Android Conclusão Variabilidades em aplicações para Android Arquitetura Aplicações: o Android é distribuído com diversas aplicações Framework de aplicações: componentes para serem utilizadas no desenvolvimento de aplicações Bibliotecas: conjunto de bibliotecas em C/C++ usadas por várias componentes do sistema Runtime: bibliotecas básica do Java Kernel Linux: versão 2.6 Adorilson Bezerra Identificando variabilidades em aplicações para Android
  • 22. Introdução Trabalhos relacionados Desenvolvimento Plataforma Android Conclusão Variabilidades em aplicações para Android Estrutura padrão de diretórios Adorilson Bezerra Identificando variabilidades em aplicações para Android
  • 23. Introdução Trabalhos relacionados Desenvolvimento Plataforma Android Conclusão Variabilidades em aplicações para Android Dispositivos com ou sem sensores Acelerômetro Câmera Luminosidade Bluetooth ... Adorilson Bezerra Identificando variabilidades em aplicações para Android
  • 24. Introdução Trabalhos relacionados Desenvolvimento Plataforma Android Conclusão Variabilidades 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
  • 25. Introdução Trabalhos relacionados Desenvolvimento Plataforma Android Conclusão Variabilidades 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
  • 26. Introdução Trabalhos relacionados Desenvolvimento Plataforma Android Conclusão Variabilidades em aplicações para Android Tamanhos e densidade das telas Adorilson Bezerra Identificando variabilidades em aplicações para Android
  • 27. Introdução Trabalhos relacionados Desenvolvimento Plataforma Android Conclusão Variabilidades em aplicações para Android Mecanismo de interação Teclado físico Trackball Botões de navegação (five-way navigation pad) Raro esse tipo de restrição Adorilson Bezerra Identificando variabilidades em aplicações para Android
  • 28. Introdução Trabalhos relacionados Desenvolvimento Plataforma Android Conclusão Variabilidades em aplicações para Android Versão da API Adorilson Bezerra Identificando variabilidades em aplicações para Android
  • 29. Introdução Trabalhos relacionados Desenvolvimento Plataforma Android Conclusão Variabilidades em aplicações para Android Pacote de compatibilidade Suporte estático para API’s mais recentes A partir da API nível 4 Facilita o desenvolvimento na medida em que permite o desenvolver se preocupar menos com a versão da API Adorilson Bezerra Identificando variabilidades em aplicações para Android
  • 30. Introdução Trabalhos relacionados Desenvolvimento Plataforma Android Conclusão Variabilidades em aplicações para Android Versão do OpenGL ES Adorilson Bezerra Identificando variabilidades em aplicações para Android
  • 31. Introdução Trabalhos relacionados Desenvolvimento Plataforma Android Conclusão Variabilidades em aplicações para Android Android NDK Suporte para desenvolvimento em código nativo ARMv5TE (incluindo instruções Thumb-1) ARMv7-A (incluindo instruções Thumb-2 e VFPv3-D16, com suporte opcional para NEON/VFPv3-D32) x86 Aumenta a complexidade sem necessariamente aumentar a performance Adorilson Bezerra Identificando variabilidades em aplicações para Android
  • 32. Introdução Trabalhos relacionados Desenvolvimento Plataforma Android Conclusão Variabilidades em aplicações para Android AndroidManifest.xml "Promete"mas não cumpre As restrições são válidas apenas para filtragem no Android Market Adorilson Bezerra Identificando variabilidades em aplicações para Android
  • 33. Introdução Dificuldades Desenvolvimento Trabalhos futuros Conclusão Dificuldades Inexperiência com a plataforma Ausência de trabalhos na área de LPS relacionados à plataforma Adorilson Bezerra Identificando variabilidades em aplicações para Android
  • 34. Introdução Dificuldades Desenvolvimento Trabalhos futuros Conclusão Trabalhos futuros Aprofundar a pesquisa Adorilson Bezerra Identificando variabilidades em aplicações para Android
  • 35. Introdução Dificuldades Desenvolvimento Trabalhos futuros Conclusão Perguntas ? Cuidado como você usa o Android. Ele sabe quando o usuário é um macaco: http://is.gd/nDcoFc Adorilson Bezerra Identificando variabilidades em aplicações para Android