Moving away from a “waterfall” development process to a process that incorporates Agile methods, at least to some extent, can noticeably improve the quality and reduce schedules for the engineering of both hardware and software products.
However, in the case of a hardware-engineering task such as the physical design and layout of a complex printed circuit board or an ASIC we can’t simply release a half-complete iteration at any time and expect to get anything which is remotely functional or useful.
Although there are some important differences between hardware and software to consider when applying Agile methods, Agile is still valuable in the hardware domain.
When it comes to the layout of a printed circuit board, or the layout of an ASIC, this physical design iteration may take several weeks or even months to perform, to get from the netlist to working hardware. To get it right, several iterations may be required. Even when the time has been taken to complete this iteration, it may not make any sense, in terms of economics or customer value, to release this iteration to the customer.
Modular design and engineering is a valuable strategy for making Agile methods work in hardware development. Software developers have long understood this, using modular architectures such as object-oriented programming which limit the costly ripple effect of engineering changes in a tightly integrated system.
However, commercial electronic hardware designs tend to be highly integrated, not modular – since modular hardware systems tend to be more expensive. The cost of engineering changes, however, is higher in a more integrated system.
The use of modular components, FPGAs, pre-manufactured modules or development boards is particularly attractive during research and development for the rapid evaluation and prototyping of different circuits and component choices.
Although requirements for miniaturisation, cost, weight or reliability (e.g.. removal of connectors) may lead to a final, finished product that looks very different to the modular prototype version on the R&D lab bench, Agile techniques such as rapid iteration and the rapid delivery of new prototypes at the end of each sprint can be particularly relevant and useful during this stage of product design even though they may be somewhat less applicable later.
Agile hardware developers do not have any one solution for the question of modularity, since market forces tend to push us away from modularity. Increasing modularity typically increases the cost of hardware, as well as factors such as hardware size and weight which may be critical for some products, pushing us back towards increased integration and miniaturisation where the “cost of change” is higher.
Unlike software, hardware systems tend to have a much greater cost of change, and this means more time is required to recover the cost of each change. This tends to lengthen the optimal release rate for a hardware project incorporating Agile techniques, as compared to a software product.
Although many aspects of hardware product design, such as PCB layout, physical design of ASICs and tooling for plastic moulding are intrinsically time consuming and relatively expensive to iterate, many other aspects of hardware design such as electrical rule checking, ASIC verification, documentation, and the development of the firmware and software that is intrinsically associated with the hardware in most modern embedded devices are intrinsically more similar to the software development tasks that Agile methods were originally developed for.
Therefore, Agile methods lend themselves to these parts of the development of a hardware project very well, even if some other aspects of hardware development are not quite as well suited. The same is also true in the case of hardware logic that is implemented in an FPGA or CPLD – particularly during prototyping or R&D phases, where an FPGA may be used instead of bespoke ASIC hardware.
Depending on time and cost constraints for the project, it is also possible that an FPGA or other programmable logic device may be kept in the final production hardware, instead of an ASIC, which does provide a benefit in terms of agility.
The fact that it is generally not profitable to release new iterations of hardware products continuously to customers does not preclude us from taking advantage of Agile methods to develop our hardware products more continuously, in smaller batches, and to realise the Agile principle that the highest priority is to satisfy the customer early through continuous delivery of value.
Although this is often taken to mean continuous delivery of newly updated software or hardware products, continuous improvement in the value delivered to the customer doesn’t necessarily mean continuous expensive iterations in physical design, manufacturing and tooling for new hardware delivered to the customer – incremental improvements in customer value can be achieved using the previous iteration of physical hardware that is already in the hands of customers.
Therefore Agile project management techniques can be very useful and applicable to the design of hardware products – although the agile techniques that are employed and the way and time when they’re employed can be somewhat different to the application of Agile techniques in the software industry.
Here at the LX Group we can work with the development methods of all our current and future clients – and can put Agile development methods to work for your success.
Getting started is easy – join us for an obligation-free and confidential discussion about your ideas and how we can help bring them to life – click here to contact us, or telephone 1800 810 124.
LX is an award-winning electronics design company based in Sydney, Australia. LX services include full turnkey design, electronics, hardware, software and firmware design. LX specialises in embedded systems and wireless technologies design.
Published by LX Pty Ltd for itself and the LX Group of companies, including LX Design House, LX Solutions and LX Consulting, LX Innovations.