Understanding software bugs