Uncertainty is a constant of projects or companies, whether if you're testing business model, receiving incomplete specs from a customer or just because unexpected - defects, unforeseen opportunities, competitors, new requirements, etc. - happens.
The waterfall model, which consists in writing all requirements first then writing technical specs before starting to implement, has proven not to work in this kind of situations but continues to be used in some companies.
Three popular methods : Scrum, XP and Lean - all are called Agile - help you deal with uncertainty by :
You have a non IT business ? Don't close the page yet : some of those practices still apply to you: Agile has roots in businesses that have nothing to do with software.