At this point, we’ve defined our product’s functionality and look, and we have a high-level understanding of the mechanical, electrical, and software systems that will comprise the product. Now we just have to finish developing it, which usually consumes well over half of the product’s total development effort.
In principle, we can now just assign bits to individual designer/developers based on the previous phase’s outputs (requirements, architecture, use cases, etc.), and then each designer/developer creates their piece of the product. When the pieces are complete, we assemble everything together and voila!—we have a finished product.
Of course, the reality is more complex than this. There are many details to get right. Getting each bit to work on its own is challenging, and getting all the bits to work together is still harder.
Individual designer/developers work on their pieces, developing, testing and iterating until those parts work OK on their own. These individual pieces are integrated into prototypes, and more testing is performed to see if things work together as desired. Feedback from prototype testing is used to update individual pieces, which are reintegrated ...