System-level design is all about thinking early and implementing later. So why not apply what we already know? We even have statistics. Fifteen years ago, I was part of projects where we measured how effective methods like manual code inspection were in preventing bugs from propagating into the next project phase.So what do you do? Prototypes for one. And not just hardware. Software too. Sometimes it is only in the process of implementing a solution that you come up with a better idea. How do you make sure that idea does not wind up on the drafting room floor? Delay the decision to commit big resources to the last possible moment. Which means a manager must not only be a master of technology. The manager must also be a master of logistics and the PERT Chart.
Everybody seems to know and agree that it becomes more difficult to find and fix defects the further a project has progressed. More recently, studies sponsored by NASA show that an embedded software bug introduced in the requirements phase is 130 times more expensive to fix during integration and 368 times more expensive after rollout of the embedded device.
You also have to recognize the pressures to decide quickly: top management asks, "what is your plan?" and you have to say "I don't have one yet, I'm looking at the options." It requires a lot of trust. And a lot of program time discipline when it comes to execution because you will be using a lot of your project time margin to make sure you get it right the first time.