SlideShare a Scribd company logo
Adopting Agile in an embedded
platform
- SuryaKiran Kasturi & Akhil Kumar
Agenda
•Introduction to Presenters
•Problem Statement
•Our Solution
•Planned Improvements
•Jenkins Configuration and UT Output
•Key Takeaways
•Q & A
Seastar Labs Private Limited 2
Problem Statement
Seastar Labs Private Limited 3
Developing an IoT device requires multiple
development environments.
• Firmware functions
• Drivers
• Operating System
IoT Device
• Device drivers on windows/mac
• Software application on windows/mac to interact with the device
• Monthly deliverables and showing demos to the client on current
progress
• One team responsible for whole nine yards
Need automated tests for embedded code and host PC and Mac: Should run to
qualify every change.
Seastar Labs Private Limited 4
USB
PC/MAC
The e2e solution stack involves multiple technologies
HTML/CSS
Java Script
Business Logic (C/C++)
Service(s) (C/C++)
Host OS
Embedded App (C/C++/Assembly)
Device Drivers
XYZ Board
Wire Protocol
Host can be
PC/Mac/Linux
Device
Seastar Labs Private Limited 5
Chromium Embedded FW
Embedded Linux
Multi-OS development/build environment
requires all tests to pass every where.
Source Control
(SSOT)
Linux Windows Mac
Seastar Labs Private Limited 6
Multi OS development environment gives rise
to interesting challenges.
• Device code is cross compiled for ‘xyz’ embedded platform using
Linux x86 . But it can only run on ‘xyz’. How do we test ?
• Mac version of host software requires Mac OSX to build and test.
• Windows version of host software requires Win 7/8/8.1 to build and
test.
• Most changes would trigger all 3 builds. How do we test ?
• Should we slow down the development pace of Host Software to
wait for device software to be available?
• In production, host software needs device to be connected with
which human interacts. Should we use same setup for integration
tests ?
Seastar Labs Private Limited 7
Our Solution
Seastar Labs Private Limited 8
Multiple stakeholders means we need to have a
clear process for each stakeholder
• Develops code,
• Writes Uts for
new/modified
functionality
• Runs Uts and
ensures they pass
• Checks in to source
control after code
review
• Update Jira
Commit
triggers builds
• Waits for a successful build
• Tests the build to verify the visible changes based on
Jira
• QA releases the build to field users
QA/QE
Jenkins
Build successJira notification
Developer
• Builds the source code (device and host)
• UTs executed: simulate device
• Build is broken and mails are triggered for dev.
o Issue with device code/UTs
o Issue with host code/UTs
o Issue with signing the binaries
o Issue in publishing the build
• Build is successful mails are triggered for QA and
internal users
Multiple Jenkins Builders
Seastar Labs Private Limited 9
Build failure
Keep code and unit tests platform neutral to
get biggest bang for the buck.
• Device code is also compiled for Linux x86. So that unit tests for device can be
run on Linux x86 machine.
• Use platform neutral libraries such as APR, Boost C++, Poco, thrift etc. to make
sure that the application code behaves predictably on Win/Mac. Note: we still
run all unit test cases on all platforms.
This speeds up the development process as we can use a single code
base which would compile differently on different OS
• Developed device simulator to mimic entire protocol between device and host,
this way we didn’t have to wait for the device hardware and software to be
ready
• Used Jenkins as the CI tool to ensure that all check ins are Unit Tested before the
build is given for QA
• Use TUT C++ framework: Really light weight (1 hpp file) and platform neutral
• Use platform emulators to test assembly code during test run
Seastar Labs Private Limited 10
Planned Improvements
Seastar Labs Private Limited 11
We are evaluating improvements in the testing
part of the Jenkins builder
• We are evaluating use of software which will ensure that the unit tests will be
run in the following condition
• Latest firmware is installed on the device (This is being done manually now)
• Unit tests would be run to ensure that we are actually interfacing with the
device‘s latest firmware
• Software's being considered include:
• Robot Framework
• Fitnesse
• Slim
Seastar Labs Private Limited 12
Jenkins Configuration and UT
Output
Seastar Labs Private Limited 13
Configuration settings that need to be made
in the project to achieve running of UTs
Seastar Labs Private Limited 14
Unit test reports from Jenkins mentioning all
test groups to ensure all classes are covered
Seastar Labs Private Limited 15
Build time impact to run each unit test in
Jenkins is around 2.24 seconds
Seastar Labs Private Limited 16
Key Takeaways
Seastar Labs Private Limited 17
With minimal effort we can ensure that
embedded software can be built using CI
• Key Takeaways:
• Use platform independent libraries such as APR, Boost C++, Poco framework,
thrift etc. to make sure that the application code behaves predictably on
Linux/Win/Mac.
• Run all unit test cases on all platforms.
• Use light weight Unit test framework.
• Develop a device simulator to mimic entire protocol between device and host,
this way you don’t have to wait for the device hardware and software to be ready.
• Use a CI tool like Jenkins to ensure that all check ins are Unit Tested before the
build is given for testing.
• Developer is responsible for unit testing in one dev environment while Jenkins
builders are responsible for all.
• Attention to build failures is crucial.
Seastar Labs Private Limited 18
Seastar Labs Private Limited 19
Q&A

