continuous delivery of embedded software
play

Continuous Delivery of Embedded Software Mike Long, Partner, - PowerPoint PPT Presentation

Continuous Delivery of Embedded Software Mike Long, Partner, Praqma Norway @meekrosoft @meekrosoft @meekrosoft Agenda: - What is Continuous Delivery? - What are the challenges in Embedded? - What techniques can we take advantage of? -


  1. Continuous Delivery of Embedded Software Mike Long, Partner, Praqma Norway @meekrosoft @meekrosoft

  2. @meekrosoft

  3. 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? @meekrosoft

  4. @meekrosoft https://www.flickr.com/photos/philia17/15601597778/

  5. 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! @meekrosoft

  6. 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.) Eugene H. Spafford, Professor & Executive Director, Purdue University @meekrosoft https://www.cerias.purdue.edu/site/blog/post/short_random_thought_on_testing/#When:16:40:35Z

  7. What is Continuous Delivery? @meekrosoft

  8. Agile Manifesto ● Four doctrines, twelve Principles # 1 # 7 @meekrosoft

  9. Continuous Integration Commit Rejected Fail Fail Integration “Build” Toll-gate pass @meekrosoft

  10. Rejected Continuous Delivery Pipeline Fail Analysis & Metrics Fail Deploy Functional Fail test Fail Document Fail Validate Done done @meekrosoft

  11. Commit Rejected Rejected Fail Fail Integration “Build” Toll-gate pass Pipeline Fail Analysis & Metrics Fail Deploy Functional Fail test Fail Document Fail Validate Done done @meekrosoft

  12. Release trains @meekrosoft

  13. Release trains @meekrosoft

  14. Challenges @meekrosoft

  15. Solo work @meekrosoft http://www.lego.com/en-us/minifigures/characters/computer-programmer-0c248844ec9d4245a5c17479a208e45b

  16. Fire and forget codebases? @meekrosoft

  17. @meekrosoft

  18. Production-like environment??? @meekrosoft

  19. @meekrosoft

  20. Versioning @meekrosoft

  21. 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 @meekrosoft

  22. http://semver.org @meekrosoft

  23. Examples myapplication-1.0.0-alpha+001.sha.5114f85 Artifact Name @meekrosoft

  24. Examples myapplication-1.0.0-alpha+001.sha.5114f85 Major.minor.patch @meekrosoft

  25. Examples myapplication-1.0.0-alpha+001.sha.5114f85 Prerelease version @meekrosoft

  26. Examples myapplication-1.0.0-alpha+001.sha.5114f85 Build number @meekrosoft

  27. Examples myapplication-1.0.0-alpha+001.sha.5114f85 git short SHA @meekrosoft

  28. Examples myapplication-1.0.0-SNAPSHOT+001.sha. 5114f85 SNAPSHOT @meekrosoft

  29. @meekrosoft

  30. @meekrosoft

  31. Build @meekrosoft

  32. If your "build process" is the F5 key, you have a problem …..Get your build process out of the IDE and into a build script. http://blog.codinghorror.com/the-f5-key-is-not-a-build-process/ @meekrosoft

  33. What’s missing? Traceability: Can I find out exactly the environment for this build? Reproducibility : Can I build something from last year with the same results? @meekrosoft

  34. @meekrosoft

  35. @meekrosoft

  36. @meekrosoft

  37. A Traceability ecosystem @meekrosoft

  38. Configuration as code Windows Windows Jenkins Jobs slaves Windows slaves slaves Vagrant file JobDSL Linux Linux slave Linux slave Linux slave slaves Dockerfile Puppet file @meekrosoft

  39. Build in a box Linux Linux slave Linux slave Linux slave Puppet Linux Jenkins Master slave Linux Master slave slave Windows Windows slave Windows slave Windows slave Docker container Windows slave Artifactory slave Vagrant VM @meekrosoft

  40. Testing @meekrosoft

  41. @meekrosoft

  42. System Tests ✓ @meekrosoft

  43. ✓ System Tests - Control power - Program devices - Control Actuators - Sense results @meekrosoft

  44. ✓ System Tests ✓ Component Tests @meekrosoft

  45. ✓ System Tests ✓ Component Tests ✓ @meekrosoft

  46. @meekrosoft

  47. 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! @meekrosoft

  48. @meekrosoft

  49. Pro Tips @meekrosoft

  50. // #ifdef MY_PROD_V1 Avoid using the preprocessor for variants ● It makes builds slow ● Lowers cohesion ● Also hinders understandability @meekrosoft

  51. Only build your binaries once Efficiency - time to feedback Safety - ship what you test @meekrosoft

  52. Amplify feedback loops Build Red Produ Ideas ct TDD Green Refactor Learn Measure Continuous Integration Data Continuous Delivery BDD Automated Deployment Customer Feedback @meekrosoft

  53. Dev Env is competitive advantage Attrition vs. Recruitment Late follower vs. First to market Unhappy customers vs. Raving fandom @meekrosoft

  54. Summary @meekrosoft

  55. https://www.flickr.com/photos/22423670@N08/14260168597 @meekrosoft

  56. @meekrosoft

  57. The researchers praised Tesla for the way the vehicle handled the bogus commands and how the car maker responded to their findings. @meekrosoft

  58. 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. @meekrosoft

  59. 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? ✓ @meekrosoft

  60. Questions? mike@praqma.com @meekrosoft @meekrosoft

  61. @meekrosoft

  62. @meekrosoft

Recommend


More recommend