Press "Enter" to skip to content

GOTO 2015 • Continuous Delivery for Embedded Systems • Mike Long


Corro il mio nome non è Mark Coleman e
Non sto parlando di marketing guidato
sviluppo quindi se speri di vedere
che parlare sarebbe un buon momento per
o scopri come facciamo in modo continuo
consegna per sistemi embedded o ricerca
da qualche altra parte ad essere, perché
sfortunatamente non ne so nulla
marketing quindi sono una consegna continua
consulente ma quello non è il mio che non lo è
è stata la mia carriera in realtà ho trascorso la maggior parte di
la mia carriera lavorando con sistemi embedded
e per me la cosa interessante in
ultimi dieci anni è quanto è
cambiato intendo quando ho iniziato e dentro
2004 facendo sistemi embedded che erano a
settore molto diverso da quello che è oggi
e la maggior parte ha a che fare con ciò che noi
chiamerei la consegna continua questi
giorni e questo è quello che voglio parlare
su appena per interesse quanti
le persone qui lavorano attualmente su embedded
progetti di sistemi o sviluppo del prodotto
o hanno fatto in passato
ok bene non mi aspettavo che ci sia
un app ci sono dei pulsanti su di esso
spingerli tutti così questo è quello che sto andando
per parlare di ciò che è continuo al
Vota penso che sto per passare
questo molto veloce perché potrebbe essere
la decima spiegazione di ciò che è
consegna continua oggi e poi lo faremo
parla di te che conosci le cose incorporate
quindi, tornando al 2004, ero un
recente dagli occhi luminosi e dalla coda cespugliosa
laureato presso l’Università ed ero io
è entrato in una società e io ero il
unica ingegnere del software su un prodotto della
l’idea era che stavamo per costruire un
strumento di perforazione per petrolio e gas
settore che potresti guidare così com’è
girato intorno a noi lo guidavamo
attraverso attraverso il terreno e
alla fine ho colpito l’olio che non conoscevo
nulla di software professionale
sviluppo in questa fase, quindi ho preso un
molte note e le condividerò
con te oggi così sono riuscito a invertire
ingegnere quale software professionale
lo sviluppo era da
quel progetto molto interessante così il
la prima cosa che fai è che vuoi prendere un
copia di questo codice di base per un esistente
prodotto questo è un ottimo modo per iniziare
perché è già stato testato e tu
sai che sei professionale e non lo fai
voglio causare alcun danno all’esistente
prodotto in modo da rendere il tuo piccolo
sandbox caffè allora si cura
documentare tutti i suoi attuali algoritmi
perché non sai davvero cosa sia
dovrebbe fare o come funziona quindi intendo
questa è una cosa veramente importante da ottenere
giusto, quindi trascorri qualche mese su questo e
allora perché vuoi, si spera, unire
le tue modifiche di nuovo nel codice originale
base che hai copiato da te aggiungi tutto
il tuo cambiamento è circondato dalla morte di F.
e ovviamente se lo metti circondato
dagli sviluppatori F tutti sapranno quale codice
a guardare e poi tu test e tu
prova e fai i test e vai al
campo e si prova e si prova un nuovo
prova e poi alla fine arrivi al
stadio in cui sei abbastanza felice lo farà
probabilmente lavori a cui puoi soddisfare il codice
questo stadio è quando devi
capire quali un sistema di controllo di versione
è necessario scoprire come aggiungere il codice
a un sistema di controllo della versione e quindi a te
aggiungi tutte quelle cose e forse la metti tu
in un file zip che potrebbe essere più facile ma
questo è quello che fai e poi, naturalmente
ora è pronto, quindi devi compilarlo
sul tuo laptop perché è quello che tu
testarlo in modo da avere lo stesso
ambiente e poi lo spedisci
nel database del prodotto per il
la produzione di utensili si spegne e produce a
migliaia per loro nessuno ha mai fatto
sviluppo software professionale bene io
so che ho e la ragione per cui lo sapevo
il professionista era perché avevamo un
processo di sviluppo del software che io
seguito alla lettera e quello era parte
del processo di sviluppo del prodotto che
era a sua volta parte del prodotto
sistema di gestione della gestione così io questo
era lo sviluppo di software professionale di
Certo che sono sarcastico ma in realtà
questo era il modo in cui questo stava avendo il mio
Il primo progetto e l’industria erano e
Penso che questo sia completamente tipico in
il mondo dei sistemi embedded
per quanto ho visto ne ho visti molti
progetti e questo è più tipico di
qualsiasi altro processo di sviluppo del software
potremmo aver sentito parlare di Eugene Spofford
lui è un professore presso l’Università e
sta parlando dei cambiamenti che noi
avere atteggiamenti verso il modo in cui noi
implementare questi sistemi in genere
sistemi critici per la sicurezza e dice a
la storia di questo era intorno al
Anni ’90 quando iniziò il
sistemi e aerei fly-by-wire e
c’era un c’era sempre uno scherzo
tra gli ingegneri perché Boeing
Airbus userebbe molti test formali
metodi formali test formali e poi
i ragazzi di Boeing lo farebbero invece
concentrarsi sulla revisione tra pari e lo farebbero
inviare anche gli ingegneri su voli di prova
così hanno pensato che si sa che farebbe
dare loro l’ulteriore incentivo per ottenere
cose giuste e ma e indietro negli anni ’90
lo scherzo sarebbe stato bene, preferirei
Vola Boeing perché sai che loro avevano
il loro collo sulla linea giusta ma io
penso che le cose siano cambiate ora dove vorremmo
piuttosto vedere che c’era un formale
prova per dimostrare che questi sistemi
lavoro e questo è solo un altro esempio di
i cambiamenti che sono accaduti così noi
sappi che la consegna continua è piuttosto un
nome recente ma viene dall’agile
manifesto del principio in
principio sette da ora ja manifesto
tipo di dove erano che noi siamo il
i nomi di queste cose provenivano da ciò che sappiamo
quella continua integrazione come questo
codice abbastanza buono da condividere con il mio
colleghi e sappiamo continuo
consegna come questo codice potenzialmente
spedibile in modo da poterle semplicemente spingere insieme
e questa è la storia di cosa
la consegna continua è ora continua
la consegna come concetto è molto facile
afferrare – soprattutto tra tutti quelli
viene da un qualche tipo di ingegneria o
sfondi di gestione intendo che lo è
Semplicemente hai un sacco di cose
checkpoint e se si passa attraverso il
muffa e il tuo codice è ok la sfida
è con penso molte volte gli strumenti
e il contesto perché
come concetto è molto facile ma sul
lato implementazione è molto di più
difficile quindi uno dei uno dei
cose che sono sempre come il
principi centrali dell’integrazione continua
è che stai integrando nel modo giusto
sempre integrando con tutti gli altri
colleghi quindi quindi dobbiamo pensare
su come facciamo il controllo della versione così noi
finire per andare verso un treno di rilascio
dove hai solo una vita lunga
ramo anziché per esempio fare un
copia di un codebase che vivresti sempre
nello stesso sistema di controllo della versione
hai sempre una fonte di verità adesso
c’è un grande libro di Hewlett
Packard in realtà è stampato da
addison-wesley ma riguarda la storia
della linea di business HP Laserjet e
la trasformazione che hanno attraversato
dal 2006 al 2011 e quello è un
esempio di come cambiare molto
sistemi embedded e il modo in cui fornisci
loro e c’è una grande storia in questo
su ciò che chiamano varianti di prodotto
e penso che anche questo sia qualcosa di molto
in comune nel mondo dei sistemi embedded
è che usi questi rami di utilizzo e a
modo molto molto sbagliato e che prendiamo a
nuovo ramo per ogni prodotto e poi
faremo i cambiamenti di ciliegio quando noi
bisogno di così alla fine ne hai 12
prodotti hai 12 rami e tu
non so mai cosa è fissato dove, se tu
se vivi in quel mondo io
consiglio di provare a fare qualcosa
è il più presto possibile perché causa
un sacco di sprechi nel tuo sistema e
se siete interessati a tutti in incorporato
sistemi questo è un grande libro, ma poi
la cosa sui sistemi embedded è
ci sono sfide che non vediamo
e tutti gli altri discorsi che abbiamo visto oggi
in realtà e penso che sia per fare un
molto con gli strumenti e la la
persone che fanno applicazioni web o fanno iPhone
app o così via ci sono milioni di
gli sviluppatori lavorano tutti su questi sistemi
quindi hanno un enorme supporto per gli strumenti e
quello è qualcosa che siamo
davvero carente nel sistema embedded
spazio ma anche i due
c’è il fatto che lo siamo
quasi sempre lavorando da soli e
sì, questo è vero che noi siamo noi
non ottenere tutti i feedback dagli altri
persone, ma perdiamo anche la possibilità di farlo
imparare da pezzi più grandi di
software e facendoli realizzarli
insieme a pensare a queste cose
quello che tendiamo a fare è invece avere
questo tipo di codice Pro ignifugo
basi in cui stiamo provando come meglio noi
posso fare un prodotto che finiamo
fabbricare da qualche parte all’estero che noi
fare mille centomila a
milioni di questi dispositivi e noi mai
tocca di nuovo quel codice e penso che sia così
parte del motivo per cui lottiamo con
la qualità è anche in parte simile al perché
investi e ti stai rendendo automatico
supporto degli strumenti quando lo sai
due mesi nessuno cambierà questo
codice di nuovo in modo che sia un lato del
moneta ma l’altro lato della medaglia è
in realtà un sacco di sistemi embedded sono a
longevo e sono linee di prodotti
questo va avanti per molto tempo questo è
loro questa è la linea di prodotti iOS ma
Sono stato effettivamente quando stavo lavorando
nell’acquisizione sismica marina lo faremmo
costruire sistemi con venti a trenta
orizzonte temporale anno così quando costruisci
sistemi incorporati in quell’ambiente voi
avere un approccio molto diverso a cosa
è un buon investimento in termini di
a lungo termine un’altra sfida che abbiamo come
generalmente non abbiamo che non abbiamo
l’ hardware che è il software
andando a correre e così come si avvia
sviluppandolo non sai veramente cosa
il vostro ambiente di destinazione sta per essere
come non importa come automatizzare e
distribuire come automatizzare il test di tutto questo
le cose sono molto difficili questo così questo
è la vita finita e lui è uno dei miei
programmare eroi eroi e lui è il mio
programmatore di eroe per non aver mai scritto
una linea di codice in un intero anno era
portato come specialista per provare e
risolvere un bug molto difficile che abbiamo avuto e
uno dei nostri sistemi è stato molto
intermittente e lo faresti
quasi mai vederlo ma quando lo hai avuto
migliaia di queste cose là fuori
correre in produzione che sarebbe successo
tutto il tempo quindi, comunque, ne ha spesi tre
mesi in laboratorio solo cercando di capire
fuori quale fosse il problema come
riproducilo perché era strano lui
aggiungerebbe un printf e tutto a
improvvisamente l’insetto apparirà e lo farebbe
mischia un paio di righe di codice
e l’insetto sparirebbe e così
sembrava che ci fosse una specie di fantasma
nella macchina così alla fine ce l’ ha fatta
in modo che possa effettivamente riprodurlo
cosa a volontà e poi è diventato abbastanza a
molto più facile arrivare al problema no
semplice quello che si rivelò essere il problema
era il sistema operativo che ne aveva alcuni
registri per quando hai fatto il contesto
il passaggio da coronel a a compiti così
quando tu quando hai fatto un cambio di contesto
avrebbe salvato tutti i registri no
andare nel contesto di interruzione e così via
ma non li salverà tutti e là
era una piccola bandiera in un unico registro
quello ha determinato se un ciclo dovrebbe
terminare così il modo in cui questo bug sarebbe
manifestarsi è stato tutto ad un tratto tu
uscirebbe un po ‘vero ciclo e nessuno
potevo capire come fosse pari
possibile ed è stato solo perché abbiamo avuto
nessun controllo su ciò, quindi ne avevamo due
i problemi uno è che il venditore di compilatori
era fallito e quindi non avevamo
fortuna lì e al sistema operativo
la compagnia era stata acquistata da un’altra
società del sistema operativo e
ha interrotto il prodotto in entrambi i casi
casi non c’era soluzione tranne noi
sono stati molto fortunati e alla fine di
la routine che stava salvando il
registra il compilatore inserito
sette no op istruzioni come quella spesso
fa – per ottenere l’allineamento della memoria bello così
siamo stati in grado di patchare il binario solo per
salva quel registro ed è per questo
la vita finita è il mio eroe programmatore, ma io
significa che questo è un altro esempio di dove
gli strumenti e i sistemi che usiamo sono
davvero un dolore e
sistemi e penso che questa storia sia
anche una grande motivazione per il perché al giorno d’oggi
ci stiamo muovendo sempre di più nell’uso
strumenti open source e l’ embedded
sistemi quando possiamo andare gratis
il nostro brindisi stiamo andando per i compilatori GCC
stavano andando per braccio veramente standard
architetture dove possiamo l’altra
il problema, ovviamente, è proprio qui
è la gestione delle licenze di tutti i nostri
gli strumenti costano $ 30.000 e vengono
con questa grande licenza così da avere un
licenza extra solo per l’automazione del test
è in realtà piuttosto una vendita dura in un sacco
di organizzazioni così il versionamento è un
interessante un sistema embedded perché
conta davvero molto
più di quanto non sia e per esempio
ambienti cloud in cui le idee te
continua ad andare avanti come fa Google
mai andando a provare e riprodurre il
build esatta che è successo sei mesi fa
stanno solo andando a costruire qualcosa
nuovo ma a loro non interessa, ma incorporato
sistemi a cui tieni veramente perché se tu
fatto un prodotto viene spedito 10.000 radar
a un fornitore e non arriveranno
torna con un problema due anni dopo e
dì che sai che stiamo prendendo questo cuoco
errore che dobbiamo essere in grado di riprodurre
quella build esatta con per essere
in grado di aiutarli così come arrivare lì
è sì, devi iniziare bene
fin dall’inizio quello che è un
versione per fortuna intendo che abbiamo molto
di aiuto ora con il versioning semantico I
penso che nessuno sia menzionato semantico
il versioning oggi quindi mi limiterò a dare un
breve introduzione c’è un sito web
org semver basta dare un riassunto
panoramica ma l’idea dietro semantica
il versioning è che usi la versione
i numeri significano qualcosa e tu puoi
puoi usare i numeri a cui fare riferimento
dipendenze quindi prima di tutto che hai
qualunque sia l’artefatto e poi il
maggiori numeri di patch minori che sono i tuoi
normale approccio al software l’importante
la cosa è come e questa semantica
versioning major significa rompere i cambiamenti
minore significa cambiamenti non interrotti e
significa livelli di patch
la soluzione è quindi puoi avere qualche pre-release
versione successiva se si sceglie alfa
beta rc1 o niente poi errare tutto
dopo il segno più sei libero di fare
che cosa vuoi veramente così a
la cosa tipica che vorrei fare è aggiungere un
Costruisci il numero e poi ottenerlo
albero per la versione sorgente dove
proviene nel controllo di versione
repository è chiunque usi il semantico
versioning solo ora questo lato di
la stanza cosa avete fatto voi ragazzi così potete
specificare anche le versioni dello snapshot per come
la regola costruisce e così via così che noi
fanno e sistemi embedded è che vogliamo
ottenere tutte queste informazioni non solo sul
il nome del file non è sufficiente per averlo
il nome del telefono perché non vediamo mai il
file una volta che abbiamo spedito il prodotto
bisogno di costruirlo nel binario in modo che
possiamo leggerlo attraverso a
debug port o possiamo possiamo guardare il
Flash e utilizzare le stringhe su di esso o qualcosa del genere
ma la cosa importante è questa
le informazioni devono essere timbrate e al
binari quindi voglio dire che questo è un tipico
cosa faresti hai un punto di costruzione
H dove stai facendo la tua build Jenkins
o qualunque cosa tu vorresti che ti fermassi
la vera informazione lì e poi tu
avere un file di intestazione versione che tipo di
porta tutto insieme
niente niente di troppo strano qui il
la cosa importante è che durante il tuo
costruisci includi questo e trovi a
modo di raccontarlo al mondo una volta
una volta che sei in fase di esecuzione
ora poi c’è un vecchio e un vecchio
la storia credo che abbia anche 15 anni
questo post sul blog è di Jeff Atwood e
stava parlando di allora dopo a
molti sviluppatori di pulsante F5 erano loro
processo di costruzione ed è stato un incubo
perché ha funzionato solo su uno
macchina dello sviluppatore e una build su uno
la macchina era diversa da un’altra
macchina così ha scritto questo ottimo blog
post su come ottenere il processo di compilazione
fuori l’ID e metterlo in un
sceneggiatura ed è fantastico è davvero buono
consigli
è ancora qualcosa che lottiamo con in
sistemi embedded ma è altrettanto valido
oggi
ma ci sono ancora un paio di cose
manca da questa equazione è come il
la tracciabilità è anche se la metti in a
costruisci uno script come puoi scoprirlo
esattamente l’ambiente di costruzione per questo
costruisci e questa è la seconda cosa
riproducibilità anche se lo si possiede come
script puoi ricostruire la cosa
con gli stessi risultati e come ingegneri
o diciamo ok bene quello che ho visto
la gente parla alle conferenze
consegna continua so che ho appena
per metterlo in Jenkins
e così creano un lavoro con Jenkins
tutte queste informazioni e questo è un
miglioramento, perché allora si ha a
almeno un posto in cui si dispone che
contesto globale ma c’è ancora a
problema che in un certo senso è ancora qui
premendo f5 nel tuo IDE perché lo hai
non ha alcun controllo su ciò che qualcuno fa dentro
quella e quella configurazione di lavoro loro
potrebbe venire avanti e cambiare che, come
la creazione di un lavoro di costruzione oggi potrebbe essere
sono stati completamente diversi sei
mesi fa e anche la build
la macchina in corso potrebbe essere cambiata così
un passo successivo comune sarebbe usare come
qualcosa come DSA lavoro dove puoi
definisci i tuoi lavori come codice e versione
quello accanto al tuo codice sorgente
chiunque usi Job DSL o Jenkins
flusso di lavoro oh e dovresti verificarlo
è un sistema davvero eccezionale e quindi
oltre a questo va bene ora che hai
un po ‘di automazione, per il resto di
il tuo ecosistema e il contesto
che tutte queste build funzionano e come si fa
traccia la versione di nel codice sorgente
per il tuo tracker c’era un ragazzo
da Atlassian parlando di come lo fanno
nel loro sistema ci sono molti modi
per rintracciare il tuo lavoro nel tuo codice
la tua build per il tuo ambiente di costruzione
i manufatti che sono stati fatti per strada
sono stati schierati le loro soluzioni
ovunque ma alla fine l’intera idea
è lo stesso che vuoi ottenere tutto il tuo
tutta la tua configurazione tutto
questo è un contesto attorno alla tua build
sistema chiedere codice in modo che è possibile versione
insieme al tuo tuo-tuo-codice
e puoi tornare indietro nel tempo perché è così
è abbastanza comune nell’incastonato
sistemi
abbiamo bisogno di aver prodotto questo prototipo a
un anno fa sono stati alcuni fornitori
provato per alcuni quattro sei mesi nove
mesi hanno effettivamente costruito un prodotto
direttore ma ora ne vogliono cento
mille per loro ma puoi semplicemente cambiare
queste poche cose e solo quelle poche
cose così può essere la configurazione è il codice
davvero aiutare con quello è abbastanza
a tale proposito ora è il test di collaudo
è difficile , è sempre stato difficile , ecco perché
non farlo ma è possibile, voglio dire noi
c’è ancora una piramide di test, ce ne sono tanti
di diverse piramidi di prova è questo il motivo
non usare martin fowler’s non ne abbiamo uno
Interfaccia utente di solito a volte lo facciamo ma lo facciamo ancora
avere un sistema e vogliamo ancora farlo
riempire i test di sistema che dobbiamo fare
test di sistema dobbiamo superare molto
di cose anche se abbiamo bisogno di essere
in grado di controllare il potere, dobbiamo essere in grado
per programmare il dispositivo che conosci, scarica
le cose sul flash devono essere controllate
attuatori fisici abbiamo bisogno di sentire il
i risultati in qualche modo dobbiamo aprirci
la scatola nera e controlla i suoi codici
contesto limitato e questi sono tutti risolvono
problemi è solo lavoro proprio noi
generalmente non hanno un orientamento al servizio
architettura, ma noi abbiamo
componenti ed è davvero valenza da fare
test dei componenti se si dispone di un segnale
libreria di elaborazione lasciatemi fare ogni passo
in quella catena di elaborazione del segnale e e
avere una bardatura di prova in giro non ha a
morsa in modo da sapere se il rumore del pavimento
cambiamenti in cui non entrerai
guai e unit test o unit test e
sono applicabili dovresti usarli
ovunque sono fantastici così potresti essere
pensando perché ho tutte quelle unità?
perché ho bisogno di test di sistema di riempimento o se io
avere test di sistema che testano il tutto
cosa come una scatola perché devo disturbarmi
con la scrittura di tutti quei test unitari non lo è
una duplicazione e di solito mi preoccupavo
che molto quando ero un giovane uomo
e non è stato fino a quando ho letto questo ma
crescente orientato agli oggetti guidato da
prova che in realtà ho davvero afferrato
il significato dietro di noi ed era quello
il punto è che diversi tipi di
i test ti danno diversi tipi di
feedback così i test unitari ti danno una brutta esperienza
molto feedback sull’interno
qualità del codice quanto sia facile
cambia come internamente è corretto come
ben capito è dal
punto di vista dei programmatori ma sul
non ti dice nulla se il
sistema come è nel suo insieme incontra il
requisiti del cliente o come
tutto funziona come un prodotto sul
D’altra parte i test di sistema di riempimento raccontano
lo ammucchi e ti dice come a
tutto il sistema fa ciò che il cliente
vuole ma non ti dice nulla su come
sicuro e rapidamente puoi cambiarlo così
è per questo che hai bisogno di entrambi test
ovunque test sui tuoi host perché
è veloce è un modo davvero veloce per
sviluppare mentre stai facendo la tua unità
prova lontano dall’hardware sull’host
è un ottimo modo per avere un rendimento
ambiente di sviluppo ma anche test
l’obiettivo perché sulle cose di destinazione
sono cose diverse che il comportamento può fare
cambia in diversi modi che abbiamo
compilatori diversi che abbiamo diversi
comportamento hardware e alcuni clienti
che so che effettivamente spediscono loro il
unit test come parte del loro prodotto
costruisce So che Cisco lo fa almeno
e così se ricevono una chiamata da un cliente
e ho detto che stavamo avendo problemi
questa macchina possono accedere a H nel
dispositivo ed eseguire il test dell’unità e vedere se
tutto sembra un po ‘spettrale perché
a volte potrebbe essere solo che c’è
un ricordo poco raccomandabile o il flash è traballante
sai che non sai mai ovviamente la spedizione
i tuoi test dipendono davvero da cosa
dispositivo è intendo che non tutti hanno spazio
almeno per quelle cose che ho una compagnia
sto facendo un po ‘di lavoro con molto
compagnia interessante fanno un radar
sistema molto piccolo radar come questo molto
bassa potenza e hanno risolto
un problema di test molto interessante
come fai a testare come fai
prova un sistema radar e un riproducibile
come se facessero queste cose
può rilevare la presenza in una stanza o vedere come
veloce stai controllando come
creazione di baby monitor e così via e uno
dei loro ingegneri effettivamente capito
che in realtà se si prende un cuscinetto a sfere
circa 0,9 centimetri di dimensione e ruotare
così come questo un radar che sembra giusto
come la cavità toracica di un bambino e te
sai che fai una palla più grande che porta
un petto adulto un cuscinetto a sfera più piccolo
è un bambino prematuro e cosa loro
capito è ben in realtà si tratta di Lego
plastica quindi non ha molto
Riflessione su un radar, quindi perché no?
perché non abbiamo creato un laboratorio con tutto
questo inferno questo Lego e cuscinetti a sfera
e hanno un sistema di automazione
Intorno a ciò intendo dire che è una bella storia
ma è una specie di ogni volta che ho visto un
interesse un ingresso completo sistema di prova su
un sistema embedded è sempre richiesto
un po ‘ di pensare fuori dagli schemi che è
ecco perché un’altra ragione per cui spesso
non farlo ma è davvero prezioso
cosa se puoi automatizzare tutto questo
sistemi è possibile ottenere un sacco di feedback
riguardo al tuo software okay alcuni
alcuni suggerimenti evitano l’uso del preprocessore
almeno per le varianti del prodotto lo farà
significa che devi costruire molto di diverso
i sistemi come te devono fondamentalmente costruire
per ogni tipo diverso invece di
avere un file costruito una volta è possibile
avere uno costruito un file creato 17 volte
a seconda di come le varianti del tuo prodotto
interagire riduce anche la coesione
perché quando stai guardando il codice
non lo sai in realtà
se questo non è se questo è incluso se
incluso è davvero facile da fare
gli errori creano solo una volta i tuoi binari
anche perché quello che vuoi fare è
assicurati che qualsiasi cosa tu costruisca sia la stessa
cosa testate ed è la stessa cosa
spedisci non ha senso in
costruire qualcosa facendo un mucchio di
prova e poi facendo un’altra build più tardi
forse quando stampi la versione che è
solo uno spreco è un modo che gli errori possono
perdite nel tuo sistema quasi
tutto a che fare con continuo
la consegna riguarda un ciclo di feedback
fondamentalmente vuoi ottenere sempre di più
feedback dal tuo sistema in modo che tu possa andare
Più veloce
quindi il TDD ti dà il feedback che come
sviluppatore sto scrivendo il codice che sono
in realtà penso che sto scrivendo quella F
affermazione in realtà è la dichiarazione che ho F
ha scritto e poi vai al continuo
integrazione si dice bene in realtà
il codice con cui ho scritto funziona davvero
Il codice di Dave o il codice di John e poi
inizia a pensare più in alto al sistema te
arrivare ad apprezzare la misura di costruzione
di feedback dei clienti e come il
prodotto che ho fatto e spedito al
clienti come darmi questo feedback su
il mercato in modo che dovrebbe fare di più di quello
e un’altra cosa è che il
ambiente di sviluppo è intendo più
e più aziende lo vedono come un
vantaggio competitivo non solo in termini
di noi possiamo usare questo per andare più veloce, ma io
Conosco persone che so che è molto comune
per gli ingegneri dire che voglio lavorare a
non voglio lavorare per loro perché
ci vogliono due giorni per ottenere un codice
impegnato bene non voglio lavorare in a
sistema che non voglio lavorare in un
vecchio sistema di controllo versione e e questi
le cose sono davvero importanti quando
arriva al reclutamento ma aggiunge anche
conta molto per i clienti
importa molto su quanto velocemente puoi ottenere
questa roba sul mercato e voglio dare
alcuni esempi di questo
qualcuno qui guida la nostra legge sui test no
no me o vorrei averlo fatto ma uno dei
Le caratteristiche veramente belle del Tesla è
che ha questo aggiornamento via etere
sistema così nella notte che otterrà
nuovo software e funzionerà da solo
prova e poi la mattina otterrai
in macchina e diranno ok e
c’era la famosa storia è che lì
era un utente che è stato veramente sconvolto sul
forum di prodotto perché quando era a
Stop su su una collina
il suo piede dal freno e lo mise sul
acceleratore la macchina tornerebbe a
un po ‘ è come se fosse ridicolo
molte macchine hanno iniziato a farlo
Caratteristiche si dovrebbe essere in grado di mantenere la
frenare depresso gli sforzi su una collina
e va bene qualcuno in immagino nel prodotto
il marketing ha visto questo e poi è andato
attraverso la divisione di ingegneria I
spero che sia stato testato ma alla fine chi è
passo alla macchina di qualcuno e puoi farlo
immagina di sapere quanto sarebbe felice
entrare nella sua macchina
tre mesi dopo lamentarsi sul
forum e mettendo sulla sua auto dicendo oh
hai una caratteristica che sarà lui a iniziare che è
tipo di quello è come il
poster figlio di come potrebbe essere o
le cose vanno bene, ma c’è anche
un altro lato giusto è quella sicurezza
esperti hackerano il tuo prodotto oh no e
questo è un grosso problema per molti
sistemi embedded soprattutto se spedite
come bash per esempio o SSL o
tutto ciò che ha tutti i tipi di
vulnerabilità che vengono scoperte
dopo che è stato spedito questo in realtà
si è rivelata piuttosto una storia positiva
per Tesla si il titolo non è carino
ma in realtà ulteriormente Darren nel
articolo dicono che i ricercatori
hanno trovato questo problema
in realtà ha dato molte lodi a Tesla
perché quando i ricercatori di sicurezza
è venuto a loro hanno detto va bene, grazie
voi per trovare questo ti risolvere il problema che
riparato e spinto in aria per
tutte le vetture a destra c’è un rovescio della medaglia, come
la Fiat Chrysler doveva ricordarne una
punto quattro milioni di veicoli a causa di
bug trovati sui loro sistemi di bordo e
okay, questo non è un tormentone
ma intendo un richiamo del prodotto RIA possibile
costa un sacco di soldi e così essere
in grado di avere un sistema di aggiornamento e a
il sistema di consegna continua può davvero
fai una grande differenza e tu e il tuo
nel tuo business va bene così è stato un
rapido tipo di o attraverso incorporato
sistemi e consegna continua e come
quelle cose vanno insieme , ragazzi
ho qualche domanda per me, penso a noi
avere tempo
okay, la domanda è buona
i clienti si arrabbiano se diventano nuovi
caratteristiche che o almeno il
funzionalità che avevano prima
cambia e penso che sia decisamente un
rischio di sapere che è il rischio di ogni
tipo di aggiornamento di qualsiasi tipo come al più presto
mentre stai iniziando a spostare le persone
formaggio c’è una possibilità che lo siano
andando a essere arrabbiato così penso che il
per Tesla almeno che sono riusciti
per rendere i loro clienti davvero felici
perché si sentono come se fossero
fondamentalmente ottenendo valore aggiunto loro
non ho comprato una macchina e poi è stato quello
e poi devono ottenere il prossimo
due anni dopo hanno comprato una macchina
stava migliorando continuamente e penso
questo è uno dei motivi per cui i clienti
ti piace davvero e soprattutto quando
si tratta di come queste storie di
vulnerabilità della sicurezza e nuove
caratteristiche che volevi davvero ma loro
non avevo all’inizio penso
che in generale è una cosa positiva in modo
la domanda è su come mi sento
sui simulatori e credo
emulatori e così di nuovo sono
tutto ciò che possono essere strumenti utili e tanto tempo
come migliorano il tuo ciclo di feedback quindi
non c’è alcun motivo per cui non usarli
e usarli durante una fase di test
soprattutto se non hai hardware
ma perché spesso è piuttosto tardi
e il processo di sviluppo quando
finalmente ci mettiamo le mani su questo
Hardware irreale che utilizza simulatori
presto è molto utile e scrivo
i sistemi di test intorno ai simulatori possono essere
molto utile anche perché una volta che il
arriva l’hardware è possibile sostituire il
simulatore per l’hardware reale e
avrai pronta una suite di test completa
in realtà quando ho iniziato con TDD per un po ‘
fa quello era perché stavo scrivendo
un controller di alimentazione e io no
avere l’hardware l’hardware non è stato
pronto ancora e piuttosto che sedersi e scrivere
documentazione in realtà ho scritto il
controller di alimentazione con test di unità
fuori bersaglio sull’host e con giusto
con finto beffardo il reale
interazione hardware e poi quando
è arrivato Ho appena Ho appena eseguito su su
obiettivo e sembrava funzionare bene e
dopo che la direzione mi ha dato molto
supporto per provare e
diffondere questo attraverso l’altro
parti dei sistemi perché potevano
vedi che in realtà hanno funzionato
software più veloce rispetto a quello che hanno fatto
sperando solo che questo sia il foglio dati
quello che è stato inviato è stato corretto
informazioni quindi la domanda è circa
avversità al rischio e nell’industria
e come ciò si riferisce al continuo
consegna e penso che ci sia un sacco di
il rischio sarebbe che ci sia una paura
e l’industria di sicuro, ma penso
quello e in generale l’embedded
l’industria del software sembra affrontare il
rischio penso che sia più come loro
cercando di ottenere la qualità facendo attenzione
quindi costruiscono queste fantasiose
processi di sviluppo e molto severi
rivedere i processi e poi lo faranno
prenderanno Misra C e quindi si assicureranno
che si deve fare questo e si deve
fallo e diciassette persone devono farlo
guarda ogni riga di codice e diventa
come questa qualità prestando attenzione e
in realtà non è tipo di non c’è
vera sicurezza in questo e penso che
una volta che un’organizzazione inizia ad adottare
processi più automatizzati attorno ai test
in particolare che cominciano a vedere che
va bene questo è molto più prezioso nel
finisci che sei sempre come sviluppatore
aggiungendo semplicemente il codice, se lo è
entrare in qualcosa che è
continuamente testato o no non lo fa
conta davvero
Voglio dire dopo averlo spedito quando lo sei
fare aggiornamenti è un altro fattore di rischio
ma penso che in generale abbia
tutte quelle reti di sicurezza che il test
è dove l’ho visto accadere che le persone hanno
davvero apprezzato così la domanda è come
fa TDD e BDD e queste cose
contribuire a migliorare la progettazione del software e difficile
e il design dell’hardware non l’ho visto
in realtà ha un impatto sul design dell’hardware
in effetti ho visto pochissimo
prova che gli ingegneri del software hanno
qualsiasi capacità di fare alcun effetto su
progettazione hardware a tutti, ma in termini di
il software sì un enorme enorme miglioramento
e il software design perché lo è
che devi smettere di fare affidamento sul
preprocessore per fare
un sacco di brutti hack sì, perché
altrimenti non puoi testare il tuo codice e
allora devi essere veramente pulito
le tue dipendenze quando inizi
usando test così anche se stai usando C
e così via vuoi davvero avere
moduli isolati e si desidera controllare
cosa è pubblico e cosa è privato
cos’è che sai cos’è tutto statico
queste cose aiutano davvero e voglio dire
Ne ho visti solo forse dieci, forse no
che molti dieci sistemi incorporati e
progetti che si sono realmente immersi nel TDD
ma hanno avuto tutti davvero eccellenti
qualità del codice va bene bene grazie ricordare
valutare la sessione e goderti il ​​resto
della conferenza

Please follow and like us: