Embedded TDD Training

Agile Technical Practices applied to Embedded:

Engineering the Embedded Craft

Training Objectives

  • Present the mindset, techniques and tools enabling an iterative, incremental, faster, more reliable and more sustainable embedded software development process.
  • Develop a complete running system example from scratch during the practical sessions
  • Accompany the Whole team into its adoption following safe baby steps

Course Resume

  • Duration: Up to 32 hours (12 hours of theory-practice + 20 hours of practice)
  • Modalities: Live 100% online. Live mixed online/onsite
  • Available Languages: C and C++

Attendee Ratings

Amazing training about how to develop firmware following TDD methodology, sharing experiences, improvements and the benefits it gives in the long term. Thanks for the passion and motivation you transmit, and for sharing with us your knowledge!

David Ferruz Garcia

Senior Software Manager at MaxLinear

Our Firmware development team has quickly internalized a faster and better approach to create higher quality long run products. Excellent course, professional and trainer. Strongly recommended

Elías García García

R&D Director at Fermax Technologies

This course has certainly saved us months of headaches in the development of our projects. A great course from an excellent communicator and a mentor in the Embedded Software Craftmanship world.

Pablo Martinez Crespo

CTO Firmware at Cecotec Innovaciones S.L.

A much better approach to develop fully tested, highly reusable, greater quality embedded software while being decoupled from Hardware

David Sanz Vidal

Principal Embedded SW at Power Electronics

Are you interested in applying state-of-the-art Software Engineering practices to embedded development? This course is what you have been looking for!

Mario Cervera

Software Craftsman at LIFULL Connect

Enlightening course! Thanks to him, I learned the basics of TDD and embedded system programming good practices

Javier Barahona

Embedded SW Engineer at Witrac

Revealing course! From a passionate teacher, learning by test-driven coding in order to achieve clean working code that produces higher quality applications and avoids debugging time

Pablo Soriano

Embeded Systems & Hardware Engineer at Abervian | Energy Solutions

Clarifying, relevant and necessary! Essential to avoid continuing to survive in the world of development. I am looking forward to applying everything I have learned to my projects and continuing to improve

Claudia G.

Firmware Engineer at Cecotec Innovaciones S.L.

A very interesting, enjoyable, useful and easy to follow course for any software developer, coming from the embedded context or not. Great course and experience!

José María Martínez Martínez

CTO of Artificial Intelligence at Cecotec Innovaciones S.L.

Excellent course! His point of view regarding good practices in development in general and with embedded in particular is certainly interesting and relevant. Course attendees finished it with a high level of motivation, a good collection of practical recommendations, and generally very satisfied. I recommend it without a doubt!

Iván Gómez Rodríguez

Lead Software Developer at ThoughtWorks

Course Main Topics

Part 1. Context, culture and mindset

Does context really matter? How?, When?, Why?
Waterfall and the Software Factory
Agility in a nutshell. Management and Technical Excellence
Introduction to Scrum
Technical Debt vs Cruft
Introduction to Extreme Programming (XP)
The Craftmanship Movement

Part 2. Software Development Economics

Coupling and Cohesion
The cost of change
Software testing
Test Later
Test First
Testing anti-patterns

In this podcast we talked about some of the most common testing anti-patterns, their origins and how to prevent and combat them.

The comprehensive safety net
Code coverage
Mutation Testing
Mutation testing in C
Mutation Testing applied in C

Part 3. Software Design Principles and Practices applied to Embedded

Design for changeability
SOLID Design Principles
Software Design Patterns
Dual-Target Test Driven Development
Continuous Integration, Testing and Delivery
Embedded Continuous Integration System

Continuous Integration & Continuous Testing Dual-Target pipeline

Part 4. Software testing entities

Types of tests
Test Pyramid vs Test Trophy
The never ending discussion about test types
A concise and useful definition of 'unity'
Test Doubles

Part 5. Software Architecture

Hexagonal Architecture. Ports and Adapters
Clean Architecture
Portable Embedded Architecture
layered_embedded_architecture
Hardware and microcontroller independent embedded Architecture

Part 6. Practical Exercise (KATA)

Initial system specifications
Playing the future Product Owner's role
Just Enough Design Up-Front (JEDUP): A Quest towards proper Abstractions
Inside-Out Dual-Target TDDing a portable IC Driver: the HVAC Driver
Clean IC Driver test example
Embedded Driver Unit Test example
Dual-Target TDDing a portable GPIO Processor Abstraction Layer (PAL)
Dual-Target TDDing a generic Temperature Controller
End-to-end on-target system acceptance testing
Dealing with Change
Embracing the Change. Taking The First Bullets
The art of dodging bullets

Neo:
What are you trying to tell me? That I can dodge bullets?

Morpheus:
No, Neo. I'm trying to tell you that when you're ready, you won't have to.

Get More Info