Post on 11-Apr-2017
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