Managing Hardware/Software Co-Development
Today, new techniques enable us to manage complex systems development with a focus on integration and risk reduction over time. Hardware/Software development projects are complex and these techniques are especially useful.
A great deal of new development today involves build products or systems that have both hardware and software components. This is true for IoT, embedded systems, smart systems, and nearly any interesting products. Such development involves:
- Coordination of multi-disciplined teams
- Hard dependencies exist between various components and dev tasks
- Serious deadlines and economic consequences if late
Traditionally Gantt charts and critical path analysis have been used, but these techniques usually fail with novel product development. Fundamentally, innovation involves creating new ideas and processes that are by definition difficult to estimate and make precise commitments about. This resulted in plans that:
- Were too detailed, too soon, and not realistic
- Did not expect to accommodate learning and change
- Did not directly express uncertainty or risk, but assumed exact estimates and progress
Today, the PLM (Product Lifecycle Management) space is serving this broad need, and Agile development is expanding to include the broader notion of coordinated teams with extremely different skill sets. Neither of these approaches explicitly have management techniques to measure uncertainty.
Measuring uncertainty, especially across workflows as different as hardware and software co-development projects, is the key to seeing the whole and managing to reduce risk. Modern AI techniques enable us to assess and integrate the various small fragments of information (estimate uncertainty, evidence of progress and completion, dependency and transitive coupling between work) and produce an analytic measure of project risk. 77% confidence of finishing and finishing well, 33% risk of missing deadline and high-drama.