Understand the System

To understand what might be wrong with a system, one needs to understand how the system should behave. This might involve:

  • reviewing designs or specifications

  • re-enforcing your understanding of algorithms or data structures using reference material

  • reading documentation of libraries

  • reviewing comments in code that describe the intention of the code

  • Drawing data structures

You have found the problem when you find actual behaviour that diverges from how the system should behave.