Launching our product company:  - visit us here

Agile for embedded.

Tailor-made training for embedded systems developers.

What will you learn?

Test-Driven Development, TDD, is a practice that has an unusually high ROI, when applied correctly. This is even more true when it comes to embedded systems than for enterprise systems, since updates and recalls are very expensive and painful.

This course is tailor-made for embedded systems developers, who want to add Acceptance Test-Driven Development (ATDD), Behaviour-Driven Development (BDD) and Test-Driven Development to their development process. There are many TDD courses available today, and we have given many in the past, but they are targeted towards people developing desktop applications and backend systems, and does not deal with the special environment that developers of embedded systems face.

Embedded systems are different.
Therefore, this course is different.

You will work with actual hardware and learn how to drive development using acceptance tests and to develop high quality code faster - even long before the hardware is ready. You will learn how to prioritize features and develop the software iteratively in order to be able to release early and often.

During the course you will develop a fully functional, internet enabled device connected to physical sensors and actuators. You will first develop and test the software on the workstation, then deploy to an evaluation board and finally run the resulting software on the fully fledged production hardware.

Among other things you'll learn how to specify and test complex state, asynchronous communication, networking protocols and multitasking in constrained environments.

Key takeaways

Boost development speed

By accompanying the code with executable test suites, the team gets confident that adding new features won't break existing functionality. This allow the team to iterate faster towards the goal.

Develop before hardware is ready

When starting new projects, it is common that the actual hardware is made available near the end of the project. This often leads to a hasty and error prone integration. The techniques learnt in this course will help you start developing software immediately to help alleviate the problems with late integration.

Increase quality

A solid suite of tests around the code minimises production errors and increases the quality. The course will detail how to accomplish this using proven tools and techniques.

Minimize recalls

In the case where remote software updates are not possible, it is very important to make sure the product has high quality. This can take a long time when not using TDD or the like. By using the approach presented in this course, the product will gain high quality without taking much longer to implement.

Decrease cost of testing

Traditional testing often consists of teams of testers doing manual testing using written specifications. This costs both time and money. This course will teach how to make executable specifications that will lower both the time and cost for testing.

Release often

When a team can release often, the customer can get early feedback on progress. Many of the techniques in this course will help the team get confident enough to release often.

Maintain easily

In order to drive the software development using executable specifications, the developer needs to design the software to be testable. Testable code is almost always better structured and hence more maintainable.

Test more than the happy cases

It's quite easy and normal to test the happy cases on the bench, but it can be really hard to be sure that the code handles some of the more unusual exceptional cases, like hardware problems, timeouts and similar things. With TDD, you can reliably and repeatedly make sure those cases works, over and over again.

The fooheads

Niclas Nilsson

Niclas is a playing coach, educator and writer with a deep passion for the software development craft. He started working as a developer in 1992 and drawn from experience, he knows that some choices make a significant difference in software development, like languages, tools and processes. He's a productivity junkie, which is the reason behind his affection for things like test- and behaviour-driven development, pair-programming and all sorts of automation.

Jon-Erling Dahl

Jon-Erling is a dedicated developer with a built-in urge to deliver working software. His experience range from small, constrained embedded devices to high-performance, low-latency server systems. Jon-Erling enjoys new technology and try as much as he can to adopt it quickly, and due to this curiosity and open mind to what tools are appropriate in any given context, he works fluently in many programming languages and environments.

Next Courses