Avoiding customer complaints
Keeping overall costs within budget
Delivering the software to the customer at the agreed time
Maintaining a happy and well-functioning development team