Agile Development for Embedded Systems: The Best of Both Worlds
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.
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.
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.