There's in reality usually a portion early in the development of the software where you're not even sure what the spec should be and you're doing what's called prototyping of trying things out as the specification is evolving. 