Failures vary in their cost to correct
Coding – usually relatively cheap
Design – more expensive as they may require changes to several program components
Requirement – most expensive – may require extensive system redesign
Design and requirements are the source of approximately 80% of failures