Adding UI design to the software-requirements-specification document is controversial.
One mistake that is commonly done is that UI defines the functional-requirements.
When the requirements are unstable, it means the UI has to be changed accordingly, which means a lot of rework.
Motives
Users usually judge a software product by its GUI.
If it is not good then it will lead to user not using the product at all.
Pitfalls
It can distract us from focusing on the business problems to how to do it.
Unstable requirements means a lot of changes in the GUI.
Prototypes
These are used to decrease user dissatisfaction.
These are not the actual products but a tangible copy of the product which lacks functionalities but the user can play around with it rather than reading the software-requirements-specification document.