Traditional requirements gathering techniques often result in hundreds of textual requirements. The nature of text-based requirements makes them difficult to organize and reconcile. This paper presents software requirements and analysis techniques that result in a
complete understanding of the behaviors and structure of the problem to be solved. The requirements and analysis process introduces the metaphor of a detective investigating a crime and gathering evidence. The observations and evidence are used to create a UML model of the problem.