On most software projects, good requirement specifications are created. Based on these specifications, software designs are created and finally the software product is constructed. But when the actual design and construction is done, the project team finds a lot of loose ends. For example, when a design for a software component is being created, it is found that the the formula to perform a computation has assumptions. Some assumptions can be incorporated by using switch or else-if statements. But not all assumptions can be incorporated in software designs.
On most software projects, requirement specifications contain a large number of assumptions. The project team also do not mind these assumptions in the beginning thinking that these are practical considerations and could be easily taken care of. But when the actual design process starts, these assumptions become a nightmare.
So it is extremely important that requirement specifications should not have any assumptions. All requirement specifications should be complete in all respects.