I like to handle project management in a goal oriented manner. This applies pretty much to every type of project management, including computer application development.
As much as feasible, I prefer to specify with the customer what we want to achieve and learn about the users needs and wants before I start the application production process. "Feasible" is an important word here - in most cases I continue to explore and learn about the users needs and wants throughout the project development process and may continue to do so after the application installation as well.
However, the information that is collected during the initial business analysis should be sufficient enough, so that I can put together an initial project development plan that is divided into milestones, which contain initial or "default" project development component options, each of which is implemented unless a better alternative is specified.
Further, I like to allocate extra resources (time and labor) to completion of each milestone. During the actual application production processes, the extra resources should be used up only when needed, and as much as I can, I save them and move or "roll them over" from one milestone to another.
This type of an approach provides a structure that helps to reach the project development objectives, leaves room for exploring alternative solutions, and contains flexibility that may be needed for handling unexpected circumstances and problems.
It's not a perfect system or method, but it works pretty well.
This section's articles provide additional information on project management related topics.