Step 5 -- Examine Code 1 (Look for Problems)
Divide code into modules, examine each one
Modular/structured
Object-oriented (information hiding, no global variables �)
In-code documentation? How clear is it?
In-code test case descriptions?
Run code through complexity analyzer (such as McCabe)
Look for problems within each module (but not limited to):
Divide by zero
Logarithm of zero or negative
Underflow
Overflow
Array bounds exceeded
Variables not initialized
Inputs
Does it actually use the algorithms it claims to use?
Document as-built?
Document as-planned?
Assumptions/limitations/constraints
Typical inputs and outputs? Any inputs that can lead to problems?
Bounds checking or input checking?
Does the system produce any warning/error messages, or simply run/crash?
How much user knowledge/training is required?
Does the system use error bounds to increase confidence in the outputs?
What is the fidelity of this system perceived to be?
Certain languages more prone than others to errors
C++ pointers
C++ lack of initialization settings in compiler
The Eleven Steps In VV&A:
1. Examine Process Documentation
2. Examine System Documentation
3. Interview Developers
4. Interview Users
5. Examine Code 1 (Look For Problems)
6. Examine Code 2 (Break It)
7. Determine Truth
8. Generate Test Cases
9. Run Test Cases
10. Review Test Case Output
11. Assessment
Software Development Plan (SDP) Template
Software Configuration Management Plan (SCMP) Template
Software Quality Program Plan (SQPP) Template
Work Breakdown Structure (WBS) Template
Introduction
What And Why Of VV&A