The Problem
Software systems are huge and
complex
Difficult for a developer to understand the
structure
Difficult to estimate how a change to a
system will affect its behavior