Geração Automática de Código Android Eficiente a partir de Modelos UML



Documentos relacionados
Geração Automática de Código Android Eficiente a partir de Modelos UML

Android: Ciclo de vida da Activity

API's e Aplicações para Android

Java. Marcio de Carvalho Victorino

2 Diagrama de Caso de Uso

Orientação a Objetos

Programação para Android. Aula 06: Activity, menus e action bar

Programação para Dispositivos Móveis

Programação para Dispositivos Móveis. Activities

Orientação a Objetos com Java

DESENVOLVIMENTO DE UM APLICATIVO DO TIPO SECRETÁRIO VIRTUAL PARA A PLATAFORMA ANDROID

Laboratório I Aula 2

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite (81 )

UML - Unified Modeling Language

Prof. Jhonatan Fernando

Introdução ao Android

Sobre o Professor Dr. Sylvio Barbon Junior

BRAlarmExpert. Software para Gerenciamento de Alarmes. BENEFÍCIOS obtidos com a utilização do BRAlarmExpert:

Uma abordagem para Engenharia de Requisitos no Domínio de Software Embarcado

Projeto de Software Orientado a Objeto

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

Programação para Dispositivos Móveis

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

Tópicos em Engenharia de Computação

Programação em Java para a Plataforma Android AULA 1. Primeiros Passos

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS

Objetivos: Sun recomenda que utilize o nome de domínio da Internet da empresa, para garantir um nome de pacote único

Unisant Anna Gestão Empresarial com ERP 2014 Modelagem de Sistemas - UML e MER

Introdução à Engenharia de Software

ESCOLHA UM TESTE PARA EXECUTAR

INTRODUÇÃO À PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS. ADS 6º Período

Introdução a Java. Hélder Nunes

Metodologia e Gerenciamento do Projeto na Fábrica de Software v.2

Programação para a Plataforma Android Aula 7. Mul$mídia

Profº. Enrique Pimentel Leite de Oliveira

Programação por Objectos. Java

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

Prof. Jhonatan Fernando

Modelagemde Software Orientadaa Objetos com UML

RevISTa: Publicação técnico-científica do IST-Rio. nº 05 Data: Dezembro / 2012 ISSN

Programação de Computadores - I. Profª Beatriz Profº Israel

PDS - DATASUS. Processo de Desenvolvimento de Software do DATASUS

Desenvolvimento para Android Prá9ca 2. Prof. Markus Endler

Capítulo 22. Associações entre Classes. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

ENGENHARIA DE SOFTWARE I

UNIVERSIDADE DO ESTADO DE SANTA CATARINA - UDESC DCC Departamento de Ciência da Computação Joinville-SC

RUP. Evolução. Principais Características do RUP. Principais Características do RUP RUP

REVISÃO ENGENHARIA DO SOFTWARE. Isac Aguiar isacaguiar.com.br

Feature-Driven Development

Modelos de Sistema by Pearson Education. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 8 Slide 1.

GuiBi: Um aplicativo para plataforma Android com um guia comercial da cidade de Bambuí MG

Metodologia de Desenvolvimento de Software. Prof. M.Sc. Sílvio Bacalá Jr

2 Orientação a objetos na prática

SISTEMA INFORMATIZADO PARA CONTROLE DE JOGO E GERAÇÃO DE SÚMULAS DE HANDEBOL

TRABALHO DE DIPLOMAÇÃO Regime Modular ORIENTAÇÕES SOBRE O ROTEIRO DO PROJETO FINAL DE SISTEMAS DE INFORMAÇÕES

Wilson Moraes Góes. Novatec

UML Aspectos de projetos em Diagramas de classes

Engenharia de Software

Metodologia e Gerenciamento do Projeto na Fábrica de Software

Notas de Aula 04: Casos de uso de um sistema

Modelagem de Casos de Uso (Parte 1)

Guia de Fatores de Qualidade de OO e Java

A Introdução à Programação Orientada a Objetos. Programação e Sistemas de Informação

Aplicativo web para definição do modelo lógico no projeto de banco de dados relacional

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais

PROGRAMAÇÃO ORIENTADA A OBJETOS

Tutorial para atividades do Trabalho Prático da disciplina DCC 603 Engenharia de Software

