Barr Group TwitterBarr Group Vimeo

Course Overview

Course Length: 
3 Days

 Download the Complete Course Syllabus

Agile is a powerful and often misunderstood approach to developing software. One of the key technical practices is Test-Driven Development. TDD is a powerful engineering practice used to develop safer, more secure, and more robust embedded software. TDD produces an automated regression test suite can be used to keep your production code clean for a long useful life. The test-suite is critical to allow evolving code to be refactored, allowing the design to be incrementally improved. In this 3-day course, attendees will learn the fundamentals of Test-Driven Development (TDD) and refactoring for embedded C and get an overview of the Agile planning practices.

This course is separated into two sections.

Day 1 & 2: Engineering Excellence with TDD

Test-Driven Development (TDD) is a powerful technique for building reliable software. This hands-on course teaches the best practices of TDD with a focus on the challenges unique to testing embedded software, such as concurrent hardware and software development, long download/reflashing times, and restricted visibility. Attendees will learn how TDD can be used to reduce defects, schedule risk and create a more flexible design.

Topics covered during this section include:

  • TDD and why you should use it
  • Adapting TDD to embedded software development
  • Using TDD and Collaborating Modules
  • Test Fakes, Stubs, Doubles, and Mocks
  • Test-Driving Next to the Silicon with Mocks
  • Refactoring
  • Working with Legacy C

Day 3: Realistic Planning and Execution with Agile

Agile development is designed to help a team manage delivery of a system through iterative and incremental development. The Agile approach incorporates flexibility into the development process, acknowledging the dynamic nature of complex product development. Attendees will gain the necessary knowledge, understanding, and skill in planning and management practices of Agile development.

Topics covered during this section include:

  • What Problems Does Agile Solve?
  • Why Iterative and Incremental?
  • Planning Practices of Agile
  • Automated Acceptance Testing
  • Iteration Planning
  • Estimation and Release Planning and Tracking
  • Additional Engineering Practices to Support Agile
  • Getting Started with Iteration Zero

This course is appropriate for:

  • Embedded software developers, technical leaders and managers.

Prerequisites:  Attendees should be experienced with the C programming language and have a general familiarity with embedded software development.


The following summary covers the major course topics and may be modified at the instructor's discretion based on the needs and pace of the class.

Test-Driven Development

  • Why Test-Driven Development?
  • What is Test-Driven Development?
  • The Microcycle
  • Exercise

Adapting TDD to Embedded Software Development

  • Leveraging the Development System
  • Risks of Development System Unit Testing
  • Embedded TDD Cycle
  • Hardware/Platform Independence

TDD and Collaborating Modules

  • Separation of Responsibilities
  • Keeping Tests Clean
  • Tests as Detailed Documentation
  • Exercise

Test Fakes, Stubs, Doubles, Mocks

  • Spying on the Hardware
  • Faking the Time
  • Link-time Fake
  • Run-time Fake

Test-Driving Next to the Silicon with Mocks

  • The Problem Solved by Mock Objects
  • TDD One Instruction Away from the Hardware
  • Exercise


  • Critical Skills
  • Code Smells
  • Envisioning
  • Transforming
  • SOLID Design

Working with Legacy C

  • Legacy Code Mindset
  • Boy Scout Rule
  • Crash to Pass Algorithm
  • TDD and Bug Fixes
  • Exercise

Agile for Embedded Overview

  • What Problems Does Agile try to Solve?
  • What is Agile?
  • Why Iterative and Incremental?
  • Planning Practices of Agile
  • Product Vision and Visibility
  • Collaboration, and Self Organizing Teams
  • Breaking Down Requirements into Product Stories
  • Automated Acceptance Testing
  • Iteration Planning
  • Estimation, Release Planning and Tracking
  • Scrum Terminology

Wrap-up Discussion


"I am starting to use TDD to reap long-term results.  Had an eye-opener on the 3-day long course!" -Sumana B., Embedded Software Engineer, Stryker, 2018

"James has an amazing depth of practical knowledge and is very adept at conveying it." -Dave J., Embedded Software Engineer, 2018

"Great training - very practical for a variety of real world scenarios." -Nick Q., Embedded Software Engineer, 2018

"The most practical TDD course available.  Gives you enough information to get started independently." -Attendee, Embedded Software Engineer, 2018

"Great course combining hands on training with presentation material. I learned a lot about Agile for embedded systems!" -Attendee, Embedded Software Engineer, 2018


Related Courses

Upcoming Sessions

Date(s) Location PRICE Register
Jun 10 to Jun 12
TDD & Agile: Power Techniques for Better Embedded Software Development
Germantown, Maryland, United States $1,599.00 *

Find out More

To find out more about our upcoming public trainings, go to our Training Calendar.

Contact Us to find out more about this course or to enquire about an on-site training at your company.

Recording Policy

All Barr Group Training Public and On-site courses may not be audiotaped, videotaped or photographed without consent from Barr Group's executive team.  Barr Group reserves the right to record portions or all of a training course for instructional purposes.  As a result, attendees present may also appear on the recording.