In a traditional design strategy, the hardware and software partitioning decisions are fixed at an early stage in the development cycle and the hardware and software designs are developed separately from then onwards.
Some designs also call for some programmability in the end product.
This suggests a more flexible design strategy, where the hardware and the software designs proceed in parallel, with feedback and interaction between the two as the design progresses. This includes the verification activities occurring during System Integration. If we return to Figure 2, we see several characteristics of today's practice illustrated. First, we see the process driven by product requirements, usually established by marketing, and occasionally captured in formal systems, although the norm is for requirements coming into the design through documents, presentations, and orally. Design constraints are established and refined in the functional exploration, architectural mapping and partitioning phases - again, usually captured textually.