Dev (Back & Front)ARTIGO

Entrega acelerada de dispositivos e aplicativos Android com desenvolvimento orientado pelo modelo

Junto com a pilha de softwares do Android, que rapidamente conquista uma fatia do mercado de
aplicativos em vários dispositivos, os designs de produtos incorporados estão se tornando mais complexos
e os ciclos de vida dos produtos está diminuindo. O desenvolvimento eficiente se tornou essencial. Este
artigo apresenta várias situações nas quais o uso do model-driven development (MDD) pode ajudar os
desenvolvedores a acelerar a entrega de dispositivos e aplicativos com base no Android.

A pilha de softwares do Android está conquistando rapidamente a fatia do mercado de aplicativos em
vários dispositivos, como smart phones, tablets, televisões e sistemas veiculares de
informações e entretenimento. A diversidade de segmentos do mercado, uma
explosão no número de novos dispositivos e as demandas de usuários heterogêneos estão
forçando os fabricantes de dispositivos e fornecedores de aplicativos a apresentar produtos
inovadores e de alta qualidade em períodos cada vez mais curtos. Ao mesmo tempo, a redução
dos orçamentos para desenvolvimento e um ambiente econômico desfavorável tornam o uso eficiente
dos recursos de desenvolvimento uma necessidade fundamental.

Com o aumento da complexidade dos designs de produtos incorporados e a redução dos ciclos de vida dos produtos,
o desenvolvimento eficiente se tornou essencial. A emergência do model-driven
development (MDD) possibilitou a aceleração do processo de desenvolvimento. Com o
MDD, os engenheiros de software podem entender e analisar melhor os requisitos, definir
especificações de design, testar conceitos de sistema usando a simulação e gerar códigos
automaticamente para a implementação direta no hardware de destino. Este artigo apresenta
vários cenários nos quais o uso do MDD pode ajudar os desenvolvedores a acelerar a entrega de
dispositivos e aplicativos com base no Android.

Sobre a pilha do Android

O Android é uma pilha de softwares para dispositivos móveis. Ele inclui um sistema operacional,
middleware e aplicativos básicos. O Android SDK fornece
as ferramentas e as APIs necessárias para começar a desenvolver aplicativos na plataforma Android,
usando a linguagem de programação Java. Entre elas estão um emulador de dispositivo,
ferramentas para depuração, geração de perfil de memória e desempenho e um plug-in para o
ambiente de desenvolvimento Eclipse. A Figura 1 mostra os principais componentes do sistema operacional Android
dentro da estrutura do aplicativo, bibliotecas, tempo de execução do Android e
kernel Linux.

Figura 1. Principais componentes da pilha de software Android

Os desenvolvedores de software do Android podem ser classificados como dois tipos: fornecedores de plataforma e
desenvolvedores de aplicativo.

  • Fornecedores de plataforma são as empresas que combinam software e hardware para
    produzir os próprios dispositivos. Esses dispositivos servem como o ambiente de hospedagem para
    aplicativos de dispositivo inteligentes, pelo menos para a parte “no dispositivo” dos
    aplicativos. (Muitos desses aplicativos também incluem um componente de servidor.)
  • Desenvolvedores de aplicativo são as organizações que criam o software
    que chamam os serviços expostos pelo dispositivo Android (“a plataforma”). Nessa
    categorização, é importante observar que, frequentemente, os fornecedores de plataforma
    desejam fornecer seus dispositivos pré-carregados com um conjunto de aplicativos de modo que os
    dispositivos sejam úteis imediatamente, da forma como são fornecidos. Consequentemente, é comum os
    fornecedores de plataforma desenvolverem aplicativos e garantiram que esses aplicativos
    desenvolvidos por terceiros funcionem adequadamente com o dispositivo que o fornecedor pretende apresentar.

Desenvolvimento orientado pelo modelo para sistema embarcado

Modelos são usados para representar um sistema em níveis superiores de abstração, enquanto
promovem a consistência e precisão. Como os modelos estão em um nível superior
de abstração, comparado ao código fonte, eles permitem a construção de visualizações
que podem responder a questões específicas sobre a funcionalidade, estrutura ou comportamento
do sistema ou software. É importante diferenciar entre “imagens” e
modelos de semântica. Uma imagem desconectada mostrando um conceito vago pode ser útil, mas um
modelo profundamente semântico que representa detalhes dos aspectos relativos do
software, pode fornecer benefícios enormes ao desenvolvedor e às outras partes interessadas.
Especificamente, bons modelos são conectados ao software de modo que sempre representam o
conteúdo real da fonte, o que aumenta a consistência nas visualizações e melhora
a comunicação do software.

