A Deep Introduction to AI Based Software Defect Prediction (SDP) and its Current Challenges