Boas práticas de desenvolvimento em IoT - Victor Lima

Post on 11-Apr-2017

146 views 2 download

Transcript of Boas práticas de desenvolvimento em IoT - Victor Lima

Boas práticas de desenvolvimentoem IoT

victor.lima@concretesolutions.com.br

Boas práticas

IAlguns exemplos

Controle deVersão

Separação de ambientes

Gestão de pacotes

Build automatizado

Testes automatizados

Testes Integrados

Integração Continua

DeployContínuo Instrumentação

IEm mobile?

Controle deVersão

Separação de ambientes

Gestão de pacotes

Build automatizado

Testes automatizados

Testes Integrados

Integração Continua

DeployContínuo Instrumentação

IEm mobile?

git Separação de ambientes

Gestão de pacotes

Build automatizado

Testes automatizados

Testes Integrados

Integração Continua

DeployContínuo Instrumentação

IEm mobile?

git plist, build type

Gestão de pacotes

Build automatizado

Testes automatizados

Testes Integrados

Integração Continua

DeployContínuo Instrumentação

IEm mobile?

git plist, build type

cocoapods, gradle

Build automatizado

Testes automatizados

Testes Integrados

Integração Continua

DeployContínuo Instrumentação

IEm mobile?

git plist, build type

cocoapods, gradle

gradle, xcodebuild

Testes automatizados

Testes Integrados

Integração Continua

DeployContínuo Instrumentação

IEm mobile?

git plist, build type

cocoapods, gradle

gradle, xcodebuild

Testes Integrados

Integração ContinuaXCTest, JUnit

DeployContínuo Instrumentação

IEm mobile?

git plist, build type

cocoapods, gradle

gradle, xcodebuild

Integração ContinuaXCTest, JUnit XCTest,

Robotium

DeployContínuo Instrumentação

IEm mobile?

git plist, build type

cocoapods, gradle

gradle, xcodebuild

XCTest, JUnit XCTest, Robotium Jenkins, xcserver

DeployContínuo Instrumentação

IEm mobile?

git plist, build type

cocoapods, gradle

gradle, xcodebuild

XCTest, JUnit XCTest, Robotium Jenkins, xcserver

DeployContínuo Instrumentação

IEm mobile?

git plist, build type

cocoapods, gradle

gradle, xcodebuild

XCTest, JUnit XCTest, Roboeletric Jenkins, xcserver

Instrumentaçãotestflight,crashlytics

IEm mobile?

git plist, build type

cocoapods, gradle

gradle, xcodebuild

XCTest, JUnit XCTest, Robotium Jenkins, xcserver

testflight,crashlytics google analytics

O que mudou então?

Um template

IVocê, amanhã

Como isso se aplica?

IIProblema

Você está desenvolvendo um aplicativo para uma empresa que permite você alugar um carro. Você usa um aplicativo, ele se comunica com um hardware no carro que permite que o carro ande, após você pagar pelo

aluguel do mesmo.

Como você garante as boas práticas de desenvolvimento?

IAlgumas boas práticas

Controle deVersão

Separação de ambientes

Gestão de pacotes

Build automatizado

Testes automatizados

Testes Integrados

Integração Continua

DeployContínuo Instrumentação

IAlgumas boas práticas

Controle deVersão

• A coisa tem software rodando nela, ele está no controle de versão?

• E os esquemas sobre como montar a coisa?

• Como você versiona, publica e comunica ele para o time e stakeholders?

IAlgumas boas práticas

Separação de Ambientes

• Como você configura e separa as configurações especificas de cada ambiente em que a coisa vai rodar?

• Em Prod ela usa um certificado, em QA ele é self-signed?

• Para qual API ela aponta?

IAlgumas boas práticas

Gestão de Pacotes

• Como você atualiza pacotes/libs que você usa em uma coisa?

• Como você gerencia e atualiza firmware de componentes que a sua coisa usa?

• Como você gerencia e atualiza componentes que a sua coisa usa?

IAlgumas boas práticas

Build Automatizado

• Como você constrói partes ou integralmente a sua coisa?

• Jenkins for the win?

IAlgumas boas práticas

Testes Automatizados

• Como você testa a sua coisa?

• Como você mocka coisas?

• Como você emula uma coisa?

• E se você depender de uma condição externa, do tipo: a coisa reage a algo quando alguma coisa pega fogo

IAlgumas boas práticas

Testes Integrados

• Como você testa a sua coisa, de ponta a ponta?

IAlgumas boas práticas

Integração Contínua

• Como você integra continuamente todo o incremento de produto?

• E as dependências?

• E hardware de grande porte?

IAlgumas boas práticas

DeployContínuo

• Como você atualiza o software na sua coisa?

• E se a coisa estiver sem conexão com a internet?

IAlgumas boas práticas

Instrumentação• Como você coleta dados da

sua coisa?

• Como você sabe como os seus usuários estão interagindo com a coisa?

IOutras questões

Segurança

Recall

Compatibilidade

Privacidade

Mão de obra

Acesso a internet

Acessibilidade

Obrigado!!!

Desenvolvemos produtos digitais