Course Overview
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 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.
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, in-target debugging, late integration and limited progress 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
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 knowledge and understanding 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
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.