What is the difference between "Deficiency" and "Imperfection"?
I am looking for a word to describe that in some difficult cases some piece of hardware or a software algorithm may fail and produce the wrong result. Is this a deficiency or an imperfection, and what would either choice imply?
(Assume that the developers have put in their best effort to make the hardware + software as good as possible within time / budgetary constraints. There is still room for improvement but the cost-benefit ratio is rather high.)
(Addendum: From the answers and comments I take it that I should give an example: Think of a face-recognition software. It identifies most faces correctly, but it will never achieve 100 %. So it's not so much a question of whether an algorithm was implemented correctly or whether the specifications are correct but rather a fundamental problem that 100 % cannot be achieved.)