Concrete Logo
Hamburger button

MobileFirst: nossa concepção de desenvolvimento mobile (Parte 2)

  • Blog
  • 26 de Novembro de 2014
Share

Na semana passada, falamos sobre quais são os principais problemas do desenvolvimento mobile brasileiro e como chegamos, após dez anos de experiência, ao que consideramos hoje a melhor forma de desenvolver um aplicativo mobile. E grande parte dessa questão é endereçada com a MobileFirst, uma plataforma que automatiza o ciclo de desenvolvimento, com soluções “best of breed”, ou seja, as melhores do mercado para aquele problema específico, e instrumentação 360º, ou avaliação de todos os ângulos do produto.

O objetivo deste post é detalhar um pouco mais de todas as ferramentas que utilizamos no desenvolvimento, evidenciando em qual parte do processo cada uma delas colabora. Como já falamos no post anterior, dividimos nossa técnica em “descobrir, desenvolver e gerenciar”. Já falamos sobre como descobrir o aplicativo certo a ser desenvolvido aqui. Quando passamos para a fase de desenvolver, o processo passa a descobrir – codar (desenvolver propriamente dito) – integrar/build – testar – deployar. Mas há um destaque nesse sentido. Os testes, como já dito neste post sobre Quality Assurance (QA), formam uma parte essencial do desenvolvimento mobile. Por isso, precisamos dos mais diversos tipos: unitários, funcionais e de integração, além de realizar integração contínua e deployment contínuo.

1

 

Agora sim, as ferramentas. Para controle de issues e gestão de backlog nossa opção foi uma versão pré-configurada do Atlassian Jira, que permite planejar, analisar e organizar o trabalho de forma mais rápida e funcional. Para controle de versão, utilizamos um gestor de versão baseado em GIT, também da Atlassian, o Bitbucket. Com ele, podemos hospedar nosso código online em quantos repositórios quisermos, públicos ou privados.

2

Para o desenvolvimento dos códigos, achamos que a melhor opção são as IDEs padrão dos fabricantes. O Android Studio para Android, que é baseado no IntelliJ IDEA e prevê mais features e melhorias em relação ao Eclipse ADT; e o Xcode para iOS, cuja versão 6.1 inclui o Xcode IDE, compilado LLVM, instrumentos, o iOS Simulator e a nova linguagem de programação da Apple, o Swift.

3

No módulo de integração contínua utilizamos a plataforma open source Jenkins CI, configurada e estendida para o desenvolvimento de aplicativos mobile. A configuração desta plataforma usa nuvem Amazon AWS para um melhor resultado, mas também pode ser instalada em servidores locais.

Jenkins Logo

Ainda falando de automação, para o controle de dependências, usamos basicamente três ferramentas: Gradle para Android; Bots para iOS e CocoaPods para desenvolvimento em Objective-C.

4

Antes de começar qualquer código, é ideal que eventuais problemas de configuração sejam resolvidos para que não voltem a surgir mais à frente. Por isso, a parte de testes é fundamental. Para os testes unitários, usamos duas ferramentas principais: o JUnit, framework simples para escrever testes repetíveis e Specta, outro framework de TDD/BDD. Para os testes automatizados, o Calabash e o Cucumber são os mais indicados, enquanto que para os testes de integração o JMeter Apache é o mais utilizado aqui na Concrete.

5

Para o processo de deployment de aplicações iOS e Android utilizamos o módulo MobRelease da Concrete Solutions. Funciona como uma “App Store” corporativa, que traz funções de gerenciamento de versões, instalação, rating e feedback.

9

Além dessas ferramentas a princípio, a plataforma MobileFirst inclui também a utilização em “time sharing” de um ambiente de testes em devices físicos por meio de agentes (máquinas físicas) integradas com os módulos em nuvem, o que chamamos de TestCloud. Os testes funcionais automatizados são executados em um conjunto pré-escolhido de dispositivos, como no exemplo abaixo:

1

2Finalizada essa parte de desenvolver, passamos à última parte do ciclo: gerenciar. Consideramos que é necessário instrumentar as múltiplas dimensões do aplicativo a fim de preventivamente monitorar a qualidade, tomar decisões que envolvam análise de causas raiz e segmentação e, finalmente, conseguir entender o comportamento do usuário. Para isso, precisamos marketing que gere conversão para montar uma base de clientes que possam gerar feedbacks. Com esses retornos, cuidamos da performance e testamos os crashes para garantir a qualidade e otimizar o aplicativo nas app stores.

gerenciar ciclo

Neste contexto, utilizamos diversas ferramentas, inclusive algumas já consagradas pelo mercado. Para gerir funis e eventos, por exemplo, utilizamos o Google Analytics, que é gratuito e nos dá praticamente todos os dados de que precisamos para saber como está a conversão e quais são as estratégias em que devemos apostar. Para atribuição e otimização de campanhas o adjust é um dos mais utilizados. O crashlytics ajuda a controlar os crashes,  e o New Relic é o responsável por avaliar a performance dos nossos aplicativos.

6

Para otimização da Appstore, uma boa ferramenta é o App Annie, que oferece relatórios de todos os tipos sobre aplicativos mobile no Brasil e no mundo. Com os dados oferecidos por ele, é possível elaborar a melhor estratégia para que sua posição no ranking aumente.

app annie

Para terminar, devemos lembrar que a arquitetura proposta para aplicativos mobile pela Plataforma MobileFirst implica na utilização de APIs escaláveis em nuvem. Neste sentido, precisamos usar um servidor de API, que no nosso caso é o StrongLoop; linguagens e frameworks NodeJS e, claro, nuvem AWS.

7

E é isso! Todas essas ferramentas aliadas aos papéis e práticas já mostrados na parte 1 deste post formam o que acreditamos ser a melhor forma de desenvolver mobile no Brasil. Para terminar, deixamos a visão geral da arquitetura da MobileFirst:

Arquitetura MobileFirst

Ficou alguma dúvida? Tem alguma sugestão ou comentário? Só deixar nos campos abaixo! Nas próximas semanas, vamos continuar batendo papo sobre desenvolvimento mobile aqui no Blog. Só ficar ligado que vamos detalhar todo o nosso aprendizado nesse sentido. Aproveite e inscreva-se!