Agile Methods and Firmware Development
Timo Punkka · 2005
The size and complexity of software continues to grow at a steady pace. This is also true for software embedded in our everyday electronics, which we have called simple devices. The term firmware is used to describe the low-level software in embedded systems. It may even be hard to divide firmware and actual hardware. Software development for such a target has special characteristics such as a culture of hacking, small teams and multiple hats, co-design issues, one-time designs, correctness and robustness requirements, lack of tools and unconventional customers. Software process models have been studied also in this environment to ease the pain of developing more complex systems. I introduce four currently used methods to develop firmware; build-and-fix, waterfall, ROPES and RUP SE. Agile methods are getting a lot of attention in the software development community at the moment. I review the agile methods which are most documented. The suitability of these to firmware development is evaluated. It is also analyzed whether firmware development could benefit from agile methods. It is shown that agile methods are not the new cure-all solution to firmware development, but they are applicable. Their full use needs modification and innovative thinking. It is, however, shown that firmware development can surely benefit from the usage of agile methods.