Agile Development for Embedded Systems: The Best of Both Worlds

July 15, 2019 Zachariah Peterson

Single board computer

You might want to use agile development to build this embedded system

As unique hardware platforms that provide computing power in a variety of applications, embedded systems combine the best of every techie’s dreams: hardware design and software development. Design processes for simpler embedded systems tend to be linear, and the hardware and embedded software may even be developed in parallel by different design teams. As systems become more complex, and as customer requirements continue to diversify, design teams need to rethink conventional methodologies.

Agile development methodologies are normally referenced in terms of software, but these design and development techniques can be adapted to hardware design, including embedded systems development. As embedded software really requires many of the same processes and ideas used in traditional software development, it is also amenable to agile methodologies. Unifying embedded software design and PCB design into a coherent workflow requires rethinking both processes as an iterative, continuous process.

If implemented correctly, these methods can help prevent unnecessary redesigns and ensure that a product’s functionality more closely matches a customer’s requirements. Pulling this off takes the right design and collaboration tools that are adaptable to any design methodology, including agile development.

Adapting Agile Development to Hardware Design

I have never worked on a software project that was delivered on schedule or on budget. It’s just the reality of the industry. Hardware development projects at least appear to have a tendency to be completed on schedule, thus many project managers might prefer to manage hardware projects. No matter how carefully project managers plan development for a new software platform, there is almost always some unforeseen incompatibility or change in customer requirements.

One of the key tenets of agile design is that change during a design process is inevitable. As such, a design team needs to be adaptable to changes in customer requirements, electrical functionality, manufacturability, and even mechanical design for an enclosure and packaging. In embedded systems design, a development team faces changes from two directions: disruptions in the PCB component supply chain, and embedded software.

Implementing the iterative process at the heart of agile development helps a design team quickly adapt during the development process and address changes as they arise, rather than addressing them following batch testing at the end of development. This requires consistent and clear communication between team members and with the end customer. Since the embedded software and hardware portions of a given project may be underway simultaneously, both sets of teams must collaborate.

Embedded systems design

 

How Does the Traditional Workflow Change?

At the outset, design and functionality requirements should be clearly defined, both in terms of hardware and the embedded software. This is where communication with the customer becomes critical as it ensures the customer fully understands the functionality and feasibility of their new product.

As part of defining requirements, milestones should be clearly specified throughout the project, but should also be adaptable to change. Working towards milestones while accommodating hardware and embedded software design changes is undertaken in an iterative process. This iterative process lies at the heart of agile development methods, both in software and hardware design.

One common problem in linear design processes is lack of periodic testing. QA tends to involved too late in the process, making redesign extensive and expensive. PCB design and software testing should be conducted throughout the design process. With the hardware portion of the project, rules-checking features and electrical simulations are the best way to examine functionality before manufacturing prototypes. This helps you plan design modifications much earlier in the design process.

BGA escape routing on a tan PCB

There are many variants of agile processes, and the workflow and ideas involved in each are too long to list in a single article. At the heart of successful agile development for embedded systems is using design software with the right development, data management, and collaboration features.

Using Collaboration and Version Control Tools

The software industry has made copious use of version control tools for years, and hardware design platforms are finally catching up. The problem with typical PCB design platforms is that the embedded software and hardware portions of a project have been traditionally confined to at least two different programs. This requires yet another tool to provide collaboration and version control during a project.

A design platform that provides all the standard and advanced PCB design tools required for hardware design and embedded software development nicely facilitates collaboration among team members on a single project. When version control tools are integrated alongside these features, your team can now quickly revert to old design versions when necessary, mimicking the trial-and-error process used in software development.

As component sourcing and manufacturing are essential for any hardware project, periodic agile team meetings during design iterations should focus determining any necessary design changes to accommodate disruptions in the supply chain. These may influence the design of embedded software during the project.

When your team has real-time sourcing and obsolescence information within your PCB/embedded software design platform, you can quickly swap components in your device and even reduce the time required for design modifications. Access to this sourcing information early in the design process can even help your team eliminate later design modifications as you can anticipate sourcing problems and adjust your hardware platform as necessary.

The schematic, PCB layout, and embedded systems design features in Altium Designer® can now be integrated with the data management features in Altium Concord Pro®, giving designers a complete tool set for agile development of embedded systems. The TASKING features in Altium Designer give designers an industry-standard tool set required to create embedded systems for a variety of applications.

Contact us or download a free trial of Altium Designer and Altium Concord Pro. You’ll have access to the industry’s best routing, layout, simulation, and MCAD collaboration tools in a single program. Talk to an Altium expert today to learn more.

About the Author

Zachariah Peterson


Zachariah Peterson has an extensive technical background in academia and industry. Prior to working in the PCB industry, he taught at Portland State University. He conducted his Physics M.S. research on chemisorptive gas sensors and his Applied Physics Ph.D. research on random laser theory and stability.

His background in scientific research spans topics in nanoparticle lasers, electronic and optoelectronic semiconductor devices, environmental systems, and financial analytics. His work has been published in several peer-reviewed journals and conference proceedings, and he has written hundreds of technical blogs on PCB design for a number of companies.

More Content by Zachariah Peterson
Previous Article
Insertion Loss Deviation or Intersymbol Interference Noise?
Insertion Loss Deviation or Intersymbol Interference Noise?

Insertion loss deviation has been used for about 10 years to quantify channel reflections. Now that COM, IS...

Next Article
Integrate Your ECAD Tools with Mechanical Design Software
Integrate Your ECAD Tools with Mechanical Design Software

Unifying your ECAD and mechanical design software as a single workflow gives design teams the collaborative...