More Related Content

PDF
Packaging tool options
PPTX
Continuous Integration - Mobile Practice
PPT
CI and CD with Jenkins
PDF
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"
PDF
2013 10-28 php ug presentation - ci using phing and hudson
PDF
Teamcity CI Server
PPTX
Continuous Testing With Terraform
PPTX
Jenkins introduction
Packaging tool options
Continuous Integration - Mobile Practice
CI and CD with Jenkins
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"
2013 10-28 php ug presentation - ci using phing and hudson
Teamcity CI Server
Continuous Testing With Terraform
Jenkins introduction

What's hot (20)

PDF
Headless Android Strikes Back!
PDF
Software, Over the Air (SOTA) for Automotive Grade Linux (AGL)
PPTX
Jenkins CI
PDF
Dev ops and safety critical systems
PPTX
Relay health build system
PDF
Jenkins tutorial
PPTX
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
PPTX
Continuous Delivery in the real world - techniques to reduce the developers b...
PDF
Docker
PPTX
Introduction to Continuous Integration with Jenkins
PPTX
Towards Continuous Delivery in Mobile Apps
PPTX
Neutron upgrades strategy
PPTX
Designing a Highly Available Environment Using Methods of Modern IT Infrastru...
PPTX
IP Expo Nordic: Successful Practices for Continuous Delivery
PDF
Deployability
PDF
JUC 2015 - Keynote Address and Opening Remarks by Kohsuke Kawaguchi, Founder,...
PDF
FTF2014 - Android Accessory Protocol
PDF
Hudson: Your robotic butler
PDF
Enabling Agile Testing Through Continuous Integration Agile2009
PPTX
Continuous integration with teamcity
Headless Android Strikes Back!
Software, Over the Air (SOTA) for Automotive Grade Linux (AGL)
Jenkins CI
Dev ops and safety critical systems
Relay health build system
Jenkins tutorial
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
Continuous Delivery in the real world - techniques to reduce the developers b...
Docker
Introduction to Continuous Integration with Jenkins
Towards Continuous Delivery in Mobile Apps
Neutron upgrades strategy
Designing a Highly Available Environment Using Methods of Modern IT Infrastru...
IP Expo Nordic: Successful Practices for Continuous Delivery
Deployability
JUC 2015 - Keynote Address and Opening Remarks by Kohsuke Kawaguchi, Founder,...
FTF2014 - Android Accessory Protocol
Hudson: Your robotic butler
Enabling Agile Testing Through Continuous Integration Agile2009
Continuous integration with teamcity
Ad

Viewers also liked (20)

