You make two really good points in your post. Taking the time to create a design specification can save on development time as well as address the feasibility of the project up front.
Some developers, however, prefer to use a prototype approach because it allows design and development to happen simultaneously which, in turn, saves time. The best approach really depends on the dynamic of the course, customer, and development team.
Good post!