An empirical investigation into the estimation of software development effort