How do you differentiate between a hardware failure, a software bug, and an environmental issue such as EMI or noise?