Engenharia de Software: conceitos e aplicações. Prof. Tiago Eugenio de Melo, MSc tiagodemelo@gmail.com

Linguagem de Programação III

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

Engenharia de Software I

Modelagem de Software Prof. Flávio de Oliveira Silva, Ph.D.

Programação para Dispositivos Móveis

UNIDADE 4. Introdução à Metodologia de Desenvolvimento de Sistemas

Um modelo é uma simplificação da realidade. Construímos modelos para compreender melhor o sistema que estamos desenvolvendo.

Desenvolvimento de aplicações na plataforma Google Android

Análise e Projeto Orientados por Objetos

Uso da linguagem de especificação SDL como alternativa ao diagrama de estados proposto pela linguagem UML

EMENTA DO CURSO. Tópicos:

Programação para Android. Aula 08: Persistência de dados SQL

2 Desenvolvimento de Software Orientado a Aspectos

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Análise de Programação

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

Sistema de partículas para dispositivos móveis na plataforma Android. Acadêmico: Angel Vitor Lopes Orientador: Mauro Marcelo Mattos

Programação online em Java

Etapas e Desafios. plataforma de BPM corporativa. BPMS Showcase Kelly Sganderla Consultora de Processos, CBPP Kelly.sganderla@iprocess.com.

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

MAGREGISTER 1.0: GERADOR DE INTERFACES DE COLETAS DE DADOS PARA PDA S. Acadêmico: Gilson Chequeto Orientador: Adilson Vahldick

Qualidade de Software

UNIVERSIDADE FEDERAL DO PARANÁ

ANÁLISE E PROJETO ORIENTADO A OBJETOS. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com

Introdução Dalvik Linux 2.6. Android. Diogo de Campos, João Paulo Pizani Flor, Maurício Oliveira Haensch, Pedro Covolan Bachiega

Tipos de teste de software

Transcrição:

Geração Automática de Código Android Eficiente a partir de Modelos UML Abilio Gambim Parada Aline Rodrigues Tonini Lisane Brisolara de Brisolara Grupo de Arquiteturas e Circuitos Integrados - GACI Universidade Federal de Pelotas - UFPel Pelotas-Brasil 1 / 43

Sumário 1 Introdução 2 Geração de Código 3 Estudo de Caso 4 Conclusões 2 / 43

Introdução Alternativa ao uso de computadores pessoais Crescente demanda no mercado por novos aplicativos Existem várias plataformas para dispositivos móveis: Symbian, Android, ios, BlackBerry... 3 / 43

Introdução O desenvolvimento de aplicativos para dispositivos móvies também trazem preocupações extras como: Eficiência! Estas aplicações devem fazer um bom uso dos recursos do dispositivo Um aspecto importante é o desempenho da aplicação! 4 / 43

Introdução Visando um melhor desempenho de aplicativos, frequentemente são adotadas algumas boas práticas Boas práticas: dicas para obter a melhor forma de realizar uma tarefa A Google propos um conjunto de boas práticas para Android com este objetivo! 5 / 43

Motivação Android Uma das plataformas mais utilizadas Desenvolvida pela Google Solução completa de código livre Suporte a vários dispositivos Ferramentas de apoio ao desenvolvedor 6 / 43

Motivação A Google indica uma serie de boas práticas para obter um melhor desempenho das aplicações Android, como: 1 Evitar a criação de objetos desnecessários 2 Preferir métodos estáticos, invocação 15% a 20% mais rápidos É recomendado a definição de constantes como static Para as de tipo primitivo e String static final 7 / 43

Motivação 4 Evitar o uso de métodos getters e setters O tempo de acesso direto ao atributo é três vezes mais rápido 5 Sintaxe apropriada para o for 6 Visibilidade package para classe interna 8 / 43

Motivação Java Máquina virtual Dalvik, no lugar da tradicional JVM Constante reação com as interações do usuário Programação orientada a eventos e serviços Características estas que aumentam a complexidade do projeto! 9 / 43

Motivação MDE: Engenharia Dirigida por Modelos Modelos principal artefato na construção do sistema Utiliza UML como linguagem padrão de modelagem Abstração, automação, foco no problema, rapidez no desenvolvimento, produtividade, corretudo, manutenção Diminui em 70% o tempo de desenvolvimento, segundo estudos realizados na Motorola em 2007 Ferramentas de apoio para geração de código a partir de modelos 10 / 43

