A project management approach based on delivering requirements iteratively and incrementally throughout the life cycle