Software engineering: A practitioner's approach. Roger S. Pressman
Why?