Is that in fact how that happens though? Complete and flawless the first time around? I'm not that familiar with embedded sort of software, but my assumption was that they try to do a good job, but then use simulators to get the software ship-shape. At least that's what I would do, given my presumption of errors in any human endeavor. I'm much more in favor in building processes that accept failure gracefully, rather than presuming error-free production.