Understanding types of software bugs