Often there is confusion between hardware and software types because the two have very different schedules.
In hardware design, it is very expensive to have an error "escape", because the cost of the repair can often exceed the value of the product. (This is often the case with embedded software as well, but this is becoming somewhat less true over time.)
Software is often seen (whether true or not) as being easily upgraded in the field. This has led to a common software production strategy of limiting the testing of software with the plan of fixing any defects "in the field".
This came to mind recently when I overheard a conversation between a software type and his boss. His boss wanted to know when the software would be "done". The software guy responded "software is never 'done'".
This made the hardware side of me the think sarcastically, "Yeah, software is never done...it is abandoned."