In the last decade, the trend of using the Agile process for development has gained maximum popularity. This method of process management allows you to create software incrementally from the very beginning of the project, as opposed to cascading models, where the code is delivered at the end of the work cycle. The core of the agile methodology is breaking down projects into small working pieces called user stories. But is such a model suitable for hardware development? Thanks to our internal experience, which is based on the research of cPrime together with TCGen, we will learn today the answer to this ambiguous question.
What is Agile Hardware Development?
Today, Agile is the largest area of software engineering, both from a practical and research point of view. Formalized in the Agile Development Manifesto as 4 values and 12 principles, this methodology has now become the preferred software development standard worldwide. But how to use it for hardware?
At the end of 2013, a survey of global companies was conducted, which examined the impact of Agile software development on the development of hardware. After analyzing all the questionnaires and additional interviews, it became known that different companies used different Agile methods to varying degrees, although none of the companies had a formally defined Agile process as such. For example, we found that companies engaged in rapid PCB development through iterative prototyping, dividing product development cycles into time-bound sprints, tracking with Burndown diagrams, and frequent component integration and integration testing.
That is, many companies used parts of the Agile methodology without knowing it.
Key Differences Between Agile for Hardware and Software
As we have already noticed, Agile is used mainly for software development, rather than for hardware. For this, there are unique prerequisites that affect different stages of development and may not be combined with the theory of creating devices at all. Here are some differences between Agile software development and hardware development:
- Software is more flexible and therefore easier and cheaper to change than hardware.
- Due to the complexity of automatic updates and upgrades, the hardware is initially a limited resource (even with a margin for future software updates). This does not allow the hardware components to be updated as often, and in addition, it can lead to big changes-from functionality and the development of new firmware to the inability to adapt the software to the hard drive.
- You can make changes to the software in the middle of the development cycle, which is not possible with hardware due to wasted resources.
The Recommendations for Agile Hardware Projects
The main way to introduce Agile into the development process is to add new useful features over time. However, the hardware limits this approach to the fact that it is impossible to create (and even more so to upgrade an existing one) on an incomplete basis due to the lack of functionality before the final development of the part. Because of this nuance, many may think that the Agile development of hardware is doomed to fail. There is a way out, and it is quite simple:
The work of the development cycle can be divided into numerous small and testable results.
For hardware products, the result stream usually does not provide a constant stream of useful features over time. This means that the product features become usable at the end of the development cycle. However, the results can be developed and tested throughout the entire cycle, and this is a vital moment for understanding the capabilities of Agile development hardware. This point allows you to constantly adjust the volume and refine the necessary to achieve the planned shipment dates with the best possible cost. To do this, we recommend using the Scrum process.
The overall structure is a release cycle in Scrum, which consists of a set of sprints. Hardware sprints are twice as long as software sprints (four weeks versus two) because hardware results usually can’t be broken down into smaller pieces than software results. Sprint boundaries are aligned for better interaction between teams.
The product is completed at the end of the release cycle, which means that the software is ready for production and the physical hardware project is ready for production. Although integration and integration testing are performed throughout, we leave the last “hardening” sprint for final integration testing and other actions that cannot be performed earlier. At this time, no product development work is underway.
Hardware and software development requires some design work, but working with hardware involves both a higher cost of change and less flexibility (due to the available pool of components), so most of the design work is done in advance compared to software design work. The latter leans more towards a “just-in-time” model, with minor design changes performed only when necessary.
Agile Hardware Development main Pros and Cons
- The results can be developed and tested throughout the entire cycle.
- Using Scrum, it is possible to constantly adjust the volume and specify what is necessary to achieve the planned delivery dates with the maximum possible cost.
- It is easier to detect flaws at a specific stage.
- Long sprints (4 weeks) due to the inability to break into smaller parts.
- More design and preparation work to ensure accuracy in calculations and reduce cost on corrections.
- The device can be considered ready only after the last (additional) sprint, in which it will be fully tested.
- Fixing design issues will still be resource-intensive.
In total, Agile development is possible when working with hardware, in particular using the Scrum process. To do this, we recommend creating a so-called Scrum team.