A linguagem de modelagem mais popular do mundo é a Unified Modeling Language
(UML), usada há mais de uma década com grande sucesso. A UML tem base em uma
definição relativamente formal, conhecida como metamodelo, que proporciona à linguagem
precisão e escopo. Os diagramas de UML fornecem uma visão dos aspectos do sistema
representando graficamente os elementos do modelo e suas relações. Um modelo que
se concentra na funcionalidade e no comportamento do aplicativo pode ser usado para gerar
um aplicativo totalmente executável, pronto para ser implementado em um destino específico,
RTOS, middleware e mecanismos de comunicação (consulte os dois livros de Bruce Powell
Douglass citados em Recursos.

Observação:

IBM® Rational® Rhapsody® é um ambiente de
desenvolvimento visual
para engenheiros de sistema e desenvolvedores de
software que estão criando sistemas e software em tempo real ou
embarcados. O autor usa esse software para demonstrar alguns dos
conceitos envolvidos no model-driven development (MDD) em convergência
com o Android
SDK para este artigo.

Convergindo o MDD com o desenvolvimento de software no Android

O MDD fornece várias maneiras de acelerar o desenvolvimento de dispositivos Android. Isso é
realizado por meio de uma compreensão profunda dos aplicativos Android e da estrutura do Android,
atualizando e criando aplicativos Android e conectando o
desenvolvimento de software aos requisitos, testes e planejamento. Esses benefícios são
aproveitados de dentro do Eclipse, que é o principal ambiente de desenvolvimento para
hosts do Android, tanto o Android SDK quanto as ferramentas MDD para Android.

A API do Android como parte do modelo

UML é uma linguagem avançada para modelagem, mas fornece apenas um modelo genérico de
informações para os sistemas. Com o passar dos anos, a UML gerou diversas variantes, conhecidas
como perfis, para áreas específicas de desenvolvimento. A modelagem mais próxima ao
domínio relevante reduz a ambiguidade e fornece uma visão mais clara da intenção do design
para colegas e clientes.

Para facilitar o desenvolvimento no domínio do Android, o Android Framework está sendo
visualizado por meio de uma biblioteca de modelos composta de vários pacotes, classes
e interfaces públicas encontradas na API do sistema operacional móvel e por meio de um perfil que
encapsula alguns dos principais blocos de criação do Android como estereótipos. Os desenvolvedores podem
arrastar elementos do perfil e da biblioteca de modelos para os diagramas de UML. Isso
enriquece o design com o uso da API e guia a geração de aplicativos do Android a partir do
modelo. A Figura 2 mostra um perfil de UML e uma biblioteca de modelos com base na API do Android.
O perfil e a biblioteca de modelos são usados durante a visualização, criação e
atualização dos aplicativos Android a partir das ferramentas MDD. Isso permite que os desenvolvedores
usem a terminologia do Android nos designs.

Figura 2. A API do Android visualizada por meio de uma biblioteca de modelo e um perfil de UML

O desenvolvimento de um dispositivo com Android envolve um novo
código, modificações no código já existente,
manutenção do mesmo e bibliotecas de
terceiros. O código existente e
as bibliotecas de terceiros podem ser visualizados no
modelo, resultando em uma representação
gráfica de sua estrutura e relações usando os diagramas
de classe UML. Essa
visualização permite que os desenvolvedores entendam
diferentes aspectos de um aplicativo Android existente e os comuniquem
às diversas partes interessadas, como
clientes, gerentes, arquitetos, outros desenvolvedores e
testadores. Eles também podem
extrair a documentação do modelo, fornecendo um aspecto
diferente de
comunicação.

Durante a visualização de um aplicativo (e partes de seu arquivo
AndroidManifest.xml associado), o perfil do sistema operacional e a biblioteca de modelos são usados
automaticamente para identificar elementos específicos do Android, como atividades e serviços. Isso
resulta na visualização não apenas do próprio aplicativo, mas também de sua relação
e seu uso da API do Android, como mostra a Figura 3. Também é exibido o modo como o MDD é
integrado como um plug-in para o ambiente do Eclipse (veja o link para o artigo de Paul Urban
nos Recursos), facilitando a modelagem, codificação e
simulação com o Android Development Tools (ADT).

Figura 3. Visualizando a estrutura e o algoritmo de um aplicativo Android

Além de fornecer uma representação gráfica, as ferramentas de MDD podem
representar a execução do
aplicativo dentro do ambiente gráfico, o que permite uma
compreensão melhor
do comportamento de tempo de execução do aplicativo. A
Figura 4 mostra como as interações no
tempo de execução entre elementos em um aplicativo
Android instrumentado com um
agente de código são automaticamente capturadas durante
sua execução. As interações são
capturadas em um diagrama de sequência de UML no qual as
linhas verticais no diagrama de sequência
são elementos do aplicativo Android e as linhas
horizontais mostram a
invocação de operações entre os elementos. Ao mostrar a
abstração de alto nível
das interações entre os diversos elementos no
aplicativo do Android, é possível compreender e comunicar melhor o
comportamento de tempo de execução
de um aplicativo a várias
partes interessadas.

Figura 4. O ambiente gráfico fornece insight sobre o comportamento de tempo de execução

Criação e atualização

É de pouco valor prático ter diagramas que não estão diretamente conectados
ao código fonte. A experiência mostrou claramente que ter duas representações de
semântica do sistema, uma no modelo e a outra no código, causa divergências rapidamente
de modo que o modelo do código não correspondam mais.

Começando com um modelo novo, ou com um usado, para visualizar um aplicativo Android
existente, um projeto Eclipse-Android correspondente é criado pelo plug-in MDD e
o projeto é preenchido com o código gerado a partir do modelo. Isso inclui a
parte estática dos modelos (por exemplo, pacotes, classes e operações) e
a modelagem do comportamento (máquina de estados). Durante esse processo, o perfil do Android e
a biblioteca de modelos são usados automaticamente para criar alguns dos códigos de “fixação” necessários para
conectar o código do usuário à estrutura do Android.

A Figura 5 mostra o código gerado a partir de uma
representação de modelo estrutural. À medida que os desenvolvedores
mudam o modelo, o código fonte é atualizado
automaticamente. Da mesma forma, se o código
fonte é atualizado, o modelo é alterado automaticamente a
fim de refletir o conteúdo do novo código fonte. Essa capacidade de
associar a associatividade do código do modelo promove a agilidade, pois
o desenvolvedor pode escolher trabalhar no modelo ou no código fonte
e a sincronicidade entre os dois é automaticamente
mantida.

Figura 5. Código gerado do modelo estrutural

Depuração e teste

Embora os defeitos apareçam provavelmente no início do processo, eles são normalmente
descobertos mais tarde. Além disso, o custo de reparar defeitos cresce exponencialmente
quanto mais tarde eles forem descobertos. Como resultado, o desafio é como encontrar os defeitos
logo que eles aparecem. Se o modelo representa corretamente a funcionalidade
e o comportamento pretendido do aplicativo, é possível torná-lo funcional
e usá-lo para permitir o teste e a depuração inicial no nível do modelo de
abstração.

Na Figura 6, um simulador do Android é usado para executar um aplicativo gerado a partir de um
modelo. É possível ver simultaneamente o estado ativo realçado nos gráficos de estado de UML
(criado pelo desenvolvedor e usado no início da geração do aplicativo) e ver
os diagramas de sequência de UML gerados automaticamente durante a execução. É
possível comparar os diagramas de sequência ao comportamento esperado do aplicativo, de modo
que você possa validar a operação de design apropriada. Também é possível comparar os diagramas
de sequência gerados automaticamente aos de uma execução anterior do aplicativo para
identificar mudanças no comportamento que possam indicar regressões. Uma ferramenta model-based testing
(MBT) pode usar os diagramas de sequência gerados automaticamente para executá-los
automaticamente, gerando e monitorando o teste.

Figura 6. A depuração pode ser feita no nível do código e no nível do modelo

Colaboração

O desenvolvimento de dispositivos e aplicativos do Android pode envolver o gerenciamento do
desenvolvimento do sistema host, manutenção do aplicativo herdado, desenvolvimento de hardware e muito mais.
O gerenciamento da integração desses domínios diferentes apresenta uma complexidade e
exige a disponibilização de uma visão holística da arquitetura para as equipes de desenvolvimento
que trabalham de forma independente nesses domínios diferentes. A complexidade dos dispositivos Android
causa o aumento nos desafios de gerenciamento de ciclos de vida de desenvolvimento conjuntos, sequências de
teste e lançamentos e de monitoramento e gerenciamento desses sistemas após ele serem
entregues. O desafio aumenta ainda mais com o grande volume de equipes
distribuídas, o que normalmente inclui agências, contratantes, OEMs e fornecedores.

A validação e a verificação contínuas são fomentadas pela combinação de requisitos, modelos,
gerenciamento de qualidade e monitoramento de projeto, como mostra a Figura 7. Os modelos ficam
acessíveis centralmente a toda a equipe e se tornam a fonte de todo o
design. Uma demonstração no YouTube mostra como o Rational Team Center é
usado para o planejamento e monitoramento do projeto.

Figura 7. Gerenciamento colaborativo da entrega de um dispositivo ou aplicativo smart

Por exemplo, como mostra a Figura 8, o MDD pode ser usado para entender melhor os requisitos,
visualizando-os no modelo. Os requisitos são armazenados no modelo e suas
relações com os elementos do design e casos de teste podem ser criados, ajudando a
fornecer informações de rastreabilidade no modelo. Isso, por sua vez, pode ser usado durante
o teste para produzir os requisitos, uma matriz de cobertura e relatórios. As informações dos
requisitos, como o ID ou especificação, podem ser automaticamente geradas
no código do aplicativo do Android a fim de permitir a rastreabilidade dos requisitos, design
no modelo e implementação no código.

Figura 8. Requisitos como parte do modelo

Conclusões

A combinação dos recursos do MDD com o ambiente de desenvolvimento do Android pode ajudar a melhorar
a produtividade, além do tempo para entrada no mercado e redução de custos. Além de fornecer um
único ambiente conveniente para codificação e modelagem do Android, ela oferece
aos desenvolvedores uma especificação visual dos requisitos do design. Além disso, a estrutura pode
ser usada para visualizar os aplicativos Android existentes, oferecendo um insight sobre
suas estruturas e comportamentos. O uso de modelos que conectam os requisitos,
o design e o código, também simplifica a documentação e permite que o documento seja
gerado automaticamente.

Após a criação do modelo dentro do ambiente de desenvolvimento do sistrema operacional, os aplicativos Android
podem ser automaticamente entregues. Além disso, o modelo pode ser usado para
executar o design, fornecer validação e permitir a descoberta de defeitos logo no início
do ciclo de vida do design. Essa execução também oferece uma unidade de software automatizada e
teste de regressão para melhorar a qualidade do código. O ambiente integrado também é um fator
vital para permitir a colaboração entre equipes distribuídas e entre
organizações de desenvolvimento.

Recursos

Aprender

Obter produtos e tecnologias

  • Faça o download de Rational Rhapsody Developer e teste-o gratuitamente por 30 dias.
  • Avalie o software IBM
    da forma que melhor lhe convier: faça o download da versão de
    avaliação, experimente-o on-line, use-o em um ambiente de nuvem ou passe
    algumas horas no SOA Sandbox aprendendo a implementar a Arquitetura Orientada a Serviços de forma eficiente.

Discutir

Sobre o autor:
Beery Holstein tem mais de 20 anos de experiência com desenvolvimento de ferramentas de engenharia de
software e mais de uma década de experiência com o desenvolvimento do Rhapsody, uma ferramenta MDD para a
indústria de desenvolvimento de software em tempo real e incorporado. Ele foi um dos primeiros membros
da equipe a desenvolver o Rhapsody, antes de ele se tornar parte do software IBM Rational
(i-Logix e, depois, Telelogic). Hoje, Beery gerencia o desenvolvimento do produto
base, incluindo entre outras coisas, a geração de código, engenharia reversa e
recursos round-trip subjacentes ao suporte do Android.

é o portal de tecnologia da IBM para profissionais de TI de todo o mundo. Colabore, aprenda a criar aplicativos inovadores e compreenda tecnologias avançadas. Acesse mais artigos e tutoriais em www.ibm.com/developerworks/br

Ver perfil