Continuous Delivery is all the rage, but many of the practices are not applied in the embedded world because the literature seems to focus on the web development community. That is a great shame, because there is a great deal we can apply on our embedded software development projects. This talk will show you how to apply some of the key techniques, such as embedded versioning and software traceability, embedded continuous delivery pipelines, acceptance testing with hardware, automatic deployment to hardware, continuous deployment. Beyond that, the talk will show some real-life examples of companies who are at the leading edge of this adoption.
Talk given at the Oslo Embedded Software meetup group.
3. Who is Mike Long?
● Doer: Embedded software, CoDe & DevOps
● Trainer: git, jenkins, docker, TDD
● Speaker: coming to a conference near you!
● Manager: Co-owner Praqma, CEO Praqma Norway
4. @meekrosoft
Agenda:
- What is Continuous Delivery?
- What are the challenges in Embedded?
- What techniques can we take advantage
of?
- How can we test embedded software?
- Who has done this already?
6. @meekrosoft
Professional software development
1. Take a copy of the codebase for existing product
2. Carefully document its current algorithms
3. Add changes surrounded by ifdefs
4. Test for months
5. Commit the code as a new project that will “hopefully”
get merged to the in the future
6. Compile on my laptop
7. Ship!
10. @meekrosoft
The ideal Embedded process
1. Fetch the latest source (which is up to date with
release)
2. Branch, implement feature, test
3. Push
4. CI
5. CD
6. Canary deployment
7. Real-time production feedback
20. @meekrosoft
The red thread of traceability
We want to know: what it is
compatible with, what it
depends on, where it was
built, what its test results
were, its source version, and
the task that spawned the
change
38. @meekrosoft
Build in a box
Jenkins Master
Artifactory
Docker container
Linux
slaveLinux
slaveLinux
slaveLinux
slaveLinux
slaveLinux
slave
Windows
slave
Vagrant VM
Windows
slaveWindows
slaveWindows
slaveWindows
slave
Puppet
Master
40. @meekrosoft
Airbus engineers employed the latest and greatest
formal methods, and provided model checking and
formal proofs of all of their avionics code.
Meanwhile, according to the story, Boeing
performed extensive design review and testing,
and made all their software engineers fly on the
first test flights. The general upshot of the story
was that most of us (it seemed) felt more
comfortable flying on Boeing aircraft. (It would be
interesting to see if that would still be the majority
opinion in the software engineering community.)
https://www.cerias.purdue.edu/site/blog/post/short_random_thought_on_testing/#When:16:40:35Z
Eugene H. Spafford,
Professor & Executive Director, Purdue University
47. @meekrosoft
Test everywhere
Test on your host for:
● Feedback speed, debugging
But also test on target because:
● Compilers/hardware are different
● Endiness/overflow/underflow behave
differently
● Ship them if you can!
59. @meekrosoft
The researchers praised Tesla for
the way the vehicle handled the
bogus commands and how the car
maker responded to their findings.
60. @meekrosoft
In late July, Fiat Chrysler issued a recall
for more than 1.4 million vehicles after
hackers Charlie Miller and Chris Valasek
showed how to use bugs in the onboard
software of the Jeep Cherokee to shut it
down remotely.
61. @meekrosoft
Agenda:
- What is Continuous Delivery? ✓
- What are the challenges in Embedded? ✓
- What techniques can we take advantage
of? ✓
- How can we test embedded software? ✓
- Who has done this already? ✓