Barr Group FacebookBarr Group TwitterBarr Group LinkedInBarr Group Vimeo

Course Overview

Course Length: 
3 Days
CEUs: 
2.2
Format: 
Hands-on/Lecture

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 that you can used to keep your production code clean for a long useful life. The test-suite is critical to allowing 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 ideal for embedded software developers, technical leaders and managers.

Topics covered include, but are not limited to:

  • What is TDD?
  • Adapting TDD to Embedded Software Development
  • Test Fakes, Stubs, Doubles, Mocks
  • Test-Driving Next to the Silicon with Mocks
  • Refactoring
  • Working with Legacy C

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

Syllabus

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

Prerequisites

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

Related Courses

Upcoming Sessions

Date(s) Location PRICE Register
Sep 27 to Sep 29
TDD & Agile: Power Techniques for Better Embedded Software Development
Palo Alto, California, United States $1,899.00
Inquire

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.