Here are some key difficulties in specifying non-functional requirements:
1. Imprecision - Non-functional requirements are often imprecisely specified since they can be difficult to quantify. Terms like "easy to use" or "high performance" don't have clear definitions.
2. Prioritization - It can be challenging to determine which non-functional requirements are most important since they may conflict with each other (e.g. performance vs reliability).
3. Verification - Unlike functional requirements, non-functional requirements are sometimes hard to test and verify objectively since they deal with overall system attributes rather than specific behaviors.
4. Understanding - Stakeholders don't always fully understand non-functional concerns like maintainability