A taxonomical review of software verification techniques :an illustration using discrete-event simulation