Geração de Código Abordagem proposta Geração de código Android eficiente, aplicando as boas práticas, baseado em MDE Utiliza diagramas de Classe e de Sequência Permite representação estrutural e comportamental do sistema Considera as características Android, propondo modelagem especial para estas Aplica boas práticas de desempenho durante a geração de código 11 / 43

Geração de Código 12 / 43

Modelagem Estrutural A estrutura da aplicação é representada por Diagrama de Classe UML Classes, atributos, operações e relacionamentos Na modelagem estrutural Android também é observado componetes como Activity e Service! 13 / 43

Activity Activity é utilizado para representar a tela de um aplicativo (ex: como a interface de um player de audio) Métodos para Activity: oncreate onstart onresume onpause onstop ondestroy... 14 / 43

Service Service é responsável por atividades que executam em segundo plano, podendo estas serem padrão ou do usuário (ex: a atividade de tocar o audio) Métodos para Service: oncreate onstart onbind ondestroy... 15 / 43

Modelagem Estrutural Definição de Activity e Service como subclasses Relacionamento de especialização Indicação no modelo quais métodos serão customizados 16 / 43

Geração de Código Estrutural A geração para métodos como Activity e Service difere de métodos normais Para estes métodos, código padrão pode ser gerado conforme as particularidades de cada método Exemplo: Método oncreate de uma Activity; public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); } 17 / 43

Boas práticas estruturais Na geração estrutural da aplicação Android são aplicadas boas práticas como: Modificadores static e static final static para constantes static final para tipos primitivos e String Eliminação de métodos de acesso (getters e setters) e modificação da visibilidade do atributo 18 / 43

Modelagem Comportamental O comportamento da aplicação é representado por Diagramas de Sequência UML: Troca de mensagens, iterações, condicionais... Além disso, em Android temos conceitos como: Intent: fornece acesso a um recurso (ex: Bluetooth); 19 / 43

Modelagem Comportamental Criação da Intent a ser usada Invocação do método. Intent intent = new Intent(BluetoothDevice.ACTION FOUND); startactivity(intent); 20 / 43

Boas práticas comportamentais Na geração comportamental também são aplicadas boas práticas como: Substituição da invocação dos métodos getters e setters Escolha da sintaxe apropriada para o for for-each: para coleções for-length: para vetores 21 / 43

Estudo de Caso Aplicação Snake, código livre disponível no site de apoio ao desenvolvedor Android Engenharia reversa Modelos construidos na ferramenta Papyrus Comparação de desempenho do código original e o código automaticamente gerado com as otimizações 22 / 43

Estudo de Caso: Metodologia Para avaliar da eficiência entre os códigos foi utilizada a ferramenta DDMS (Dalvik Debug Monitor Server) A DDMS fornece resultados relativos ao tempo de execução do código Android CPU Include Time: considera o tempo de execução do método analisado, incluindo os métodos chamados por este CPU Exclude Time: considera apenas o tempo de execução do método analisado 23 / 43

Estudo de Caso: Metodologia Testes executados na plataforma Android 4.1.2 Todos os testes foram repetidos 30 vezes, obtendo assim uma média, utilizada nas comparações realizadas Para avaliar se a comparação das médias é válida, foi utilizado o teste estatístico t de student 24 / 43

Estudo de Caso: Visão Estrutural Representada por diagrama de Classe Classes Android destacas em cinza Relacionamento de epecialização/generalização 25 / 43

Estudo de Caso: Código Estrutural Trecho de código original, setter: private TextView textview;... public void settextview(textview textview){ this.textview = textview; } Trecho de código gerado aplicando a boa prática: public TextView textview; 26 / 43

Estudo de Caso: Código Comportamental Trecho de código original, invocação do método de acesso: msnakeview.settextview(findviewbyid(r.id.text)); Trecho de código gerado aplicando a boa prática: msnakeview.textview = findviewbyid(r.id.text); 27 / 43

Estudo de Caso: Desempenho Avaliação da boa prática de método de acesso 1 Incl CPU Time (ms) 0.8 0.6 0.4 0.2 0.84 0.8 0 Com Setter Sem Setter Sem Setter melhora de 4.76% no desempenho 28 / 43