PDF
Oracle vs-mulesoft-api-manager-features
PDF
Jornada final Clásicos escolares 15/16
PDF
How to make ...Joomag
PDF
PDF
Principais duvidas sobre mule
DOCX
Símbolos patrios del perú sesion 8
PDF
Sponsorship Pitchbook General 2016
PDF
Εμβολισμός Iνομυωμάτων Mήτρας
PPTX
Cebrating the water day in kroko greece
PPTX
Betlem celebrating in our town
PPTX
Seasons Dictionary
PPTX
українські традиції
PDF
Ablation: thermal (rfa/mwa/cryo) & electroporation
PDF
Διαγνωστική Προσέγγιση Ca μαστού σε Νέες Γυναίκες
PPTX
Learning Maven by Example
PPTX
Water power
PPTX
Socrative.tanitim
PPTX
Request in mule
PPTX
Artırılmış gerçeklik ders kitabı
PPTX
Clásicos escolares Jornadas Finales (Huelva)
Oracle vs-mulesoft-api-manager-features
Jornada final Clásicos escolares 15/16
How to make ...Joomag
Principais duvidas sobre mule
Símbolos patrios del perú sesion 8
Sponsorship Pitchbook General 2016
Εμβολισμός Iνομυωμάτων Mήτρας
Cebrating the water day in kroko greece
Betlem celebrating in our town
Seasons Dictionary
українські традиції
Ablation: thermal (rfa/mwa/cryo) & electroporation
Διαγνωστική Προσέγγιση Ca μαστού σε Νέες Γυναίκες
Learning Maven by Example
Water power
Socrative.tanitim
Request in mule
Artırılmış gerçeklik ders kitabı
Clásicos escolares Jornadas Finales (Huelva)
Ad

Similar to Adopting agile in an embedded platform Suryakiran Kasturi & Akhil Kumar (20)

DOC
Srikanth_PILLI_CV_latest
DOC
Resume_Thoota_Phani (2)
PPT
Understand release engineering
PPT
Innovate 2014: Get an A+ on Testing Your Enterprise Applications with Rationa...
DOC
QUALITY ASSURANCE and VALIDATION ENGINEER
PPTX
Simics - Break the Rules of Product Development
PPTX
Modern Web-site Development Pipeline
DOC
Resume_Archana_Rao
PPTX
Continuous Integration
DOCX
Arun Prasad-R.DOCX
PDF
Expedia 3x3 presentation
PDF
jenkins.pdf
PDF
Jenkins_1679702972.pdf
PDF
Build automation best practices
PPTX
Automated Build using teamcity
DOC
Resume_SameerajaKVL
PPTX
Continous integration and delivery for single page applications
PPTX
Build Time Hacking
DOC
Lee+Shanley's+Resume 2016-2
PPTX
MyHeritage - QA Automations in a Continuous Deployment environment
Srikanth_PILLI_CV_latest
Resume_Thoota_Phani (2)
Understand release engineering
Innovate 2014: Get an A+ on Testing Your Enterprise Applications with Rationa...
QUALITY ASSURANCE and VALIDATION ENGINEER
Simics - Break the Rules of Product Development
Modern Web-site Development Pipeline
Resume_Archana_Rao
Continuous Integration
Arun Prasad-R.DOCX
Expedia 3x3 presentation
jenkins.pdf
Jenkins_1679702972.pdf
Build automation best practices
Automated Build using teamcity
Resume_SameerajaKVL
Continous integration and delivery for single page applications
Build Time Hacking
Lee+Shanley's+Resume 2016-2
MyHeritage - QA Automations in a Continuous Deployment environment

More from XP Conference India (20)

