Why software has bugs