Barr Group FacebookBarr Group TwitterBarr Group LinkedInBarr Group Vimeo

Course Overview

Course Length: 
3 Days

When it comes to embedded system design, better planning leads to better, safer, and more reliable products. In this 3-day hands-on course, attendees will learn the fundamentals of Test-Driven Development (TDD) for embedded C programmers and the Agile Approach to embedded software development - two of the industry’s most powerful design techniques used to develop safer, more secure, and more robust embedded software. This course is ideal for embedded software developers,technical leaders and managers.

Course 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 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 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


Download Complete Syllabus: 

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
  • Refactoring
    • Critical Skills
    • Code Smells
    • Envisioning
    • Transforming
  • Working with Legacy C
    • Legacy Code Mindset
    • Boy Scout Rule
    • Crash to Pass Algorithm
    • TDD and Bug Fixes
    • Exercise
  • Wrap-up Discussion


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

Related Courses

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 videotaped or photographed without consent from Barr Group's executive team.