PPTX
Power of Measurement to Attain True Agility Meetu Arora
PPTX
Devops like lance Armstrong by Yahya Poonawala & Siddharth Kulkarni
PDF
Refactoring for software design smells XP Conference 2016 Ganesh Samarthyam...
PPTX
Agile Testing Cost Reduction using Pairwise Technique
PPTX
Perspectives on Continuous Integration at Scale by Hrishikesh K & Vinaya Mura...
PDF
Building Big Architectures by Ramit Surana
PPTX
Journey with XP a case study in embedded domain by Pradeep Kumar NR
PDF
Introduction to Docker - Learning containerization XP conference 2016
PPTX
XP in the full stack
PPTX
Feature Toggle XP Conference 2016 Kalpana Gulati
PPTX
Componentize! by Lancer Kind XP Conference 2016
PDF
Bashing cultural monsters in continuous integration by Vivek Ganesan XP Confe...
PDF
S.O.L.I.D xp
PPTX
Xp conf-tbd
PDF
Developer 2.0
PPTX
Utility of Test Coverage Metrics in TDD
PDF
Pair Programming in Theory and Practice By Garrick West
PDF
Common blind spots on the journey to production vijay raghavan aravamudhan
PDF
Who will test_your_tests_yahya poonawala- priti biyani
PDF
Nightmare to nightly builds Vijay Bandaru
Power of Measurement to Attain True Agility Meetu Arora
Devops like lance Armstrong by Yahya Poonawala & Siddharth Kulkarni
Refactoring for software design smells XP Conference 2016 Ganesh Samarthyam...
Agile Testing Cost Reduction using Pairwise Technique
Perspectives on Continuous Integration at Scale by Hrishikesh K & Vinaya Mura...
Building Big Architectures by Ramit Surana
Journey with XP a case study in embedded domain by Pradeep Kumar NR
Introduction to Docker - Learning containerization XP conference 2016
XP in the full stack
Feature Toggle XP Conference 2016 Kalpana Gulati
Componentize! by Lancer Kind XP Conference 2016
Bashing cultural monsters in continuous integration by Vivek Ganesan XP Confe...
S.O.L.I.D xp
Xp conf-tbd
Developer 2.0
Utility of Test Coverage Metrics in TDD
Pair Programming in Theory and Practice By Garrick West
Common blind spots on the journey to production vijay raghavan aravamudhan
Who will test_your_tests_yahya poonawala- priti biyani
Nightmare to nightly builds Vijay Bandaru

Recently uploaded (20)

PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Modernizing your data center with Dell and AMD
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
MYSQL Presentation for SQL database connectivity
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PPT
Teaching material agriculture food technology
PPTX
A Presentation on Artificial Intelligence
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
Cloud computing and distributed systems.
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
KodekX | Application Modernization Development
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Empathic Computing: Creating Shared Understanding
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Approach and Philosophy of On baking technology
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Chapter 3 Spatial Domain Image Processing.pdf
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Modernizing your data center with Dell and AMD
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
MYSQL Presentation for SQL database connectivity
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Teaching material agriculture food technology
A Presentation on Artificial Intelligence
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Cloud computing and distributed systems.
Understanding_Digital_Forensics_Presentation.pptx
KodekX | Application Modernization Development
Mobile App Security Testing_ A Comprehensive Guide.pdf
Empathic Computing: Creating Shared Understanding
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Approach and Philosophy of On baking technology
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
NewMind AI Weekly Chronicles - August'25 Week I
Chapter 3 Spatial Domain Image Processing.pdf

