Application of human error theories in detecting and preventing software requirement errors