I'm trying to understand the difference between non-functional requirements and quality attributes. Are they the same thing?
You can find a set of quality attributes in the ISO 9126, now ISO/IEC 2500xx SQuaRE family of standards.
I know that each system is defined by a set of functional requirements and every of this requirements has associated one or more quality attributes. For example, suppose that you have the requirement that describes the login functionality of a system. You can associate to that requirement the attributes of security and performance.
If I say that the system can not take more than 1 second to respond, I'm talking about a constraint.
So, where the concept of non-functional requirements kicks in? Are they defined by the users? How can I identify them?
I think that you are thinking about this a little too hard. Functional and non-functional requirement are not really as separable as you are suggesting, Take the login case for example.
The user SHALL be able to log in through a web interface. Technically, this is a functional requirement.
The system MUST respond to log in requests within 1 second. Technically, this is a non-functional requirement.
Either way they are both just as important regardless of specific classification.
Requirements can come from any number of places. You might want to have better performance than a competitor. A customer might have specific needs. There might be a request from marketing or sales. There isn't one place were they come from. Though, you could probably abstract away all the different sources and refer to them as customers. Ultimately that is what they are.
You can identify the difference using the following metric. Functional requirements describe what a system will do. A non-functional requirement specifies how it does it.
I. The "Shall" example uses
You. And that's not what's being discussed here anyway. — Oct 30, 2021 at 22:02