So whenever you look at a specification, take the tasks the customer will do and ask yourself one thing:
The user sits down in front of the system. Walk through what they do to accomplish task X.
This will expose a lot of holes. For example:
- An upload API with no way in the GUI to actually review what is uploaded
- A cleanup process that leave the system unusable for hours on end
- A background process with no ability to start or stop it
- And a lot of other things...
What a system does is important, and a specification can describe it. But in order to know if the system hangs together as a whole, it's important to consider the tasks and the workflows of the system consumer.