a. Faulty definition of requirements The faulty definition of requirements, usually prepared by the client, is one of the main causes of software errors. The most common errors of this type are: erroneous definition of requirements, absence of vital requirements, incomplete definition of requirements and inclusion of unnecessary requirements.