Estudo de Caso: Visão Comportamental Representada por diagramas de sequência Comportamento do método enqueuedirection Iterações, condicionais, troca de mensagens 29 / 43

Estudo de Caso: Código Comportamental Trecho de código original: private void enqueuedirection (int direction) { for(int i=0; i < mnextdirectionarray.size(); i++) if(mnextdirectionarray.get(i) == 0) { mnextdirectionarray.add(i,direction); break; } } } 30 / 43

Estudo de Caso: Código Comportamental Trecho de código aplicando a boa prática for-length: private void enqueuedirection (int direction) { int count = mnextdirectionarray.length(); for(int i=0; i < count; i++) if(mnextdirectionarray.get(i) == 0) { mnextdirectionarray.add(i,direction); break; } } } 31 / 43

Estudo de Caso: Código Comportamental Trecho de código aplicando a boa prática for-each: private void enqueuedirection (int direction) { for(integer count: mnextdirectionarray) if(count.equals(0)) { mnextdirectionarray.add(direction); break; } } } 32 / 43

Estudo de Caso: Desempenho Avaliação entre as sintaxes para for 80 82.27 Excl CPU Time (ms) 60 40 20 59.08 12.45 For normal For-length For-each 33 / 43

Estudo de Caso: Desempenho Melhora no desempenho do for-length e for-each em comparação com for normal 80 84.86 For normal % 60 40 28.18 For-length For-each 34 / 43

Conclusões Este trabalho apresenta uma abordagem MDE para geração de código Android Considera as características Android Aplica automaticamente boas práticas Geração de código otimizado fornecendo abstração para o desenvolvedor Visão Estrutural: Diagrama de Classe Visão Comportamental: Diagrama de Sequência 35 / 43

Trabalhos Futuros Diagramas de sequência limitam a geração de código comportamental proposto até o nível de chamada de método Para obter código completo outros diagramas precisam ser considerados na geração de código Atualmente é implementado três das boas práticas sugeridas pela Google Estender a abordagem para considerar outras boas práticas 36 / 43

Agradecimentos Suporte Financeiro CNPq NESS (PRONEX-10/0043-0) 37 / 43

Geração Automática de Código Android Eficiente a partir de Modelos UML Muchas gracias! Abilio Gambim Parada agparada@inf.ufpel.edu.br 38 / 43

Dados Boa prática Setter Testes Com Setter Sem Setter 1 0.872 0.789 2 0.821 0.842 3 0.825 0.804 4 0.841 0.790 5 0.874 0.763 6 0.821 0.789 7 0.85 0.784... 28 0.884 0.807 29 0.842 0.764 30 0.846 0.807 Média 0.8444 0.8029 σ 0.0275 0.0299 39 / 43

Dados Boa prática Setter Com Setter Sem Setter Valor p: 0.0001 Diferença entre Médias 0.0414666666000 Intervalo de Confiança a 95% 0.0265818245330 to 0.0563515086670 Conclusão: A diferença é extremamente significativa Testes executados na plataforma Android 4.1.2 40 / 43

Dados Boa prática For Testes For Normal For-Lenght For-Each 1 57.703 81.729 12.644 2 63.043 81.646 11.69 3 59.34 80.752 12.324 4 56.348 82.582 12.277 5 58.079 85.546 13.402 6 57.112 84.011 12.225 7 59.555 80.695 12.024.... 28 58.714 83.429 12.237 29 60.621 80.841 12.649 30 61.237 81.531 13.543 Média 59.0882 82.2773 12.4500 σ 1.5527 1.5566 0.5248 41 / 43

Dados Boa prática For For Normal For Lenght Valor p: 0.0001 Diferença entre Médias 23.1890666667000 Intervalo de Confiança a 95% 22.3855308061390 to 23.9926025272610 Conclusão: A diferença é extremamente significativa Testes executados na plataforma Android 4.1.2 42 / 43

Dados Boa prática For For Normal For Each Valor p: 0.0001 Diferença entre Médias 13215.11239999670 Intervalo de Confiança a 95% 46.0391481703574 to 47.2371851628426 Conclusão: A diferença é extremamente significativa Testes executados na plataforma Android 4.1.2 43 / 43