Adopting agile in an embedded platform Suryakiran Kasturi & Akhil Kumar

  • 1. Adopting Agile in an embedded platform - SuryaKiran Kasturi & Akhil Kumar
  • 2. Agenda •Introduction to Presenters •Problem Statement •Our Solution •Planned Improvements •Jenkins Configuration and UT Output •Key Takeaways •Q & A Seastar Labs Private Limited 2
  • 3. Problem Statement Seastar Labs Private Limited 3
  • 4. Developing an IoT device requires multiple development environments. • Firmware functions • Drivers • Operating System IoT Device • Device drivers on windows/mac • Software application on windows/mac to interact with the device • Monthly deliverables and showing demos to the client on current progress • One team responsible for whole nine yards Need automated tests for embedded code and host PC and Mac: Should run to qualify every change. Seastar Labs Private Limited 4 USB PC/MAC
  • 5. The e2e solution stack involves multiple technologies HTML/CSS Java Script Business Logic (C/C++) Service(s) (C/C++) Host OS Embedded App (C/C++/Assembly) Device Drivers XYZ Board Wire Protocol Host can be PC/Mac/Linux Device Seastar Labs Private Limited 5 Chromium Embedded FW Embedded Linux
  • 6. Multi-OS development/build environment requires all tests to pass every where. Source Control (SSOT) Linux Windows Mac Seastar Labs Private Limited 6
  • 7. Multi OS development environment gives rise to interesting challenges. • Device code is cross compiled for ‘xyz’ embedded platform using Linux x86 . But it can only run on ‘xyz’. How do we test ? • Mac version of host software requires Mac OSX to build and test. • Windows version of host software requires Win 7/8/8.1 to build and test. • Most changes would trigger all 3 builds. How do we test ? • Should we slow down the development pace of Host Software to wait for device software to be available? • In production, host software needs device to be connected with which human interacts. Should we use same setup for integration tests ? Seastar Labs Private Limited 7
  • 8. Our Solution Seastar Labs Private Limited 8
  • 9. Multiple stakeholders means we need to have a clear process for each stakeholder • Develops code, • Writes Uts for new/modified functionality • Runs Uts and ensures they pass • Checks in to source control after code review • Update Jira Commit triggers builds • Waits for a successful build • Tests the build to verify the visible changes based on Jira • QA releases the build to field users QA/QE Jenkins Build successJira notification Developer • Builds the source code (device and host) • UTs executed: simulate device • Build is broken and mails are triggered for dev. o Issue with device code/UTs o Issue with host code/UTs o Issue with signing the binaries o Issue in publishing the build • Build is successful mails are triggered for QA and internal users Multiple Jenkins Builders Seastar Labs Private Limited 9 Build failure
  • 10. Keep code and unit tests platform neutral to get biggest bang for the buck. • Device code is also compiled for Linux x86. So that unit tests for device can be run on Linux x86 machine. • Use platform neutral libraries such as APR, Boost C++, Poco, thrift etc. to make sure that the application code behaves predictably on Win/Mac. Note: we still run all unit test cases on all platforms. This speeds up the development process as we can use a single code base which would compile differently on different OS • Developed device simulator to mimic entire protocol between device and host, this way we didn’t have to wait for the device hardware and software to be ready • Used Jenkins as the CI tool to ensure that all check ins are Unit Tested before the build is given for QA • Use TUT C++ framework: Really light weight (1 hpp file) and platform neutral • Use platform emulators to test assembly code during test run Seastar Labs Private Limited 10
  • 11. Planned Improvements Seastar Labs Private Limited 11
  • 12. We are evaluating improvements in the testing part of the Jenkins builder • We are evaluating use of software which will ensure that the unit tests will be run in the following condition • Latest firmware is installed on the device (This is being done manually now) • Unit tests would be run to ensure that we are actually interfacing with the device‘s latest firmware • Software's being considered include: • Robot Framework • Fitnesse • Slim Seastar Labs Private Limited 12
  • 13. Jenkins Configuration and UT Output Seastar Labs Private Limited 13
  • 14. Configuration settings that need to be made in the project to achieve running of UTs Seastar Labs Private Limited 14
  • 15. Unit test reports from Jenkins mentioning all test groups to ensure all classes are covered Seastar Labs Private Limited 15
  • 16. Build time impact to run each unit test in Jenkins is around 2.24 seconds Seastar Labs Private Limited 16
  • 17. Key Takeaways Seastar Labs Private Limited 17
  • 18. With minimal effort we can ensure that embedded software can be built using CI • Key Takeaways: • Use platform independent libraries such as APR, Boost C++, Poco framework, thrift etc. to make sure that the application code behaves predictably on Linux/Win/Mac. • Run all unit test cases on all platforms. • Use light weight Unit test framework. • Develop a device simulator to mimic entire protocol between device and host, this way you don’t have to wait for the device hardware and software to be ready. • Use a CI tool like Jenkins to ensure that all check ins are Unit Tested before the build is given for testing. • Developer is responsible for unit testing in one dev environment while Jenkins builders are responsible for all. • Attention to build failures is crucial. Seastar Labs Private Limited 18
  • 19. Seastar Labs Private Limited 19 Q&A