b. Client-developer communication failures Misunderstandings resulting from defective client-developer communication are additional causes of errors. Typical situations: Misunderstanding of the client’s instructions relating to the requirement document and to changes requested either written or orally by the client. Additional misunderstandings are failures to understand and to give the needed attention to the client’s response to design problems raised by the development team.
c. Deliberate deviations from software requirements In several circumstances, developers may deliberately deviate from the documented requirements, often causing software errors. Common situations of this type: reuse of software modules taken from an earlier project, omission of part of the required functions in an attempt to cope with time or budgetary pressures and developer-initiated improvements, introduced without the client’s approval.
d. Logical design errors Software errors of this type are mainly failures of systems architects, software engineers, systems analysts, etc., to formulate the software requirements into the proper algorithms, boundary conditions, omission of required system states, etc.
e. Coding errors The reasons that cause programmers to make coding errors include misunderstanding the design documentation, linguistic errors, errors in the application of CASE, other development tools, and so forth.
f. Noncompliance with documentation and coding instructions One may ask why noncompliance with coding instructions should cause software errors. It is believed that “non-complying” software is expected to increase the rate of errors made by development and maintenance teams. It is due to erroneous understanding by other members of the development team and maintenance team when performing corrections or changes.
g. Shortcomings of the testing process Shortcomings of the testing process affect the error rate by leaving a greater number of undetected or uncorrected errors. These shortcomings result from: incomplete test plans, failure to document and report detected errors and faults, failure to promptly correct detected software faults and incomplete correction of detected errors.
h. Procedure errors Procedure errors, especially in complex software systems, may incorrectly direct the user with respect to the activities required.
i. Documentation errors The documentation errors that trouble the development and maintenance teams are errors in the design documents and in the documentation integrated into the body of the software. These errors can cause additional errors in further stages of development and during maintenance. Another type of documentation error, one that mainly affects the user, is an error in the user manuals and in the “help” displays incorporated in the software.