O documento descreve um projeto de desenvolvimento de aplicativos móveis para acompanhamento de obras da construtora Queiroz Galvão. O projeto inclui:
1) Aplicativos Android para registro de pontos e eventos na obra através de smartphones/tablets;
2) Um dashboard web para visualização dos dados usando Wildfly e JEE7;
3) Uma equipe multidisciplinar para 17 semanas de desenvolvimento.
3. Proposta e A&P
• Cliente: Queiroz Galvão;
• Escopo:
• Apontamento Eletrônico (App Android);
• Baixa de Eventos App (App Android);
• Dashboard (JEE7 e Wildfly);
• Duração: 17 semanas;
• Equipe: Gerente de Projetos, Analista de Negócios,
Designer, Arquiteto, 4 Desenvolvedores.
4. Proposta e A&P
Planejamento Concepção
Sprints
Design
Definição
Webservices
Arquitetura
e BD
Teste Formal Homologação
5 semanas (Apontamento, Baixa de Eventos e Dashboard)
• Planejamento na proposta:
5. Proposta e A&P
Planejamento Concepção Design
Definição
Webservices
Arquitetura
e BD
6 semanas (Apontamento e Dashboard)
• O que de fato aconteceu:
• Cronograma;
• Riscos;
• ...
• Levantamento de
informações;
• Definição das estórias.
• Wireframe;
• Construção das telas.
6. Proposta e A&P
• O que fizemos diferente:
• 5 semanas de Analista, Arquiteto e Designer fulltime;
• 1 semana no cliente pra levantamento de informações
(GP, Analista, Arquiteto e Designer);
• Foco na estabilização dos requisitos;
• Foco na definição da Arquitetura da solução;
• Foco no Wireframe da aplicação.
7. Proposta e A&P
• O que ganhamos:
• Maior produtividade no desenvolvimento;
• Mais confiança nas decisões sobre a arquitetura da
solução;
• Melhor entendimento da necessidade do cliente,
incluindo a usabilidade do aplicativo na obra;
• Melhor relacionamento com o cliente.
9. O Negócio
• Apontamento Eletrônico:
• Permitir o apontamento eletrônico das tarefas executadas
no canteiro de obras através de um Smartphone e/ou
Tablet Android.
24. Retrofit
• API utilizada como alternativa simples, rápida e eficiente em
desenvolvimento da camada de comunicação de
aplicações que utilizem padrão REST.
TW Technology Radar Jan 2015
30. SQLite
• SQLite is a software library that implements a self-contained,
serverless, zero-configuration, transactional SQL database
engine;
• The source code for SQLite is in the public domain;
• Development and maintenance of SQLite is sponsored in
part by SQLite Consortium members, including:
A world leader in financial-
information technology.
Comprehensive software
solutions for Sustaining
Infrastructure.
Working to preserve
choice and innovation on
the internet.
36. MVC (Model – Controller - View)
Controller
View Model
S
S = State of the UI
L = UI logic
Acronyms:
L
37. MVP (Model – Presenter - View)
View
(XML)
Activity
S L
Exception
Handler!
Model
Life Cycle!
Event Handler!
Acronyms:
S = State of the UI
L = UI logic
Acronyms:
38. View
(Class)
MVP (Model – Presenter - View)
Activity
S
L
Model
View
(XML)
Android API
Exception
Handler!
Life Cycle!
Event Handler!
S = State of the UI
L = UI logic
Acronyms:
39. Presenter
View
(Class)
MVP (Model – Presenter - View)
Activity
S L
ModelView
(XML)
Android API
Exception
Handler!
Life Cycle!
Event Handler!
S = State of the UI
L = UI logic
Acronyms:
42. Butter Knife
Field and method binding for Android views which uses annotation processing to
generate boilerplate code for you.
• Eliminate findViewById calls by using @InjectView on fields.
• Eliminate anonymous inner-classes for listeners by
annotating methods with @OnClick and others.
45. @InjectView(R.id.footer)
TextView footer;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.simple_activity);
ButterKnife.inject(this);
// TODO Use "injected" views...
}
@InjectView
Eliminate findViewById calls by using @InjectView on fields.
Butter Knife
46. @OnClick(R.id.submit)
public void submit(View view) {
// TODO submit data to server...
}
@OnClick
public void submit() {
Button submitBtn = (Button) findViewById(R.id.submit);
submitBtn.setOnClickListener(new View.OnClickListener() {
});
// TODO submit data to server...
}
Boilerplate code
Butter Knife
49. Envio em Background
• Rodar em background;
• Enviar apontamentos ao detectar conexão com a
internet;
• Enviar os apontamentos esporadicamente (a cada
15 minutos);
• Atualizar menu de Enviar Apontamentos após envio
ou falha;
55. AlarmManager
• Boas práticas:
• Não rodar em horário fixo (ex.: Todos os dias às
12h);
• Não acordar o aparelho desnecessariamente;
• Evitar criar alarmes baseados em tempos fixos;
• Evitar alarmes de alta precisão;
• Fazer o SO gerenciar os alarmes;